summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2021-10-31 12:47:14 +0200
committerEfraim Flashner <efraim@flashner.co.il>2021-10-31 14:49:47 +0200
commitbc5155b952ae8bdbc56aded4d8d39768b4e2a7d4 (patch)
tree6b55475d86c522543384dea7d1ab66bba32af63e
parentdac8d013bd1fc7f57b8ba3582eef6e0e01b23dfd (diff)
parent4e5000114ec01b5e92a87c52f2a10f9ba7a601c8 (diff)
Merge remote-tracking branch 'origin/master' into core-updates-frozen
-rw-r--r--Makefile.am3
-rw-r--r--doc/build.scm8
-rw-r--r--doc/contributing.texi8
-rw-r--r--doc/guix.texi541
-rw-r--r--doc/local.mk6
-rw-r--r--etc/completion/bash/guix18
-rw-r--r--etc/completion/zsh/_guix1
-rw-r--r--etc/news.scm91
-rw-r--r--gnu/installer/newt/partition.scm6
-rw-r--r--gnu/local.mk16
-rw-r--r--gnu/packages/algebra.scm36
-rw-r--r--gnu/packages/animation.scm2
-rw-r--r--gnu/packages/audio.scm6
-rw-r--r--gnu/packages/backup.scm10
-rw-r--r--gnu/packages/bioconductor.scm31
-rw-r--r--gnu/packages/bioinformatics.scm369
-rw-r--r--gnu/packages/bootloaders.scm21
-rw-r--r--gnu/packages/browser-extensions.scm4
-rw-r--r--gnu/packages/c.scm4
-rw-r--r--gnu/packages/cdrom.scm8
-rw-r--r--gnu/packages/chromium.scm22
-rw-r--r--gnu/packages/cran.scm180
-rw-r--r--gnu/packages/crates-io.scm2
-rw-r--r--gnu/packages/crypto.scm49
-rw-r--r--gnu/packages/debug.scm61
-rw-r--r--gnu/packages/diffoscope.scm12
-rw-r--r--gnu/packages/display-managers.scm19
-rw-r--r--gnu/packages/djvu.scm11
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/docbook.scm3
-rw-r--r--gnu/packages/emacs-xyz.scm153
-rw-r--r--gnu/packages/emacs.scm16
-rw-r--r--gnu/packages/emulators.scm4
-rw-r--r--gnu/packages/engineering.scm2
-rw-r--r--gnu/packages/file-systems.scm28
-rw-r--r--gnu/packages/finance.scm16
-rw-r--r--gnu/packages/firmware.scm4
-rw-r--r--gnu/packages/flashing-tools.scm60
-rw-r--r--gnu/packages/fonts.scm64
-rw-r--r--gnu/packages/fontutils.scm32
-rw-r--r--gnu/packages/freedesktop.scm68
-rw-r--r--gnu/packages/game-development.scm17
-rw-r--r--gnu/packages/games.scm11
-rw-r--r--gnu/packages/genimage.scm121
-rw-r--r--gnu/packages/gimp.scm4
-rw-r--r--gnu/packages/gnome.scm7
-rw-r--r--gnu/packages/gnuzilla.scm798
-rw-r--r--gnu/packages/graphics.scm146
-rw-r--r--gnu/packages/gstreamer.scm2
-rw-r--r--gnu/packages/hardware.scm28
-rw-r--r--gnu/packages/image-processing.scm33
-rw-r--r--gnu/packages/image-viewers.scm2
-rw-r--r--gnu/packages/image.scm42
-rw-r--r--gnu/packages/javascript.scm4
-rw-r--r--gnu/packages/julia-jll.scm50
-rw-r--r--gnu/packages/julia-xyz.scm242
-rw-r--r--gnu/packages/kde-frameworks.scm2
-rw-r--r--gnu/packages/kde.scm2
-rw-r--r--gnu/packages/linux.scm116
-rw-r--r--gnu/packages/lisp-check.scm794
-rw-r--r--gnu/packages/lisp-xyz.scm907
-rw-r--r--gnu/packages/mail.scm17
-rw-r--r--gnu/packages/maths.scm220
-rw-r--r--gnu/packages/messaging.scm21
-rw-r--r--gnu/packages/multiprecision.scm24
-rw-r--r--gnu/packages/music.scm48
-rw-r--r--gnu/packages/networking.scm8
-rw-r--r--gnu/packages/ocaml.scm4
-rw-r--r--gnu/packages/package-management.scm22
-rw-r--r--gnu/packages/parallel.scm10
-rw-r--r--gnu/packages/patches/diffoscope-fix-llvm-test.patch (renamed from gnu/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch)0
-rw-r--r--gnu/packages/patches/disarchive-cross-compilation.patch77
-rw-r--r--gnu/packages/patches/flatpak-fix-path.patch29
-rw-r--r--gnu/packages/patches/icecat-78-makeicecat.patch110
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch133
-rw-r--r--gnu/packages/patches/mupdf-CVE-2021-3407.patch51
-rw-r--r--gnu/packages/patches/mupdf-fix-linkage.patch27
-rw-r--r--gnu/packages/patches/python-peachpy-determinism.patch25
-rw-r--r--gnu/packages/patches/qemu-fix-agent-paths.patch66
-rw-r--r--gnu/packages/patches/u-boot-allow-disabling-openssl.patch164
-rw-r--r--gnu/packages/patches/udiskie-no-appindicator.patch155
-rw-r--r--gnu/packages/patches/zig-disable-libc-note-test.patch31
-rw-r--r--gnu/packages/patches/zig-use-system-paths.patch143
-rw-r--r--gnu/packages/pdf.scm9
-rw-r--r--gnu/packages/photo.scm6
-rw-r--r--gnu/packages/php.scm7
-rw-r--r--gnu/packages/python-check.scm2
-rw-r--r--gnu/packages/python-web.scm9
-rw-r--r--gnu/packages/python-xyz.scm56
-rw-r--r--gnu/packages/radio.scm16
-rw-r--r--gnu/packages/ruby.scm2
-rw-r--r--gnu/packages/scheme.scm14
-rw-r--r--gnu/packages/search.scm107
-rw-r--r--gnu/packages/security-token.scm24
-rw-r--r--gnu/packages/shellutils.scm89
-rw-r--r--gnu/packages/skarnet.scm42
-rw-r--r--gnu/packages/suckless.scm32
-rw-r--r--gnu/packages/task-management.scm7
-rw-r--r--gnu/packages/terminals.scm13
-rw-r--r--gnu/packages/text-editors.scm4
-rw-r--r--gnu/packages/time.scm4
-rw-r--r--gnu/packages/tls.scm21
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/version-control.scm9
-rw-r--r--gnu/packages/video.scm70
-rw-r--r--gnu/packages/vim.scm58
-rw-r--r--gnu/packages/virtualization.scm74
-rw-r--r--gnu/packages/vnc.scm7
-rw-r--r--gnu/packages/web-browsers.scm1
-rw-r--r--gnu/packages/web.scm30
-rw-r--r--gnu/packages/wm.scm5
-rw-r--r--gnu/packages/xdisorg.scm48
-rw-r--r--gnu/packages/xfce.scm25
-rw-r--r--gnu/packages/zig.scm104
-rw-r--r--gnu/services/rsync.scm5
-rw-r--r--guix/build/syscalls.scm49
-rw-r--r--guix/cache.scm10
-rw-r--r--guix/import/cran.scm23
-rw-r--r--guix/lint.scm19
-rw-r--r--guix/packages.scm101
-rw-r--r--guix/profiles.scm19
-rw-r--r--guix/scripts/environment.scm432
-rw-r--r--guix/scripts/home.scm24
-rw-r--r--guix/scripts/home/import.scm301
-rw-r--r--guix/scripts/package.scm47
-rw-r--r--guix/scripts/shell.scm394
-rw-r--r--guix/store.scm18
-rw-r--r--guix/ui.scm30
-rw-r--r--po/guix/POTFILES.in1
-rw-r--r--tests/guix-environment-container.sh8
-rw-r--r--tests/guix-environment.sh7
-rw-r--r--tests/guix-shell.sh102
-rw-r--r--tests/home-import.scm187
-rw-r--r--tests/lint.scm14
-rw-r--r--tests/packages.scm14
-rw-r--r--tests/profiles.scm7
-rw-r--r--tests/store.scm28
-rw-r--r--tests/syscalls.scm35
138 files changed, 6886 insertions, 2600 deletions
diff --git a/Makefile.am b/Makefile.am
index a99ccabd0ff..135fbb5ccee 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -317,6 +317,7 @@ MODULES = \
317 guix/scripts/import/stackage.scm \ 317 guix/scripts/import/stackage.scm \
318 guix/scripts/import/texlive.scm \ 318 guix/scripts/import/texlive.scm \
319 guix/scripts/environment.scm \ 319 guix/scripts/environment.scm \
320 guix/scripts/shell.scm \
320 guix/scripts/publish.scm \ 321 guix/scripts/publish.scm \
321 guix/scripts/edit.scm \ 322 guix/scripts/edit.scm \
322 guix/scripts/size.scm \ 323 guix/scripts/size.scm \
@@ -477,6 +478,7 @@ SCM_TESTS = \
477 tests/graph.scm \ 478 tests/graph.scm \
478 tests/gremlin.scm \ 479 tests/gremlin.scm \
479 tests/hackage.scm \ 480 tests/hackage.scm \
481 tests/home-import.scm \
480 tests/import-git.scm \ 482 tests/import-git.scm \
481 tests/import-utils.scm \ 483 tests/import-utils.scm \
482 tests/inferior.scm \ 484 tests/inferior.scm \
@@ -556,6 +558,7 @@ SH_TESTS = \
556 tests/guix-authenticate.sh \ 558 tests/guix-authenticate.sh \
557 tests/guix-environment.sh \ 559 tests/guix-environment.sh \
558 tests/guix-environment-container.sh \ 560 tests/guix-environment-container.sh \
561 tests/guix-shell.sh \
559 tests/guix-graph.sh \ 562 tests/guix-graph.sh \
560 tests/guix-describe.sh \ 563 tests/guix-describe.sh \
561 tests/guix-repl.sh \ 564 tests/guix-repl.sh \
diff --git a/doc/build.scm b/doc/build.scm
index 90fbf1f0e2c..bf32f854360 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> 3;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
4;;; 4;;;
5;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
@@ -59,6 +59,7 @@
59 ;; failed" crash: <https://bugs.gnu.org/47428>. 59 ;; failed" crash: <https://bugs.gnu.org/47428>.
60 (computed-file (computed-file-name result) 60 (computed-file (computed-file-name result)
61 (computed-file-gexp result) 61 (computed-file-gexp result)
62 #:local-build? #f
62 #:options (computed-file-options result) 63 #:options (computed-file-options result)
63 #:guile guile-3.0-latest))))) 64 #:guile guile-3.0-latest)))))
64 65
@@ -699,7 +700,7 @@ makeinfo OPTIONS."
699 '#$languages))))) 700 '#$languages)))))
700 701
701 (let* ((name (string-append manual "-html-manual")) 702 (let* ((name (string-append manual "-html-manual"))
702 (manual (computed-file name build))) 703 (manual (computed-file name build #:local-build? #f)))
703 (syntax-highlighted-html manual 704 (syntax-highlighted-html manual
704 #:mono-node-indexes mono-node-indexes 705 #:mono-node-indexes mono-node-indexes
705 #:split-node-indexes split-node-indexes 706 #:split-node-indexes split-node-indexes
@@ -803,7 +804,8 @@ PDF for language '~a'!~%~%"
803 opts)))) 804 opts))))
804 '#$languages)))) 805 '#$languages))))
805 806
806 (computed-file (string-append manual "-pdf-manual") build)) 807 (computed-file (string-append manual "-pdf-manual") build
808 #:local-build? #f))
807 809
808(define (guix-manual-text-domain source languages) 810(define (guix-manual-text-domain source languages)
809 "Return the PO files for LANGUAGES of the 'guix-manual' text domain taken 811 "Return the PO files for LANGUAGES of the 'guix-manual' text domain taken
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 76ab913b0de..db0f8361577 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -73,10 +73,10 @@ all the dependencies and appropriate environment variables are set up to
73hack on Guix: 73hack on Guix:
74 74
75@example 75@example
76guix environment guix --pure 76guix shell -D guix --pure
77@end example 77@end example
78 78
79@xref{Invoking guix environment}, for more information on that command. 79@xref{Invoking guix shell}, for more information on that command.
80 80
81If you are unable to use Guix when building Guix from a checkout, the 81If you are unable to use Guix when building Guix from a checkout, the
82following are the required packages in addition to those mentioned in the 82following are the required packages in addition to those mentioned in the
@@ -92,10 +92,10 @@ installation instructions (@pxref{Requirements}).
92@end itemize 92@end itemize
93 93
94On Guix, extra dependencies can be added by instead running @command{guix 94On Guix, extra dependencies can be added by instead running @command{guix
95environment} with @option{--ad-hoc}: 95shell}:
96 96
97@example 97@example
98guix environment guix --pure --ad-hoc help2man git strace 98guix shell -D guix help2man git strace --pure
99@end example 99@end example
100 100
101Run @command{./bootstrap} to generate the build system infrastructure 101Run @command{./bootstrap} to generate the build system infrastructure
diff --git a/doc/guix.texi b/doc/guix.texi
index 656dc357f59..85d834aca45 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -120,6 +120,7 @@ Documentation License''.
120 120
121@dircategory Software development 121@dircategory Software development
122@direntry 122@direntry
123* guix shell: (guix)Invoking guix shell. Creating software environments.
123* guix environment: (guix)Invoking guix environment. Building development environments with Guix. 124* guix environment: (guix)Invoking guix environment. Building development environments with Guix.
124* guix build: (guix)Invoking guix build. Building packages. 125* guix build: (guix)Invoking guix build. Building packages.
125* guix pack: (guix)Invoking guix pack. Creating binary bundles. 126* guix pack: (guix)Invoking guix pack. Creating binary bundles.
@@ -263,6 +264,7 @@ Channels
263 264
264Development 265Development
265 266
267* Invoking guix shell:: Spawning one-off software environments.
266* Invoking guix environment:: Setting up development environments. 268* Invoking guix environment:: Setting up development environments.
267* Invoking guix pack:: Creating software bundles. 269* Invoking guix pack:: Creating software bundles.
268* The GCC toolchain:: Working with languages supported by GCC. 270* The GCC toolchain:: Working with languages supported by GCC.
@@ -3069,10 +3071,10 @@ substitutes: they can force a local build and @emph{challenge} providers
3069(@pxref{Invoking guix challenge}). 3071(@pxref{Invoking guix challenge}).
3070 3072
3071Control over the build environment is a feature that is also useful for 3073Control over the build environment is a feature that is also useful for
3072developers. The @command{guix environment} command allows developers of 3074developers. The @command{guix shell} command allows developers of
3073a package to quickly set up the right development environment for their 3075a package to quickly set up the right development environment for their
3074package, without having to manually install the dependencies of the 3076package, without having to manually install the dependencies of the
3075package into their profile (@pxref{Invoking guix environment}). 3077package into their profile (@pxref{Invoking guix shell}).
3076 3078
3077@cindex replication, of software environments 3079@cindex replication, of software environments
3078@cindex provenance tracking, of software artifacts 3080@cindex provenance tracking, of software artifacts
@@ -3236,7 +3238,7 @@ As an example, @var{file} might contain a definition like this
3236Developers may find it useful to include such a @file{guix.scm} file 3238Developers may find it useful to include such a @file{guix.scm} file
3237in the root of their project source tree that can be used to test 3239in the root of their project source tree that can be used to test
3238development snapshots and create reproducible development environments 3240development snapshots and create reproducible development environments
3239(@pxref{Invoking guix environment}). 3241(@pxref{Invoking guix shell}).
3240 3242
3241The @var{file} may also contain a JSON representation of one or more 3243The @var{file} may also contain a JSON representation of one or more
3242package definitions. Running @code{guix package -f} on 3244package definitions. Running @code{guix package -f} on
@@ -3343,6 +3345,17 @@ objects, like this:
3343 '("emacs" "guile@@2.2" "guile@@2.2:debug")) 3345 '("emacs" "guile@@2.2" "guile@@2.2:debug"))
3344@end lisp 3346@end lisp
3345 3347
3348@findex package->development-manifest
3349You might also want to create a manifest for all the dependencies of a
3350package, rather than the package itself:
3351
3352@lisp
3353(package->development-manifest (specification->package "emacs"))
3354@end lisp
3355
3356The example above gives you all the software required to develop Emacs,
3357similar to what @command{guix environment emacs} provides.
3358
3346@xref{export-manifest, @option{--export-manifest}}, to learn how to 3359@xref{export-manifest, @option{--export-manifest}}, to learn how to
3347obtain a manifest file from an existing profile. 3360obtain a manifest file from an existing profile.
3348 3361
@@ -5552,31 +5565,389 @@ If you are a software developer, Guix provides tools that you should find
5552helpful---independently of the language you're developing in. This is what 5565helpful---independently of the language you're developing in. This is what
5553this chapter is about. 5566this chapter is about.
5554 5567
5555The @command{guix environment} command provides a convenient way to set up 5568The @command{guix shell} command provides a convenient way to set up
5556@dfn{development environments} containing all the dependencies and tools 5569one-off software environments, be it for development purposes or to run
5557necessary to work on the software package of your choice. The @command{guix 5570a command without installing it in your profile. The @command{guix
5558pack} command allows you to create @dfn{application bundles} that can be 5571pack} command allows you to create @dfn{application bundles} that can be
5559easily distributed to users who do not run Guix. 5572easily distributed to users who do not run Guix.
5560 5573
5561@menu 5574@menu
5575* Invoking guix shell:: Spawning one-off software environments.
5562* Invoking guix environment:: Setting up development environments. 5576* Invoking guix environment:: Setting up development environments.
5563* Invoking guix pack:: Creating software bundles. 5577* Invoking guix pack:: Creating software bundles.
5564* The GCC toolchain:: Working with languages supported by GCC. 5578* The GCC toolchain:: Working with languages supported by GCC.
5565* Invoking guix git authenticate:: Authenticating Git repositories. 5579* Invoking guix git authenticate:: Authenticating Git repositories.
5566@end menu 5580@end menu
5567 5581
5568@node Invoking guix environment 5582@node Invoking guix shell
5569@section Invoking @command{guix environment} 5583@section Invoking @command{guix shell}
5570 5584
5571@cindex reproducible build environments 5585@cindex reproducible build environments
5572@cindex development environments 5586@cindex development environments
5573@cindex @command{guix environment} 5587@cindex @command{guix environment}
5574@cindex environment, package build environment 5588@cindex environment, package build environment
5575The purpose of @command{guix environment} is to assist hackers in 5589The purpose of @command{guix shell} is to make it easy to create one-off
5576creating reproducible development environments without polluting their 5590software environments, without changing one's profile. It is typically
5577package profile. The @command{guix environment} tool takes one or more 5591used to create development environments; it is also a convenient way to
5578packages, builds all of their inputs, and creates a shell 5592run applications without ``polluting'' your profile.
5579environment to use them. 5593
5594@quotation Note
5595The @command{guix shell} command was recently introduced to supersede
5596@command{guix environment} (@pxref{Invoking guix environment}). If you
5597are familiar with @command{guix environment}, you will notice that it is
5598similar but also---we hope!---more convenient.
5599@end quotation
5600
5601The general syntax is:
5602
5603@example
5604guix shell [@var{options}] [@var{package}@dots{}]
5605@end example
5606
5607The following example creates an environment containing Python and NumPy,
5608building or downloading any missing package, and runs the
5609@command{python3} command in that environment:
5610
5611@example
5612guix shell python python-numpy -- python3
5613@end example
5614
5615Development environments can be created as in the example below, which
5616spawns an interactive shell containing all the dependencies and
5617environment variables needed to work on Inkscape:
5618
5619@example
5620guix shell --development inkscape
5621@end example
5622
5623Exiting the shell places the user back in the original environment
5624before @command{guix shell} was invoked. The next garbage collection
5625(@pxref{Invoking guix gc}) may clean up packages that were installed in
5626the environment and that are no longer used outside of it.
5627
5628As an added convenience, when running from a directory that contains a
5629@file{manifest.scm} or a @file{guix.scm} file (in this order), possibly
5630in a parent directory, @command{guix shell} automatically loads the
5631file---provided the directory is listed in
5632@file{~/.config/guix/shell-authorized-directories}, and only for
5633interactive use:
5634
5635@example
5636guix shell
5637@end example
5638
5639This provides an easy way to define, share, and enter development
5640environments.
5641
5642By default, the shell session or command runs in an @emph{augmented}
5643environment, where the new packages are added to search path environment
5644variables such as @code{PATH}. You can, instead, choose to create an
5645@emph{isolated} environment containing nothing but the packages you
5646asked for. Passing the @option{--pure} option clears environment
5647variable definitions found in the parent environment@footnote{Be sure to
5648use the @option{--check} option the first time you use @command{guix
5649shell} interactively to make sure the shell does not undo the effect of
5650@option{--pure}.}; passing @option{--container} goes one step further by
5651spawning a @dfn{container} isolated from the rest of the system:
5652
5653@example
5654guix shell --container emacs gcc-toolchain
5655@end example
5656
5657The command above spawns an interactive shell in a container when
5658nothing but @code{emacs}, @code{gcc-toolchain}, and their dependencies
5659is available. The container lacks network access and shares no files
5660other than the current working directory with the surrounding
5661environment. This is useful to prevent access to system-wide resources
5662such as @file{/usr/bin} on foreign distros.
5663
5664This @option{--container} option can also prove useful if you wish to
5665run a security-sensitive application, such as a web browser, in an
5666isolated environment. For example, the command below launches
5667Ungoogled-Chromium in an isolated environment, this time sharing network
5668access with the host and preserving its @code{DISPLAY} environment
5669variable, but without even sharing the current directory:
5670
5671@example
5672guix shell --container --network --no-cwd ungoogled-chromium \
5673 --preserve='^DISPLAY$' -- chromium
5674@end example
5675
5676@vindex GUIX_ENVIRONMENT
5677@command{guix shell} defines the @env{GUIX_ENVIRONMENT}
5678variable in the shell it spawns; its value is the file name of the
5679profile of this environment. This allows users to, say, define a
5680specific prompt for development environments in their @file{.bashrc}
5681(@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}):
5682
5683@example
5684if [ -n "$GUIX_ENVIRONMENT" ]
5685then
5686 export PS1="\u@@\h \w [dev]\$ "
5687fi
5688@end example
5689
5690@noindent
5691...@: or to browse the profile:
5692
5693@example
5694$ ls "$GUIX_ENVIRONMENT/bin"
5695@end example
5696
5697The available options are summarized below.
5698
5699@table @code
5700@item --check
5701Set up the environment and check whether the shell would clobber
5702environment variables. It's a good idea to use this option the first
5703time you run @command{guix shell} for an interactive session to make
5704sure your setup is correct.
5705
5706For example, if the shell modifies the @env{PATH} environment variable,
5707report it since you would get a different environment than what you
5708asked for.
5709
5710Such problems usually indicate that the shell startup files are
5711unexpectedly modifying those environment variables. For example, if you
5712are using Bash, make sure that environment variables are set or modified
5713in @file{~/.bash_profile} and @emph{not} in @file{~/.bashrc}---the
5714former is sourced only by log-in shells. @xref{Bash Startup Files,,,
5715bash, The GNU Bash Reference Manual}, for details on Bash start-up
5716files.
5717
5718@item --development
5719@itemx -D
5720Cause @command{guix shell} to include in the environment the
5721dependencies of the following package rather than the package itself.
5722This can be combined with other packages. For instance, the command
5723below starts an interactive shell containing the build-time dependencies
5724of GNU@tie{}Guile, plus Autoconf, Automake, and Libtool:
5725
5726@example
5727guix shell -D guile autoconf automake libtool
5728@end example
5729
5730@item --expression=@var{expr}
5731@itemx -e @var{expr}
5732Create an environment for the package or list of packages that
5733@var{expr} evaluates to.
5734
5735For example, running:
5736
5737@example
5738guix shell -D -e '(@@ (gnu packages maths) petsc-openmpi)'
5739@end example
5740
5741starts a shell with the environment for this specific variant of the
5742PETSc package.
5743
5744Running:
5745
5746@example
5747guix shell -e '(@@ (gnu) %base-packages)'
5748@end example
5749
5750starts a shell with all the base system packages available.
5751
5752The above commands only use the default output of the given packages.
5753To select other outputs, two element tuples can be specified:
5754
5755@example
5756guix shell -e '(list (@@ (gnu packages bash) bash) "include")'
5757@end example
5758
5759@item --file=@var{file}
5760@itemx -f @var{file}
5761Create an environment containing the package or list of packages that
5762the code within @var{file} evaluates to.
5763
5764As an example, @var{file} might contain a definition like this
5765(@pxref{Defining Packages}):
5766
5767@lisp
5768@verbatiminclude environment-gdb.scm
5769@end lisp
5770
5771With the file above, you can enter a development environment for GDB by
5772running:
5773
5774@example
5775guix shell -D -f gdb-devel.scm
5776@end example
5777
5778@item --manifest=@var{file}
5779@itemx -m @var{file}
5780Create an environment for the packages contained in the manifest object
5781returned by the Scheme code in @var{file}. This option can be repeated
5782several times, in which case the manifests are concatenated.
5783
5784This is similar to the same-named option in @command{guix package}
5785(@pxref{profile-manifest, @option{--manifest}}) and uses the same
5786manifest files.
5787
5788@item --rebuild-cache
5789When using @option{--manifest}, @option{--file}, or when invoked without
5790arguments, @command{guix shell} caches the environment so that
5791subsequent uses are instantaneous. The cache is invalidated anytime the
5792file is modified.
5793
5794The @option{--rebuild-cache} forces the cached environment to be
5795refreshed even if the file has not changed. This is useful if the
5796@command{guix.scm} or @command{manifest.scm} has external dependencies,
5797or if its behavior depends, say, on environment variables.
5798
5799@item --pure
5800Unset existing environment variables when building the new environment, except
5801those specified with @option{--preserve} (see below). This has the effect of
5802creating an environment in which search paths only contain package inputs.
5803
5804@item --preserve=@var{regexp}
5805@itemx -E @var{regexp}
5806When used alongside @option{--pure}, preserve the environment variables
5807matching @var{regexp}---in other words, put them on a ``white list'' of
5808environment variables that must be preserved. This option can be repeated
5809several times.
5810
5811@example
5812guix shell --pure --preserve=^SLURM openmpi @dots{} \
5813 -- mpirun @dots{}
5814@end example
5815
5816This example runs @command{mpirun} in a context where the only environment
5817variables defined are @env{PATH}, environment variables whose name starts
5818with @samp{SLURM}, as well as the usual ``precious'' variables (@env{HOME},
5819@env{USER}, etc.).
5820
5821@item --search-paths
5822Display the environment variable definitions that make up the
5823environment.
5824
5825@item --system=@var{system}
5826@itemx -s @var{system}
5827Attempt to build for @var{system}---e.g., @code{i686-linux}.
5828
5829@item --container
5830@itemx -C
5831@cindex container
5832Run @var{command} within an isolated container. The current working
5833directory outside the container is mapped inside the container.
5834Additionally, unless overridden with @option{--user}, a dummy home
5835directory is created that matches the current user's home directory, and
5836@file{/etc/passwd} is configured accordingly.
5837
5838The spawned process runs as the current user outside the container. Inside
5839the container, it has the same UID and GID as the current user, unless
5840@option{--user} is passed (see below).
5841
5842@item --network
5843@itemx -N
5844For containers, share the network namespace with the host system.
5845Containers created without this flag only have access to the loopback
5846device.
5847
5848@item --link-profile
5849@itemx -P
5850For containers, link the environment profile to @file{~/.guix-profile}
5851within the container and set @code{GUIX_ENVIRONMENT} to that.
5852This is equivalent to making @file{~/.guix-profile} a symlink to the
5853actual profile within the container.
5854Linking will fail and abort the environment if the directory already
5855exists, which will certainly be the case if @command{guix shell}
5856was invoked in the user's home directory.
5857
5858Certain packages are configured to look in @file{~/.guix-profile} for
5859configuration files and data;@footnote{For example, the
5860@code{fontconfig} package inspects @file{~/.guix-profile/share/fonts}
5861for additional fonts.} @option{--link-profile} allows these programs to
5862behave as expected within the environment.
5863
5864@item --user=@var{user}
5865@itemx -u @var{user}
5866For containers, use the username @var{user} in place of the current
5867user. The generated @file{/etc/passwd} entry within the container will
5868contain the name @var{user}, the home directory will be
5869@file{/home/@var{user}}, and no user GECOS data will be copied. Furthermore,
5870the UID and GID inside the container are 1000. @var{user}
5871need not exist on the system.
5872
5873Additionally, any shared or exposed path (see @option{--share} and
5874@option{--expose} respectively) whose target is within the current user's
5875home directory will be remapped relative to @file{/home/USER}; this
5876includes the automatic mapping of the current working directory.
5877
5878@example
5879# will expose paths as /home/foo/wd, /home/foo/test, and /home/foo/target
5880cd $HOME/wd
5881guix shell --container --user=foo \
5882 --expose=$HOME/test \
5883 --expose=/tmp/target=$HOME/target
5884@end example
5885
5886While this will limit the leaking of user identity through home paths
5887and each of the user fields, this is only one useful component of a
5888broader privacy/anonymity solution---not one in and of itself.
5889
5890@item --no-cwd
5891For containers, the default behavior is to share the current working
5892directory with the isolated container and immediately change to that
5893directory within the container. If this is undesirable,
5894@option{--no-cwd} will cause the current working directory to @emph{not}
5895be automatically shared and will change to the user's home directory
5896within the container instead. See also @option{--user}.
5897
5898@item --expose=@var{source}[=@var{target}]
5899@itemx --share=@var{source}[=@var{target}]
5900For containers, @option{--expose} (resp. @option{--share}) exposes the
5901file system @var{source} from the host system as the read-only
5902(resp. writable) file system @var{target} within the container. If
5903@var{target} is not specified, @var{source} is used as the target mount
5904point in the container.
5905
5906The example below spawns a Guile REPL in a container in which the user's
5907home directory is accessible read-only via the @file{/exchange}
5908directory:
5909
5910@example
5911guix shell --container --expose=$HOME=/exchange guile -- guile
5912@end example
5913
5914@item --root=@var{file}
5915@itemx -r @var{file}
5916@cindex persistent environment
5917@cindex garbage collector root, for environments
5918Make @var{file} a symlink to the profile for this environment, and
5919register it as a garbage collector root.
5920
5921This is useful if you want to protect your environment from garbage
5922collection, to make it ``persistent''.
5923
5924When this option is omitted, the environment is protected from garbage
5925collection only for the duration of the @command{guix shell}
5926session. This means that next time you recreate the same environment,
5927you could have to rebuild or re-download packages. @xref{Invoking guix
5928gc}, for more on GC roots.
5929@end table
5930
5931@command{guix shell} also supports all of the common build options that
5932@command{guix build} supports (@pxref{Common Build Options}) as well as
5933package transformation options (@pxref{Package Transformation Options}).
5934
5935@node Invoking guix environment
5936@section Invoking @command{guix environment}
5937
5938The purpose of @command{guix environment} is to assist in creating
5939development environments.
5940
5941@quotation Deprecation warning
5942The @command{guix environment} command is deprecated in favor of
5943@command{guix shell}, which performs similar functions but is more
5944convenient to use. @xref{Invoking guix shell}.
5945
5946Being deprecated, @command{guix environment} is slated for eventual
5947removal, but the Guix project is committed to keeping it until May 1st,
59482023. Please get in touch with us at @email{guix-devel@@gnu.org} if you
5949would like to discuss it.
5950@end quotation
5580 5951
5581The general syntax is: 5952The general syntax is:
5582 5953
@@ -5710,6 +6081,11 @@ guix environment --preserve='^DISPLAY$' --container --network \
5710The available options are summarized below. 6081The available options are summarized below.
5711 6082
5712@table @code 6083@table @code
6084@item --check
6085Set up the environment and check whether the shell would clobber
6086environment variables. @xref{Invoking guix shell, @option{--check}},
6087for more info.
6088
5713@item --root=@var{file} 6089@item --root=@var{file}
5714@itemx -r @var{file} 6090@itemx -r @var{file}
5715@cindex persistent environment 6091@cindex persistent environment
@@ -6898,6 +7274,47 @@ In this example we obtain the @code{gmp} package that is among the
6898direct inputs of @code{coreutils}. 7274direct inputs of @code{coreutils}.
6899@end deffn 7275@end deffn
6900 7276
7277@cindex development inputs, of a package
7278@cindex implicit inputs, of a package
7279Sometimes you will want to obtain the list of inputs needed to
7280@emph{develop} a package---all the inputs that are visible when the
7281package is compiled. This is what the @code{package-development-inputs}
7282procedure returns.
7283
7284@deffn {Scheme Procedure} package-development-inputs @var{package} @
7285 [@var{system}] [#:target #f]
7286Return the list of inputs required by @var{package} for development
7287purposes on @var{system}. When @var{target} is true, return the inputs
7288needed to cross-compile @var{package} from @var{system} to
7289@var{triplet}, where @var{triplet} is a triplet such as
7290@code{"aarch64-linux-gnu"}.
7291
7292Note that the result includes both explicit inputs and implicit
7293inputs---inputs automatically added by the build system (@pxref{Build
7294Systems}). Let us take the @code{hello} package to illustrate that:
7295
7296@lisp
7297(use-modules (gnu packages base) (guix packages))
7298
7299hello
7300@result{} #<package hello@@2.10 gnu/packages/base.scm:79 7f585d4f6790>
7301
7302(package-direct-inputs hello)
7303@result{} ()
7304
7305(package-development-inputs hello)
7306@result{} (("source" @dots{}) ("tar" #<package tar@@1.32 @dots{}>) @dots{})
7307@end lisp
7308
7309In this example, @code{package-direct-inputs} returns the empty list,
7310because @code{hello} has zero explicit dependencies. Conversely,
7311@code{package-development-inputs} includes inputs implicitly added by
7312@code{gnu-build-system} that are required to build @code{hello}: tar,
7313gzip, GCC, libc, Bash, and more. To visualize it, @command{guix graph
7314hello} would show you explicit inputs, whereas @command{guix graph -t
7315bag hello} would include implicit inputs (@pxref{Invoking guix graph}).
7316@end deffn
7317
6901Because packages are regular Scheme objects that capture a complete 7318Because packages are regular Scheme objects that capture a complete
6902dependency graph and associated build procedures, it is often useful to 7319dependency graph and associated build procedures, it is often useful to
6903write procedures that take a package and return a modified version 7320write procedures that take a package and return a modified version
@@ -11152,14 +11569,14 @@ a container similar to the one the build daemon creates:
11152$ guix build -K foo 11569$ guix build -K foo
11153@dots{} 11570@dots{}
11154$ cd /tmp/guix-build-foo.drv-0 11571$ cd /tmp/guix-build-foo.drv-0
11155$ guix environment --no-grafts -C foo --ad-hoc strace gdb 11572$ guix shell --no-grafts -C foo strace gdb
11156[env]# source ./environment-variables 11573[env]# source ./environment-variables
11157[env]# cd foo-1.2 11574[env]# cd foo-1.2
11158@end example 11575@end example
11159 11576
11160Here, @command{guix environment -C} creates a container and spawns a new 11577Here, @command{guix shell -C} creates a container and spawns a new
11161shell in it (@pxref{Invoking guix environment}). The @command{--ad-hoc 11578shell in it (@pxref{Invoking guix shell}). The @command{strace gdb}
11162strace gdb} part adds the @command{strace} and @command{gdb} commands to 11579part adds the @command{strace} and @command{gdb} commands to
11163the container, which you may find handy while debugging. The 11580the container, which you may find handy while debugging. The
11164@option{--no-grafts} option makes sure we get the exact same 11581@option{--no-grafts} option makes sure we get the exact same
11165environment, with ungrafted packages (@pxref{Security Updates}, for more 11582environment, with ungrafted packages (@pxref{Security Updates}, for more
@@ -11173,7 +11590,7 @@ remove @file{/bin/sh}:
11173@end example 11590@end example
11174 11591
11175(Don't worry, this is harmless: this is all happening in the throw-away 11592(Don't worry, this is harmless: this is all happening in the throw-away
11176container created by @command{guix environment}.) 11593container created by @command{guix shell}.)
11177 11594
11178The @command{strace} command is probably not in the search path, but we 11595The @command{strace} command is probably not in the search path, but we
11179can run: 11596can run:
@@ -13468,8 +13885,8 @@ is subject to radical change in the future.
13468 13885
13469The purpose of @command{guix container} is to manipulate processes 13886The purpose of @command{guix container} is to manipulate processes
13470running within an isolated environment, commonly known as a 13887running within an isolated environment, commonly known as a
13471``container'', typically created by the @command{guix environment} 13888``container'', typically created by the @command{guix shell}
13472(@pxref{Invoking guix environment}) and @command{guix system container} 13889(@pxref{Invoking guix shell}) and @command{guix system container}
13473(@pxref{Invoking guix system}) commands. 13890(@pxref{Invoking guix system}) commands.
13474 13891
13475The general syntax is: 13892The general syntax is:
@@ -13655,7 +14072,7 @@ listed.}. Here's an example of the information it returns:
13655$ sudo guix processes 14072$ sudo guix processes
13656SessionPID: 19002 14073SessionPID: 19002
13657ClientPID: 19090 14074ClientPID: 19090
13658ClientCommand: guix environment --ad-hoc python 14075ClientCommand: guix shell python
13659 14076
13660SessionPID: 19402 14077SessionPID: 19402
13661ClientPID: 19367 14078ClientPID: 19367
@@ -17362,6 +17779,10 @@ Data type representing the configuration for @code{rsync-service}.
17362@item @code{package} (default: @var{rsync}) 17779@item @code{package} (default: @var{rsync})
17363@code{rsync} package to use. 17780@code{rsync} package to use.
17364 17781
17782@item @code{address} (default: @code{#f})
17783IP address on which @command{rsync} listens for incoming connections.
17784If unspecified, it defaults to listening on all available addresses.
17785
17365@item @code{port-number} (default: @code{873}) 17786@item @code{port-number} (default: @code{873})
17366TCP port on which @command{rsync} listens for incoming connections. If port 17787TCP port on which @command{rsync} listens for incoming connections. If port
17367is less than @code{1024} @command{rsync} needs to be started as the 17788is less than @code{1024} @command{rsync} needs to be started as the
@@ -29868,8 +30289,7 @@ When the service is running, you can view its console by connecting to
29868it with a VNC client, for example with: 30289it with a VNC client, for example with:
29869 30290
29870@example 30291@example
29871guix environment --ad-hoc tigervnc-client -- \ 30292guix shell tigervnc-client -- vncviewer localhost:5900
29872 vncviewer localhost:5900
29873@end example 30293@end example
29874 30294
29875The default configuration (see @code{hurd-vm-configuration} below) 30295The default configuration (see @code{hurd-vm-configuration} below)
@@ -34125,7 +34545,7 @@ guix system delete-generations
34125@end example 34545@end example
34126 34546
34127You can also select the generations you want to delete. The example below 34547You can also select the generations you want to delete. The example below
34128deletes all the system generations that are more than two month old: 34548deletes all the system generations that are more than two months old:
34129 34549
34130@example 34550@example
34131guix system delete-generations 2m 34551guix system delete-generations 2m
@@ -35657,12 +36077,27 @@ still in an experimental stage, though.
35657@section Declaring the Home Environment 36077@section Declaring the Home Environment
35658The home environment is configured by providing a 36078The home environment is configured by providing a
35659@code{home-environment} declaration in a file that can be passed to the 36079@code{home-environment} declaration in a file that can be passed to the
35660@command{guix home} command (@pxref{Invoking guix home}). A simple 36080@command{guix home} command (@pxref{Invoking guix home}). The easiest
35661setup can include Bash and a custom text configuration, like in the 36081way to get started is by generating an initial configuration with
35662example below. Don't be afraid to declare home environment parts, which 36082@command{guix home import}:
35663overlaps with your current dotfiles, before installing any configuration 36083
35664files, Guix Home will back up existing config files to a separate place 36084@example
35665in the home folder. 36085guix home import ~/src/guix-config
36086@end example
36087
36088The @command{guix home import} command reads some of the ``dot files''
36089such as @file{~/.bashrc} found in your home directory and copies them to
36090the given directory, @file{~/src/guix-config} in this case; it also
36091reads the contents of your profile, @file{~/.guix-profile}, and, based
36092on that, it outputs a Home configuration that resembles your current
36093configuration. You can dump that configuration to a file and you're
36094ready to go!
36095
36096A simple setup can include Bash and a custom text configuration, like in
36097the example below. Don't be afraid to declare home environment parts,
36098which overlaps with your current dot files: before installing any
36099configuration files, Guix Home will back up existing config files to a
36100separate place in the home directory.
35666 36101
35667@quotation Note 36102@quotation Note
35668It is highly recommended that you manage your shell or shells with Guix 36103It is highly recommended that you manage your shell or shells with Guix
@@ -35685,10 +36120,20 @@ There is no daemon (at least not necessarily) related to a home service,
35685a home service is just an element that is used to declare part of home 36120a home service is just an element that is used to declare part of home
35686environment and extend other parts of it. The extension mechanism 36121environment and extend other parts of it. The extension mechanism
35687discussed in the previous chapter (@pxref{Defining Services}) should not 36122discussed in the previous chapter (@pxref{Defining Services}) should not
35688be confused with @ref{Shepherd Services}. Using this extension 36123be confused with Shepherd services (@pxref{Shepherd Services}). Using this extension
35689mechanism and some Scheme code that glues things together gives the user 36124mechanism and some Scheme code that glues things together gives the user
35690the freedom to declare their own, very custom, home environments. 36125the freedom to declare their own, very custom, home environments.
35691 36126
36127Once you have a configuration file that suits your needs, you can
36128reconfigure your home by running:
36129
36130@example
36131guix home reconfigure config.scm
36132@end example
36133
36134This ``builds'' your home environment and creates @file{~/.guix-home}
36135pointing to it. Voilà!
36136
35692@node Configuring the Shell 36137@node Configuring the Shell
35693@section Configuring the Shell 36138@section Configuring the Shell
35694This section is safe to skip if your shell or shells are managed by 36139This section is safe to skip if your shell or shells are managed by
@@ -36283,7 +36728,7 @@ guix home delete-generations
36283@end example 36728@end example
36284 36729
36285You can also select the generations you want to delete. The example below 36730You can also select the generations you want to delete. The example below
36286deletes all the home generations that are more than two month old: 36731deletes all the home generations that are more than two months old:
36287 36732
36288@example 36733@example
36289guix home delete-generations 2m 36734guix home delete-generations 2m
@@ -36313,6 +36758,38 @@ generations that are up to 10 days old:
36313$ guix home list-generations 10d 36758$ guix home list-generations 10d
36314@end example 36759@end example
36315 36760
36761@item import
36762Generate a @dfn{home environment} from the packages in the default
36763profile and configuration files found in the user's home directory. The
36764configuration files will be copied to the specified directory. Note
36765that not every home service that exists is supported (@pxref{Home
36766Services}).
36767
36768@example
36769$ guix home import ~/guix-config
36770;; This "home-environment" file can be passed to 'guix home reconfigure'
36771;; to reproduce the content of your profile. This is "symbolic": it only
36772;; specifies package names. To reproduce the exact same profile, you also
36773;; need to capture the channels being used, as returned by "guix describe".
36774;; See the "Replicating Guix" section in the manual.
36775
36776(use-modules
36777 (gnu home)
36778 (gnu packages)
36779 (gnu home services shells))
36780
36781(home-environment
36782 (packages
36783 (map specification->package
36784 (list "glibc-locales" "nss-certs" "nss")))
36785 (services
36786 (list (service
36787 home-bash-service-type
36788 (home-bash-configuration
36789 (bashrc
36790 (list (local-file "/home/charlie/guix-config/.bashrc"))))))))
36791@end example
36792
36316@end table 36793@end table
36317 36794
36318@var{options} can contain any of the common build options (@pxref{Common 36795@var{options} can contain any of the common build options (@pxref{Common
diff --git a/doc/local.mk b/doc/local.mk
index fff11f81835..d0cab306a49 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -110,18 +110,18 @@ endef
110$(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.texi guix/build/po.go 110$(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.texi guix/build/po.go
111 -$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix.texi" -p "$<" -l "$@.tmp" 111 -$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix.texi" -p "$<" -l "$@.tmp"
112 -sed -i "s|guix\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp" 112 -sed -i "s|guix\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
113 -$(AM_V_POXREF)$(xref_command) 113 -$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
114 -mv "$@.tmp" "$@" 114 -mv "$@.tmp" "$@"
115 115
116$(srcdir)/%D%/guix-cookbook.%.texi: po/doc/guix-cookbook.%.po guix/build/po.go 116$(srcdir)/%D%/guix-cookbook.%.texi: po/doc/guix-cookbook.%.po guix/build/po.go
117 -$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix-cookbook.texi" -p "$<" -l "$@.tmp" 117 -$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix-cookbook.texi" -p "$<" -l "$@.tmp"
118 -sed -i "s|guix-cookbook\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp" 118 -sed -i "s|guix-cookbook\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
119 -$(AM_V_POXREF)$(xref_command) 119 -$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
120 -mv "$@.tmp" "$@" 120 -mv "$@.tmp" "$@"
121 121
122$(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po guix/build/po.go 122$(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po guix/build/po.go
123 -$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/contributing.texi" -p "$<" -l "$@.tmp" 123 -$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/contributing.texi" -p "$<" -l "$@.tmp"
124 -$(AM_V_POXREF)$(xref_command) 124 -$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
125 -mv "$@.tmp" "$@" 125 -mv "$@.tmp" "$@"
126 126
127%D%/os-config-%.texi: gnu/system/examples/%.tmpl 127%D%/os-config-%.texi: gnu/system/examples/%.tmpl
diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix
index 87d9911e53a..6a11e1b23b3 100644
--- a/etc/completion/bash/guix
+++ b/etc/completion/bash/guix
@@ -1,5 +1,5 @@
1# GNU Guix --- Functional package management for GNU 1# GNU Guix --- Functional package management for GNU
2# Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> 2# Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
3# Copyright © 2021 Tobias Geerinck-Rice <me@tobias.gr> 3# Copyright © 2021 Tobias Geerinck-Rice <me@tobias.gr>
4# 4#
5# This file is part of GNU Guix. 5# This file is part of GNU Guix.
@@ -28,10 +28,11 @@ _guix_complete_command ()
28 if [ -z "$_guix_commands" ] 28 if [ -z "$_guix_commands" ]
29 then 29 then
30 # Cache the list of commands to speed things up. 30 # Cache the list of commands to speed things up.
31 _guix_commands="$(guix --help 2> /dev/null \ 31 _guix_commands="$(${COMP_WORDS[0]} --help 2> /dev/null \
32 | grep '^ ' \ 32 | grep '^ ' \
33 | sed '-es/^ *\([a-z-]\+\).*$/\1/g')" 33 | sed '-es/^ *\([a-z-]\+\).*$/\1/g')"
34 fi 34 fi
35
35 COMPREPLY+=($(compgen -W "$_guix_commands" -- "$word_at_point")) 36 COMPREPLY+=($(compgen -W "$_guix_commands" -- "$word_at_point"))
36} 37}
37 38
@@ -71,10 +72,16 @@ _guix_complete_option ()
71{ 72{
72 local command="${COMP_WORDS[$1]}" 73 local command="${COMP_WORDS[$1]}"
73 local subcommand="${COMP_WORDS[$(($1 + 1))]}" 74 local subcommand="${COMP_WORDS[$(($1 + 1))]}"
74 if _guix_is_option "$subcommand" 75
76 if [ $1 -le 1 ]
77 then
78 command=""
79 subcommand=""
80 elif _guix_is_option "$subcommand"
75 then 81 then
76 subcommand="" 82 subcommand=""
77 fi 83 fi
84
78 local options="$(${COMP_WORDS[0]} $command $subcommand --help 2> /dev/null \ 85 local options="$(${COMP_WORDS[0]} $command $subcommand --help 2> /dev/null \
79 | grep '^ \+-' \ 86 | grep '^ \+-' \
80 | sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g')" 87 | sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g')"
@@ -215,7 +222,7 @@ _guix_complete ()
215 if [[ "$word" = "--" ]] 222 if [[ "$word" = "--" ]]
216 then 223 then
217 case "$command" in 224 case "$command" in
218 environment) 225 environment|shell)
219 break 226 break
220 ;; 227 ;;
221 time-machine) 228 time-machine)
@@ -228,6 +235,7 @@ _guix_complete ()
228 case $COMP_CWORD in 235 case $COMP_CWORD in
229 $command_index) 236 $command_index)
230 _guix_complete_command 237 _guix_complete_command
238 _guix_complete_option 0 "$word_at_point"
231 ;; 239 ;;
232 *) 240 *)
233 if [[ "$command" = "package" ]] 241 if [[ "$command" = "package" ]]
@@ -265,7 +273,7 @@ _guix_complete ()
265 else 273 else
266 _guix_complete_available_package_or_store_file "$word_at_point" 274 _guix_complete_available_package_or_store_file "$word_at_point"
267 fi 275 fi
268 elif [[ "$command" = "environment" ]] 276 elif [[ "$command" = "environment" || "$command" = "shell" ]]
269 then 277 then
270 if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p || _guix_is_dash_l 278 if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p || _guix_is_dash_l
271 then 279 then
diff --git a/etc/completion/zsh/_guix b/etc/completion/zsh/_guix
index bbc13c6ca1c..9b1f16c664e 100644
--- a/etc/completion/zsh/_guix
+++ b/etc/completion/zsh/_guix
@@ -58,6 +58,7 @@ _guix_list_available_packages()
58 if ( [[ ${+_guix_available_packages} -eq 0 ]] || _cache_invalid GUIX_AVAILABLE_PACKAGES ) \ 58 if ( [[ ${+_guix_available_packages} -eq 0 ]] || _cache_invalid GUIX_AVAILABLE_PACKAGES ) \
59 && ! _retrieve_cache GUIX_AVAILABLE_PACKAGES; then 59 && ! _retrieve_cache GUIX_AVAILABLE_PACKAGES; then
60 _guix_available_packages=(${${(f)"$(guix package -A | cut -f1)"}}) 60 _guix_available_packages=(${${(f)"$(guix package -A | cut -f1)"}})
61 _guix_available_packages=("${_guix_available_packages[@]// /}")
61 _store_cache GUIX_AVAILABLE_PACKAGES _guix_available_packages 62 _store_cache GUIX_AVAILABLE_PACKAGES _guix_available_packages
62 fi 63 fi
63} 64}
diff --git a/etc/news.scm b/etc/news.scm
index d3a56865b60..494c78eded8 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -23,7 +23,96 @@
23 23
24(channel-news 24(channel-news
25 (version 0) 25 (version 0)
26(entry (commit "a2324d8b56eabf8117bca220a507cc791edffd2e") 26
27 (entry (commit "746584e0ca200e7bf51b139ceb36c19ea81d6ef1")
28 (title
29 (en "New @command{guix shell} command supersedes @command{guix
30environment}")
31 (de "Neuer Befehl @command{guix shell} löst @command{guix
32environment} ab")
33 (fr "Nouvelle commande @command{guix shell} en remplacement de
34@command{guix environment}"))
35 (body
36 (en "A new @command{guix shell} command is now available. It is
37similar to @command{guix environment}, but with a more convenient interface
38(@command{guix environment} is deprecated but will remain available until May,
391st 2023). The main difference compared to @command{guix environment} is that
40the \"ad hoc\" mode is the default. Thus, to create an interactive
41environment containing Python, NumPy, and SciPy, you would run:
42
43@example
44guix shell python python-numpy python-scipy
45@end example
46
47To get a development environment for, say, Inkscape, pass the @option{-D}
48flag:
49
50@example
51guix shell -D inkscape
52@end example
53
54Another difference is that running @command{guix shell} without arguments
55loads @file{manifest.scm} or @file{guix.scm} for the current directory or an
56ancestor, provided you allowed it. The command maintains a cache to speed up
57access to such environments.
58
59Run @command{info \"(guix) Invoking guix shell\"} for more information.")
60 (de "Ein neuer Befehl @command{guix shell} ist ab jetzt
61verfügbar. Er ähnelt @command{guix environment}, ist aber leichter zu
62benutzen (@command{guix environment} gilt als veraltet, bleibt aber
63bis zum 1.@: Mai 2023 verfügbar). Der größte Unterschied ist, dass das
64Verhalten mit @option{--ad-hoc} nun der Normalfall ist. D.h.@: um eine
65interaktive Umgebung mit Python, NumPy und SciPy zu bekommen, lautet
66der Befehl:
67
68@example
69guix shell python python-numpy python-scipy
70@end example
71
72Wenn Sie eine Entwicklungsumgebung für, sagen wir, Inkscape schaffen
73wollen, übergeben Sie die Option @option{-D}:
74
75@example
76guix shell -D inkscape
77@end example
78
79Noch ein Unterschied ist, dass wenn Sie @command{guix shell} ohne
80Argumente ausführen, @file{manifest.scm} oder @file{guix.scm} aus dem
81aktuellen Arbeitsverzeichnis oder einem übergeordneten Verzeichnis
82geladen wird, wenn Sie die Berechtigung dazu erteilt haben. Für den
83Befehl wird ein Zwischenspeicher vorgehalten, damit Sie schneller auf
84solche Umgebungen zugreifen können.
85
86Führen Sie @command{info \"(guix) Invoking guix shell\"} aus, um mehr
87zu erfahren.")
88 (fr "Une nouvelle commande, @command{guix shell}, est maintenant
89disponible. Elle est similaire à @command{guix environment}, mais avec une
90interface plus pratique (@command{guix environment} est désuet mais restera
91disponible jusqu'au 1er mai 2023). La principale différence par rapport à
92@command{guix environment} est que le mode par défaut est le mode \"ad hoc\".
93Pour créer un environnement interactif contenant Python, NumPy et SciPy, il
94faut donc lancer :
95
96@example
97guix shell python python-numpy python-scipy
98@end example
99
100Pour obtenir un environnement de développement pour Inkscape, par exemple,
101passer l'option @option{-D} :
102
103@example
104guix shell -D inkscape
105@end example
106
107Une autre différence est qu'en lançant @command{guix shell} sans argument, le
108fichier @file{manifest.scm} ou @file{guix.scm} du répertoire courant ou d'un
109parent est automatiquement chargé, à condition de l'avoir autorisé. La
110commande garde un cache pour accélérer l'accès à ces environnements.
111
112Lancer @command{info \"(guix.fr) Invoquer guix shell\"} pour plus
113d'informations.")))
114
115 (entry (commit "a2324d8b56eabf8117bca220a507cc791edffd2e")
27 (title 116 (title
28 (en "Guix Home is a part of GNU Guix") 117 (en "Guix Home is a part of GNU Guix")
29 (de "Guix Home ist jetzt Teil von GNU Guix") 118 (de "Guix Home ist jetzt Teil von GNU Guix")
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index ea524eb4c3c..70c11ed8add 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -131,7 +131,11 @@ Be careful, all data on the disk will be lost.")
131 (run-listbox-selection-page 131 (run-listbox-selection-page
132 #:info-text (G_ "Please select the file-system type for this partition.") 132 #:info-text (G_ "Please select the file-system type for this partition.")
133 #:title (G_ "File-system type") 133 #:title (G_ "File-system type")
134 #:listbox-items '(ext4 btrfs fat16 fat32 jfs ntfs xfs swap) 134 #:listbox-items '(btrfs ext4 jfs xfs
135 swap
136 ;; These lack basic Unix features. Their only use
137 ;; on GNU is for interoperation, e.g., with UEFI.
138 fat32 fat16 ntfs)
135 #:listbox-item->text user-fs-type-name 139 #:listbox-item->text user-fs-type-name
136 #:sort-listbox-items? #f 140 #:sort-listbox-items? #f
137 #:button-text (G_ "Exit") 141 #:button-text (G_ "Exit")
diff --git a/gnu/local.mk b/gnu/local.mk
index 3155338c39c..3c90bb2549e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -612,6 +612,7 @@ GNU_SYSTEM_MODULES = \
612 %D%/packages/xdisorg.scm \ 612 %D%/packages/xdisorg.scm \
613 %D%/packages/xorg.scm \ 613 %D%/packages/xorg.scm \
614 %D%/packages/xfce.scm \ 614 %D%/packages/xfce.scm \
615 %D%/packages/zig.scm \
615 %D%/packages/zile.scm \ 616 %D%/packages/zile.scm \
616 %D%/packages/zwave.scm \ 617 %D%/packages/zwave.scm \
617 \ 618 \
@@ -1000,9 +1001,8 @@ dist_patch_DATA = \
1000 %D%/packages/patches/desmume-gcc6-fixes.patch \ 1001 %D%/packages/patches/desmume-gcc6-fixes.patch \
1001 %D%/packages/patches/desmume-gcc7-fixes.patch \ 1002 %D%/packages/patches/desmume-gcc7-fixes.patch \
1002 %D%/packages/patches/dfu-programmer-fix-libusb.patch \ 1003 %D%/packages/patches/dfu-programmer-fix-libusb.patch \
1003 %D%/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch \ 1004 %D%/packages/patches/diffoscope-fix-llvm-test.patch \
1004 %D%/packages/patches/diffutils-gets-undeclared.patch \ 1005 %D%/packages/patches/diffutils-gets-undeclared.patch \
1005 %D%/packages/patches/disarchive-cross-compilation.patch \
1006 %D%/packages/patches/dkimproxy-add-ipv6-support.patch \ 1006 %D%/packages/patches/dkimproxy-add-ipv6-support.patch \
1007 %D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \ 1007 %D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \
1008 %D%/packages/patches/docbook-xsl-support-old-url.patch \ 1008 %D%/packages/patches/docbook-xsl-support-old-url.patch \
@@ -1068,6 +1068,7 @@ dist_patch_DATA = \
1068 %D%/packages/patches/fifo-map-remove-catch.hpp.patch \ 1068 %D%/packages/patches/fifo-map-remove-catch.hpp.patch \
1069 %D%/packages/patches/findutils-localstatedir.patch \ 1069 %D%/packages/patches/findutils-localstatedir.patch \
1070 %D%/packages/patches/flann-cmake-3.11.patch \ 1070 %D%/packages/patches/flann-cmake-3.11.patch \
1071 %D%/packages/patches/flatpak-fix-path.patch \
1071 %D%/packages/patches/fontconfig-cache-ignore-mtime.patch \ 1072 %D%/packages/patches/fontconfig-cache-ignore-mtime.patch \
1072 %D%/packages/patches/foobillard++-pkg-config.patch \ 1073 %D%/packages/patches/foobillard++-pkg-config.patch \
1073 %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \ 1074 %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
@@ -1267,6 +1268,7 @@ dist_patch_DATA = \
1267 %D%/packages/patches/hurd-cross.patch \ 1268 %D%/packages/patches/hurd-cross.patch \
1268 %D%/packages/patches/hurd-xattr.patch \ 1269 %D%/packages/patches/hurd-xattr.patch \
1269 %D%/packages/patches/hydra-disable-darcs-test.patch \ 1270 %D%/packages/patches/hydra-disable-darcs-test.patch \
1271 %D%/packages/patches/icecat-78-makeicecat.patch \
1270 %D%/packages/patches/icecat-makeicecat.patch \ 1272 %D%/packages/patches/icecat-makeicecat.patch \
1271 %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ 1273 %D%/packages/patches/icecat-avoid-bundled-libraries.patch \
1272 %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \ 1274 %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \
@@ -1504,8 +1506,6 @@ dist_patch_DATA = \
1504 %D%/packages/patches/mumps-shared-libseq.patch \ 1506 %D%/packages/patches/mumps-shared-libseq.patch \
1505 %D%/packages/patches/mumps-shared-mumps.patch \ 1507 %D%/packages/patches/mumps-shared-mumps.patch \
1506 %D%/packages/patches/mumps-shared-pord.patch \ 1508 %D%/packages/patches/mumps-shared-pord.patch \
1507 %D%/packages/patches/mupdf-fix-linkage.patch \
1508 %D%/packages/patches/mupdf-CVE-2021-3407.patch \
1509 %D%/packages/patches/mupen64plus-ui-console-notice.patch \ 1509 %D%/packages/patches/mupen64plus-ui-console-notice.patch \
1510 %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \ 1510 %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \
1511 %D%/packages/patches/musl-cross-locale.patch \ 1511 %D%/packages/patches/musl-cross-locale.patch \
@@ -1675,6 +1675,7 @@ dist_patch_DATA = \
1675 %D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \ 1675 %D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \
1676 %D%/packages/patches/python-flask-restful-werkzeug-compat.patch \ 1676 %D%/packages/patches/python-flask-restful-werkzeug-compat.patch \
1677 %D%/packages/patches/python-keras-integration-test.patch \ 1677 %D%/packages/patches/python-keras-integration-test.patch \
1678 %D%/packages/patches/python-peachpy-determinism.patch \
1678 %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \ 1679 %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
1679 %D%/packages/patches/python-pyfakefs-remove-bad-test.patch \ 1680 %D%/packages/patches/python-pyfakefs-remove-bad-test.patch \
1680 %D%/packages/patches/python-flint-includes.patch \ 1681 %D%/packages/patches/python-flint-includes.patch \
@@ -1706,6 +1707,7 @@ dist_patch_DATA = \
1706 %D%/packages/patches/qemu-CVE-2021-20203.patch \ 1707 %D%/packages/patches/qemu-CVE-2021-20203.patch \
1707 %D%/packages/patches/qemu-glibc-2.27.patch \ 1708 %D%/packages/patches/qemu-glibc-2.27.patch \
1708 %D%/packages/patches/qemu-glibc-2.30.patch \ 1709 %D%/packages/patches/qemu-glibc-2.30.patch \
1710 %D%/packages/patches/qemu-fix-agent-paths.patch \
1709 %D%/packages/patches/qpdfview-qt515-compat.patch \ 1711 %D%/packages/patches/qpdfview-qt515-compat.patch \
1710 %D%/packages/patches/qrcodegen-cpp-make-install.patch \ 1712 %D%/packages/patches/qrcodegen-cpp-make-install.patch \
1711 %D%/packages/patches/qt4-ldflags.patch \ 1713 %D%/packages/patches/qt4-ldflags.patch \
@@ -1836,12 +1838,12 @@ dist_patch_DATA = \
1836 %D%/packages/patches/tup-unbundle-dependencies.patch \ 1838 %D%/packages/patches/tup-unbundle-dependencies.patch \
1837 %D%/packages/patches/tuxpaint-stamps-path.patch \ 1839 %D%/packages/patches/tuxpaint-stamps-path.patch \
1838 %D%/packages/patches/twinkle-bcg729.patch \ 1840 %D%/packages/patches/twinkle-bcg729.patch \
1841 %D%/packages/patches/u-boot-allow-disabling-openssl.patch \
1839 %D%/packages/patches/u-boot-nintendo-nes-serial.patch \ 1842 %D%/packages/patches/u-boot-nintendo-nes-serial.patch \
1840 %D%/packages/patches/u-boot-rockchip-inno-usb.patch \ 1843 %D%/packages/patches/u-boot-rockchip-inno-usb.patch \
1841 %D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch \ 1844 %D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch \
1842 %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \ 1845 %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
1843 %D%/packages/patches/ucx-tcp-iface-ioctl.patch \ 1846 %D%/packages/patches/ucx-tcp-iface-ioctl.patch \
1844 %D%/packages/patches/udiskie-no-appindicator.patch \
1845 %D%/packages/patches/ungoogled-chromium-extension-search-path.patch \ 1847 %D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
1846 %D%/packages/patches/ungoogled-chromium-ffmpeg-compat.patch \ 1848 %D%/packages/patches/ungoogled-chromium-ffmpeg-compat.patch \
1847 %D%/packages/patches/ungoogled-chromium-system-nspr.patch \ 1849 %D%/packages/patches/ungoogled-chromium-system-nspr.patch \
@@ -1939,7 +1941,9 @@ dist_patch_DATA = \
1939 %D%/packages/patches/ytfzf-programs.patch \ 1941 %D%/packages/patches/ytfzf-programs.patch \
1940 %D%/packages/patches/ytfzf-updates.patch \ 1942 %D%/packages/patches/ytfzf-updates.patch \
1941 %D%/packages/patches/ytnef-CVE-2021-3403.patch \ 1943 %D%/packages/patches/ytnef-CVE-2021-3403.patch \
1942 %D%/packages/patches/ytnef-CVE-2021-3404.patch 1944 %D%/packages/patches/ytnef-CVE-2021-3404.patch \
1945 %D%/packages/patches/zig-disable-libc-note-test.patch \
1946 %D%/packages/patches/zig-use-system-paths.patch
1943 1947
1944MISC_DISTRO_FILES = \ 1948MISC_DISTRO_FILES = \
1945 %D%/packages/ld-wrapper.in 1949 %D%/packages/ld-wrapper.in
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index f77db63999f..cc7cc812f8f 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -12,7 +12,7 @@
12;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> 12;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
13;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> 13;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
14;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> 14;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
15;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> 15;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
16;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org> 16;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org>
17;;; 17;;;
18;;; This file is part of GNU Guix. 18;;; This file is part of GNU Guix.
@@ -343,7 +343,7 @@ precision.")
343(define-public giac 343(define-public giac
344 (package 344 (package
345 (name "giac") 345 (name "giac")
346 (version "1.7.0-37") 346 (version "1.7.0-39")
347 (source 347 (source
348 (origin 348 (origin
349 (method url-fetch) 349 (method url-fetch)
@@ -355,7 +355,7 @@ precision.")
355 "~parisse/debian/dists/stable/main/source/" 355 "~parisse/debian/dists/stable/main/source/"
356 "giac_" version ".tar.gz")) 356 "giac_" version ".tar.gz"))
357 (sha256 357 (sha256
358 (base32 "1mzqf7r40ppmzixf4s6sjk76y0wpcf6xp7hklzrn2l1910ld61pz")))) 358 (base32 "0mmdzhnahiz6hr7a4brnjdmmm4mcaqkigrh1b6n9z5l46bilaii3"))))
359 (build-system gnu-build-system) 359 (build-system gnu-build-system)
360 (arguments 360 (arguments
361 `(#:modules ((ice-9 ftw) 361 `(#:modules ((ice-9 ftw)
@@ -988,6 +988,36 @@ Optional thin wrappers allow usage of the library from other languages.")
988 (license (list license:expat ;SymEngine 988 (license (list license:expat ;SymEngine
989 license:bsd-3)))) ;3rd party code 989 license:bsd-3)))) ;3rd party code
990 990
991(define-public ginac
992 (package
993 (name "ginac")
994 (version "1.8.1")
995 (source
996 (origin
997 (method url-fetch)
998 (uri (string-append "https://www.ginac.de/ginac-"
999 version ".tar.bz2"))
1000 (sha256
1001 (base32 "1az1ypfcny4jdz0mic1kywwa9nynr547cl5s7zpn2w0qdfymssgi"))))
1002 (build-system gnu-build-system)
1003 (arguments
1004 `(#:configure-flags (list "--disable-static")))
1005 (native-inputs
1006 `(("bison" ,bison)
1007 ("flex" ,flex)
1008 ("pkg-config" ,pkg-config)
1009 ("python" ,python-wrapper))) ; Python is required
1010 (inputs
1011 `(("cln" ,cln)
1012 ("readline" ,readline)))
1013 (home-page "https://www.ginac.de/")
1014 (synopsis "Library for symbolic computation")
1015 (description "GiNaC is a C++ library for symbolic computation. Contrary
1016to other CAS it does not try to provide extensive algebraic capabilities and a
1017simple programming language but instead accepts a given language (C++) and
1018extends it by a set of algebraic capabilities.")
1019 (license license:gpl2+)))
1020
991(define-public eigen 1021(define-public eigen
992 (package 1022 (package
993 (name "eigen") 1023 (name "eigen")
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 62619e9c09a..063103e4333 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -179,7 +179,7 @@ C++ @dfn{Standard Template Library} (STL).")
179 ("libxml++" ,libxml++) 179 ("libxml++" ,libxml++)
180 ("libsigc++" ,libsigc++) 180 ("libsigc++" ,libsigc++)
181 ("mlt" ,mlt-6) 181 ("mlt" ,mlt-6)
182 ("openexr" ,openexr) 182 ("openexr" ,openexr-2)
183 ("pango" ,pango))) 183 ("pango" ,pango)))
184 (native-inputs 184 (native-inputs
185 `(("intltool" ,intltool) 185 `(("intltool" ,intltool)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index d1ab99528f8..be8c8f824c4 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -5433,14 +5433,14 @@ while still staying in time.")
5433(define-public butt 5433(define-public butt
5434 (package 5434 (package
5435 (name "butt") 5435 (name "butt")
5436 (version "0.1.31") 5436 (version "0.1.32")
5437 (source (origin 5437 (source (origin
5438 (method url-fetch) 5438 (method url-fetch)
5439 (uri (string-append "mirror://sourceforge/butt/butt/butt-" 5439 (uri (string-append "mirror://sourceforge/butt/butt/butt-"
5440 version "/butt-" version ".tar.gz")) 5440 version "/butt-" version ".tar.gz"))
5441 (sha256 5441 (sha256
5442 (base32 5442 (base32
5443 "19zvdi5vr6vqnrpc60jir7550nz9a5x1c61lh13355cdny2zp28z")) 5443 "1qwllkx9p1gb3syhbbck3agrk375m82l18fb81aqygi4g3dg3s9r"))
5444 (modules '((guix build utils))) 5444 (modules '((guix build utils)))
5445 (snippet 5445 (snippet
5446 '(substitute* "src/butt.cpp" 5446 '(substitute* "src/butt.cpp"
@@ -5481,7 +5481,7 @@ while still staying in time.")
5481 version "_manual.pdf")) 5481 version "_manual.pdf"))
5482 (sha256 5482 (sha256
5483 (base32 5483 (base32
5484 "0a0kgd069whfp1v8xgw6qm67w02n8b7b4h5ay5665wgq947hxanp")))))) 5484 "0g70jyyxbx5nin3xs9q9zf878b2kyy7rn8gn9w91x1ychbjd6dhh"))))))
5485 (home-page "https://danielnoethen.de/butt/") 5485 (home-page "https://danielnoethen.de/butt/")
5486 (synopsis "Audio streaming tool") 5486 (synopsis "Audio streaming tool")
5487 (description "Butt is a tool to stream audio to a ShoutCast or 5487 (description "Butt is a tool to stream audio to a ShoutCast or
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 8c5ea07a9f5..801d570bf41 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -1141,21 +1141,15 @@ backup.")
1141(define-public disarchive 1141(define-public disarchive
1142 (package 1142 (package
1143 (name "disarchive") 1143 (name "disarchive")
1144 (version "0.2.1") 1144 (version "0.3.0")
1145 (source (origin 1145 (source (origin
1146 (method url-fetch) 1146 (method url-fetch)
1147 (uri (string-append "https://files.ngyro.com/disarchive/" 1147 (uri (string-append "https://files.ngyro.com/disarchive/"
1148 "disarchive-" version ".tar.gz")) 1148 "disarchive-" version ".tar.gz"))
1149 (sha256 1149 (sha256
1150 (base32 1150 (base32
1151 "1jypk0gdwxqbqxiblww863nzq0kwnc676q68j32sprqd7ilnq02s")) 1151 "0jgc53rrbas8i4z13l2ii99cpav1ma73spsjg70ygihf0635r3dh"))))
1152 (patches (search-patches "disarchive-cross-compilation.patch"))))
1153 (build-system gnu-build-system) 1152 (build-system gnu-build-system)
1154 (arguments
1155 `(#:phases (modify-phases %standard-phases
1156 (add-after 'unpack 'delete-configure
1157 (lambda _
1158 (delete-file "configure"))))))
1159 (native-inputs 1153 (native-inputs
1160 `(("autoconf" ,autoconf) 1154 `(("autoconf" ,autoconf)
1161 ("automake" ,automake) 1155 ("automake" ,automake)
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 4cbffac0007..90a0e1f2883 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -7331,6 +7331,37 @@ specified group of genes for a pathway has a coordinated association with a
7331phenotype of interest.") 7331phenotype of interest.")
7332 (license license:gpl2))) 7332 (license license:gpl2)))
7333 7333
7334(define-public r-fcscan
7335 (package
7336 (name "r-fcscan")
7337 (version "1.6.0")
7338 (source
7339 (origin
7340 (method url-fetch)
7341 (uri (bioconductor-uri "fcScan" version))
7342 (sha256
7343 (base32 "10fcz741dr3wbb9f63qywlrays4cnvfnsm6yw4bmkrwk6ccijg8h"))))
7344 (properties `((upstream-name . "fcScan")))
7345 (build-system r-build-system)
7346 (propagated-inputs
7347 `(("r-genomicranges" ,r-genomicranges)
7348 ("r-iranges" ,r-iranges)
7349 ("r-plyr" ,r-plyr)
7350 ("r-rtracklayer" ,r-rtracklayer)
7351 ("r-summarizedexperiment" ,r-summarizedexperiment)
7352 ("r-variantannotation" ,r-variantannotation)))
7353 (native-inputs `(("r-knitr" ,r-knitr)))
7354 (home-page "https://bioconductor.org/packages/fcScan")
7355 (synopsis "Detect clusters of coordinates with user defined options")
7356 (description
7357 "This package is used to detect combination of genomic coordinates
7358falling within a user defined window size along with user defined overlap
7359between identified neighboring clusters. It can be used for genomic data
7360where the clusters are built on a specific chromosome or specific strand.
7361Clustering can be performed with a \"greedy\" option allowing thus the
7362presence of additional sites within the allowed window size.")
7363 (license license:artistic2.0)))
7364
7334(define-public r-fgsea 7365(define-public r-fgsea
7335 (package 7366 (package
7336 (name "r-fgsea") 7367 (name "r-fgsea")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 229fd34d2a9..3ddb91714a3 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -106,6 +106,7 @@
106 #:use-module (gnu packages java-compression) 106 #:use-module (gnu packages java-compression)
107 #:use-module (gnu packages jemalloc) 107 #:use-module (gnu packages jemalloc)
108 #:use-module (gnu packages jupyter) 108 #:use-module (gnu packages jupyter)
109 #:use-module (gnu packages libffi)
109 #:use-module (gnu packages linux) 110 #:use-module (gnu packages linux)
110 #:use-module (gnu packages logging) 111 #:use-module (gnu packages logging)
111 #:use-module (gnu packages lsof) 112 #:use-module (gnu packages lsof)
@@ -1216,14 +1217,14 @@ sequencing.")
1216(define-public python-biopython 1217(define-public python-biopython
1217 (package 1218 (package
1218 (name "python-biopython") 1219 (name "python-biopython")
1219 (version "1.73") 1220 (version "1.76")
1220 (source (origin 1221 (source (origin
1221 (method url-fetch) 1222 (method url-fetch)
1222 ;; use PyPi rather than biopython.org to ease updating 1223 ;; use PyPi rather than biopython.org to ease updating
1223 (uri (pypi-uri "biopython" version)) 1224 (uri (pypi-uri "biopython" version))
1224 (sha256 1225 (sha256
1225 (base32 1226 (base32
1226 "1q55jhf76z3k6is3psis0ckbki7df26x7dikpcc3vhk1vhkwribh")))) 1227 "0wlch9xpa0fpgjzyxi6jsfca6iakaq9a05927xg8vqnmvaccnwrq"))))
1227 (build-system python-build-system) 1228 (build-system python-build-system)
1228 (arguments 1229 (arguments
1229 `(#:phases 1230 `(#:phases
@@ -1244,6 +1245,18 @@ dealing with alignments; code making it easy to split up parallelizable tasks
1244into separate processes; and more.") 1245into separate processes; and more.")
1245 (license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE")))) 1246 (license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE"))))
1246 1247
1248(define-public python-biopython-1.73
1249 (package
1250 (inherit python-biopython)
1251 (version "1.73")
1252 (source (origin
1253 (method url-fetch)
1254 ;; use PyPi rather than biopython.org to ease updating
1255 (uri (pypi-uri "biopython" version))
1256 (sha256
1257 (base32
1258 "1q55jhf76z3k6is3psis0ckbki7df26x7dikpcc3vhk1vhkwribh"))))))
1259
1247(define-public python2-biopython 1260(define-public python2-biopython
1248 (package-with-python2 python-biopython)) 1261 (package-with-python2 python-biopython))
1249 1262
@@ -1270,6 +1283,133 @@ relying on a complex dependency tree.")
1270(define-public python2-fastalite 1283(define-public python2-fastalite
1271 (package-with-python2 python-fastalite)) 1284 (package-with-python2 python-fastalite))
1272 1285
1286(define-public ciri-long
1287 (package
1288 (name "ciri-long")
1289 (version "1.0.2")
1290 (source
1291 (origin
1292 (method git-fetch)
1293 (uri (git-reference
1294 (url "https://github.com/bioinfo-biols/CIRI-long")
1295 (commit (string-append "v" version))))
1296 (file-name (git-file-name name version))
1297 (sha256
1298 (base32
1299 "10k88i1fcqchrrjv82rmylwvbwqfba0n51palhig9hsg71xs0dbi"))
1300 ;; Delete bundled binary
1301 (snippet '(delete-file "libs/ccs"))))
1302 (build-system python-build-system)
1303 (arguments
1304 `(#:phases
1305 (modify-phases %standard-phases
1306 (add-after 'unpack 'relax-requirements
1307 (lambda _
1308 (substitute* "setup.py"
1309 (("'argparse[^']*',") "") ; only for python2
1310 (("==") ">="))))
1311 (add-before 'build 'build-libssw
1312 (lambda _
1313 (with-directory-excursion "libs/striped_smith_waterman"
1314 (invoke "make" "libssw.so")))))))
1315 (inputs
1316 `(("python-biopython" ,python-biopython)
1317 ("python-bwapy" ,python-bwapy)
1318 ("python-cython" ,python-cython)
1319 ("python-levenshtein" ,python-levenshtein)
1320 ("python-mappy" ,python-mappy)
1321 ("python-numpy" ,python-numpy)
1322 ("python-pandas" ,python-pandas)
1323 ("python-pysam" ,python-pysam)
1324 ("python-pyspoa" ,python-pyspoa)
1325 ("python-scikit-learn" ,python-scikit-learn)
1326 ("python-scipy" ,python-scipy)))
1327 (native-inputs
1328 `(("python-nose" ,python-nose)
1329 ("python-setuptools" ,python-setuptools)))
1330 (home-page "https://ciri-cookbook.readthedocs.io/")
1331 (synopsis "Circular RNA identification for Nanopore sequencing")
1332 (description "CIRI-long is a package for circular RNA identification using
1333long-read sequencing data.")
1334 (license license:expat)))
1335
1336(define-public qtltools
1337 (package
1338 (name "qtltools")
1339 (version "1.3.1")
1340 (source (origin
1341 (method url-fetch/tarbomb)
1342 (uri (string-append "https://qtltools.github.io/qtltools/"
1343 "binaries/QTLtools_" version
1344 "_source.tar.gz"))
1345 (sha256
1346 (base32
1347 "13gdry5l43abn3464fmk8qzrxgxnxah2612r66p9dzhhl92j30cd"))))
1348 (build-system gnu-build-system)
1349 (arguments
1350 `(#:tests? #f ; no tests included
1351 #:make-flags
1352 (list (string-append "BOOST_INC="
1353 (assoc-ref %build-inputs "boost") "/include")
1354 (string-append "BOOST_LIB="
1355 (assoc-ref %build-inputs "boost") "/lib")
1356 (string-append "HTSLD_INC="
1357 (assoc-ref %build-inputs "htslib") "/include")
1358 (string-append "HTSLD_LIB="
1359 (assoc-ref %build-inputs "htslib") "/lib")
1360 (string-append "RMATH_INC="
1361 (assoc-ref %build-inputs "rmath-standalone")
1362 "/include")
1363 (string-append "RMATH_LIB="
1364 (assoc-ref %build-inputs "rmath-standalone")
1365 "/lib"))
1366 #:phases
1367 (modify-phases %standard-phases
1368 (add-after 'unpack 'fix-linkage
1369 (lambda _
1370 (substitute* "qtltools/Makefile"
1371 (("libboost_iostreams.a")
1372 "libboost_iostreams.so")
1373 (("libboost_program_options.a")
1374 "libboost_program_options.so")
1375 (("-lblas") "-lopenblas"))))
1376 (add-before 'build 'chdir
1377 (lambda _ (chdir "qtltools")))
1378 (replace 'configure
1379 (lambda _
1380 (substitute* "qtltools/Makefile"
1381 (("LIB_FLAGS=-lz")
1382 "LIB_FLAGS=-lz -lcrypto -lssl")
1383 (("LIB_FILES=\\$\\(RMATH_LIB\\)/libRmath.a \
1384\\$\\(HTSLD_LIB\\)/libhts.a \
1385\\$\\(BOOST_LIB\\)/libboost_iostreams.a \
1386\\$\\(BOOST_LIB\\)/libboost_program_options.a")
1387 "LIB_FILES=$(RMATH_LIB)/libRmath.so \
1388$(HTSLD_LIB)/libhts.so \
1389$(BOOST_LIB)/libboost_iostreams.so \
1390$(BOOST_LIB)/libboost_program_options.so"))))
1391 (replace 'install
1392 (lambda* (#:key outputs #:allow-other-keys)
1393 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
1394 (mkdir-p bin)
1395 (install-file "bin/QTLtools" bin)))))))
1396 (inputs
1397 `(("curl" ,curl)
1398 ("gsl" ,gsl)
1399 ("boost" ,boost)
1400 ("rmath-standalone" ,rmath-standalone)
1401 ("htslib" ,htslib-1.3)
1402 ("openssl" ,openssl)
1403 ("openblas" ,openblas)
1404 ("zlib" ,zlib)))
1405 (home-page "https://qtltools.github.io/qtltools/")
1406 (synopsis "Tool set for molecular QTL discovery and analysis")
1407 (description "QTLtools is a tool set for molecular QTL discovery
1408and analysis. It allows to go from the raw genetic sequence data to
1409collection of molecular @dfn{Quantitative Trait Loci} (QTLs) in few
1410easy-to-perform steps.")
1411 (license license:gpl3+)))
1412
1273(define-public bpp-core 1413(define-public bpp-core
1274 ;; The last release was in 2014 and the recommended way to install from source 1414 ;; The last release was in 2014 and the recommended way to install from source
1275 ;; is to clone the git repository, so we do this. 1415 ;; is to clone the git repository, so we do this.
@@ -7448,6 +7588,33 @@ clustering analysis, differential analysis, motif inference and exploration of
7448single cell ATAC-seq sequencing data.") 7588single cell ATAC-seq sequencing data.")
7449 (license license:gpl3))) 7589 (license license:gpl3)))
7450 7590
7591(define-public r-umi4cpackage
7592 (let ((commit "88b07d896a137418ba6c31c2474b9dbe1d86fc20")
7593 (revision "1"))
7594 (package
7595 (name "r-umi4cpackage")
7596 (version (git-version "0.0.1" revision commit))
7597 (source
7598 (origin
7599 (method git-fetch)
7600 (uri (git-reference
7601 (url "https://github.com/tanaylab/umi4cpackage")
7602 (commit commit)))
7603 (file-name (git-file-name name version))
7604 (sha256
7605 (base32 "0bjzamdw2lcfhlbzc0vdva87c3wwnij8jsvnrpx4wyyxvpcz13m5"))))
7606 (properties `((upstream-name . "umi4cPackage")))
7607 (build-system r-build-system)
7608 (propagated-inputs
7609 `(("r-misha" ,r-misha)
7610 ("r-zoo" ,r-zoo)))
7611 (native-inputs `(("r-knitr" ,r-knitr)))
7612 (home-page "https://github.com/tanaylab/umi4cpackage")
7613 (synopsis "Processing and analysis of UMI-4C contact profiles.")
7614 (description "This is a package that lets you process UMI-4C data from
7615scratch to produce nice plots.")
7616 (license license:expat))))
7617
7451(define-public r-shinycell 7618(define-public r-shinycell
7452 (let ((commit 7619 (let ((commit
7453 "aecbd56e66802f28e397f5ae1f19403aadd12163") 7620 "aecbd56e66802f28e397f5ae1f19403aadd12163")
@@ -7576,6 +7743,86 @@ of transcriptional heterogeneity among single cells.")
7576 ;; See https://github.com/hms-dbmi/scde/issues/38 7743 ;; See https://github.com/hms-dbmi/scde/issues/38
7577 (license license:gpl2))) 7744 (license license:gpl2)))
7578 7745
7746(define-public r-misha
7747 (package
7748 (name "r-misha")
7749 (version "4.1.0")
7750 (source
7751 (origin
7752 (method git-fetch)
7753 (uri (git-reference
7754 (url "https://github.com/tanaylab/misha")
7755 (commit version)))
7756 (file-name (git-file-name name version))
7757 (sha256
7758 (base32
7759 "0bgivx3lzjh3173jsfrhb5kvhjsn53br0n4hmyx7i3dwy2cnnp2p"))
7760 ;; Delete bundled executable.
7761 (snippet
7762 '(delete-file "exec/bigWigToWig"))))
7763 (build-system r-build-system)
7764 (arguments
7765 `(#:phases
7766 (modify-phases %standard-phases
7767 (add-after 'unpack 'do-not-use-bundled-bigWigToWig
7768 (lambda* (#:key inputs #:allow-other-keys)
7769 (substitute* "R/misha.R"
7770 (("get\\(\".GLIBDIR\"\\), \"/exec/bigWigToWig")
7771 (string-append "\""
7772 (assoc-ref inputs "kentutils")
7773 "/bin/bigWigToWig"))))))))
7774 (inputs
7775 `(("kentutils" ,kentutils)))
7776 (home-page "https://github.com/tanaylab/misha")
7777 (synopsis "Toolkit for analysis of genomic data")
7778 (description "This package is intended to help users to efficiently
7779analyze genomic data resulting from various experiments.")
7780 (license license:gpl2)))
7781
7782(define-public r-shaman
7783 (let ((commit "d6944e8ac7bd1dbd5c6cec646eafc1d19d0ca96f")
7784 (release "2.0")
7785 (revision "2"))
7786 (package
7787 (name "r-shaman")
7788 (version (git-version release revision commit))
7789 (source (origin
7790 (method git-fetch)
7791 (uri (git-reference
7792 (url "https://github.com/tanaylab/shaman")
7793 (commit commit)))
7794 (file-name (git-file-name name version))
7795 (sha256
7796 (base32
7797 "03sx138dzpfiq23j49z0m0s4j79855mrg64hpj9c83408wzphxi6"))
7798 (snippet
7799 ;; This file will be generated.
7800 '(delete-file "inst/doc/shaman-package.R"))))
7801 (build-system r-build-system)
7802 (propagated-inputs
7803 `(("r-data-table" ,r-data-table)
7804 ("r-domc" ,r-domc)
7805 ("r-ggplot2" ,r-ggplot2)
7806 ("r-gviz" ,r-gviz)
7807 ("r-misha" ,r-misha)
7808 ("r-plyr" ,r-plyr)
7809 ("r-rann" ,r-rann)
7810 ("r-rcpp" ,r-rcpp)
7811 ("r-reshape2" ,r-reshape2)
7812 ;; For vignettes
7813 ("r-rmarkdown" ,r-rmarkdown)
7814 ("r-knitr" ,r-knitr)))
7815 (home-page "https://github.com/tanaylab/shaman")
7816 (synopsis "Sampling HiC contact matrices for a-parametric normalization")
7817 (description "The Shaman package implements functions for
7818resampling Hi-C matrices in order to generate expected contact
7819distributions given constraints on marginal coverage and
7820contact-distance probability distributions. The package also provides
7821support for visualizing normalized matrices and statistical analysis
7822of contact distributions around selected landmarks.")
7823 ;; Any version of the GPL
7824 (license license:gpl3+))))
7825
7579(define-public r-centipede 7826(define-public r-centipede
7580 (package 7827 (package
7581 (name "r-centipede") 7828 (name "r-centipede")
@@ -7639,6 +7886,46 @@ includes software to
7639") 7886")
7640 (license license:cc0)))) 7887 (license license:cc0))))
7641 7888
7889(define-public gdc-client
7890 (package
7891 (name "gdc-client")
7892 (version "1.6.0")
7893 (source
7894 (origin
7895 (method git-fetch)
7896 (uri (git-reference
7897 (url "https://github.com/NCI-GDC/gdc-client.git")
7898 (commit version)))
7899 (file-name (git-file-name name version))
7900 (sha256
7901 (base32
7902 "0cagawlzjwj3wam10lv64xgbfx4zcnzxi5sjpsdhq7rn4z24mzc2"))))
7903 (build-system python-build-system)
7904 (arguments
7905 `(#:phases
7906 (modify-phases %standard-phases
7907 (add-after 'unpack 'relax-requirements
7908 (lambda _
7909 (substitute* "requirements.txt"
7910 (("==") ">=")))))))
7911 (inputs
7912 `(("python-cryptography" ,python-cryptography)
7913 ("python-intervaltree" ,python-intervaltree)
7914 ("python-jsonschema" ,python-jsonschema)
7915 ("python-lxml" ,python-lxml)
7916 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
7917 ("python-progressbar2" ,python-progressbar2)
7918 ("python-pyasn1" ,python-pyasn1)
7919 ("python-pyopenssl" ,python-pyopenssl)
7920 ("python-pyyaml" ,python-pyyaml)
7921 ("python-requests" ,python-requests)
7922 ("python-termcolor" ,python-termcolor)))
7923 (home-page "https://gdc.nci.nih.gov/access-data/gdc-data-transfer-tool")
7924 (synopsis "GDC data transfer tool")
7925 (description "The gdc-client provides several convenience functions over
7926the GDC API which provides general download/upload via HTTPS.")
7927 (license license:asl2.0)))
7928
7642(define-public vsearch 7929(define-public vsearch
7643 (package 7930 (package
7644 (name "vsearch") 7931 (name "vsearch")
@@ -11642,14 +11929,14 @@ set.")
11642(define-public instrain 11929(define-public instrain
11643 (package 11930 (package
11644 (name "instrain") 11931 (name "instrain")
11645 (version "1.5.2") 11932 (version "1.5.4")
11646 (source 11933 (source
11647 (origin 11934 (origin
11648 (method url-fetch) 11935 (method url-fetch)
11649 (uri (pypi-uri "inStrain" version)) 11936 (uri (pypi-uri "inStrain" version))
11650 (sha256 11937 (sha256
11651 (base32 11938 (base32
11652 "0ykqlpf6yz4caihsaz3ys00cyvlr7wdj4s9a8rh56q5r8xf80ic0")))) 11939 "05w1lw75x4lwkzg4qpi055g7hdjp9rnc4ksbxg2hfgksq9djk0hx"))))
11653 (build-system python-build-system) 11940 (build-system python-build-system)
11654 (arguments 11941 (arguments
11655 `(#:phases 11942 `(#:phases
@@ -11662,7 +11949,7 @@ set.")
11662 (("from job_utils") 11949 (("from job_utils")
11663 "from .job_utils"))))))) 11950 "from .job_utils")))))))
11664 (inputs 11951 (inputs
11665 `(("python-biopython" ,python-biopython) 11952 `(("python-biopython" ,python-biopython-1.73)
11666 ("python-boto3" ,python-boto3) 11953 ("python-boto3" ,python-boto3)
11667 ("python-h5py" ,python-h5py) 11954 ("python-h5py" ,python-h5py)
11668 ("python-lmfit" ,python-lmfit) 11955 ("python-lmfit" ,python-lmfit)
@@ -14995,6 +15282,78 @@ line, interactively explore genomic data within Jupyter environment or web
14995browser.") 15282browser.")
14996 (license license:gpl3+))) 15283 (license license:gpl3+)))
14997 15284
15285(define-public python-pyspoa
15286 (package
15287 (name "python-pyspoa")
15288 (version "0.0.5")
15289 (source
15290 (origin
15291 (method git-fetch)
15292 (uri (git-reference
15293 (url "https://github.com/nanoporetech/pyspoa")
15294 (commit (string-append "v" version))
15295 (recursive? #true)))
15296 (file-name (git-file-name name version))
15297 (sha256
15298 (base32
15299 "1lgf2shzhxkcsircd6vy46h27pjljd5q95fyz1cm3lkk702qbnzx"))))
15300 (build-system python-build-system)
15301 (arguments
15302 `(#:phases
15303 (modify-phases %standard-phases
15304 (add-before 'build 'build-libspoa
15305 (lambda _
15306 (mkdir-p "src/build")
15307 (with-directory-excursion "src/build"
15308 (invoke "cmake"
15309 "-Dspoa_optimize_for_portability=ON"
15310 "-DCMAKE_BUILD_TYPE=Release"
15311 "-DCMAKE_CXX_FLAGS=\"-I ../vendor/cereal/include/\" -fPIC"
15312 "..")
15313 (invoke "make"))))
15314 (replace 'check
15315 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
15316 (when tests?
15317 (add-installed-pythonpath inputs outputs)
15318 (invoke "python" "tests/test_pyspoa.py")))))))
15319 (propagated-inputs
15320 `(("pybind11" ,pybind11)))
15321 (native-inputs
15322 `(("cmake" ,cmake-minimal)))
15323 (home-page "https://github.com/nanoporetech/pyspoa")
15324 (synopsis "Python bindings for the SIMD partial order alignment library ")
15325 (description
15326 "This package provides Python bindings for spoa, a C++ implementation of
15327the @dfn{partial order alignment} (POA) algorithm (as described in
1532810.1093/bioinformatics/18.3.452) which is used to generate consensus
15329sequences")
15330 (license license:expat)))
15331
15332(define-public python-bwapy
15333 (package
15334 (name "python-bwapy")
15335 (version "0.1.4")
15336 (source
15337 (origin
15338 (method url-fetch)
15339 (uri (pypi-uri "bwapy" version))
15340 (sha256
15341 (base32 "090qwx3vl729zn3a7sksbviyg04kc71gpbm3nd8dalqp673x1npw"))))
15342 (build-system python-build-system)
15343 (propagated-inputs
15344 `(("python-cffi" ,python-cffi)
15345 ("python-setuptools" ,python-setuptools)
15346 ("python-wheel" ,python-wheel)))
15347 (inputs
15348 `(("zlib" ,zlib)))
15349 (home-page "https://github.com/ACEnglish/bwapy")
15350 (synopsis "Python bindings to bwa alinger")
15351 (description "This package provides Python bindings to the bwa mem
15352aligner.")
15353 ;; These Python bindings are licensed under Mozilla Public License 2.0,
15354 ;; bwa itself is licenced under GNU General Public License v3.0.
15355 (license license:mpl2.0)))
15356
14998(define-public scregseg 15357(define-public scregseg
14999 (package 15358 (package
15000 (name "scregseg") 15359 (name "scregseg")
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 54d1f0acfe0..bb668681ebb 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -504,13 +504,19 @@ tree binary files. These are board description files used by Linux and BSD.")
504 ;; https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/1937246 504 ;; https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/1937246
505 (search-patch "u-boot-sifive-prevent-reloc-initrd-fdt.patch")) 505 (search-patch "u-boot-sifive-prevent-reloc-initrd-fdt.patch"))
506 506
507(define %u-boot-allow-disabling-openssl-patch
508 ;; Fixes build of u-boot 2021.10 without openssl
509 ;; https://lists.denx.de/pipermail/u-boot/2021-October/462728.html
510 (search-patch "u-boot-allow-disabling-openssl.patch"))
511
507(define u-boot 512(define u-boot
508 (package 513 (package
509 (name "u-boot") 514 (name "u-boot")
510 (version "2021.07") 515 (version "2021.10")
511 (source (origin 516 (source (origin
512 (patches 517 (patches
513 (list %u-boot-rockchip-inno-usb-patch 518 (list %u-boot-rockchip-inno-usb-patch
519 %u-boot-allow-disabling-openssl-patch
514 %u-boot-sifive-prevent-relocating-initrd-fdt)) 520 %u-boot-sifive-prevent-relocating-initrd-fdt))
515 (method url-fetch) 521 (method url-fetch)
516 (uri (string-append 522 (uri (string-append
@@ -518,7 +524,7 @@ tree binary files. These are board description files used by Linux and BSD.")
518 "u-boot-" version ".tar.bz2")) 524 "u-boot-" version ".tar.bz2"))
519 (sha256 525 (sha256
520 (base32 526 (base32
521 "0zm7igkdnz0w4ir8rfl2dislfrl0ip104grs5hvd30a5wkm7wari")))) 527 "1m0bvwv8r62s4wk4w3cmvs888dhv9gnfa98dczr4drk2jbhj7ryd"))))
522 (native-inputs 528 (native-inputs
523 `(("bc" ,bc) 529 `(("bc" ,bc)
524 ("bison" ,bison) 530 ("bison" ,bison)
@@ -590,7 +596,7 @@ def test_ctrl_c"))
590 ;; See https://bugs.gnu.org/34717 for 596 ;; See https://bugs.gnu.org/34717 for
591 ;; details. 597 ;; details.
592 (("CONFIG_FIT_SIGNATURE=y") 598 (("CONFIG_FIT_SIGNATURE=y")
593 "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n") 599 "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n\nCONFIG_TOOLS_LIBCRYPTO=n")
594 ;; This test requires a sound system, which is un-used 600 ;; This test requires a sound system, which is un-used
595 ;; in u-boot-tools. 601 ;; in u-boot-tools.
596 (("CONFIG_SOUND=y") "CONFIG_SOUND=n"))) 602 (("CONFIG_SOUND=y") "CONFIG_SOUND=n")))
@@ -689,6 +695,12 @@ board-independent tools.")))
689 suffix-len)))) 695 suffix-len))))
690 (sort entries string-ci<))) 696 (sort entries string-ci<)))
691 (error "Invalid boardname ~s." ,board)))))) 697 (error "Invalid boardname ~s." ,board))))))
698 (add-after 'configure 'disable-tools-libcrypto
699 ;; Disable libcrypto due to GPL and OpenSSL license
700 ;; incompatibilities
701 (lambda _
702 (substitute* ".config"
703 (("CONFIG_TOOLS_LIBCRYPTO=.*$") "CONFIG_TOOLS_LIBCRYPTO=n"))))
692 (replace 'install 704 (replace 'install
693 (lambda* (#:key outputs #:allow-other-keys) 705 (lambda* (#:key outputs #:allow-other-keys)
694 (let* ((out (assoc-ref outputs "out")) 706 (let* ((out (assoc-ref outputs "out"))
@@ -899,7 +911,8 @@ to Novena upstream, does not load u-boot.img from the first partition.")
899 (source (origin 911 (source (origin
900 (inherit (package-source u-boot)) 912 (inherit (package-source u-boot))
901 (patches 913 (patches
902 (search-patches "u-boot-riscv64-fix-extlinux.patch"))))))) 914 (search-patches "u-boot-riscv64-fix-extlinux.patch"
915 %u-boot-allow-disabling-openssl-patch)))))))
903 916
904(define-public u-boot-sifive-unleashed 917(define-public u-boot-sifive-unleashed
905 (make-u-boot-package "sifive_unleashed" "riscv64-linux-gnu")) 918 (make-u-boot-package "sifive_unleashed" "riscv64-linux-gnu"))
diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
index b643f40843c..183b44f2c39 100644
--- a/gnu/packages/browser-extensions.scm
+++ b/gnu/packages/browser-extensions.scm
@@ -51,7 +51,7 @@ supported content to the Kodi media center.")
51(define ublock-origin 51(define ublock-origin
52 (package 52 (package
53 (name "ublock-origin") 53 (name "ublock-origin")
54 (version "1.38.4") 54 (version "1.38.6")
55 (home-page "https://github.com/gorhill/uBlock") 55 (home-page "https://github.com/gorhill/uBlock")
56 (source (origin 56 (source (origin
57 (method git-fetch) 57 (method git-fetch)
@@ -60,7 +60,7 @@ supported content to the Kodi media center.")
60 (file-name (git-file-name name version)) 60 (file-name (git-file-name name version))
61 (sha256 61 (sha256
62 (base32 62 (base32
63 "127b5mg54zfci86q66fss701y20b0mjpa4flx7iar7nviqg9fa1h")))) 63 "1jdi7p537dj0bpxsdnvs722cw8xv5ifh8mjj1ndwjvgasvj18fsd"))))
64 (build-system gnu-build-system) 64 (build-system gnu-build-system)
65 (outputs '("xpi" "firefox" "chromium")) 65 (outputs '("xpi" "firefox" "chromium"))
66 (arguments 66 (arguments
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index c6399280f63..93d829391c7 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -838,7 +838,7 @@ Service (S3) protocol for object storage.")
838(define-public aws-c-mqtt 838(define-public aws-c-mqtt
839 (package 839 (package
840 (name "aws-c-mqtt") 840 (name "aws-c-mqtt")
841 (version "0.7.6") 841 (version "0.7.8")
842 (source (origin 842 (source (origin
843 (method git-fetch) 843 (method git-fetch)
844 (uri (git-reference 844 (uri (git-reference
@@ -847,7 +847,7 @@ Service (S3) protocol for object storage.")
847 (file-name (git-file-name name version)) 847 (file-name (git-file-name name version))
848 (sha256 848 (sha256
849 (base32 849 (base32
850 "0qgblakp9n281z5w1kmmy9sjiz6s44kg487l76w7p43p1dp7s401")) 850 "19j6nw2v36c4yff4p0fbf0748s06fd5r9cp2yakry9ybn1ada99c"))
851 (patches (search-patches "aws-c-mqtt-cmake-prefix.patch")))) 851 (patches (search-patches "aws-c-mqtt-cmake-prefix.patch"))))
852 (build-system cmake-build-system) 852 (build-system cmake-build-system)
853 (arguments 853 (arguments
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 6c3873a21df..8faeedcfe90 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -231,13 +231,15 @@ files.")
231 '(begin 231 '(begin
232 ;; Make libraries respect LDFLAGS. 232 ;; Make libraries respect LDFLAGS.
233 (substitute* '("paranoia/Makefile.in" "interface/Makefile.in") 233 (substitute* '("paranoia/Makefile.in" "interface/Makefile.in")
234 (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname")) 234 (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname"))))))
235 #t))))
236 (build-system gnu-build-system) 235 (build-system gnu-build-system)
237 (arguments 236 (arguments
238 `(#:tests? #f ; there is no check target 237 `(#:tests? #f ; there is no check target
239 #:configure-flags ; Add $libdir to the RUNPATH of all the executables. 238 #:configure-flags ; Add $libdir to the RUNPATH of all the executables.
240 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))) 239 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
240 ;; Building in parallel is flaky: “ld: […]/cachetest.c:393: undefined
241 ;; reference to `paranoia_free'”.
242 #:parallel-build? #f))
241 (home-page "https://www.xiph.org/paranoia/") 243 (home-page "https://www.xiph.org/paranoia/")
242 (synopsis "Audio CD reading utility") 244 (synopsis "Audio CD reading utility")
243 (description "Cdparanoia retrieves audio tracks from CDDA capable CDROM 245 (description "Cdparanoia retrieves audio tracks from CDDA capable CDROM
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 534b9a4ad92..9e5e516af53 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -336,8 +336,8 @@
336 (string-append "ungoogled-chromium-" category "-" name)))) 336 (string-append "ungoogled-chromium-" category "-" name))))
337 (sha256 (base32 hash)))) 337 (sha256 (base32 hash))))
338 338
339(define %chromium-version "94.0.4606.81") 339(define %chromium-version "95.0.4638.69")
340(define %ungoogled-revision "94.0.4606.81-1") 340(define %ungoogled-revision (string-append %chromium-version "-1"))
341(define %arch-revision "db2157b84924ce84201a8245e68a02f7d55f6491") 341(define %arch-revision "db2157b84924ce84201a8245e68a02f7d55f6491")
342(define %debian-revision "debian/90.0.4430.85-1") 342(define %debian-revision "debian/90.0.4430.85-1")
343 343
@@ -367,7 +367,7 @@
367 (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision)) 367 (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
368 (sha256 368 (sha256
369 (base32 369 (base32
370 "113abybh8kkw9a92lj6jww6dl6rc1sv5x7a7a1gjwsihzd2r0cik")))) 370 "19azr4m4rd6za9vgcggijyq9x54jrjp0n07y4falgjrdz9q4f7aj"))))
371 371
372(define %guix-patches 372(define %guix-patches
373 (list (local-file 373 (list (local-file
@@ -502,7 +502,7 @@
502 %chromium-version ".tar.xz")) 502 %chromium-version ".tar.xz"))
503 (sha256 503 (sha256
504 (base32 504 (base32
505 "16755mfqxxmvslm9ix060safrnml91ckj5p85960jj5g5hmslwbh")) 505 "1rzg48mbd5n75nq2rfwknyxpmfrddds199ic82c736kcgirpv8rq"))
506 (modules '((guix build utils))) 506 (modules '((guix build utils)))
507 (snippet (force ungoogled-chromium-snippet)))) 507 (snippet (force ungoogled-chromium-snippet))))
508 (build-system gnu-build-system) 508 (build-system gnu-build-system)
@@ -598,7 +598,6 @@
598 "rtc_use_h264=true" 598 "rtc_use_h264=true"
599 "rtc_use_pipewire=true" 599 "rtc_use_pipewire=true"
600 "rtc_link_pipewire=true" 600 "rtc_link_pipewire=true"
601 "rtc_pipewire_version=\"0.3\""
602 ;; Don't use bundled sources. 601 ;; Don't use bundled sources.
603 "rtc_build_json=true" ;FIXME: libc++ std::string ABI difference 602 "rtc_build_json=true" ;FIXME: libc++ std::string ABI difference
604 "rtc_build_libevent=false" 603 "rtc_build_libevent=false"
@@ -651,15 +650,16 @@
651 "")) 650 ""))
652 651
653 ;; XXX: Should be unnecessary when use_system_lcms2=true. 652 ;; XXX: Should be unnecessary when use_system_lcms2=true.
654 (substitute* "third_party/pdfium/core/fxcodec/icc/iccmodule.h" 653 (substitute* "third_party/pdfium/core/fxcodec/icc/icc_transform.h"
655 (("include \"third_party/lcms/include/lcms2\\.h\"") 654 (("include \"third_party/lcms/include/lcms2\\.h\"")
656 "include \"lcms2.h\"")) 655 "include \"lcms2.h\""))
657 656
658 ;; Add missing include statement. 657 ;; Chromium bundles a pre-release of Harfbuzz 3.0 and uses an
659 (substitute* "third_party/pdfium/core/fxcodec/png/png_decoder.cpp" 658 ;; experimental API that was removed in 3.0. Adjust to use
660 (("#include \"core/fxcodec/fx_codec.h\"" all) 659 ;; the updated API (taken from <https://crrev.com/c/3076563>).
661 (string-append all 660 (substitute* "components/paint_preview/common/subset_font.cc"
662 "\n#include \"core/fxcodec/fx_codec_def.h\""))) 661 (("hb_subset_input_no_subset_tables_set\\(input\\.get\\(\\)\\)")
662 "hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG)"))
663 663
664 (substitute* 664 (substitute*
665 "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h" 665 "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 5ef8813dd52..0280a51be5a 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -31,7 +31,7 @@
31;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net> 31;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
32;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net> 32;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
33;;; Copyright © 2020 Magali Lemes <magalilemes00@gmail.com> 33;;; Copyright © 2020 Magali Lemes <magalilemes00@gmail.com>
34;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> 34;;; Copyright © 2020, 2021 Simon Tournier <zimon.toutoune@gmail.com>
35;;; Copyright © 2020 Aniket Patil <aniket112.patil@gmail.com> 35;;; Copyright © 2020 Aniket Patil <aniket112.patil@gmail.com>
36;;; Copyright © 2021 Marcel Schilling <marcel.schilling@uni-luebeck.de> 36;;; Copyright © 2021 Marcel Schilling <marcel.schilling@uni-luebeck.de>
37;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> 37;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
@@ -906,6 +906,27 @@ functions which can speed up workflow.")
906control over dimensions and appearance.") 906control over dimensions and appearance.")
907 (license license:gpl2+))) 907 (license license:gpl2+)))
908 908
909(define-public r-pnwcolors
910 (package
911 (name "r-pnwcolors")
912 (version "0.1.0")
913 (source
914 (origin
915 (method url-fetch)
916 (uri (cran-uri "PNWColors" version))
917 (sha256
918 (base32
919 "1phplnclkficfv8s6wsyrckk4ixzbayiy5iix6dddg40485l9nyj"))))
920 (properties `((upstream-name . "PNWColors")))
921 (build-system r-build-system)
922 (home-page "https://github.com/jakelawlor/PNWColors")
923 (synopsis "Color palettes for data visualizations")
924 (description
925 "This package provides color palettes. They are checked for colorblind
926accessibility from hue, saturation, and lightness value scaling using the
927Chroma.js Color Palette Helper. See @url{https://gka.github.io/palettes}.")
928 (license license:cc0)))
929
909(define-public r-ecp 930(define-public r-ecp
910 (package 931 (package
911 (name "r-ecp") 932 (name "r-ecp")
@@ -23649,6 +23670,35 @@ univariate time series forecasts including exponential smoothing via state
23649space models and automatic ARIMA modelling.") 23670space models and automatic ARIMA modelling.")
23650 (license license:gpl3))) 23671 (license license:gpl3)))
23651 23672
23673(define-public r-formattable
23674 (package
23675 (name "r-formattable")
23676 (version "0.2.1")
23677 (source
23678 (origin
23679 (method url-fetch)
23680 (uri (cran-uri "formattable" version))
23681 (sha256
23682 (base32 "1vdxi0xmg019qyzjrp8bkjxciz245jcxsrkhfzd44ynqcwi4s3ag"))))
23683 (properties `((upstream-name . "formattable")))
23684 (build-system r-build-system)
23685 (propagated-inputs
23686 `(("r-htmltools" ,r-htmltools)
23687 ("r-htmlwidgets" ,r-htmlwidgets)
23688 ("r-lifecycle" ,r-lifecycle)
23689 ("r-rmarkdown" ,r-rmarkdown)))
23690 (native-inputs
23691 `(("r-knitr" ,r-knitr)))
23692 (home-page "https://github.com/renkun-ken/formattable")
23693 (synopsis "Print vectors and data frames with text fromatting")
23694 (description
23695 "This R package provides functions to create formattable vectors and data
23696frames. @emph{Formattable} vectors are printed with text formatting, and
23697formattable data frames are printed with multiple types of formatting in HTML
23698to improve the readability of data presented in tabular form rendered in web
23699pages.")
23700 (license license:expat)))
23701
23652(define-public r-xmisc 23702(define-public r-xmisc
23653 (package 23703 (package
23654 (name "r-xmisc") 23704 (name "r-xmisc")
@@ -28581,6 +28631,49 @@ algorithms; density clustering, hierarchical clustering, k-means, and the
28581discovery of differentially expressed genes and markers.") 28631discovery of differentially expressed genes and markers.")
28582 (license license:gpl3))) 28632 (license license:gpl3)))
28583 28633
28634(define-public r-seuratdisk
28635 (let ((commit "163f1aade5bac38ed1e9e9c912283a7e74781610")
28636 (revision "1"))
28637 (package
28638 (name "r-seuratdisk")
28639 (version (git-version "0.0.0.9019" revision commit))
28640 (source
28641 (origin
28642 (method git-fetch)
28643 (uri (git-reference
28644 (url "https://github.com/mojaveazure/seurat-disk")
28645 (commit commit)))
28646 (file-name (git-file-name name version))
28647 (sha256
28648 (base32 "1d1v8qi6kknzy5fj6bl8akwy74h5h143i00lyidsnqjbwp9n4qnw"))))
28649 (properties `((upstream-name . "SeuratDisk")))
28650 (build-system r-build-system)
28651 (propagated-inputs
28652 `(("r-cli" ,r-cli)
28653 ("r-crayon" ,r-crayon)
28654 ("r-hdf5r" ,r-hdf5r)
28655 ("r-matrix" ,r-matrix)
28656 ("r-r6" ,r-r6)
28657 ("r-rlang" ,r-rlang)
28658 ("r-seurat" ,r-seurat)
28659 ("r-seuratobject" ,r-seuratobject)
28660 ("r-stringi" ,r-stringi)
28661 ("r-withr" ,r-withr)))
28662 (native-inputs
28663 `(("r-knitr" ,r-knitr)))
28664 (home-page "https://github.com/mojaveazure/seurat-disk")
28665 (synopsis "Interfaces for HDF5-based single cell file formats")
28666 (description
28667 "The h5Seurat file format is specifically designed for the storage and
28668analysis of multi-modal single-cell and spatially-resolved expression
28669experiments, for example, from CITE-seq or 10X Visium technologies. It holds
28670all molecular information and associated metadata, including (for example)
28671nearest-neighbor graphs, dimensional reduction information, spatial
28672coordinates and image data, and cluster labels. This package also supports
28673rapid and on-disk conversion between h5Seurat and AnnData objects, with the
28674goal of enhancing interoperability between Seurat and Scanpy.")
28675 (license license:gpl3))))
28676
28584(define-public r-phangorn 28677(define-public r-phangorn
28585 (package 28678 (package
28586 (name "r-phangorn") 28679 (name "r-phangorn")
@@ -28836,6 +28929,26 @@ logging to plaintext, JSON, (rotating) files, memory buffers, and databases, as
28836well as email and push notifications.") 28929well as email and push notifications.")
28837 (license license:expat))) 28930 (license license:expat)))
28838 28931
28932(define-public r-mhg
28933 (package
28934 (name "r-mhg")
28935 (version "1.1")
28936 (source
28937 (origin
28938 (method url-fetch)
28939 (uri (cran-uri "mHG" version))
28940 (sha256
28941 (base32
28942 "1rz5ncrvvv9h9grls15apa63v2nh9j87fmp4mwjjil37jx6a5zki"))))
28943 (properties `((upstream-name . "mHG")))
28944 (build-system r-build-system)
28945 (home-page "https://cran.r-project.org/package=mHG")
28946 (synopsis "Minimum-hypergeometric test")
28947 (description
28948 "This package runs a minimum-hypergeometric (mHG) test as described in
28949\"Discovering Motifs in Ranked Lists of DNA Sequences\" by Eran Eden.")
28950 (license license:gpl2)))
28951
28839(define-public r-mlr3measures 28952(define-public r-mlr3measures
28840 (package 28953 (package
28841 (name "r-mlr3measures") 28954 (name "r-mlr3measures")
@@ -32033,6 +32146,71 @@ Python module, this utility provides a flexible and extensible way of
32033formatting and delivering log messages with low overhead.") 32146formatting and delivering log messages with low overhead.")
32034 (license license:agpl3+))) 32147 (license license:agpl3+)))
32035 32148
32149(define-public r-fasterize
32150 (package
32151 (name "r-fasterize")
32152 (version "1.0.3")
32153 (source
32154 (origin
32155 (method url-fetch)
32156 (uri (cran-uri "fasterize" version))
32157 (sha256
32158 (base32 "10bzl77c1b9jhcn1xp467qzp2n8c7s3wpxn53qjh1nwvbri5kd32"))))
32159 (properties `((upstream-name . "fasterize")))
32160 (build-system r-build-system)
32161 (propagated-inputs
32162 `(("r-raster" ,r-raster)
32163 ("r-rcpp" ,r-rcpp)
32164 ("r-rcpparmadillo" ,r-rcpparmadillo)
32165 ("r-sp" ,r-sp)))
32166 (native-inputs `(("r-knitr" ,r-knitr)))
32167 (home-page "https://github.com/ecohealthalliance/fasterize")
32168 (synopsis "Fast Polygon to Raster Conversion")
32169 (description
32170"This package provides a drop-in replacement for @code{rasterize} from
32171the @code{raster} package that takes sf-type objects, and is much faster.
32172There is support for the main options provided by the @code{rasterize}
32173function, including setting the field used and background value, and
32174options for aggregating multi-layer rasters.")
32175 (license license:expat)))
32176
32177(define-public r-bien
32178 (package
32179 (name "r-bien")
32180 (version "1.2.4")
32181 (source
32182 (origin
32183 (method url-fetch)
32184 (uri (cran-uri "BIEN" version))
32185 (sha256
32186 (base32 "1dagrs54ciagm2mgqrvxl6k2akahr0qk63ifxqnks7iljm0x1gw6"))))
32187 (properties `((upstream-name . "BIEN")))
32188 (build-system r-build-system)
32189 (native-inputs
32190 `(("r-knitr" ,r-knitr)
32191 ("r-testthat" ,r-testthat)))
32192 (propagated-inputs
32193 `(("r-ape" ,r-ape)
32194 ("r-dbi" ,r-dbi)
32195 ("r-doparallel" ,r-doparallel)
32196 ("r-fasterize" ,r-fasterize)
32197 ("r-foreach" ,r-foreach)
32198 ("r-raster" ,r-raster)
32199 ("r-rgdal" ,r-rgdal)
32200 ("r-rgeos" ,r-rgeos)
32201 ("r-rpostgresql" ,r-rpostgresql)
32202 ("r-sf" ,r-sf)
32203 ("r-sp" ,r-sp)))
32204 (home-page "https://cran.r-project.org/package=BIEN")
32205 (synopsis "Tools for accessing the BIEN database")
32206 (description
32207 "This package provides tools for accessing the Botanical Information and
32208Ecology Network (BIEN) database. The BIEN database contains cleaned and
32209standardized botanical data including occurrence, trait, plot and taxonomic
32210data. This package provides functions that query the BIEN database by
32211constructing and executing optimized SQL queries.")
32212 (license license:expat)))
32213
32036(define-public r-ggh4x 32214(define-public r-ggh4x
32037 (package 32215 (package
32038 (name "r-ggh4x") 32216 (name "r-ggh4x")
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 87b165580cd..78d2a226003 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20509,7 +20509,7 @@ IEEE 754-2008 binary16 type.")
20509 (("rust-winapi" ,rust-winapi-0.3)))) 20509 (("rust-winapi" ,rust-winapi-0.3))))
20510 (home-page "https://github.com/brson/home") 20510 (home-page "https://github.com/brson/home")
20511 (synopsis "Shared definitions of home directories") 20511 (synopsis "Shared definitions of home directories")
20512 (description "This packages provides the definition of @code{home_dir} 20512 (description "This package provides the definition of @code{home_dir}
20513used by @command{cargo} and @command{rustup}, as well as functions to find the 20513used by @command{cargo} and @command{rustup}, as well as functions to find the
20514correct value of @samp{CARGO_HOME} and @samp{RUSTUP_HOME}.") 20514correct value of @samp{CARGO_HOME} and @samp{RUSTUP_HOME}.")
20515 (license (list license:expat license:asl2.0)))) 20515 (license (list license:expat license:asl2.0))))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 79086a9620d..0f413b8b742 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1,7 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 David Thompson <davet@gnu.org> 2;;; Copyright © 2014 David Thompson <davet@gnu.org>
3;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> 3;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
4;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name> 4;;; Copyright © 2016, 2017, 2018, 2019, 2021 Leo Famulari <leo@famulari.name>
5;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox> 5;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
6;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr> 6;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
7;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> 7;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
@@ -841,6 +841,41 @@ as the latest standard, SHA-3. It is an improved version of the SHA-3 finalist
841BLAKE.") 841BLAKE.")
842 (license license:public-domain))) 842 (license license:public-domain)))
843 843
844(define-public b2sum
845 ;; Upstream doesn't seem to use a versioned release workflow, so build from
846 ;; a recent commit.
847 (let ((commit "54f4faa4c16ea34bcd59d16e8da46a64b259fc07")
848 (revision "0"))
849 (package
850 (name "b2sum")
851 (version (git-version "20190724" revision commit))
852 (source (origin
853 (method git-fetch)
854 (uri (git-reference
855 (url "https://github.com/BLAKE2/BLAKE2")
856 (commit commit)))
857 (file-name (git-file-name name version))
858 (sha256
859 (base32 "04z631v0vzl52g73v390ask5fnzi5wg83lcjkjhpmmymaz0jn152"))))
860 (build-system gnu-build-system)
861 (arguments
862 `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
863 (string-append "PREFIX=" (assoc-ref %outputs "out")))
864 #:tests? #f ; No test suite
865 #:phases
866 (modify-phases %standard-phases
867 (add-before 'build 'change-directory
868 (lambda _
869 (chdir "b2sum")))
870 (delete 'configure)))) ; No ./configure script
871 (home-page "https://www.blake2.net/")
872 (synopsis "BLAKE2 checksum tool")
873 (description "BLAKE2 is a cryptographic hash function faster than MD5,
874SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.")
875 ;; You may also choose to redistribute this program as Apache 2.0 or the
876 ;; OpenSSL license. See 'b2sum/b2sum.c' in the source distribution.
877 (license license:cc0))))
878
844(define-public rhash 879(define-public rhash
845 (package 880 (package
846 (name "rhash") 881 (name "rhash")
@@ -898,14 +933,14 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
898(define-public botan 933(define-public botan
899 (package 934 (package
900 (name "botan") 935 (name "botan")
901 (version "2.18.1") 936 (version "2.18.2")
902 (source (origin 937 (source (origin
903 (method url-fetch) 938 (method url-fetch)
904 (uri (string-append "https://botan.randombit.net/releases/" 939 (uri (string-append "https://botan.randombit.net/releases/"
905 "Botan-" version ".tar.xz")) 940 "Botan-" version ".tar.xz"))
906 (sha256 941 (sha256
907 (base32 942 (base32
908 "0adf53drhk1hlpfih0175c9081bqpclw6p2afn51cmx849ib9izq")))) 943 "0zih8agygp39ff0dwi3fv8y7dnnzpz3y86kcgjbhzlxry49kn6jl"))))
909 (build-system gnu-build-system) 944 (build-system gnu-build-system)
910 (arguments 945 (arguments
911 '(#:phases 946 '(#:phases
@@ -918,6 +953,8 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
918 (setenv "CXXFLAGS" "-O3") 953 (setenv "CXXFLAGS" "-O3")
919 (invoke "python" "./configure.py" 954 (invoke "python" "./configure.py"
920 (string-append "--prefix=" out) 955 (string-append "--prefix=" out)
956 "--disable-static"
957
921 ;; Otherwise, the `botan` executable cannot find 958 ;; Otherwise, the `botan` executable cannot find
922 ;; libbotan. 959 ;; libbotan.
923 (string-append "--ldflags=-Wl,-rpath=" lib) 960 (string-append "--ldflags=-Wl,-rpath=" lib)
@@ -974,8 +1011,8 @@ security.")
974 (license license:gpl2))) 1011 (license license:gpl2)))
975 1012
976(define-public asignify 1013(define-public asignify
977 (let ((commit "f58e7977a599f040797975d649ed318e25cbd2d5") 1014 (let ((commit "08af003e1f4833713db28b871759d94f9b2b1469")
978 (revision "0")) 1015 (revision "1"))
979 (package 1016 (package
980 (name "asignify") 1017 (name "asignify")
981 (version (git-version "1.1" revision commit)) 1018 (version (git-version "1.1" revision commit))
@@ -987,7 +1024,7 @@ security.")
987 (file-name (git-file-name name version)) 1024 (file-name (git-file-name name version))
988 (sha256 1025 (sha256
989 (base32 1026 (base32
990 "1zl68qq6js6fdahxzyhvhrpyrwlv8c2zhdplycnfxyr1ckkhq8dw")))) 1027 "1zacpqa8b5lg270z1g06r5ik9vnb91crb4ivyy20381dny82xvr1"))))
991 (build-system gnu-build-system) 1028 (build-system gnu-build-system)
992 (arguments 1029 (arguments
993 `(#:configure-flags 1030 `(#:configure-flags
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index fa3a449b7ba..ffcbbe9eb4d 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -5,7 +5,7 @@
5;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com> 5;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
6;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com> 6;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
7;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> 7;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
8;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com> 8;;; Copyright © 2020, 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
9;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> 9;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
10;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> 10;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
11;;; 11;;;
@@ -756,35 +756,38 @@ use than similar tools like @command{mtrace}.")
756 (license license:gpl2+))) 756 (license license:gpl2+)))
757 757
758(define-public mspdebug 758(define-public mspdebug
759 (package 759 ;; Last official release was 24 July 2017
760 (name "mspdebug") 760 (let ((commit "4c4d94e43bc4a18ecf82070ff81cd38dd5641e3b")
761 (version "0.25") 761 (revision "0"))
762 (source (origin 762 (package
763 (method git-fetch) 763 (name "mspdebug")
764 (uri (git-reference 764 (version (git-version "0.25" revision commit))
765 (url "https://github.com/dlbeer/mspdebug") 765 (source (origin
766 (commit (string-append "v" version)))) 766 (method git-fetch)
767 (file-name (git-file-name name version)) 767 (uri (git-reference
768 (sha256 768 (url "https://github.com/dlbeer/mspdebug")
769 (base32 "0prgwb5vx6fd4bj12ss1bbb6axj2kjyriyjxqrzd58s5jyyy8d3c")))) 769 (commit commit)))
770 (build-system gnu-build-system) 770 (file-name (git-file-name name version))
771 (arguments 771 (sha256
772 `(#:tests? #f ; no test suite 772 (base32 "1lgw1dsc1aglyja610ichadvgs5b0df3wlarinczb0ykf431gjln"))))
773 #:phases 773 (build-system gnu-build-system)
774 (modify-phases %standard-phases 774 (arguments
775 (delete 'configure)) ; no configure script 775 `(#:tests? #f ; no test suite
776 #:make-flags 776 #:phases
777 (list (string-append "CC=" ,(cc-for-target)) 777 (modify-phases %standard-phases
778 "INSTALL=install" 778 (delete 'configure)) ; no configure script
779 (string-append "PREFIX=" %output)))) 779 #:make-flags
780 (inputs 780 (list (string-append "CC=" ,(cc-for-target))
781 `(("libusb-compat" ,libusb-compat) 781 "INSTALL=install"
782 ("readline" ,readline))) 782 (string-append "PREFIX=" %output))))
783 (synopsis "Debugging tool for MSP430 MCUs") 783 (inputs
784 (description "MspDebug supports FET430UIF, eZ430, RF2500 and Olimex 784 `(("libusb-compat" ,libusb-compat)
785 ("readline" ,readline)))
786 (synopsis "Debugging tool for MSP430 MCUs")
787 (description "MspDebug supports FET430UIF, eZ430, RF2500 and Olimex
785MSP430-JTAG-TINY programmers, as well as many other compatible 788MSP430-JTAG-TINY programmers, as well as many other compatible
786devices. It can be used as a proxy for gdb or as an independent 789devices. It can be used as a proxy for gdb or as an independent
787debugger with support for programming, disassembly and reverse 790debugger with support for programming, disassembly and reverse
788engineering.") 791engineering.")
789 (home-page "https://github.com/dlbeer/mspdebug") 792 (home-page "https://github.com/dlbeer/mspdebug")
790 (license license:gpl2+))) 793 (license license:gpl2+))))
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index b27ff40340a..fb22381673f 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -49,6 +49,7 @@
49 #:use-module (gnu packages mono) 49 #:use-module (gnu packages mono)
50 #:use-module (gnu packages ocaml) 50 #:use-module (gnu packages ocaml)
51 #:use-module (gnu packages package-management) 51 #:use-module (gnu packages package-management)
52 #:use-module (gnu packages pascal)
52 #:use-module (gnu packages patchutils) 53 #:use-module (gnu packages patchutils)
53 #:use-module (gnu packages pdf) 54 #:use-module (gnu packages pdf)
54 #:use-module (gnu packages python-web) 55 #:use-module (gnu packages python-web)
@@ -72,7 +73,7 @@
72(define-public diffoscope 73(define-public diffoscope
73 (package 74 (package
74 (name "diffoscope") 75 (name "diffoscope")
75 (version "188") 76 (version "189")
76 (source 77 (source
77 (origin 78 (origin
78 (method git-fetch) 79 (method git-fetch)
@@ -81,9 +82,9 @@
81 (commit version))) 82 (commit version)))
82 (file-name (git-file-name name version)) 83 (file-name (git-file-name name version))
83 (sha256 84 (sha256
84 (base32 "1byd28ihni5g0ikjjcsq68smj1rw33vv9z0cymqa4ds670c77yvn")) 85 (base32 "0dai9gwsr9xnficjy8myq6xr301y4iy82aidm936qsqjwrp8q1sm"))
85 (patches 86 (patches
86 (search-patches "diffoscope-fix-test_item3_deflate_llvm_bitcode.patch")))) 87 (search-patches "diffoscope-fix-llvm-test.patch"))))
87 (build-system python-build-system) 88 (build-system python-build-system)
88 (arguments 89 (arguments
89 `(#:phases (modify-phases %standard-phases 90 `(#:phases (modify-phases %standard-phases
@@ -183,6 +184,7 @@
183 ("dtc" ,dtc) 184 ("dtc" ,dtc)
184 ("e2fsprogs" ,e2fsprogs) 185 ("e2fsprogs" ,e2fsprogs)
185 ("ffmpeg" ,ffmpeg) 186 ("ffmpeg" ,ffmpeg)
187 ("fpc" ,fpc)
186 ("gettext" ,gettext-minimal) 188 ("gettext" ,gettext-minimal)
187 ("ghostscript" ,ghostscript) 189 ("ghostscript" ,ghostscript)
188 ("giflib:bin" ,giflib "bin") 190 ("giflib:bin" ,giflib "bin")
@@ -229,7 +231,7 @@ install.")
229(define-public reprotest 231(define-public reprotest
230 (package 232 (package
231 (name "reprotest") 233 (name "reprotest")
232 (version "0.7.16") 234 (version "0.7.18")
233 (source 235 (source
234 (origin 236 (origin
235 (method git-fetch) 237 (method git-fetch)
@@ -239,7 +241,7 @@ install.")
239 (file-name (git-file-name name version)) 241 (file-name (git-file-name name version))
240 (sha256 242 (sha256
241 (base32 243 (base32
242 "0s7gyixk868dw6yqxsb1sq24mgg9ilz5s2yidd5j0zhl683n7dw9")))) 244 "19lwsxq53isgfkvlxvxqqmbjfcim3lhcxwk7m9ddfjiynhq74949"))))
243 (inputs 245 (inputs
244 `(("python-debian" ,python-debian) 246 `(("python-debian" ,python-debian)
245 ("python-distro" ,python-distro) 247 ("python-distro" ,python-distro)
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index a3095f8bfa3..1bfd85beae4 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -41,6 +41,7 @@
41 #:use-module (guix gexp) 41 #:use-module (guix gexp)
42 #:use-module (gnu packages) 42 #:use-module (gnu packages)
43 #:use-module (gnu packages admin) 43 #:use-module (gnu packages admin)
44 #:use-module (gnu packages bash)
44 #:use-module (gnu packages fontutils) 45 #:use-module (gnu packages fontutils)
45 #:use-module (gnu packages freedesktop) 46 #:use-module (gnu packages freedesktop)
46 #:use-module (gnu packages gl) 47 #:use-module (gnu packages gl)
@@ -262,16 +263,16 @@ display manager which supports different greeters.")
262(define-public lightdm-gtk-greeter 263(define-public lightdm-gtk-greeter
263 (package 264 (package
264 (name "lightdm-gtk-greeter") 265 (name "lightdm-gtk-greeter")
265 (version "2.0.7") 266 (version "2.0.8")
266 (source (origin 267 (source (origin
267 (method url-fetch) 268 (method url-fetch)
268 (uri (string-append 269 (uri (string-append
269 "https://launchpad.net/lightdm-gtk-greeter/" 270 "https://github.com/xubuntu/lightdm-gtk-greeter"
270 (version-major+minor version) "/" version 271 "/releases/download/lightdm-gtk-greeter-" version "/"
271 "/+download/lightdm-gtk-greeter-" version ".tar.gz")) 272 "lightdm-gtk-greeter-" version ".tar.gz"))
272 (sha256 273 (sha256
273 (base32 274 (base32
274 "1g7wc3d3vqfa7mrdhx1w9ywydgjbffla6rbrxq9k3sc62br97qms")))) 275 "04q62mvr97l9gv8h37hfarygqc7p0498ig7xclcg4kxkqw0b7yxy"))))
275 (build-system gnu-build-system) 276 (build-system gnu-build-system)
276 (arguments 277 (arguments
277 `(#:configure-flags 278 `(#:configure-flags
@@ -306,14 +307,16 @@ display manager which supports different greeters.")
306 (native-inputs 307 (native-inputs
307 `(("exo" ,exo) 308 `(("exo" ,exo)
308 ("intltool" ,intltool) 309 ("intltool" ,intltool)
309 ("pkg-config" ,pkg-config))) 310 ("pkg-config" ,pkg-config)
311 ("xfce4-dev-tools" ,xfce4-dev-tools)))
310 (inputs 312 (inputs
311 `(("lightdm" ,lightdm) 313 `(("bash" ,bash-minimal) ; for wrap-program
314 ("lightdm" ,lightdm)
312 ("shared-mime-info" ,shared-mime-info) 315 ("shared-mime-info" ,shared-mime-info)
313 ("at-spi2-core" ,at-spi2-core) 316 ("at-spi2-core" ,at-spi2-core)
314 ("gtk+" ,gtk+))) 317 ("gtk+" ,gtk+)))
315 (synopsis "GTK+ greeter for LightDM") 318 (synopsis "GTK+ greeter for LightDM")
316 (home-page "https://launchpad.net/lightdm-gtk-greeter") 319 (home-page "https://github.com/xubuntu/lightdm-gtk-greeter")
317 (description "This package provides a LightDM greeter implementation using 320 (description "This package provides a LightDM greeter implementation using
318GTK+, lets you select a desktop session and log in to it.") 321GTK+, lets you select a desktop session and log in to it.")
319 (license license:gpl3+))) 322 (license license:gpl3+)))
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
index 0d1cdf2b1d7..39c2b20d7ec 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -151,7 +151,7 @@ a continuous layout.")
151(define-public pdf2djvu 151(define-public pdf2djvu
152 (package 152 (package
153 (name "pdf2djvu") 153 (name "pdf2djvu")
154 (version "0.9.18") 154 (version "0.9.18.1")
155 (source 155 (source
156 (origin 156 (origin
157 (method url-fetch) 157 (method url-fetch)
@@ -159,7 +159,7 @@ a continuous layout.")
159 "https://github.com/jwilk/pdf2djvu/releases/download/" version 159 "https://github.com/jwilk/pdf2djvu/releases/download/" version
160 "/pdf2djvu-" version ".tar.xz")) 160 "/pdf2djvu-" version ".tar.xz"))
161 (sha256 161 (sha256
162 (base32 "0vxa0b3g7zhflc5m6ln4f0hi0shsqyqc3344y7azlllibxc5ba22")))) 162 (base32 "0c595yziz81c9izf9s5sskd00qmgz2n1hp2vdcgg0dx81g3xfidb"))))
163 (build-system gnu-build-system) 163 (build-system gnu-build-system)
164 (native-inputs 164 (native-inputs
165 `(("gettext" ,gettext-minimal) 165 `(("gettext" ,gettext-minimal)
@@ -177,9 +177,12 @@ a continuous layout.")
177 `(#:test-target "test" 177 `(#:test-target "test"
178 #:phases 178 #:phases
179 (modify-phases %standard-phases 179 (modify-phases %standard-phases
180 (add-before 'check 'set-home-for-tests 180 (add-after 'unpack 'fix-tests
181 (lambda _ 181 (lambda _
182 (setenv "HOME" "/tmp")))))) 182 (substitute* "tests/test-xmp-broken.py"
183 ;; Error message changed in recent versions of XML parser
184 (("XML parsing failure")
185 "Error in XMLValidator")))))))
183 (synopsis "PDF to DjVu converter") 186 (synopsis "PDF to DjVu converter")
184 (description 187 (description
185 "@code{pdf2djvu} creates DjVu files from PDF files. 188 "@code{pdf2djvu} creates DjVu files from PDF files.
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index c770b880c80..89ebe588fdb 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -1062,14 +1062,14 @@ synthesis, and on-the-fly re-configuration.")
1062(define-public knot-resolver 1062(define-public knot-resolver
1063 (package 1063 (package
1064 (name "knot-resolver") 1064 (name "knot-resolver")
1065 (version "5.4.1") 1065 (version "5.4.2")
1066 (source (origin 1066 (source (origin
1067 (method url-fetch) 1067 (method url-fetch)
1068 (uri (string-append "https://secure.nic.cz/files/knot-resolver/" 1068 (uri (string-append "https://secure.nic.cz/files/knot-resolver/"
1069 "knot-resolver-" version ".tar.xz")) 1069 "knot-resolver-" version ".tar.xz"))
1070 (sha256 1070 (sha256
1071 (base32 1071 (base32
1072 "0rixiqfj53rfabrz8qpnq4whx8y29d2m5w64a4jlwx7gv4nrd2zv")))) 1072 "12x5cd09rv530pak5f2smxcfq2zdqg0g5qxsd5k0alm7f6aj2spa"))))
1073 (build-system meson-build-system) 1073 (build-system meson-build-system)
1074 (outputs '("out" "doc")) 1074 (outputs '("out" "doc"))
1075 (arguments 1075 (arguments
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index ee12f7edeb7..4d15ac4812e 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -459,8 +459,7 @@ the in DocBook SGML DTDs.")
459 (string-append (assoc-ref inputs input) 459 (string-append (assoc-ref inputs input)
460 "/bin")) 460 "/bin"))
461 '("libxslt" "texlive" 461 '("libxslt" "texlive"
462 "imagemagick" "inkscape")))) 462 "imagemagick" "inkscape"))))))))))
463 #t))))))
464 (home-page "http://dblatex.sourceforge.net") 463 (home-page "http://dblatex.sourceforge.net")
465 (synopsis "DocBook to LaTeX Publishing") 464 (synopsis "DocBook to LaTeX Publishing")
466 (description 465 (description
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index c8515d729c8..c901f7e7119 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -102,6 +102,7 @@
102;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org> 102;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
103;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org> 103;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
104;;; Copyright © 2021 Simon South <simon@simonsouth.net> 104;;; Copyright © 2021 Simon South <simon@simonsouth.net>
105;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>
105;;; 106;;;
106;;; This file is part of GNU Guix. 107;;; This file is part of GNU Guix.
107;;; 108;;;
@@ -456,16 +457,16 @@ a generic Scheme interaction mode for the GNU Emacs editor.")
456(define-public emacs-vc-hgcmd 457(define-public emacs-vc-hgcmd
457 (package 458 (package
458 (name "emacs-vc-hgcmd") 459 (name "emacs-vc-hgcmd")
459 (version "1.14") 460 (version "1.14.1")
460 (source (origin 461 (source
461 (method git-fetch) 462 (origin
462 (uri (git-reference 463 (method git-fetch)
463 (url "https://github.com/muffinmad/emacs-vc-hgcmd") 464 (uri (git-reference
464 (commit (string-append "v" version)))) 465 (url "https://github.com/muffinmad/emacs-vc-hgcmd")
465 (file-name (git-file-name name version)) 466 (commit (string-append "v" version))))
466 (sha256 467 (file-name (git-file-name name version))
467 (base32 468 (sha256
468 "1mm8lnwii53j32v54aahl8sf3ciwymrvc1rgy4nw2m7hcrnjsb78")))) 469 (base32 "1nlaicza4ds325827ks5gb7zn0nc536k2chq8jwbq34ybvxi93wj"))))
469 (build-system emacs-build-system) 470 (build-system emacs-build-system)
470 (home-page "https://github.com/muffinmad/emacs-vc-hgcmd") 471 (home-page "https://github.com/muffinmad/emacs-vc-hgcmd")
471 (synopsis "Version control (VC) backend for the Mercurial command server") 472 (synopsis "Version control (VC) backend for the Mercurial command server")
@@ -1718,7 +1719,7 @@ directly.")
1718 (home-page "https://bitbucket.org/agriggio/ahg") 1719 (home-page "https://bitbucket.org/agriggio/ahg")
1719 (synopsis "Emacs front-end for the Mercurial SCM") 1720 (synopsis "Emacs front-end for the Mercurial SCM")
1720 (description 1721 (description
1721 "This packages provides a simple Emacs front-end for the Mercurial 1722 "This package provides a simple Emacs front-end for the Mercurial
1722Distributed @acronym{Source Control Management, SCM} system.") 1723Distributed @acronym{Source Control Management, SCM} system.")
1723 (license license:gpl3+)))) 1724 (license license:gpl3+))))
1724 1725
@@ -6414,31 +6415,27 @@ for the current function or variable in the minibuffer.")
6414 (license license:gpl3+))) 6415 (license license:gpl3+)))
6415 6416
6416(define-public emacs-company-quickhelp 6417(define-public emacs-company-quickhelp
6417 ;; XXX: release version 2.3.0 is on an unmaintained branch for some reason, 6418 (package
6418 ;; so we use the latest 2.2.0 commit instead 6419 (name "emacs-company-quickhelp")
6419 (let ((commit "479676cade80a9f03802ca3d956591820ed5c537") 6420 (version "2.3.0")
6420 (revision "1")) 6421 (source
6421 (package 6422 (origin
6422 (name "emacs-company-quickhelp") 6423 (method git-fetch)
6423 (version (git-version "2.2.0" revision commit)) 6424 (uri (git-reference
6424 (source 6425 (url "https://github.com/expez/company-quickhelp")
6425 (origin 6426 (commit version)))
6426 (method git-fetch) 6427 (file-name (git-file-name name version))
6427 (uri (git-reference 6428 (sha256
6428 (url "https://github.com/expez/company-quickhelp") 6429 (base32 "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr"))))
6429 (commit commit))) 6430 (build-system emacs-build-system)
6430 (file-name (git-file-name name version)) 6431 (propagated-inputs
6431 (sha256 6432 `(("emacs-pos-tip" ,emacs-pos-tip)
6432 (base32 "0hbqpnaf4hnin3nmdzmfj3v22kk9a97b6zssqs96ns36d9h52xcp")))) 6433 ("emacs-company" ,emacs-company)))
6433 (build-system emacs-build-system) 6434 (home-page "https://github.com/expez/company-quickhelp")
6434 (propagated-inputs 6435 (synopsis "Popup documentation for completion candidates")
6435 `(("emacs-pos-tip" ,emacs-pos-tip) 6436 (description "@code{company-quickhelp} shows documentation for the
6436 ("emacs-company" ,emacs-company)))
6437 (home-page "https://github.com/expez/company-quickhelp")
6438 (synopsis "Popup documentation for completion candidates")
6439 (description "@code{company-quickhelp} shows documentation for the
6440completion candidate when using the Company text completion framework.") 6437completion candidate when using the Company text completion framework.")
6441 (license license:gpl3+)))) 6438 (license license:gpl3+)))
6442 6439
6443(define-public emacs-math-symbol-lists 6440(define-public emacs-math-symbol-lists
6444 (package 6441 (package
@@ -8208,7 +8205,7 @@ them easier to distinguish from other, less important buffers.")
8208(define-public emacs-embark 8205(define-public emacs-embark
8209 (package 8206 (package
8210 (name "emacs-embark") 8207 (name "emacs-embark")
8211 (version "0.10") 8208 (version "0.12")
8212 (source 8209 (source
8213 (origin 8210 (origin
8214 (method git-fetch) 8211 (method git-fetch)
@@ -8216,7 +8213,7 @@ them easier to distinguish from other, less important buffers.")
8216 (url "https://github.com/oantolin/embark") 8213 (url "https://github.com/oantolin/embark")
8217 (commit version))) 8214 (commit version)))
8218 (sha256 8215 (sha256
8219 (base32 "063hc0hganws11vjdk3ic0mxm9i0vpw6s7hzbgxvja0gjkdxjldz")) 8216 (base32 "16z7g6ynj4d64wsg49skhwypn5j6awlpsawbz61djsmpzlzjnv36"))
8220 (file-name (git-file-name name version)))) 8217 (file-name (git-file-name name version))))
8221 (build-system emacs-build-system) 8218 (build-system emacs-build-system)
8222 (propagated-inputs 8219 (propagated-inputs
@@ -18954,7 +18951,7 @@ powerful Org contents.")
18954(define-public emacs-org-re-reveal 18951(define-public emacs-org-re-reveal
18955 (package 18952 (package
18956 (name "emacs-org-re-reveal") 18953 (name "emacs-org-re-reveal")
18957 (version "3.12.1") 18954 (version "3.12.3")
18958 (source 18955 (source
18959 (origin 18956 (origin
18960 (method git-fetch) 18957 (method git-fetch)
@@ -18963,7 +18960,7 @@ powerful Org contents.")
18963 (commit version))) 18960 (commit version)))
18964 (file-name (git-file-name name version)) 18961 (file-name (git-file-name name version))
18965 (sha256 18962 (sha256
18966 (base32 "0hi8lq9rj6i2m14dh75dzq7lq41i4f6qj4xbp2b8krqw6mk9xg7z")))) 18963 (base32 "08ai87b6nybg0l7y8falb53wwvdv8hr3jzj5q995x48ylw6r1582"))))
18967 (build-system emacs-build-system) 18964 (build-system emacs-build-system)
18968 (propagated-inputs 18965 (propagated-inputs
18969 `(("emacs-htmlize" ,emacs-htmlize) 18966 `(("emacs-htmlize" ,emacs-htmlize)
@@ -21139,7 +21136,7 @@ file.")
21139(define-public emacs-packed 21136(define-public emacs-packed
21140 (package 21137 (package
21141 (name "emacs-packed") 21138 (name "emacs-packed")
21142 (version "3.0.3") 21139 (version "3.0.4")
21143 (source 21140 (source
21144 (origin 21141 (origin
21145 (method git-fetch) 21142 (method git-fetch)
@@ -21148,8 +21145,7 @@ file.")
21148 (commit version))) 21145 (commit version)))
21149 (file-name (git-file-name name version)) 21146 (file-name (git-file-name name version))
21150 (sha256 21147 (sha256
21151 (base32 21148 (base32 "1gpv2vaci0m48fzn0sy7iwl1mnkkqc30bf05jjrqlpn9kpbjyf1p"))))
21152 "06blk8parnpq3qi6y5628q3v59c8dyi41glb289a0l16248qwphk"))))
21153 (build-system emacs-build-system) 21149 (build-system emacs-build-system)
21154 (home-page "https://github.com/emacscollective/packed") 21150 (home-page "https://github.com/emacscollective/packed")
21155 (synopsis "Package manager agnostic Emacs Lisp package utilities") 21151 (synopsis "Package manager agnostic Emacs Lisp package utilities")
@@ -23439,16 +23435,16 @@ buffer and launches Magit from the status buffer for the project at point.")
23439(define-public emacs-alect-themes 23435(define-public emacs-alect-themes
23440 (package 23436 (package
23441 (name "emacs-alect-themes") 23437 (name "emacs-alect-themes")
23442 (version "0.9") 23438 (version "0.10")
23443 (source (origin 23439 (source
23444 (method git-fetch) 23440 (origin
23445 (uri (git-reference 23441 (method git-fetch)
23446 (url "https://github.com/alezost/alect-themes") 23442 (uri (git-reference
23447 (commit (string-append "v" version)))) 23443 (url "https://github.com/alezost/alect-themes")
23448 (file-name (git-file-name name version)) 23444 (commit (string-append "v" version))))
23449 (sha256 23445 (file-name (git-file-name name version))
23450 (base32 23446 (sha256
23451 "0nffxpdm0sa7bynwi0rmlwpc4qmvbda5ankhzz7fmk4ap9fkjxv9")))) 23447 (base32 "190clnm5x4hpzrq2wp18vxg6614ly3ciyv0y1sm9rfr9w9z5i0ya"))))
23452 (build-system emacs-build-system) 23448 (build-system emacs-build-system)
23453 (home-page "https://github.com/alezost/alect-themes") 23449 (home-page "https://github.com/alezost/alect-themes")
23454 (synopsis "Low contrast, light, dark and black color theme for Emacs") 23450 (synopsis "Low contrast, light, dark and black color theme for Emacs")
@@ -23814,7 +23810,7 @@ processes for Emacs")
23814(define-public emacs-treemacs 23810(define-public emacs-treemacs
23815 (package 23811 (package
23816 (name "emacs-treemacs") 23812 (name "emacs-treemacs")
23817 (version "2.9.3") 23813 (version "2.9.4")
23818 (source 23814 (source
23819 (origin 23815 (origin
23820 (method git-fetch) 23816 (method git-fetch)
@@ -23823,7 +23819,7 @@ processes for Emacs")
23823 (commit version))) 23819 (commit version)))
23824 (file-name (git-file-name name version)) 23820 (file-name (git-file-name name version))
23825 (sha256 23821 (sha256
23826 (base32 "0ik7wkv6w5vga29pmj8zzn3lq9a2ww26gkl380hmaak809in6k65")))) 23822 (base32 "1g2fy2qkscqx01av92hpjbr6qld8s1gk59cdjbff8fm0vlx8xk2p"))))
23827 (build-system emacs-build-system) 23823 (build-system emacs-build-system)
23828 (propagated-inputs 23824 (propagated-inputs
23829 `(("emacs-ace-window" ,emacs-ace-window) 23825 `(("emacs-ace-window" ,emacs-ace-window)
@@ -23895,9 +23891,11 @@ utilities.")
23895 (name "emacs-treemacs-extra") 23891 (name "emacs-treemacs-extra")
23896 (propagated-inputs 23892 (propagated-inputs
23897 `(,@(package-propagated-inputs emacs-treemacs) 23893 `(,@(package-propagated-inputs emacs-treemacs)
23894 ("emacs-all-the-icons" ,emacs-all-the-icons)
23898 ("emacs-evil" ,emacs-evil) 23895 ("emacs-evil" ,emacs-evil)
23899 ("emacs-magit" ,emacs-magit) 23896 ("emacs-magit" ,emacs-magit)
23900 ("emacs-projectile" ,emacs-projectile) 23897 ("emacs-projectile" ,emacs-projectile)
23898 ("emacs-perspective" ,emacs-perspective)
23901 ("emacs-persp-mode" ,emacs-persp-mode))) 23899 ("emacs-persp-mode" ,emacs-persp-mode)))
23902 (arguments 23900 (arguments
23903 (substitute-keyword-arguments 23901 (substitute-keyword-arguments
@@ -26066,14 +26064,14 @@ federated microblogging social network.")
26066(define-public emacs-ebdb 26064(define-public emacs-ebdb
26067 (package 26065 (package
26068 (name "emacs-ebdb") 26066 (name "emacs-ebdb")
26069 (version "0.8.6") 26067 (version "0.8.8")
26070 (source 26068 (source
26071 (origin 26069 (origin
26072 (method url-fetch) 26070 (method url-fetch)
26073 (uri (string-append "https://elpa.gnu.org/packages/" 26071 (uri (string-append "https://elpa.gnu.org/packages/"
26074 "ebdb-" version ".tar")) 26072 "ebdb-" version ".tar"))
26075 (sha256 26073 (sha256
26076 (base32 "0amr1s1q5w4513qw31qsr8gpsfgj5b2j7qn017rmwbaf1mj0k6z0")))) 26074 (base32 "035xakji5vypdpc06qp9yhg8ny7qn80h8kax6cl80p0lljplzrnn"))))
26077 (build-system emacs-build-system) 26075 (build-system emacs-build-system)
26078 (home-page "https://github.com/girzel/ebdb") 26076 (home-page "https://github.com/girzel/ebdb")
26079 (synopsis "EIEIO port of BBDB, Emacs's contact-management package") 26077 (synopsis "EIEIO port of BBDB, Emacs's contact-management package")
@@ -28655,26 +28653,29 @@ rather excellent completion provided by both Bash and Zsh.")
28655 (license license:gpl3+))) 28653 (license license:gpl3+)))
28656 28654
28657(define-public emacs-shell-command+ 28655(define-public emacs-shell-command+
28658 (package 28656 ;; XXX: Upstream did not tag last release. The commit below corresponds to
28659 (name "emacs-shell-command+") 28657 ;; the exact version bump.
28660 (version "2.2.0") 28658 (let ((commit "bf744c63bbd1e3bbb93407bd32d6da670b23e67e"))
28661 (source (origin 28659 (package
28662 (method git-fetch) 28660 (name "emacs-shell-command+")
28663 (uri (git-reference 28661 (version "2.3.2")
28664 (url "https://git.sr.ht/~pkal/shell-command-plus") 28662 (source (origin
28665 (commit version))) 28663 (method git-fetch)
28666 (file-name (git-file-name name version)) 28664 (uri (git-reference
28667 (sha256 28665 (url "https://git.sr.ht/~pkal/shell-command-plus")
28668 (base32 "1micvz6smhjma7qbka8h3w0crb3sgrxf9lz2548iqfgww50gb0lj")))) 28666 (commit commit)))
28669 (build-system emacs-build-system) 28667 (file-name (git-file-name name version))
28670 (home-page "http://elpa.gnu.org/packages/shell-command+.html") 28668 (sha256
28671 (synopsis "Extended Emacs @code{shell-command}") 28669 (base32 "0prlvcryq5ngrzn5f45rkw09wbr99v7nnwps2bjrjc3wvr2rp6h0"))))
28672 (description 28670 (build-system emacs-build-system)
28673 "Shell-command+ is a @code{shell-command} substitute that extends the 28671 (home-page "http://elpa.gnu.org/packages/shell-command+.html")
28672 (synopsis "Extended Emacs @code{shell-command}")
28673 (description
28674 "Shell-command+ is a @code{shell-command} substitute that extends the
28674regular Emacs command with several features. You can for example count all 28675regular Emacs command with several features. You can for example count all
28675the lines in a buffer with @code{> wc -l}, or delete all lower case letters in 28676the lines in a buffer with @code{> wc -l}, or delete all lower case letters in
28676the selected region with @code{| tr -d a-z}.") 28677the selected region with @code{| tr -d a-z}.")
28677 (license license:gpl3+))) 28678 (license license:gpl3+))))
28678 28679
28679(define-public emacs-shell-pop 28680(define-public emacs-shell-pop
28680 (let ((commit "4b4394037940a890a313d715d203d9ead2d156a6") 28681 (let ((commit "4b4394037940a890a313d715d203d9ead2d156a6")
@@ -29204,14 +29205,14 @@ work on alists, hash-table and arrays. All functions are prefixed with
29204(define-public emacs-xref 29205(define-public emacs-xref
29205 (package 29206 (package
29206 (name "emacs-xref") 29207 (name "emacs-xref")
29207 (version "1.3.0") 29208 (version "1.3.2")
29208 (source 29209 (source
29209 (origin 29210 (origin
29210 (method url-fetch) 29211 (method url-fetch)
29211 (uri (string-append "https://elpa.gnu.org/packages/xref-" 29212 (uri (string-append "https://elpa.gnu.org/packages/xref-"
29212 version ".tar")) 29213 version ".tar"))
29213 (sha256 29214 (sha256
29214 (base32 "0bw2cbxmjavzhmpd9gyl41d4c201p535jrfz3b7jb5zw12jdnppl")))) 29215 (base32 "13bsaxdxwn14plaam0hsrswngh3rm2k29v5ybjgjyjy4d5vwz78j"))))
29215 (build-system emacs-build-system) 29216 (build-system emacs-build-system)
29216 (home-page "http://elpa.gnu.org/packages/xref.html") 29217 (home-page "http://elpa.gnu.org/packages/xref.html")
29217 (synopsis "Cross-referencing commands") 29218 (synopsis "Cross-referencing commands")
@@ -29499,7 +29500,7 @@ shorter than usual, using mostly unprefixed keys.")
29499 `(("emacs-yaml-mode" ,emacs-yaml-mode))) 29500 `(("emacs-yaml-mode" ,emacs-yaml-mode)))
29500 (home-page "https://github.com/tom-tan/cwl-mode") 29501 (home-page "https://github.com/tom-tan/cwl-mode")
29501 (synopsis "Emacs mode for @acronym{CWL, Common Workflow Language} files") 29502 (synopsis "Emacs mode for @acronym{CWL, Common Workflow Language} files")
29502 (description "This packages provides a major mode for editing 29503 (description "This package provides a major mode for editing
29503@acronym{CWL, Common Workflow Language} files.") 29504@acronym{CWL, Common Workflow Language} files.")
29504 (license license:gpl3+))) 29505 (license license:gpl3+)))
29505 29506
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 61748d09e66..734f3dfaa3a 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -183,15 +183,13 @@
183 (lambda* (#:key outputs target #:allow-other-keys) 183 (lambda* (#:key outputs target #:allow-other-keys)
184 (let* ((libexec (string-append (assoc-ref outputs "out") 184 (let* ((libexec (string-append (assoc-ref outputs "out")
185 "/libexec")) 185 "/libexec"))
186 ;; each of these find-files should return one file 186 ;; each of these ought to only match a single file,
187 (pdmp (find-files libexec "^emacs\\.pdmp$")) 187 ;; but even if not (find-files) sorts by string<,
188 (pdmp-real (find-files libexec 188 ;; so the Nth element in one maps to the Nth element of
189 "^\\.emacs\\.pdmp-real$"))) 189 ;; the other
190 (for-each (lambda (wrapper real) 190 (pdmp (find-files libexec "\\.pdmp$"))
191 (delete-file wrapper) 191 (pdmp-real (find-files libexec "\\.pdmp-real$")))
192 (rename-file real wrapper)) 192 (for-each rename-file pdmp-real pdmp))))
193 pdmp pdmp-real))
194 #t))
195 (add-after 'glib-or-gtk-wrap 'strip-double-wrap 193 (add-after 'glib-or-gtk-wrap 'strip-double-wrap
196 (lambda* (#:key outputs #:allow-other-keys) 194 (lambda* (#:key outputs #:allow-other-keys)
197 ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped 195 ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 3489b8eddbd..407e9bec535 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1752,7 +1752,7 @@ This is a part of the TiLP project.")
1752(define-public mame 1752(define-public mame
1753 (package 1753 (package
1754 (name "mame") 1754 (name "mame")
1755 (version "0.236") 1755 (version "0.237")
1756 (source 1756 (source
1757 (origin 1757 (origin
1758 (method git-fetch) 1758 (method git-fetch)
@@ -1761,7 +1761,7 @@ This is a part of the TiLP project.")
1761 (commit (apply string-append "mame" (string-split version #\.))))) 1761 (commit (apply string-append "mame" (string-split version #\.)))))
1762 (file-name (git-file-name name version)) 1762 (file-name (git-file-name name version))
1763 (sha256 1763 (sha256
1764 (base32 "0pxvvdirbwakl5cy7lp0zib6z176ckxx8c3mazsd7q1ddxxd3l8x")) 1764 (base32 "0syj7l262s2ac70dfg47pakd6fk8x3p3sasixmcwdmvnzkiqvmj4"))
1765 (modules '((guix build utils))) 1765 (modules '((guix build utils)))
1766 (snippet 1766 (snippet
1767 ;; Remove bundled libraries. 1767 ;; Remove bundled libraries.
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c698299b132..1cce0149a6d 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -995,7 +995,7 @@ Emacs).")
995 ("python" ,python-wrapper) 995 ("python" ,python-wrapper)
996 ("wxwidgets" ,wxwidgets) 996 ("wxwidgets" ,wxwidgets)
997 ("wxpython" ,python-wxpython))) 997 ("wxpython" ,python-wxpython)))
998 (home-page "https://kicad-pcb.org/") 998 (home-page "https://www.kicad.org/")
999 (synopsis "Electronics Design Automation Suite") 999 (synopsis "Electronics Design Automation Suite")
1000 (description "Kicad is a program for the formation of printed circuit 1000 (description "Kicad is a program for the formation of printed circuit
1001boards and electrical circuits. The software has a number of programs that 1001boards and electrical circuits. The software has a number of programs that
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 2304482b330..7f88c34671c 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -88,7 +88,7 @@
88(define-public autofs 88(define-public autofs
89 (package 89 (package
90 (name "autofs") 90 (name "autofs")
91 (version "5.1.7") 91 (version "5.1.8")
92 (source 92 (source
93 (origin 93 (origin
94 (method url-fetch) 94 (method url-fetch)
@@ -96,7 +96,7 @@
96 "v" (version-major version) "/" 96 "v" (version-major version) "/"
97 "autofs-" version ".tar.xz")) 97 "autofs-" version ".tar.xz"))
98 (sha256 98 (sha256
99 (base32 "1myfz6a3wj2c4j9h5g44zj796fdi82jhp1s92w2hg6xp2632csx3")))) 99 (base32 "1zf0fgf6kr9amxq5amlgsp1v13sizwl3wvx2xl7b4r2nhmci0gdk"))))
100 (build-system gnu-build-system) 100 (build-system gnu-build-system)
101 (arguments 101 (arguments
102 `(#:configure-flags 102 `(#:configure-flags
@@ -118,8 +118,7 @@
118 (lambda _ 118 (lambda _
119 (substitute* "configure" 119 (substitute* "configure"
120 (("^searchpath=\".*\"") 120 (("^searchpath=\".*\"")
121 "searchpath=\"$PATH\"")) 121 "searchpath=\"$PATH\""))))
122 #t))
123 (add-before 'configure 'fix-rpath 122 (add-before 'configure 'fix-rpath
124 (lambda* (#:key outputs #:allow-other-keys) 123 (lambda* (#:key outputs #:allow-other-keys)
125 (let ((out (assoc-ref outputs "out"))) 124 (let ((out (assoc-ref outputs "out")))
@@ -132,8 +131,7 @@
132 (lambda _ 131 (lambda _
133 (substitute* "modules/Makefile" 132 (substitute* "modules/Makefile"
134 (("ln -fs lookup_yp.so" match) 133 (("ln -fs lookup_yp.so" match)
135 (string-append "# " match))) 134 (string-append "# " match))))))))
136 #t)))))
137 (native-inputs 135 (native-inputs
138 `(("bison" ,bison) 136 `(("bison" ,bison)
139 ("flex" ,flex) 137 ("flex" ,flex)
@@ -416,8 +414,8 @@ from a mounted file system.")
416 (license license:gpl2+))) 414 (license license:gpl2+)))
417 415
418(define-public bcachefs-tools 416(define-public bcachefs-tools
419 (let ((commit "37850436dd7dfbe67738749c4d4a2506ffff1ec3") 417 (let ((commit "f9f57789de567726f7cfa46bd13df4b0815d137a")
420 (revision "11")) 418 (revision "12"))
421 (package 419 (package
422 (name "bcachefs-tools") 420 (name "bcachefs-tools")
423 (version (git-version "0.1" revision commit)) 421 (version (git-version "0.1" revision commit))
@@ -429,7 +427,7 @@ from a mounted file system.")
429 (commit commit))) 427 (commit commit)))
430 (file-name (git-file-name name version)) 428 (file-name (git-file-name name version))
431 (sha256 429 (sha256
432 (base32 "040vgxrimahmfs9rhlggfwg0bzl7h9j2ksx3563rh63asjwlhnhi")))) 430 (base32 "13442qpmv7hywkpbnbwlg2sfhlfh16qxry1xwlv35vch2qnzlhrq"))))
433 (build-system gnu-build-system) 431 (build-system gnu-build-system)
434 (arguments 432 (arguments
435 `(#:make-flags 433 `(#:make-flags
@@ -509,7 +507,17 @@ performance and other characteristics.")
509 (substitute-keyword-arguments (package-arguments bcachefs-tools) 507 (substitute-keyword-arguments (package-arguments bcachefs-tools)
510 ((#:make-flags make-flags) 508 ((#:make-flags make-flags)
511 `(append ,make-flags 509 `(append ,make-flags
512 (list "LDFLAGS=-static"))))) 510 (list "LDFLAGS=-static")))
511 ((#:phases phases)
512 `(modify-phases ,phases
513 (add-after 'unpack 'skip-shared-library
514 (lambda _
515 (substitute* "Makefile"
516 ;; Building the shared library with ‘-static’ obviously fails…
517 (("^((all|install):.*)\\blib\\b(.*)" _ prefix suffix)
518 (string-append prefix suffix "\n"))
519 ;; …as does installing a now non-existent file.
520 ((".*\\$\\(INSTALL\\).* lib.*") ""))))))))
513 (inputs 521 (inputs
514 `(("eudev:static" ,eudev "static") 522 `(("eudev:static" ,eudev "static")
515 ("libscrypt:static" ,libscrypt "static") 523 ("libscrypt:static" ,libscrypt "static")
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 09b6646787d..6cda53dc940 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -116,7 +116,7 @@
116(define-public bitcoin-core-0.21 116(define-public bitcoin-core-0.21
117 (package 117 (package
118 (name "bitcoin-core") 118 (name "bitcoin-core")
119 (version "0.21.1") 119 (version "0.21.2")
120 (source (origin 120 (source (origin
121 (method url-fetch) 121 (method url-fetch)
122 (uri 122 (uri
@@ -124,7 +124,7 @@
124 version "/bitcoin-" version ".tar.gz")) 124 version "/bitcoin-" version ".tar.gz"))
125 (sha256 125 (sha256
126 (base32 126 (base32
127 "1q51nqv64lhng5wh1cqb01jar7iswpnyyb1i7xslbkr0j9227zya")))) 127 "17nvir1yc6mf4wr1fn4xsabw49cd5p9vig8wj77vv4anzi8zfij1"))))
128 (build-system gnu-build-system) 128 (build-system gnu-build-system)
129 (native-inputs 129 (native-inputs
130 `(("autoconf" ,autoconf) 130 `(("autoconf" ,autoconf)
@@ -1778,7 +1778,17 @@ editing on the Web.")
1778 (base32 "0lf69nna0aahwpgd9m9yjzbv2fbfn081djfznssa84f0n7y1xx4z")))) 1778 (base32 "0lf69nna0aahwpgd9m9yjzbv2fbfn081djfznssa84f0n7y1xx4z"))))
1779 (build-system gnu-build-system) 1779 (build-system gnu-build-system)
1780 (arguments 1780 (arguments
1781 `(;; Parallel build fails with: 1781 `(#:phases
1782 (modify-phases %standard-phases
1783 (add-after 'unpack 'link-math-library
1784 (lambda _
1785 (substitute* "src/Makefile.am"
1786 (("ta_common/libta_common.la")
1787 "ta_common/libta_common.la -lm"))
1788 (substitute* "src/Makefile.in"
1789 (("\\$\\(libta_lib_la_LDFLAGS\\) \\$\\(LDFLAGS\\) -o \\$@")
1790 "$(libta_lib_la_LDFLAGS) $(LDFLAGS) -lm -o $@")))))
1791 ;; Parallel build fails with:
1782 ;; mv -f .deps/gen_code-gen_code.Tpo .deps/gen_code-gen_code.Po 1792 ;; mv -f .deps/gen_code-gen_code.Tpo .deps/gen_code-gen_code.Po
1783 ;; mv: cannot stat '.deps/gen_code-gen_code.Tpo': No such file or directory 1793 ;; mv: cannot stat '.deps/gen_code-gen_code.Tpo': No such file or directory
1784 ;; Makefile:254: recipe for target 'gen_code-gen_code.o' failed 1794 ;; Makefile:254: recipe for target 'gen_code-gen_code.o' failed
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index ebcb89923ce..e9083bc1c40 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -465,7 +465,7 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.")
465(define* (make-arm-trusted-firmware platform #:optional (arch "aarch64")) 465(define* (make-arm-trusted-firmware platform #:optional (arch "aarch64"))
466 (package 466 (package
467 (name (string-append "arm-trusted-firmware-" platform)) 467 (name (string-append "arm-trusted-firmware-" platform))
468 (version "2.4") 468 (version "2.5")
469 (source 469 (source
470 (origin 470 (origin
471 (method git-fetch) 471 (method git-fetch)
@@ -476,7 +476,7 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.")
476 (file-name (git-file-name "arm-trusted-firmware" version)) 476 (file-name (git-file-name "arm-trusted-firmware" version))
477 (sha256 477 (sha256
478 (base32 478 (base32
479 "12k0n79j156bdzqws18kpbli04kn00nh6dy42pjv6gakqrkx9px3")))) 479 "0w3blkqgmyb5bahlp04hmh8abrflbzy0qg83kmj1x9nv4mw66f3b"))))
480 (build-system gnu-build-system) 480 (build-system gnu-build-system)
481 (arguments 481 (arguments
482 `(#:phases 482 `(#:phases
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index f4379e614a6..bd65d01aa11 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -8,6 +8,7 @@
8;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> 8;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
9;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> 9;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
10;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net> 10;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
11;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
11;;; 12;;;
12;;; This file is part of GNU Guix. 13;;; This file is part of GNU Guix.
13;;; 14;;;
@@ -50,7 +51,8 @@
50 #:use-module (gnu packages libusb) 51 #:use-module (gnu packages libusb)
51 #:use-module (gnu packages libftdi) 52 #:use-module (gnu packages libftdi)
52 #:use-module (gnu packages pciutils) 53 #:use-module (gnu packages pciutils)
53 #:use-module (gnu packages qt)) 54 #:use-module (gnu packages qt)
55 #:use-module (gnu packages tls))
54 56
55(define-public flashrom 57(define-public flashrom
56 (package 58 (package
@@ -196,7 +198,7 @@ ISP.")
196(define-public dfu-util 198(define-public dfu-util
197 (package 199 (package
198 (name "dfu-util") 200 (name "dfu-util")
199 (version "0.10") 201 (version "0.11")
200 (source (origin 202 (source (origin
201 (method url-fetch) 203 (method url-fetch)
202 (uri (string-append 204 (uri (string-append
@@ -204,7 +206,7 @@ ISP.")
204 version ".tar.gz")) 206 version ".tar.gz"))
205 (sha256 207 (sha256
206 (base32 208 (base32
207 "0hlvc47ccf5hry13saqhc1j5cdq5jyjv4i05kj0mdh3rzj6wagd0")))) 209 "17piiyp08pccqmbhnswv957lkypmmm92kps79hypxvw23ai3pddl"))))
208 (build-system gnu-build-system) 210 (build-system gnu-build-system)
209 (inputs 211 (inputs
210 `(("libusb" ,libusb))) 212 `(("libusb" ,libusb)))
@@ -526,3 +528,55 @@ Unifinished Extensible Firmware Interface (UEFI) images.")
526manipulating EPROM load files. It reads and writes numerous EPROM file 528manipulating EPROM load files. It reads and writes numerous EPROM file
527formats, and can perform many different manipulations.") 529formats, and can perform many different manipulations.")
528 (license license:gpl3+))) 530 (license license:gpl3+)))
531
532(define-public uuu
533 (package
534 (name "uuu")
535 (version "1.4.165")
536 (source
537 (origin
538 (method git-fetch)
539 (uri (git-reference
540 (url "https://github.com/NXPmicro/mfgtools")
541 (commit (string-append "uuu_" version))))
542 (file-name (git-file-name name version))
543 (sha256
544 (base32
545 "0k309lp27d4k6x4qq0badbk8i47xsc6f3fffz73650iyfs4hcniw"))))
546 (arguments
547 `(#:tests? #f ; no tests
548 #:modules ((guix build utils)
549 (ice-9 popen)
550 (srfi srfi-26)
551 (guix build cmake-build-system))
552 #:phases
553 (modify-phases %standard-phases
554 (add-before 'configure 'fix-version-gen
555 (lambda _
556 (call-with-output-file ".tarball-version"
557 (lambda (port)
558 (display ,version port)))))
559 (add-after 'install 'install-udev-rules
560 (lambda* (#:key outputs #:allow-other-keys)
561 (let* ((out (assoc-ref outputs "out"))
562 (uuu (string-append out "/bin/uuu"))
563 (pipe (open-pipe* OPEN_READ uuu "-udev"))
564 (rules
565 (string-append out "/lib/udev/rules.d/70-uuu.rules")))
566 (mkdir-p (string-append out "/lib/udev/rules.d"))
567 (call-with-output-file rules
568 (cut dump-port pipe <>))))))))
569 (build-system cmake-build-system)
570 (native-inputs
571 `(("pkg-config" ,pkg-config)))
572 (inputs
573 `(("libusb" ,libusb)
574 ("bzip2" ,bzip2)
575 ("zlib" ,zlib)
576 ("libzip" ,libzip)
577 ("openssl" ,openssl)))
578 (home-page "https://github.com/NXPmicro/mfgtools")
579 (synopsis "Freescale/NXP I.MX chip image deploy tools")
580 (description "@code{uuu} is a command line tool, evolved out of MFGTools.
581It can be used to upload images to I.MX SoC's using at least their boot ROM.")
582 (license license:bsd-3)))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index dc7add86673..793b86ced84 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -743,7 +743,7 @@ for use at smaller text sizes")))
743(define-public font-gnu-unifont 743(define-public font-gnu-unifont
744 (package 744 (package
745 (name "font-gnu-unifont") 745 (name "font-gnu-unifont")
746 (version "13.0.06") 746 (version "14.0.01")
747 (source 747 (source
748 (origin 748 (origin
749 (method url-fetch) 749 (method url-fetch)
@@ -753,22 +753,21 @@ for use at smaller text sizes")))
753 (string-append "mirror://gnu/unifont/unifont-" 753 (string-append "mirror://gnu/unifont/unifont-"
754 version "/unifont-" version ".tar.gz"))) 754 version "/unifont-" version ".tar.gz")))
755 (sha256 755 (sha256
756 (base32 "09g91g0gv76sadslp70m5xwfk3jf8kh7rpk2pz3l2hpldnjggpk8")))) 756 (base32 "0wkdn8h20pprna5a3hbny0qk2mgksrbxs2y6ng6qarj6rkpdmlbs"))))
757 (build-system gnu-build-system) 757 (build-system gnu-build-system)
758 (outputs '("out" ; TrueType version 758 (outputs '("out" ; TrueType version
759 "pcf" ; PCF (bitmap) version 759 "pcf" ; PCF (bitmap) version
760 "psf" ; PSF (console) version 760 "psf" ; PSF (console) version
761 "bin")) ; Utilities to manipulate '.hex' format 761 "bin")) ; Utilities to manipulate '.hex' format
762 (arguments 762 (arguments
763 '(#:tests? #f ; no check target 763 `(#:tests? #f ; no check target
764 #:make-flags
765 (list (string-append "CC=" ,(cc-for-target)))
764 #:phases 766 #:phases
765 (modify-phases %standard-phases 767 (modify-phases %standard-phases
766 (replace 768 (delete 'configure)
767 'configure 769 (replace 'install
768 (lambda _ (setenv "CC" "gcc") #t)) 770 (lambda* (#:key make-flags outputs #:allow-other-keys)
769 (replace
770 'install
771 (lambda* (#:key outputs #:allow-other-keys)
772 (let* ((ttf (string-append (assoc-ref outputs "out") 771 (let* ((ttf (string-append (assoc-ref outputs "out")
773 "/share/fonts/truetype")) 772 "/share/fonts/truetype"))
774 (pcf (string-append (assoc-ref outputs "pcf") 773 (pcf (string-append (assoc-ref outputs "pcf")
@@ -776,18 +775,17 @@ for use at smaller text sizes")))
776 (psf (string-append (assoc-ref outputs "psf") 775 (psf (string-append (assoc-ref outputs "psf")
777 "/share/consolefonts")) 776 "/share/consolefonts"))
778 (bin (assoc-ref outputs "bin"))) 777 (bin (assoc-ref outputs "bin")))
779 (invoke "make" 778 (apply invoke "make" "install"
780 (string-append "PREFIX=" bin) 779 (string-append "PREFIX=" bin)
781 (string-append "TTFDEST=" ttf) 780 (string-append "TTFDEST=" ttf)
782 (string-append "PCFDEST=" pcf) 781 (string-append "PCFDEST=" pcf)
783 (string-append "CONSOLEDEST=" psf) 782 (string-append "CONSOLEDEST=" psf)
784 "install") 783 make-flags)
785 ;; Move Texinfo file to the right place. 784 ;; Move Texinfo file to the right place.
786 (mkdir (string-append bin "/share/info")) 785 (mkdir (string-append bin "/share/info"))
787 (invoke "gzip" "-9n" "doc/unifont.info") 786 (invoke "gzip" "-9n" "doc/unifont.info")
788 (install-file "doc/unifont.info.gz" 787 (install-file "doc/unifont.info.gz"
789 (string-append bin "/share/info")) 788 (string-append bin "/share/info"))))))))
790 #t))))))
791 (inputs 789 (inputs
792 `(("perl" ,perl))) ; for utilities 790 `(("perl" ,perl))) ; for utilities
793 (synopsis 791 (synopsis
@@ -845,7 +843,7 @@ visual language \"Material Design\".")
845(define-public font-borg-sans-mono 843(define-public font-borg-sans-mono
846 (package 844 (package
847 (name "font-borg-sans-mono") 845 (name "font-borg-sans-mono")
848 (version "0.3.2") 846 (version "0.3.3")
849 (source 847 (source
850 (origin 848 (origin
851 (method url-fetch) 849 (method url-fetch)
@@ -854,7 +852,7 @@ visual language \"Material Design\".")
854 "/releases/download/v" version "/borg-sans-mono.zip")) 852 "/releases/download/v" version "/borg-sans-mono.zip"))
855 (sha256 853 (sha256
856 (base32 854 (base32
857 "0q16gw3ry9hpgbl2636qq00ap59xyx15jf3gzvx2ybz3gja164c4")))) 855 "0xzi866ag9w4q114bn984yjfy72pmfs563v5yy1rkbqycphgwwyp"))))
858 (build-system font-build-system) 856 (build-system font-build-system)
859 (home-page "https://github.com/charje/borg-sans-mono") 857 (home-page "https://github.com/charje/borg-sans-mono")
860 (synopsis "The Borg Sans Mono font") 858 (synopsis "The Borg Sans Mono font")
@@ -1968,25 +1966,25 @@ in small sizes, the text looks crisper.")
1968(define-public font-juliamono 1966(define-public font-juliamono
1969 (package 1967 (package
1970 (name "font-juliamono") 1968 (name "font-juliamono")
1971 (version "0.031") 1969 (version "0.043")
1972 (source 1970 (source
1973 (origin 1971 (origin
1974 (method git-fetch) 1972 (method url-fetch)
1975 (uri (git-reference 1973 (uri (string-append
1976 (url "https://github.com/cormullion/juliamono") 1974 "https://github.com/cormullion/juliamono/releases/download/"
1977 (commit (string-append "v" version)))) 1975 "v" version "/JuliaMono-ttf.tar.gz"))
1978 (file-name (git-file-name name version))
1979 (sha256 1976 (sha256
1980 (base32 "0pcz2qaw0g0gak4plvhgg3m76h4gamffa373r52dzx0qwn1i1cf1")))) 1977 (base32
1978 "0vb7n9yqgasnxzps13ckklay5bla6b0i79pzmfqvjms1r37079gh"))))
1981 (build-system font-build-system) 1979 (build-system font-build-system)
1982 (arguments 1980 (arguments
1983 `(#:phases 1981 `(#:phases (modify-phases %standard-phases
1984 (modify-phases %standard-phases 1982 (replace 'unpack
1985 (add-after 'unpack 'delete-website-folder 1983 (lambda* (#:key source #:allow-other-keys)
1986 ;; This folder contains other unrelated fonts. 1984 (mkdir "source")
1987 (lambda _ 1985 (chdir "source")
1988 (delete-file-recursively "website") 1986 (invoke "tar" "xzf" source))))))
1989 #t))))) 1987 (native-inputs `(("tar" ,tar)))
1990 (home-page "https://github.com/cormullion/juliamono") 1988 (home-page "https://github.com/cormullion/juliamono")
1991 (synopsis "Monospaced font for programming") 1989 (synopsis "Monospaced font for programming")
1992 (description 1990 (description
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 053dc18a25b..264450650d1 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -846,7 +846,7 @@ maintain the Noto Fonts project.")
846(define-public fcft 846(define-public fcft
847 (package 847 (package
848 (name "fcft") 848 (name "fcft")
849 (version "2.4.5") 849 (version "2.4.6")
850 (home-page "https://codeberg.org/dnkl/fcft") 850 (home-page "https://codeberg.org/dnkl/fcft")
851 (source (origin 851 (source (origin
852 (method git-fetch) 852 (method git-fetch)
@@ -854,7 +854,7 @@ maintain the Noto Fonts project.")
854 (file-name (git-file-name name version)) 854 (file-name (git-file-name name version))
855 (sha256 855 (sha256
856 (base32 856 (base32
857 "0z4bqap88pydkgcxrsvm3fmcyhi9x7z8knliarvdcvqlk7qnyzfh")))) 857 "0jh05wzrif7z1xf9jzs8bgf49lpj5zs55agj414bmmwdddk7my7j"))))
858 (build-system meson-build-system) 858 (build-system meson-build-system)
859 (native-inputs 859 (native-inputs
860 `(("check" ,check) 860 `(("check" ,check)
@@ -888,7 +888,7 @@ generated list of fallback fonts are checked.")
888(define-public fontmanager 888(define-public fontmanager
889 (package 889 (package
890 (name "fontmanager") 890 (name "fontmanager")
891 (version "0.8.4") 891 (version "0.8.7")
892 (source 892 (source
893 (origin 893 (origin
894 (method git-fetch) 894 (method git-fetch)
@@ -897,8 +897,7 @@ generated list of fallback fonts are checked.")
897 (commit version))) 897 (commit version)))
898 (file-name (git-file-name name version)) 898 (file-name (git-file-name name version))
899 (sha256 899 (sha256
900 (base32 900 (base32 "0nyda2a6vbzyz4sn9mmrr8bkifzxmmjp7x9a3c4s6n925ccy79cn"))))
901 "09rv0srpj8ann2n1zpv1frlpxz0x10d2y21c5lys7pmfngljlxi9"))))
902 (build-system meson-build-system) 901 (build-system meson-build-system)
903 (arguments 902 (arguments
904 `(#:glib-or-gtk? #t 903 `(#:glib-or-gtk? #t
@@ -935,7 +934,7 @@ work well with other GTK+ desktop environments.")
935(define-public fntsample 934(define-public fntsample
936 (package 935 (package
937 (name "fntsample") 936 (name "fntsample")
938 (version "5.3") 937 (version "5.4")
939 (source (origin 938 (source (origin
940 (method git-fetch) 939 (method git-fetch)
941 (uri (git-reference 940 (uri (git-reference
@@ -944,7 +943,7 @@ work well with other GTK+ desktop environments.")
944 (file-name (git-file-name name version)) 943 (file-name (git-file-name name version))
945 (sha256 944 (sha256
946 (base32 945 (base32
947 "02rx3gp7k472304vhjwb129nw10a29s4nvgs7i2m6bpjhlk2xgs5")))) 946 "0pcqqdriv6hq64zrqd9vhdd9p2vhimjnajcxdz10qnqgrkmm751v"))))
948 (build-system cmake-build-system) 947 (build-system cmake-build-system)
949 (arguments 948 (arguments
950 `(#:tests? #f ; There are no tests. 949 `(#:tests? #f ; There are no tests.
@@ -965,8 +964,7 @@ work well with other GTK+ desktop environments.")
965 "/lib/perl5/site_perl/" 964 "/lib/perl5/site_perl/"
966 ,(package-version perl)))) 965 ,(package-version perl))))
967 (wrap-program (string-append out "/bin/pdfoutline") 966 (wrap-program (string-append out "/bin/pdfoutline")
968 `("PERL5LIB" ":" prefix (,perllib))) 967 `("PERL5LIB" ":" prefix (,perllib)))))))))
969 #t))))))
970 (native-inputs 968 (native-inputs
971 `(("pkg-config" ,pkg-config) 969 `(("pkg-config" ,pkg-config)
972 ("gettext" ,gettext-minimal))) 970 ("gettext" ,gettext-minimal)))
@@ -979,13 +977,15 @@ work well with other GTK+ desktop environments.")
979 ("perl-pdf-api2" ,perl-pdf-api2) 977 ("perl-pdf-api2" ,perl-pdf-api2)
980 ("perl-libintl-perl" ,perl-libintl-perl) 978 ("perl-libintl-perl" ,perl-libintl-perl)
981 ("unicode-blocks" 979 ("unicode-blocks"
982 ,(origin 980 ,(let ((version "14.0.0"))
983 (method url-fetch) 981 (origin
984 (uri "https://unicode.org/Public/UNIDATA/Blocks.txt") 982 (method url-fetch)
985 (file-name "unicode-blocks.txt") 983 (uri (string-append "https://unicode.org/Public/"
986 (sha256 984 version "/ucd/Blocks.txt"))
987 (base32 985 (file-name (string-append "unicode-blocks-" version ".txt"))
988 "1xs8fnhh48gs41wg004r7m4r2azh9khmyjjlnvyzy9c6zrd212x2")))))) 986 (sha256
987 (base32
988 "05vzgrvfp35mgxjgkm4wnxjjgzva8n6545i9jxd4pczpvvfp122r")))))))
989 (home-page "https://github.com/eugmes/fntsample") 989 (home-page "https://github.com/eugmes/fntsample")
990 (synopsis "PDF and PostScript font samples generator") 990 (synopsis "PDF and PostScript font samples generator")
991 (description "This package provides a tool that can be used to make font 991 (description "This package provides a tool that can be used to make font
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 4e1fa2e8635..3c61e0b52c6 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -26,6 +26,7 @@
26;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> 26;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
27;;; Copyright © 2021 Robby Zambito <contact@robbyzambito.me> 27;;; Copyright © 2021 Robby Zambito <contact@robbyzambito.me>
28;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> 28;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
29;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
29;;; 30;;;
30;;; This file is part of GNU Guix. 31;;; This file is part of GNU Guix.
31;;; 32;;;
@@ -2055,17 +2056,14 @@ Python, that binds to the C library @code{uchardet} to increase performance.")
2055(define-public udiskie 2056(define-public udiskie
2056 (package 2057 (package
2057 (name "udiskie") 2058 (name "udiskie")
2058 (version "2.1.0") 2059 (version "2.3.3")
2059 (source 2060 (source
2060 (origin 2061 (origin
2061 (method url-fetch) 2062 (method url-fetch)
2062 (uri (pypi-uri "udiskie" version)) 2063 (uri (pypi-uri "udiskie" version))
2063 (sha256 2064 (sha256
2064 (base32 2065 (base32
2065 "0smib8vbs9q37n7ynhzyw97q16fgdkcdw7fw69lci0xvyq00v1dz")) 2066 "0sagdmsc5km32h3jvgj843p8bicrrgfz26qhl04ibxmas6725zr0"))))
2066 ;; Remove support for the libappindicator library of the
2067 ;; Unity desktop environment which is not in Guix.
2068 (patches (search-patches "udiskie-no-appindicator.patch"))))
2069 (build-system python-build-system) 2067 (build-system python-build-system)
2070 (native-inputs 2068 (native-inputs
2071 `(("asciidoc" ,asciidoc) 2069 `(("asciidoc" ,asciidoc)
@@ -2074,6 +2072,7 @@ Python, that binds to the C library @code{uchardet} to increase performance.")
2074 (inputs 2072 (inputs
2075 `(("gobject-introspection" ,gobject-introspection) 2073 `(("gobject-introspection" ,gobject-introspection)
2076 ("gtk+" ,gtk+) 2074 ("gtk+" ,gtk+)
2075 ("libappindicator" ,libappindicator)
2077 ("libnotify" ,libnotify) 2076 ("libnotify" ,libnotify)
2078 ("udisks" ,udisks))) 2077 ("udisks" ,udisks)))
2079 (propagated-inputs 2078 (propagated-inputs
@@ -2350,16 +2349,15 @@ fallback to generic Systray support if none of those are available.")
2350(define-public xdg-desktop-portal 2349(define-public xdg-desktop-portal
2351 (package 2350 (package
2352 (name "xdg-desktop-portal") 2351 (name "xdg-desktop-portal")
2353 (version "1.8.1") 2352 (version "1.10.1")
2354 (source (origin 2353 (source (origin
2355 (method git-fetch) 2354 (method url-fetch)
2356 (uri (git-reference 2355 (uri (string-append
2357 (url "https://github.com/flatpak/xdg-desktop-portal") 2356 "https://github.com/flatpak/xdg-desktop-portal/releases/download/"
2358 (commit version))) 2357 version "/xdg-desktop-portal-" version ".tar.xz"))
2359 (file-name (git-file-name name version))
2360 (sha256 2358 (sha256
2361 (base32 2359 (base32
2362 "0pq0kmvzk56my396vh97pzw4wizwmlmzvv2kr2xv047x3044mr5n")))) 2360 "199lqr2plsy9qqnxx5a381ml8ygcbz4nkjla5pvljjcrwzlqsygd"))))
2363 (build-system gnu-build-system) 2361 (build-system gnu-build-system)
2364 (native-inputs 2362 (native-inputs
2365 `(("pkg-config" ,pkg-config) 2363 `(("pkg-config" ,pkg-config)
@@ -2410,16 +2408,15 @@ and others.")
2410(define-public xdg-desktop-portal-gtk 2408(define-public xdg-desktop-portal-gtk
2411 (package 2409 (package
2412 (name "xdg-desktop-portal-gtk") 2410 (name "xdg-desktop-portal-gtk")
2413 (version "1.7.1") 2411 (version "1.10.0")
2414 (source (origin 2412 (source (origin
2415 (method git-fetch) 2413 (method url-fetch)
2416 (uri (git-reference 2414 (uri (string-append
2417 (url "https://github.com/flatpak/xdg-desktop-portal-gtk") 2415 "https://github.com/flatpak/xdg-desktop-portal-gtk/releases/download/"
2418 (commit version))) 2416 version "/xdg-desktop-portal-gtk-" version ".tar.xz"))
2419 (file-name (git-file-name name version))
2420 (sha256 2417 (sha256
2421 (base32 2418 (base32
2422 "183iha9dxmvprn99ymgz17jx1lyn1fj5jyj6ghxl716zn9mxmird")))) 2419 "0nlbnd6qvs92fanrmmn123vy0y2ml0v3ndxyk5x0cpfbnmxpa2f8"))))
2423 (build-system glib-or-gtk-build-system) 2420 (build-system glib-or-gtk-build-system)
2424 (arguments 2421 (arguments
2425 `(#:phases 2422 `(#:phases
@@ -2430,13 +2427,21 @@ and others.")
2430 (for-each (lambda (po) 2427 (for-each (lambda (po)
2431 (chmod po #o666)) 2428 (chmod po #o666))
2432 (find-files "po" "\\.po$")) 2429 (find-files "po" "\\.po$"))
2433 #t))))) 2430 #t)))
2431 ;; Enable Gnome portal backends
2432 #:configure-flags
2433 (list
2434 "--enable-appchooser"
2435 "--enable-wallpaper"
2436 "--enable-screenshot"
2437 "--enable-screencast"
2438 "--enable-background"
2439 "--enable-settings")))
2434 (native-inputs 2440 (native-inputs
2435 `(("pkg-config" ,pkg-config) 2441 `(("pkg-config" ,pkg-config)
2436 ("autoconf" ,autoconf) 2442 ("autoconf" ,autoconf)
2437 ("automake" ,automake) 2443 ("automake" ,automake)
2438 ("libtool" ,libtool) 2444 ("libtool" ,libtool)
2439 ("xdg-desktop-portal" ,xdg-desktop-portal)
2440 ("glib:bin" ,glib "bin") 2445 ("glib:bin" ,glib "bin")
2441 ("which" ,which) 2446 ("which" ,which)
2442 ("gettext" ,gettext-minimal))) 2447 ("gettext" ,gettext-minimal)))
@@ -2446,10 +2451,8 @@ and others.")
2446 ("fontconfig" ,fontconfig) 2451 ("fontconfig" ,fontconfig)
2447 ("gnome-desktop" ,gnome-desktop) 2452 ("gnome-desktop" ,gnome-desktop)
2448 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) 2453 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
2449 (native-search-paths 2454 (propagated-inputs
2450 (list (search-path-specification 2455 `(("xdg-desktop-portal" ,xdg-desktop-portal)))
2451 (variable "XDG_DESKTOP_PORTAL_DIR")
2452 (files '("share/xdg-desktop-portal/portals")))))
2453 (home-page "https://github.com/flatpak/xdg-desktop-portal-gtk") 2456 (home-page "https://github.com/flatpak/xdg-desktop-portal-gtk")
2454 (synopsis "GTK implementation of xdg-desktop-portal") 2457 (synopsis "GTK implementation of xdg-desktop-portal")
2455 (description 2458 (description
@@ -2499,7 +2502,7 @@ compositors.")
2499(define-public waypipe 2502(define-public waypipe
2500 (package 2503 (package
2501 (name "waypipe") 2504 (name "waypipe")
2502 (version "0.8.0") 2505 (version "0.8.1")
2503 (source 2506 (source
2504 (origin 2507 (origin
2505 (method git-fetch) 2508 (method git-fetch)
@@ -2508,22 +2511,13 @@ compositors.")
2508 (commit (string-append "v" version)))) 2511 (commit (string-append "v" version))))
2509 (file-name (git-file-name name version)) 2512 (file-name (git-file-name name version))
2510 (sha256 2513 (sha256
2511 (base32 "1qa47ljfvb1vv3h647xwn1j5j8gfmcmdfaz4j8ygnkvj36y87vnz")))) 2514 (base32 "1v08dv3dfz420v51ahz7qgv3429073kmgrf8f66s4c3jlpch2pa1"))))
2512 (build-system meson-build-system) 2515 (build-system meson-build-system)
2513 (arguments
2514 `(#:phases
2515 (modify-phases %standard-phases
2516 (add-after 'unpack 'fix-sleep-path
2517 (lambda* (#:key inputs #:allow-other-keys)
2518 (let ((coreutils (assoc-ref inputs "coreutils")))
2519 (substitute* "./test/startup_failure.py"
2520 (("sleep") (string-append coreutils "/bin/sleep")))))))))
2521 (native-inputs 2516 (native-inputs
2522 `(("pkg-config" ,pkg-config) 2517 `(("pkg-config" ,pkg-config)
2523 ("scdoc" ,scdoc) 2518 ("scdoc" ,scdoc)
2524 ;; For tests 2519 ;; For tests
2525 ("python" ,python) 2520 ("python" ,python)))
2526 ("coreutils" ,coreutils)))
2527 (home-page "https://gitlab.freedesktop.org/mstoeckl/waypipe") 2521 (home-page "https://gitlab.freedesktop.org/mstoeckl/waypipe")
2528 (synopsis "Proxy for Wayland protocol applications") 2522 (synopsis "Proxy for Wayland protocol applications")
2529 (description 2523 (description
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 4e0f75e79c9..b74573ec110 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -866,7 +866,7 @@ package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
866(define-public allegro-4 866(define-public allegro-4
867 (package 867 (package
868 (name "allegro") 868 (name "allegro")
869 (version "4.4.3") 869 (version "4.4.3.1")
870 (source (origin 870 (source (origin
871 (method url-fetch) 871 (method url-fetch)
872 (uri (string-append "https://github.com/liballeg/allegro5/" 872 (uri (string-append "https://github.com/liballeg/allegro5/"
@@ -874,7 +874,7 @@ package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
874 version ".tar.gz")) 874 version ".tar.gz"))
875 (sha256 875 (sha256
876 (base32 876 (base32
877 "1d5ws3ihvpa6f4qc6a6drq31pajw6bblxifr4kcxzqj9br1nw28y")))) 877 "1m6lz35nk07dli26kkwz3wa50jsrxs1kb6w1nj14a911l34xn6gc"))))
878 (build-system cmake-build-system) 878 (build-system cmake-build-system)
879 (arguments 879 (arguments
880 '(#:phases 880 '(#:phases
@@ -886,8 +886,7 @@ package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
886 ;; unconditionally clobbered in the build script. 886 ;; unconditionally clobbered in the build script.
887 (substitute* '("CMakeLists.txt") 887 (substitute* '("CMakeLists.txt")
888 (("ADDON_LINKAGE STATIC") 888 (("ADDON_LINKAGE STATIC")
889 "ADDON_LINKAGE SHARED")) 889 "ADDON_LINKAGE SHARED")))))))
890 #t)))))
891 (inputs 890 (inputs
892 `(("glu" ,glu) 891 `(("glu" ,glu)
893 ("libpng" ,libpng) 892 ("libpng" ,libpng)
@@ -1184,7 +1183,7 @@ to create fully featured games and multimedia programs in the python language.")
1184 1183
1185(define-public python-pygame-sdl2 1184(define-public python-pygame-sdl2
1186 (let ((real-version "2.1.0") 1185 (let ((real-version "2.1.0")
1187 (renpy-version "7.4.8")) 1186 (renpy-version "7.4.10"))
1188 (package 1187 (package
1189 (inherit python-pygame) 1188 (inherit python-pygame)
1190 (name "python-pygame-sdl2") 1189 (name "python-pygame-sdl2")
@@ -1194,7 +1193,7 @@ to create fully featured games and multimedia programs in the python language.")
1194 (method url-fetch) 1193 (method url-fetch)
1195 (uri (string-append "https://www.renpy.org/dl/" renpy-version 1194 (uri (string-append "https://www.renpy.org/dl/" renpy-version
1196 "/pygame_sdl2-" version ".tar.gz")) 1195 "/pygame_sdl2-" version ".tar.gz"))
1197 (sha256 (base32 "1yyqcg7khac17jif86vi2d4j9l8x2vfg4h5pasrwwsy0g8386zsm")) 1196 (sha256 (base32 "0m0asrr722a4v24fm8199b0c53igagylay8bn9bz9rmc0r4v8si4"))
1198 (modules '((guix build utils))) 1197 (modules '((guix build utils)))
1199 (snippet 1198 (snippet
1200 '(begin 1199 '(begin
@@ -1240,21 +1239,19 @@ developed mainly for Ren'py.")
1240(define-public python2-renpy 1239(define-public python2-renpy
1241 (package 1240 (package
1242 (name "python2-renpy") 1241 (name "python2-renpy")
1243 (version "7.4.8") 1242 (version "7.4.10")
1244 (source 1243 (source
1245 (origin 1244 (origin
1246 (method url-fetch) 1245 (method url-fetch)
1247 (uri (string-append "https://www.renpy.org/dl/" version 1246 (uri (string-append "https://www.renpy.org/dl/" version
1248 "/renpy-" version "-source.tar.bz2")) 1247 "/renpy-" version "-source.tar.bz2"))
1249 (sha256 (base32 "1ml3gs87xxk1iflrg5ivffr4q8fi7d65l1cx462bvvpm1rs2sa8d")) 1248 (sha256 (base32 "1yngs2kh1l8micg28mcp9580qsvgq3aa8bkhv2xqfkg9qqrbr8y4"))
1250 (modules '((guix build utils))) 1249 (modules '((guix build utils)))
1251 (patches 1250 (patches
1252 (search-patches 1251 (search-patches
1253 "renpy-use-system-fribidi.patch")) 1252 "renpy-use-system-fribidi.patch"))
1254 (snippet 1253 (snippet
1255 '(with-directory-excursion "module" 1254 '(with-directory-excursion "module"
1256 ;; drop generated sources
1257 (delete-file-recursively "gen")
1258 ;; drop fribidi sources 1255 ;; drop fribidi sources
1259 (delete-file-recursively "fribidi-src") 1256 (delete-file-recursively "fribidi-src")
1260 #t)))) 1257 #t))))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index c913d99334c..34051b8fda7 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -4136,7 +4136,7 @@ falling, themeable graphics and sounds, and replays.")
4136(define-public wesnoth 4136(define-public wesnoth
4137 (package 4137 (package
4138 (name "wesnoth") 4138 (name "wesnoth")
4139 (version "1.14.17") 4139 (version "1.16.0")
4140 (source (origin 4140 (source (origin
4141 (method url-fetch) 4141 (method url-fetch)
4142 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-" 4142 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -4145,7 +4145,7 @@ falling, themeable graphics and sounds, and replays.")
4145 "wesnoth-" version ".tar.bz2")) 4145 "wesnoth-" version ".tar.bz2"))
4146 (sha256 4146 (sha256
4147 (base32 4147 (base32
4148 "1qc4ylhc4ab51milclzhflpmzw6bg35knwqaj3b157700jkcniin")))) 4148 "0qs102ws46z0cqyk3maxd1c4bywswlacbqkpmb51x9jd8c746vhz"))))
4149 (build-system cmake-build-system) 4149 (build-system cmake-build-system)
4150 (arguments 4150 (arguments
4151 `(#:tests? #f)) ;no check target 4151 `(#:tests? #f)) ;no check target
@@ -6397,18 +6397,17 @@ with the mouse isn’t always trivial.")
6397(define-public chroma 6397(define-public chroma
6398 (package 6398 (package
6399 (name "chroma") 6399 (name "chroma")
6400 (version "1.18") 6400 (version "1.19")
6401 (source (origin 6401 (source (origin
6402 (method url-fetch) 6402 (method url-fetch)
6403 (uri (string-append "http://level7.org.uk/chroma/download/chroma-" 6403 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
6404 version ".tar.bz2")) 6404 version ".tar.bz2"))
6405 (sha256 6405 (sha256
6406 (base32 6406 (base32
6407 "12bjisf5nlqinw8n4r223vld52p0p2mw3fca92vi175c46bycbzn")))) 6407 "19ybvv0dkql913xpgjgxyyy50s72vajc7hm83zsvy2lsq8lhg76q"))))
6408 (build-system gnu-build-system) 6408 (build-system gnu-build-system)
6409 (arguments 6409 (arguments
6410 `(#:tests? #f ; no tests included 6410 `(#:tests? #f)) ; no tests included
6411 #:configure-flags '("CFLAGS=-fgnu89-inline"))) ; fix inlines
6412 (inputs 6411 (inputs
6413 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf))) 6412 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
6414 ("freetype" ,freetype) 6413 ("freetype" ,freetype)
diff --git a/gnu/packages/genimage.scm b/gnu/packages/genimage.scm
index bd77e4dc338..fb994231dd9 100644
--- a/gnu/packages/genimage.scm
+++ b/gnu/packages/genimage.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org> 2;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
3;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com> 3;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com>
4;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -56,97 +57,37 @@
56 (patches (search-patches "genimage-signedness.patch")))) 57 (patches (search-patches "genimage-signedness.patch"))))
57 (build-system gnu-build-system) 58 (build-system gnu-build-system)
58 (arguments 59 (arguments
59 `(#:phases 60 `(#:modules
61 ((ice-9 match)
62 ,@%gnu-build-system-modules)
63 #:phases
60 (modify-phases %standard-phases 64 (modify-phases %standard-phases
61 (add-after 'unpack 'guixify 65 (add-after 'unpack 'guixify
62 (lambda* (#:key inputs #:allow-other-keys) 66 (lambda* (#:key inputs #:allow-other-keys)
63 ;; Note to maintainers: Check ".def =" lines in source. 67 (map (match-lambda
64 (substitute* "config.c" 68 ((input directory regexp)
65 (("\\.def = \"cpio\"") 69 (substitute* "config.c"
66 (string-append ".def = \"" 70 (((format #f "\\.def = \"(~a)\"" regexp) _ command)
67 (assoc-ref inputs "cpio") 71 (format #f ".def = \"~a/~a/~a\""
68 "/bin/cpio\"")) 72 (assoc-ref inputs input) directory command)))))
69 (("\\.def = \"dd\"") 73 '(("cpio" "bin" "cpio")
70 (string-append ".def = \"" 74 ("coreutils" "bin" "dd")
71 (assoc-ref inputs "coreutils") 75 ("e2fsprogs" "sbin" "debugfs|e2fsck|mke2fs|tune2fs")
72 "/bin/dd\"")) 76 ("genext2fs" "bin" "genext2fs")
73 (("\\.def = \"debugfs\"") 77 ("cdrkit-libre" "bin" "genisoimage")
74 (string-append ".def = \"" 78 ("mtools" "bin" "mcopy|mmd")
75 (assoc-ref inputs "e2fsprogs") 79 ;; mkcramfs is obsolete.
76 "/sbin/debugfs\"")) 80 ("dosfstools" "sbin" "mkdosfs")
77 (("\\.def = \"e2fsck\"") 81 ("mtd-utils" "sbin" "mkfs.(jffs2|ubifs)|ubinize")
78 (string-append ".def = \"" 82 ("squashfs-tools" "bin" "mksquashfs")
79 (assoc-ref inputs "e2fsprogs") 83 ("qemu" "bin" "qemu-img")
80 "/sbin/e2fsck\"")) 84 ("tar" "bin" "tar")
81 (("\\.def = \"genext2fs\"") 85 ("u-boot-tools" "bin" "mkimage")))
82 (string-append ".def = \""
83 (assoc-ref inputs "genext2fs")
84 "/bin/genext2fs\""))
85 (("\\.def = \"genisoimage\"")
86 (string-append ".def = \""
87 (assoc-ref inputs "cdrkit-libre")
88 "/bin/genisoimage\""))
89 (("\\.def = \"mcopy\"")
90 (string-append ".def = \""
91 (assoc-ref inputs "mtools")
92 "/bin/mcopy\""))
93 (("\\.def = \"mmd\"")
94 (string-append ".def = \""
95 (assoc-ref inputs "mtools")
96 "/bin/mmd\""))
97 ;;; Note: mkcramfs is obsolete.
98 (("\\.def = \"mkdosfs\"")
99 (string-append ".def = \""
100 (assoc-ref inputs "dosfstools")
101 "/sbin/mkfs.fat\""))
102 (("\\.def = \"mke2fs\"")
103 (string-append ".def = \""
104 (assoc-ref inputs "e2fsprogs")
105 "/sbin/mke2fs\""))
106 (("\\.def = \"mkfs\\.jffs2\"")
107 (string-append ".def = \""
108 (assoc-ref inputs "mtd-utils")
109 "/sbin/mkfs.jffs2\""))
110 (("\\.def = \"mkfs\\.ubifs\"")
111 (string-append ".def = \""
112 (assoc-ref inputs "mtd-utils")
113 "/sbin/mkfs.ubifs\""))
114 (("\\.def = \"mksquashfs\"")
115 (string-append ".def = \""
116 (assoc-ref inputs "squashfs-tools")
117 "/bin/mksquashfs\""))
118 (("\\.def = \"qemu-img\"")
119 (string-append ".def = \""
120 (assoc-ref inputs "qemu")
121 "/bin/qemu-img\""))
122 (("\\.def = \"tar\"")
123 (string-append ".def = \""
124 (assoc-ref inputs "tar")
125 "/bin/tar\""))
126 (("\\.def = \"tune2fs\"")
127 (string-append ".def = \""
128 (assoc-ref inputs "e2fsprogs")
129 "/sbin/tune2fs\""))
130 (("\\.def = \"ubinize\"")
131 (string-append ".def = \""
132 (assoc-ref inputs "mtd-utils")
133 "/sbin/ubinize\""))
134 (("\\.def = \"mkimage\"")
135 (string-append ".def = \""
136 (assoc-ref inputs "u-boot-tools")
137 "/bin/mkimage\"")))
138 (substitute* "test/basic-images.test"
139 ;; Work around bug in sharness.sh.
140 (("mkdosfs")
141 "mkfs.fat")
142 ;; Work around bug in sharness.sh.
143 (("dd,mkfs\\.fat,mcopy")
144 "dd,mkfs_fat,mcopy")
145 ;; Should be in the next upstream release.
146 (("qemu_img") "qemu-img"))
147 (substitute* "util.c" 86 (substitute* "util.c"
148 (("\"/bin/sh\"") 87 (("\"/bin/sh\"")
149 (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\""))) 88 (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\"")))))
89 (add-before 'check 'fix-failing-tests
90 (lambda _
150 ;; We don't have /etc/passwd so uid 0 is not known as "root". 91 ;; We don't have /etc/passwd so uid 0 is not known as "root".
151 ;; Thus patch it out. 92 ;; Thus patch it out.
152 (substitute* '("test/ext2test.dump" 93 (substitute* '("test/ext2test.dump"
@@ -154,16 +95,14 @@
154 "test/ext4test.dump" 95 "test/ext4test.dump"
155 "test/ext2test-percent.dump" 96 "test/ext2test-percent.dump"
156 "test/mke2fs.dump") 97 "test/mke2fs.dump")
157 (("root") "unknown")) 98 (("root") "unknown"))))
158 #t))
159 (add-before 'check 'setenv-check 99 (add-before 'check 'setenv-check
160 (lambda _ 100 (lambda _
161 ;; Our container doesn't provide access to /etc/mtab 101 ;; Our container doesn't provide access to /etc/mtab
162 (setenv "EXT2FS_NO_MTAB_OK" "1") 102 (setenv "EXT2FS_NO_MTAB_OK" "1")
163 ;; Make test reproducible 103 ;; Make test reproducible
164 (setenv "GENIMAGE_MKFJFFS2" "mkfs.jffs2 -U") 104 (setenv "GENIMAGE_MKFJFFS2" "mkfs.jffs2 -U")
165 (setenv "GENIMAGE_MKE2FS" "mke2fs -E no_copy_xattrs") 105 (setenv "GENIMAGE_MKE2FS" "mke2fs -E no_copy_xattrs")))
166 #t))
167 (replace 'check 106 (replace 'check
168 (lambda _ 107 (lambda _
169 (invoke "make" "TEST_LOG_COMPILER=" "check")))))) 108 (invoke "make" "TEST_LOG_COMPILER=" "check"))))))
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 5f949a5af95..8c4f19d0795 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -268,7 +268,7 @@ provided, as well as a framework to add new color models and data types.")
268 ("libtiff" ,libtiff) 268 ("libtiff" ,libtiff)
269 ("libwebp" ,libwebp) 269 ("libwebp" ,libwebp)
270 ("maxflow" ,maxflow) 270 ("maxflow" ,maxflow)
271 ("openexr" ,openexr) 271 ("openexr" ,openexr-2)
272 ("pango" ,pango) 272 ("pango" ,pango)
273 ("poppler" ,poppler) 273 ("poppler" ,poppler)
274 ("sdl2" ,sdl2))) 274 ("sdl2" ,sdl2)))
@@ -355,7 +355,7 @@ buffers.")
355 ("libmng" ,libmng) ; optional, MNG support 355 ("libmng" ,libmng) ; optional, MNG support
356 ("librsvg" ,librsvg) ; optional, SVG support 356 ("librsvg" ,librsvg) ; optional, SVG support
357 ("libxcursor" ,libxcursor) ; optional, Mouse Cursor support 357 ("libxcursor" ,libxcursor) ; optional, Mouse Cursor support
358 ("openexr" ,openexr) ; optional, EXR support 358 ("openexr" ,openexr-2) ; optional, EXR support
359 ("openjpeg" ,openjpeg) ; optional, JPEG 2000 support 359 ("openjpeg" ,openjpeg) ; optional, JPEG 2000 support
360 ("poppler" ,poppler) ; optional, PDF support 360 ("poppler" ,poppler) ; optional, PDF support
361 ("poppler-data" ,poppler-data) ; optional, PDF support 361 ("poppler-data" ,poppler-data) ; optional, PDF support
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index b3553196dd0..fe53c837411 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4588,8 +4588,7 @@ and RDP protocols.")
4588 ;; much longer than the default of 30 seconds. 4588 ;; much longer than the default of 30 seconds.
4589 (substitute* "tests/meson.build" 4589 (substitute* "tests/meson.build"
4590 (("test\\(unit_test\\[0\\], exe" all) 4590 (("test\\(unit_test\\[0\\], exe" all)
4591 (string-append all ", timeout : 90"))) 4591 (string-append all ", timeout: 300"))))))))
4592 #t)))))
4593 (home-page "https://developer.gnome.org/dconf/") 4592 (home-page "https://developer.gnome.org/dconf/")
4594 (synopsis "Low-level GNOME configuration system") 4593 (synopsis "Low-level GNOME configuration system")
4595 (description "Dconf is a low-level configuration system. Its main purpose 4594 (description "Dconf is a low-level configuration system. Its main purpose
@@ -12251,7 +12250,7 @@ integrated profiler via Sysprof, debugging support, and more.")
12251(define-public komikku 12250(define-public komikku
12252 (package 12251 (package
12253 (name "komikku") 12252 (name "komikku")
12254 (version "0.35.1") 12253 (version "0.35.2")
12255 (source 12254 (source
12256 (origin 12255 (origin
12257 (method git-fetch) 12256 (method git-fetch)
@@ -12261,7 +12260,7 @@ integrated profiler via Sysprof, debugging support, and more.")
12261 (file-name (git-file-name name version)) 12260 (file-name (git-file-name name version))
12262 (sha256 12261 (sha256
12263 (base32 12262 (base32
12264 "0975c55lmiwaqm0wj0ci91a90syjan3i99akrp0hl9m7r73jnfh9")))) 12263 "11iq2mc8k7ny70vb0iqfjhj1hii0wvr4cv2p6b5rnjqdp6hc63n9"))))
12265 (build-system meson-build-system) 12264 (build-system meson-build-system)
12266 (arguments 12265 (arguments
12267 `(#:glib-or-gtk? #t 12266 `(#:glib-or-gtk? #t
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index ce53695f873..db1c9b09c8c 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -52,6 +52,7 @@
52 #:use-module (gnu packages admin) 52 #:use-module (gnu packages admin)
53 #:use-module (gnu packages audio) 53 #:use-module (gnu packages audio)
54 #:use-module (gnu packages autotools) 54 #:use-module (gnu packages autotools)
55 #:use-module (gnu packages m4)
55 #:use-module (gnu packages base) 56 #:use-module (gnu packages base)
56 #:use-module (gnu packages bash) 57 #:use-module (gnu packages bash)
57 #:use-module (gnu packages databases) 58 #:use-module (gnu packages databases)
@@ -66,6 +67,7 @@
66 #:use-module (gnu packages pkg-config) 67 #:use-module (gnu packages pkg-config)
67 #:use-module (gnu packages compression) 68 #:use-module (gnu packages compression)
68 #:use-module (gnu packages fontutils) 69 #:use-module (gnu packages fontutils)
70 #:use-module (gnu packages fonts)
69 #:use-module (gnu packages libevent) 71 #:use-module (gnu packages libevent)
70 #:use-module (gnu packages libreoffice) ;for hunspell 72 #:use-module (gnu packages libreoffice) ;for hunspell
71 #:use-module (gnu packages image) 73 #:use-module (gnu packages image)
@@ -76,6 +78,7 @@
76 #:use-module (gnu packages node) 78 #:use-module (gnu packages node)
77 #:use-module (gnu packages xorg) 79 #:use-module (gnu packages xorg)
78 #:use-module (gnu packages gl) 80 #:use-module (gnu packages gl)
81 #:use-module (gnu packages pciutils)
79 #:use-module (gnu packages assembly) 82 #:use-module (gnu packages assembly)
80 #:use-module (gnu packages rust) 83 #:use-module (gnu packages rust)
81 #:use-module (gnu packages rust-apps) 84 #:use-module (gnu packages rust-apps)
@@ -583,9 +586,9 @@ in C/C++.")
583 (method hg-fetch) 586 (method hg-fetch)
584 (uri (hg-reference 587 (uri (hg-reference
585 (url "https://hg.mozilla.org/l10n/compare-locales/") 588 (url "https://hg.mozilla.org/l10n/compare-locales/")
586 (changeset "RELEASE_8_0_0"))) 589 (changeset "RELEASE_8_1_0")))
587 (file-name "mozilla-compare-locales") 590 (file-name "mozilla-compare-locales")
588 (sha256 (base32 "0052wq92sg4i776x407b5838jx9h3phl9xy69m2q34f31n3gdyk2")))) 591 (sha256 (base32 "00bpkaqf2ng1nn9ajyb5mli0jq58q5fm2n3yy90jy0hp4q2gbs50"))))
589 592
590(define (mozilla-locale locale changeset hash-string) 593(define (mozilla-locale locale changeset hash-string)
591 (origin 594 (origin
@@ -605,108 +608,110 @@ in C/C++.")
605 (mozilla-locales 608 (mozilla-locales
606 ;; sha256 changeset locale 609 ;; sha256 changeset locale
607 ;;--------------------------------------------------------------------------- 610 ;;---------------------------------------------------------------------------
608 ("1q1p7nl97478hkf1msbbcdh98k6fn87xwqihbw8np00ll5gk9k4v" "97cf3c155484" "ach") 611 ("0f2lkv79gqf46f74905mab3zwyz1532chxlf9d28s548p1hw6lv9" "8312cd2e0777" "ach")
609 ("0sajpblp639l448xywx7xlybjr5dm0rfrzx511a8pa9wn7dma4mf" "46929b4dda4e" "af") 612 ("1v5jpmd0b04mizm9pjffp4r9q121vpq3yzkkxcgmrcwj4gc5jb2y" "21bf766c19d8" "af")
610 ("04s756aaf1yyli1dn1vfdjymgyjs1pz2n7jvz76j27x4nzdgss7l" "96ffd2b04ba3" "an") 613 ("1fqjiq2la543z5pbbvd9kfs0wdc2phmqjbxascfsak854qy1z9f9" "34b6a4f0790d" "an")
611 ("16nw7slm7irsnjf81r6zl273kbzri8sdbimzgzxwm0vh6xr61rgs" "1c4231166ddf" "ar") 614 ("0pl6j99xnali25glyr3g9fmj67v9vqmhd9k74i97f8q5n4xmv3ym" "513c3e8dac97" "ar")
612 ("0i0qrj4j8zjv55cisbmr21dp8mz933hc9wkpn3abz5k5pn84gpry" "bc4384b8be78" "ast") 615 ("0d1fbk9jcai19pi8b7i4y4r0gscqi1inr9dbahd6h0xbxfwc0zif" "19ca0cd0d1bf" "ast")
613 ("1r77mmwg9x1jfa7g5lqa31rgyfrnix1zj80ibn5rq9gyhhsdrwbd" "dd56aead51fa" "az") 616 ("08f9b63wxxy28zaimjn1ab9w51bvrarc3pp75s7v6kzm5bk1jwic" "44aa0dad7964" "az")
614 ("1kzjpy5bnvps8di72ksynhbhc9bpw1ml6hvphm74z8dz55ai4c18" "9d2bff64ddfb" "be") 617 ("15pksy9bgaxcbcnvvp8jwqnqxvvhq9vnljpai6jlh52yyrsglbwi" "5e4499355167" "be")
615 ("1fygvjgph3siknfm7l0fh9y4ava72z1rxkip1zgmcdgq7jz8wzpf" "3808f4fe4db6" "bg") 618 ("0gdg84jp1i4il4nc6gwaswdhc4ljbb9inyip7vhkng09v3pmwm0h" "98d006107851" "bg")
616 ("1x9nlqia441xh04rhkmkw6qrgpwnyqw0grrf5n2qw96939wnmgl7" "5ca8752ed8df" "bn") 619 ("0i6vl0ag74phj4l38cvds1ds3jjdal1c8d7hy6pf4aqrp4ai32mh" "2ca52cbb680a" "bn")
617 ("18yyxqzab44bgqx7h052d5nxyhv0l5bidgr16z1b3ak2crsfyx9q" "4c5d30ca9bf2" "br") 620 ("16yavargwq8rhipzpmrrvyh68g3a6disz9g5m8xbhxvixhcsi5fr" "ce92556a0a90" "br")
618 ("11bschjz7pgsm4r1qan5l4s3nkzm5jb0kivpp186wd1xsjci5bjb" "cf2478a7eae1" "bs") 621 ("1512dzp394pj66i13nsz76qh6fmjpz7r7fmvk8d0h7pjk0d6n0dy" "1c79dabdb120" "bs")
619 ("12bak64nl6qi092l55xv330vh38mfsicrrf4wi693nn7zqb3mbpw" "4aa2cc349211" "ca") 622 ("19wg0kbr2ihbn4lscsxg9agz04r8bsih4692vfgb6nyn1z8vx2i0" "a22912c01617" "ca")
620 ("0p97d7pnxqs971rr5c57i6cw3mx1mp3iasa0xdmdk0zpz9pjd3s4" "806914072144" "ca-valencia") 623 ("1ixpzjb7caq1d9c7c044rxg3ymxs3hjw120kq85v004jrrb4d9c6" "34bf3fd631d4" "ca-valencia")
621 ("1rligf98h9r16mw3r3n5jalzi74xn2dnh6hkiixp7s2bvhjicwa4" "db2163383129" "cak") 624 ("1abizdmd1c56syni1aanwwrfvmgzz25fmimbj2324bcw801ma9h0" "e2e4ba2c37bc" "cak")
622 ("18y5j8ljh72mj2nbx0m64mi3fyjbwyx992i004sv3zvs4d4z18w4" "d1d09eedddde" "cs") 625 ("0wgrg2wiz1jcj52nd4zl4shfkjhbngfj6p1gw1ywj266hk8g6pvw" "a60792bff6ff" "cs")
623 ("12i4m9q6f8sl8arm8ja4gs4sl9m59p3kddlqi68srpz9mk66rqxz" "1caf58c64227" "cy") 626 ("132f29111jd2z9yxpakkyri80mi2ggnik6zxaxqrp4vlcrd1fxd2" "66369fcad8c7" "cy")
624 ("16wacsd23zd4j0yi6vbj033wylia8hlpswx949x5hy1h9817j4vn" "9ef3b56aa243" "da") 627 ("04lpic3cxdj1imcwjkbk81avp9dpa1c9b1zcchrr1a4vyy4yfjpy" "af198d43f7d6" "da")
625 ("1ddxnqpfi1wnciwmzkvvjinb51h22bg70r0dn7db17q64p4271rk" "a050b0eaec0a" "de") 628 ("1h0rkwlsqls8k1qi1y68plw6xk0z2c5xc2y4nqywiirl71yz7fi5" "816fcef20c05" "de")
626 ("0gw5h52rw3bc2lwffnv845sjwwj22gmabchmpa1rw2y6087dc7zk" "613135cb0759" "dsb") 629 ("11lzdyl1h42zb1x2yxiv3r0wih8jy1gr0gzs5d1isdq53sa9cqnq" "962e5a544415" "dsb")
627 ("0v17da37w1kbs73i6xql4c9xng6rfachyylpy3w8hpibpvi7i30n" "903db7c76b31" "el") 630 ("146jgrhl41k6zbxg58hxh1s088padsjz7ny8nm59i9i8d00jpv0a" "e7c49fd88463" "el")
628 ("0ky1nj4kp070nriw0igsa64l39plcv2365zl8lqpbydyp6clwc3m" "6bb74673e9aa" "en-CA") 631 ("1qppr44hdnrb1z1igcd1p0w5sy9vpihzilkl2w44y0v0v9rigppv" "5a0e35b08a48" "en-CA")
629 ("15jck6si2l4h5lrs8zjx56y97p70njpi26nnq6xfmvj1dk5qb4g2" "c06bd83a9295" "en-GB") 632 ("1v2irfms24cx9g5s6r1glmp2c000wi91axyca1pn37s7c01r0n4b" "72f8c5d8305d" "en-GB")
630 ("1gc400n8j8qk70vdw7fkf4m9yviia35cmj6361pxnyvsjrgm4qvm" "ae0fda5114c4" "eo") 633 ("1y0rbbmax1w6jy4jacy27xgy4aqnd43izysw8qjwm0qhhfjvf3xh" "40994fca693d" "eo")
631 ("0y01lahdrd3krsh6nrr3iw36r2x4advh5qw54vf92w11l3aiyvfz" "0c294dc9ce40" "es-AR") 634 ("0kmjvinqpb3y81mqda1qq8k202aa36as9z1z775745bx6sbvkggz" "6cf3c836995d" "es-AR")
632 ("16jjbsfa62dxk36ccziv7nmh26c1s0b05960in6zs5nnfrv4yh35" "7c30b2981fb4" "es-CL") 635 ("06rvd1z3l0r7hwnsnw90i0f5j2ysbv6wd3cl64g0bgifmwjk75hi" "8727dda3935e" "es-CL")
633 ("0qh8c8f8dsv1v56n1mcpn84l39bpnqfl8v8iacq12zh322srr549" "ad1444f4f833" "es-ES") 636 ("0gzw1rn9nzpgcrrc10indnbqqpax87azczrfxv8mn5n56j734hc0" "5351aba49895" "es-ES")
634 ("1vh3hm5r4ch6mk3ymbk12b9rppwc75fmbi0i7cml82kxsi77bzw5" "0a26cdb23536" "es-MX") 637 ("0bnmgisxfkb6rb12avhipbsj1yr0dyv56qjj9471gnc2ppq7k3c9" "dd834a4af402" "es-MX")
635 ("159l92jxx48lgba1g8ig3mdzhwsf3jpg3nx1g9blq4majk5hqr6q" "65a38a830795" "et") 638 ("1951975h9w813qxanbk3frjz7c8knzx5rvq9i82j9i6x6a3fh6fi" "1f2150796079" "et")
636 ("1ha8y1wbgb66dqm26x1q2xwygy7bblkjz40y9vh5d2qlpr3fn0av" "21e0930b221d" "eu") 639 ("1vkb5rd0k6vh9dbll3fhyzg8rfpkxxkd2rxwf66b8l3hg4fqd7f2" "2911663f4a7c" "eu")
637 ("0rq4pcw6klm0bbljm1wdfvna8bpa35cm47hh2s63i2xdax4scahf" "5a4bb020cf09" "fa") 640 ("1cj9zblfp94h86m7zd762bfmcfz0yxc1q4ra35s4wnnlqajarzwj" "04ec3c3bbe92" "fa")
638 ("1py2594gsvpgrxnplz278ffb7grsf384kzjskrl1zyps0jw8fb1x" "4a4f712cd4aa" "ff") 641 ("1ininsyzaj7xd8ppmklm3zglgw1i0nhdy43iiyva32hb592zxy4m" "0cf866f9bc4e" "ff")
639 ("1dyd55ngsglp1w2gh0yaacwb0vsq23gdvnj76f2x6g39h1li9s0z" "9c51cd915e2b" "fi") 642 ("1hc308d71iygarrpliv7pxjz49gxwqg10d0pv8j4sbb2pw39bprl" "04a600fc54a4" "fi")
640 ("0kimwivpq6pr63jh1k9fszsv8bi8vns3scg76mmnvbhh2ca8q7wj" "4f9e24a696ee" "fr") 643 ("02nl54db9130rg59wmrrnh0z726fg5ir1njfcnhxagb4g5b7s69f" "64a3576df276" "fr")
641 ("1sbbnnp12lgy5qan2kix02942830b1969bd7jxrv7piwqfch9i06" "9e21a0eeb5b1" "fy-NL") 644 ("1qbby23qlkxjz3vwlk8pd2w1w4cxdff8cq7j0ipk44mijkxkry0c" "c84177dfa254" "fy-NL")
642 ("0dsvvyfrzkx5h44gqgdci7arb8h4lq48w20cnr8fc7j17grvnkzz" "999a995bc09d" "ga-IE") 645 ("1x23pg36ld5qnrmdn149rkl85ia8lmiqbzcac2bm0iqprnjdszii" "31590cffac56" "ga-IE")
643 ("1487msbsgrfzmyijhf6a4wbqdjpd7b7ki9nwrjjjjlnbw0h0ljpb" "6a9ddcab3240" "gd") 646 ("005fpyr1lvw23dja3yrzx4y8wdih7vx6ljjpisf4pd3k5zai4x81" "ba4f274ac4a1" "gd")
644 ("1kzc4fwr18kgisdzba2acj1ag8mxbifqpk5p30jv68nmvqfsvl8d" "51eb5e352db9" "gl") 647 ("0kdlb5q74n0fl5fxfy873s392kry69dmdl8b4gvqdyh5sy66vsqm" "56b41bdcd401" "gl")
645 ("13gy3wn44kcxr7j3sbl69fp415875f4vb0gm91hx0fysqlvryhcs" "b9de1ffe3224" "gn") 648 ("0v8r8b0nrk1l4xipzhq16klmh0pinzcrma0s0gyhgzqqli6z7aym" "59e2afb65c08" "gn")
646 ("0w5nvzpjn5vr35c1852rlff581vpy71nc096cz125852kyqkzkc3" "5b3307475ada" "gu-IN") 649 ("1grb1lq1f9p5jxgh9v78jl1wswxmsqxkcssm35l30k6y24pglr0m" "33b4409fb615" "gu-IN")
647 ("1ycakc4qpy9vcy50j3ricryjfnjr9v3a5ijj6bbfl4y6aks157fy" "c742df968ffd" "he") 650 ("172fg55y8l90ix4c8s5x7f8mg6rc7779p6l852cnnkfqjgqa5a5f" "92f9f8238189" "he")
648 ("1b2jf83c500wm5wcdnijq0b7y4m8n6271smq8pygahn5nq17f0gq" "1a3039a52b8a" "hi-IN") 651 ("0i52nmg0yv3y1y3rkinxcyh51mgjksk7c3jlc8014801m3zvyxj7" "00090f7a2a3f" "hi-IN")
649 ("19bbw8ix5m83cf4yarcmjl7jqa8xfabwqnh3nj6vi52rwvn7whk5" "8dc50e269ef3" "hr") 652 ("074q8n00yq54kzk632dwbs64r0sygvybbvwpd6hbvfpn38lz8hxf" "6e4a3fdc01f3" "hr")
650 ("12rrsvgg6bb2h8fhni7jbx8pv983q8ym5fhfjim957n9q2yp5db6" "67e40f48dec7" "hsb") 653 ("1jxiz8zyxbpnwgk5xkwfxlr5f1zfyc88jcsajy8wcaifdkld3cwn" "7fd9bc25e49d" "hsb")
651 ("0apyh713p3hrlj8041xwblcssahbmsqp9v9hbmb50ayf4z850kr1" "40073a597b1b" "hu") 654 ("0ca11pmkzyd9ccrnrbmk0jrpcb03k88v4zivxblnxj4w03g0hyhq" "ce3b378ce950" "hu")
652 ("0q0r076lq250d3vmnz9d92wj137c2v8i362c2avmkgp5zr3mcl0z" "2ea33335afdb" "hy-AM") 655 ("1yszljbh8f7w6lckfw22jwximy3yhis4430lfynfb8lh9nm0fw59" "c91a4a3e8821" "hy-AM")
653 ("0qza33gdc1i9259dwd2f7vd78s0a6rg34aqdkhcn7f2l6ybw6xd6" "930041db15eb" "ia") 656 ("0hhl8b8szqlhjdxhsa81zmgr303kr0jx5d6rzbi840qwf01h12sz" "4f235acc839e" "ia")
654 ("1211h0gp7gianh3qf76w04gfzk4n2bnyc9i8dviyz0vh4cjbx11m" "08811a49b41c" "id") 657 ("063yfk3nz3kignbri7r9sr3jwr5p9yyqc6sckgqs94hx6lvc355p" "fface86a34e4" "id")
655 ("12lcr841g1j7453s7gb51vrvxmshx4ha3h1jx4vh8wr891xv8l6a" "2f7a8d31e0ba" "is") 658 ("1qszxkgliall4haaq6v0xayxikq43ddcdsn1d4m1mwyp7gdpbry5" "5978ae767b44" "is")
656 ("1x585g0r2kcv0d3phnxx85bk5g0pi1yl0hwp4idv19yc9hslr04s" "188357cc04b4" "it") 659 ("1fsfz9iz5pdd5r9ckdal6grvddchsc4r3r8gn4w6f2bja6vpbs05" "0c7d2a0e1304" "it")
657 ("09v35g9v7j6x0p1hggydm3a1rmq2fh4z7g1l88z3w5k6wq2nhj1b" "45cee0ba4771" "ja") 660 ("1phkw0apiicgbw2nq3g392xncw1v2c4yac595h3nchs4q6rp9pd9" "1c923f3e88b9" "ja")
658 ("0prs3vycfvvaffjigdgyxiq41ak2rc34lnan5a6cwdqjgy7z450s" "d60a19d9bf17" "ja-JP-mac") 661 ("1y4gc4l6g72nphhsw4aqhcl80a7wi9qdy61h66c6jc6h14i7278d" "66f700940cfa" "ja-JP-mac")
659 ("1nskzm8rgczrbgcxlzzq5zqdfd456ad0cylq27nf0wjiyq6kjzcm" "00cb00e78672" "ka") 662 ("0iqwj0y19zqcdclnn92z490s1g9vh2qr9gmkyfnpsz69llxidx1j" "49b4a7c6bb2c" "ka")
660 ("0g6zznmhiam172nm7g2qzfpk415mna8kiihm73z2sdns64xb3ymg" "77a293a4bced" "kab") 663 ("111nm2khff0zxnqqfc68rbi3j0b1nx5r4xai7b8yymyv1i0qbsxd" "4854facbd60b" "kab")
661 ("17dld9lrym7rpvpvnkssivp4wx1f11zpk86wczbq1h52qgd70p55" "2c9b33a56d5d" "kk") 664 ("12p7lg2p6pcqdlb4bqbz5isxilw2r9vb8344sh8zrvv9cb9jq04f" "d2fda8a1b287" "kk")
662 ("1nlzl8930c8ql3yq425wyqlxvq8arrjv20xpm5g7yfxd54av89ac" "9cddd42af05c" "km") 665 ("142vpw9npqgc8b5zcg5cy2lh07s4mg8xfbaymg44fb4j3s6agw88" "3a5a1cae9b93" "km")
663 ("07hkrcdksvrqk816yimd036dlw15nc4sjk4gmw16ywbp093v0mqq" "e0c2969a8398" "kn") 666 ("00v1sd2byj2ksxw1020z142cdlxa7ri2v1rzjrhay9l465bj3k8x" "6ed122b33cac" "kn")
664 ("08aqggvk3qbv5bzks9i1iba9akhkpm01d2c9k0zf41mpr2r5yfg2" "827567d0dafc" "ko") 667 ("1s07yhwzpxj0l5vj5lzbvgw115sjx1g2zgbqca5wln95dds39npl" "49bc07645a47" "ko")
665 ("0vagaiwy80bs1k3gkacshlzb5zchkcshx0ypwirvayc63sw4yl8l" "694b2a24e868" "lij") 668 ("1b4brfww0w7x1h3ff19i6xi8xq2cb1hxysilira6yq4rb6vhlmly" "93f04df12616" "lij")
666 ("1r43kp1kzahrbza0hiyavqplk9h08pzsb6rpjy79jr6l1iqb89sy" "d6728db7e060" "lt") 669 ("1i30my0bbgm9z02rxxi7x4vc69bs3bnjs9l2q6jd8xvs1ga3vc7n" "e1f4e0d87509" "lt")
667 ("0sq2wbsj79xl7fi454k6q5xdhxyck1whjz315rv37vphqpx86b9b" "61e9b33f4d94" "lv") 670 ("1bjh4xlx6562hxq527cqcn4b5295dsdpwn4c4y5ci902nlh6fc8l" "daea4ba4e7f4" "lv")
668 ("0q8jxg1af22hs9wjdf0jd3bqk4rafxyzvsjl35k75am7l2y1fl3c" "9e482f6dd72c" "mk") 671 ("0vig42slcx6bhpisyc1bnyklr95lbv7vqd1ckiywp5c5qzfa9afi" "0c4ca0f4fc17" "mk")
669 ("1zsfzjrzbc58d30a9yz12h5vphywgpw8xg6y6zn3677a785dvr20" "1fd2763336a4" "mr") 672 ("10qfnkqi2snmgvm4vcrmp2489klchv3hn2c4rmkdhi5bilfk42jx" "9be8d5951976" "mr")
670 ("1rzygkkpn1a59daygd3hdaqph2np6sqvpgh68j0xr4il958ymnsm" "67ddab62dab4" "ms") 673 ("1bkn8ds3fyz710ck4gg4g5vpv23bi573ssm9xbiyl8y59pvbig9b" "0f44d0bcfda2" "ms")
671 ("16jp6w5gizfxs7jvncg3ly13m59vqvh4rlmjd0q23m5g5ff9sklc" "3ed015b51bf3" "my") 674 ("1j9af3axbijn0s8y96310mvgaq5a36m0r3ij550jv5bv52862crj" "ccbf0c4355d6" "my")
672 ("1wfv023j67lb4iyf49fsknwm4z3xy0xqcf25b2nzanggxj26n01x" "d01801233a8f" "nb-NO") 675 ("0lspnp9jn3rrgz3djnmc0qrb6ymigvqnr3fb0jbhmf83r4yfs8z1" "a6cf2c6e3594" "nb-NO")
673 ("1946vfia58vbjfippb5pfsskbjj95w7hb340smn6ry2vmza99mxp" "582defb08fb2" "ne-NP") 676 ("1xp2884m9gqm9gaakc747bd9j55wssrh3qsf4y4k02ijh08sfmwb" "c1636a1a7507" "ne-NP")
674 ("12w5ywh4c3s55y3zqc48cp1gcpwwjg444yfh1bghhhb9ni1xkh5i" "05f6359a29a6" "nl") 677 ("0y1fxp9pxia6x2wxdharh2ynvzdqcmzpya1gdb89pcv5qyrzqgcl" "60ed1c2397a6" "nl")
675 ("17jb076320cgkw1ypwmws2vjxsqlv2ww8aaisa3j334vbrw1m4zx" "50b41a1ddded" "nn-NO") 678 ("1nbp924p7fp2c76ym71wp34vk96z89i4g2rfgpsi54cgv42a6vgq" "a7f9a3d35875" "nn-NO")
676 ("1y840j0v5zdgj94cbacy6j1snf44rynmzxq3yk8i26arcar62akl" "a6a138531a44" "oc") 679 ("1yrmhyvb6skypcyvi6j3py51sdkq9vn35zkryx6rdp8ygqwm1va7" "9ac29828960e" "oc")
677 ("0jq1hq4xhqxpa26r8pb1bgbaljgfkhn9l6p5pbnslkllpbh70q6l" "e70a3afaef25" "pa-IN") 680 ("0rn2414ji1icar627arf5rjwl9r9vxhznbfsyxgrmrf0p6dp72fv" "87720cc32205" "pa-IN")
678 ("1hih138skwy2gb8q10ngg6zalrk3aa3d549mg79gqzxbi5zy19fw" "e035f33389eb" "pl") 681 ("09lam6yaprc8zyisq0pcdj4afpg930c2x3x47gdxnqfyhmcfygs7" "56b2c592ffba" "pl")
679 ("1hhif4hx4k351wm1bzykzycfzb5q8msxmiwh5r1cy32rh8wkxwhh" "54098495f37f" "pt-BR") 682 ("0mbc1a8wvjs3k928qh0k800d230251i0rw0myhdpc6mk3xjna7i5" "89f1b173c9b1" "pt-BR")
680 ("0gkjs12rxjml1m3mljskpz1gr6aph0c31nwpwdqybfg54w9qslib" "3fdf021f624e" "pt-PT") 683 ("1v1qa5slllz78222rlqr4b8k7c8dapmx8d7s5nb90wdffic0zcqy" "27adc5dad781" "pt-PT")
681 ("0anyvwd9v6mr8y3ww33s6qnxkawqn5lz65vrxx3m3kzky63ai1xk" "794f9374eb87" "rm") 684 ("04k6h5d7c740lz1hx1vavj6p0fmhgn9mm3nwvk4p9iccy5nw5pmf" "83e2e4833fc3" "rm")
682 ("1p4drj25gsfv7lwgm5saazh38iqrh53952n8i4bmxpn0nadbm2n5" "71ce18bcf6cc" "ro") 685 ("0f0hz792wr17mgi6n190dliqx67479aqg3y2ak0jg0fiz2c8qr7p" "69cdc288966f" "ro")
683 ("17yssf4axd3zvncl4ka4wkfnwcn0z0arp3390vb9cps67na29p36" "3a9587227699" "ru") 686 ("17yngj0v30687m7fa1ls0g86vjg8jzxs7bnsca91jpxf3ij44xp6" "03046775600f" "ru")
684 ("0xk6rksspcw1222v4rgk5a6gzrpx64k29hm7p9qkqwd70s34yj46" "c020582a72ce" "si") 687 ("1fvz23nphs9i4gdkx9fcy5ahdk2f879281pchclwi0qlciq7digr" "61ea93a50fff" "sco")
685 ("1ax5ibydyn7sj208r66zcxlcr8dxdqrw28vqyjif4jx583rp4lfp" "745a699b7f51" "sk") 688 ("0yc1iwqbnpnf1i7yz3zqrx6g8pinc7l53pvbczywfkq3rz6wmmf5" "2b134d24c046" "si")
686 ("13rin7hm1dv8g0hbcv8mp2hiwpk1k5bhzvkqpqajkkik4lx523mc" "8e437e2351ef" "sl") 689 ("0kizljksn2vn4yw7qlv7c8h2m75f7n9ddg6n6ag3hwxxip83hn4y" "6d69c24dc8db" "sk")
687 ("0yh5jkl5zw3f7x1w2w6zfj3dyvcl4wj1zv4di7qsq2nl2yyizf7x" "2d99e2eff94f" "son") 690 ("1ll936b18wy464623jc5smf3c6dpimh0qwn28a991h7zcw31n3kp" "29e195d1d160" "sl")
688 ("0vzq7s27jsdbw5k59wfykysg1kd8w229ab5d4zjdf30l59igkahh" "69bbdf07bd80" "sq") 691 ("14w9n994z9gf0wx7vrqisyxkngvhmmnayx8r0vwiq8k7jy81sxlm" "60a3b235fe1d" "son")
689 ("1mwivvs8vrk6vjq6i33kwlrlisra7dy35521ayps9p2rz2dll4rr" "215df5c5125c" "sr") 692 ("0z7bcfvq6x6dxf4d4bbjsg36r5npkr89087b0j360ljampk6c2fn" "8588cbc89847" "sq")
690 ("0g97yz1rg5cfflj8vvq3sqliyvm06x818z9yldfh5rjg1y6n9fjd" "8be00a1a50d4" "sv-SE") 693 ("1fcq9g89lhzckzr2qb6x0w0z6q486n9jdqfi6h70dx8b069b3jfj" "198f7e89f10d" "sr")
691 ("0ii02jn3lh2i6d0s95whx9aj6w3x8axc7w1rlzj0lc2s9n52krz3" "170a84339dbe" "ta") 694 ("0ap3m1sbibnaj9s2l139m7l8cc8s2ky4jlxwgzbxdzvqxfz7n954" "b098e2ebc049" "sv-SE")
692 ("1ss7symad2crapxjqc0xhc0n17l79r5vf7flvkgk7npjky4vb7nv" "72a79a304f7f" "te") 695 ("0k93gnwfs5mahb9vz1c65ddcbkav0cwhxnrww3qk7gcmn7q88gqk" "25951b964d5b" "szl")
693 ("11iqmg8zamgscnvs4n2xpw3g9azn6w38qs313wiwm86pyx6694ss" "8e91ce3064c5" "th") 696 ("0b0v5pcwvhvhg8vlzy26g3j0m1r8svrpq07hq0q7lxldwlb48phz" "94659c83c9d8" "ta")
694 ("1zgkvn9flb8by62ip9r3gmpgxwgkww1zhml5mwa0djq3ppfdgi1c" "0f914d0cda56" "tl") 697 ("1v35cl6m3ikzsriq6zkjzjs3p9bhl8zmbp2gl14mga1f1zy4kcah" "eb59646a5d36" "te")
695 ("1filkhdak6dbrd83q602x1qw1703nlm53nm9gcyab8s16gsx6ylz" "62ca6a8eaeba" "tr") 698 ("0y3r30mjgxngjraqmf5cm00kgqx2pvhbvy8sfxb3fhypv9vda3yr" "10d257301a2d" "th")
696 ("0cgagdy0ixprk3knczdmkqxkmx4ybmshhh0956kxbd0iab0dfcf6" "f110ccac4cde" "trs") 699 ("1inyqk495py20jwjvs4yl0n5ncf3hhb896bs1lwfsgpvbvr5hbq1" "9be6adca0e51" "tl")
697 ("1f1ghk67zwnwc5x3nk82vcv94nf8glngkfya1hg074q3088sj9pa" "56c0102d5f1c" "uk") 700 ("0vsirjs655cia9n8dys2r84bvg303hcxkk2w6a9j3dkbifq5ymk6" "51354c936bf6" "tr")
698 ("0iyw1b2jjylkdwxv9sxvj4ikxl64sx612b2dvvmf1di8bw86w74r" "7d53bce5ae98" "ur") 701 ("050x882c0ywil290k4g861njw70ffw2y55dqk3w0kffi972mm909" "d7510f2d01dc" "trs")
699 ("1q83cp5pfgs8l03zirwi8r5qp8qyh4zvxdx1ilgaqqlyg42yql7c" "9b500e1a054d" "uz") 702 ("001ykwxkwibavbi1k42b1hmysb3gmrwcs68zmw96m1vc80p29nz1" "4d1fa878042b" "uk")
700 ("1d4nkybz2hk64ay04k965b9lc5nhhpmzcs5ww3b6q4n93rf9c2z7" "2a000025928a" "vi") 703 ("0lsz6jlmmsqdg47pdx8b1djjvcavi0wlyr0mkpyhjgpginag21zx" "ad3035f28183" "ur")
701 ("1cnrsfnyl3sw3sxsggmjwydvphb2diy0vzknvxdhpnvq3ln18hga" "74724087c25b" "xh") 704 ("0d3ggm3q76pkpg4n3lz2ji4pbb47n885byqxbp7sk6n9vlgzir7l" "8ea7a5a051db" "uz")
702 ("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN") 705 ("0v7d8y6xsr6yf2s1sjxnsjmw0hdnj91f0w2da6spkifb52lmbv6v" "67fe2acb306f" "vi")
703 ("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW"))) 706 ("0j8l09vzqlw4zlkyp6wkh44c5gr1xgbcmnawks1zj7xz02ambwii" "abc22dfb6d84" "xh")
707 ("1c01pbyswixkjg42714fvfy33b09mpdbf4d8f8kcs88c86jpf07z" "d6d6f9bb6113" "zh-CN")
708 ("0yq8fqdz862pnlbvfsqfc152rhpsqgncvp8bqkd653mdfv4qkwr4" "0cbdc5f1a048" "zh-TW")))
704 709
705;; XXXX: Workaround 'snippet' limitations. 710;; XXXX: Workaround 'snippet' limitations.
706(define computed-origin-method (@@ (guix packages) computed-origin-method)) 711(define computed-origin-method (@@ (guix packages) computed-origin-method))
707 712
708(define %icecat-version "78.15.0-guix0-preview1") 713(define %icecat-version "91.2.0-guix0-preview1")
709(define %icecat-build-id "20211005000000") ;must be of the form YYYYMMDDhhmmss 714(define %icecat-build-id "20211006000000") ;must be of the form YYYYMMDDhhmmss
710 715
711;; 'icecat-source' is a "computed" origin that generates an IceCat tarball 716;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
712;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' 717;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -728,11 +733,11 @@ in C/C++.")
728 "firefox-" upstream-firefox-version ".source.tar.xz")) 733 "firefox-" upstream-firefox-version ".source.tar.xz"))
729 (sha256 734 (sha256
730 (base32 735 (base32
731 "0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4")))) 736 "1hs2bvzl0d4kfir3gq997kwxm90ygapqn6xlw47cihnh479wzwry"))))
732 737
733 (upstream-icecat-base-version "78.7.0") ; maybe older than base-version 738 (upstream-icecat-base-version "91.2.0") ; maybe older than base-version
734 ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version)) 739 ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
735 (gnuzilla-commit "abfe5eebaca3c2787f1a9505669393674493c177") 740 (gnuzilla-commit "1537880dac3087d3779543303f0df83432831166")
736 (gnuzilla-source 741 (gnuzilla-source
737 (origin 742 (origin
738 (method git-fetch) 743 (method git-fetch)
@@ -744,7 +749,7 @@ in C/C++.")
744 (string-take gnuzilla-commit 8))) 749 (string-take gnuzilla-commit 8)))
745 (sha256 750 (sha256
746 (base32 751 (base32
747 "00ws3540x5whpicc5fx4k949ff73cqvajz6jp13ahn49wqdads47")))) 752 "16r42hp05qmiifw8ym89328w5b4flp3hngpjwbrzgq23q1qmixa9"))))
748 753
749 ;; 'search-patch' returns either a valid file name or #f, so wrap it 754 ;; 'search-patch' returns either a valid file name or #f, so wrap it
750 ;; in 'assume-valid-file-name' to avoid 'local-file' warnings. 755 ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
@@ -769,10 +774,10 @@ in C/C++.")
769 (icecat-dir 774 (icecat-dir
770 (string-append "icecat-" #$%icecat-version))) 775 (string-append "icecat-" #$%icecat-version)))
771 776
772 (mkdir "/tmp/bin")
773 (set-path-environment-variable 777 (set-path-environment-variable
774 "PATH" '("bin") 778 "PATH" '("bin")
775 (list "/tmp" 779 (list #+rename
780 #+python
776 #+(canonical-package bash) 781 #+(canonical-package bash)
777 #+(canonical-package coreutils) 782 #+(canonical-package coreutils)
778 #+(canonical-package findutils) 783 #+(canonical-package findutils)
@@ -782,11 +787,20 @@ in C/C++.")
782 #+(canonical-package grep) 787 #+(canonical-package grep)
783 #+(canonical-package bzip2) 788 #+(canonical-package bzip2)
784 #+(canonical-package gzip) 789 #+(canonical-package gzip)
785 #+(canonical-package tar) 790 #+(canonical-package tar)))
786 #+rename))
787 791
788 (symlink #+(file-append rename "/bin/rename") 792 (set-path-environment-variable
789 "/tmp/bin/prename") 793 "PYTHONPATH"
794 (list #+(format #f "lib/python~a/site-packages"
795 (version-major+minor
796 (package-version python))))
797 '#+(cons python-jsonschema
798 (map second
799 (package-transitive-propagated-inputs
800 python-jsonschema))))
801
802 ;; Needed by the 'makeicecat' script.
803 (setenv "RENAME_CMD" "rename")
790 804
791 ;; We copy the gnuzilla source directory because it is 805 ;; We copy the gnuzilla source directory because it is
792 ;; read-only in 'gnuzilla-source', and the makeicecat script 806 ;; read-only in 'gnuzilla-source', and the makeicecat script
@@ -803,20 +817,22 @@ in C/C++.")
803 "-p1" "--input" #+makeicecat-patch) 817 "-p1" "--input" #+makeicecat-patch)
804 (patch-shebang "makeicecat") 818 (patch-shebang "makeicecat")
805 (substitute* "makeicecat" 819 (substitute* "makeicecat"
806 (("^FFMAJOR=(.*)" all ffmajor) 820 (("^readonly FFMAJOR=(.*)" all ffmajor)
807 (unless (string=? #$major-version 821 (unless (string=? #$major-version
808 (string-trim-both ffmajor)) 822 (string-trim-both ffmajor))
809 ;; The makeicecat script cannot be expected to work 823 ;; The makeicecat script cannot be expected to work
810 ;; properly on a different version of Firefox, even if 824 ;; properly on a different version of Firefox, even if
811 ;; no errors occur during execution. 825 ;; no errors occur during execution.
812 (error "makeicecat major version mismatch")) 826 (error "makeicecat major version mismatch"))
813 (string-append "FFMAJOR=" #$major-version "\n")) 827 (string-append "readonly FFMAJOR=" #$major-version "\n"))
814 (("^FFMINOR=.*") 828 (("^readonly FFMINOR=.*")
815 (string-append "FFMINOR=" #$minor-version "\n")) 829 (string-append "readonly FFMINOR=" #$minor-version "\n"))
816 (("^FFSUB=.*") 830 (("^readonly FFSUB=.*")
817 (string-append "FFSUB=" #$sub-version "\n")) 831 (string-append "readonly FFSUB=" #$sub-version "\n"))
818 (("^DATA=.*") 832 (("^readonly DATADIR=.*")
819 "DATA=/tmp/gnuzilla/data\n") 833 "readonly DATADIR=/tmp/gnuzilla/data\n")
834 (("^readonly SOURCEDIR=.*")
835 (string-append "readonly SOURCEDIR=" icecat-dir "\n"))
820 (("/bin/sed") 836 (("/bin/sed")
821 #+(file-append (canonical-package sed) "/bin/sed")))) 837 #+(file-append (canonical-package sed) "/bin/sed"))))
822 838
@@ -854,11 +870,11 @@ in C/C++.")
854 #:log (%make-void-port "w")) 870 #:log (%make-void-port "w"))
855 (delete-file "compare-locales/.gitignore") 871 (delete-file "compare-locales/.gitignore")
856 (delete-file "compare-locales/.hgignore") 872 (delete-file "compare-locales/.hgignore")
857 (delete-file "compare-locales/.hgtags")) 873 (delete-file "compare-locales/.hgtags")))
858 874
859 (format #t "Running makeicecat script...~%") 875 (format #t "Running makeicecat script...~%")
860 (force-output) 876 (force-output)
861 (invoke "bash" "/tmp/gnuzilla/makeicecat")) 877 (invoke "bash" "/tmp/gnuzilla/makeicecat")
862 878
863 (format #t "Packing IceCat source tarball...~%") 879 (format #t "Packing IceCat source tarball...~%")
864 (force-output) 880 (force-output)
@@ -892,12 +908,15 @@ in C/C++.")
892 ("gtk+" ,gtk+) 908 ("gtk+" ,gtk+)
893 ("gtk+-2" ,gtk+-2) 909 ("gtk+-2" ,gtk+-2)
894 ;; UNBUNDLE-ME! ("graphite2" ,graphite2) 910 ;; UNBUNDLE-ME! ("graphite2" ,graphite2)
911 ("cairo" ,cairo)
895 ("pango" ,pango) 912 ("pango" ,pango)
896 ("freetype" ,freetype) 913 ("freetype" ,freetype)
914 ("font-dejavu" ,font-dejavu)
897 ;; UNBUNDLE-ME! ("harfbuzz" ,harfbuzz) 915 ;; UNBUNDLE-ME! ("harfbuzz" ,harfbuzz)
898 ("libcanberra" ,libcanberra) 916 ("libcanberra" ,libcanberra)
899 ("libgnome" ,libgnome) 917 ("libgnome" ,libgnome)
900 ("libjpeg-turbo" ,libjpeg-turbo) 918 ("libjpeg-turbo" ,libjpeg-turbo)
919 ("libpng-apng" ,libpng-apng)
901 ;; UNBUNDLE-ME! ("libogg" ,libogg) 920 ;; UNBUNDLE-ME! ("libogg" ,libogg)
902 ;; UNBUNDLE-ME! ("libtheora" ,libtheora) ; wants theora-1.2, not yet released 921 ;; UNBUNDLE-ME! ("libtheora" ,libtheora) ; wants theora-1.2, not yet released
903 ;; UNBUNDLE-ME! ("libvorbis" ,libvorbis) 922 ;; UNBUNDLE-ME! ("libvorbis" ,libvorbis)
@@ -909,29 +928,31 @@ in C/C++.")
909 ("libxt" ,libxt) 928 ("libxt" ,libxt)
910 ("libffi" ,libffi) 929 ("libffi" ,libffi)
911 ("ffmpeg" ,ffmpeg) 930 ("ffmpeg" ,ffmpeg)
912 ;; UNBUNDLE-ME! ("libvpx" ,libvpx) 931 ("libvpx" ,libvpx)
913 ("icu4c" ,icu4c-67) 932 ("icu4c" ,icu4c)
914 ("pixman" ,pixman) 933 ("pixman" ,pixman)
915 ("pulseaudio" ,pulseaudio) 934 ("pulseaudio" ,pulseaudio)
916 ("mesa" ,mesa) 935 ("mesa" ,mesa)
936 ("pciutils" ,pciutils)
917 ("mit-krb5" ,mit-krb5) 937 ("mit-krb5" ,mit-krb5)
938 ("hunspell" ,hunspell)
939 ("libnotify" ,libnotify)
918 ;; See <https://bugs.gnu.org/32833> 940 ;; See <https://bugs.gnu.org/32833>
919 ;; and related comments in the 'remove-bundled-libraries' phase. 941 ;; and related comments in the 'remove-bundled-libraries' phase.
920 ;; UNBUNDLE-ME! ("nspr" ,nspr) 942 ;; UNBUNDLE-ME! ("nspr" ,nspr)
921 ;; UNBUNDLE-ME! ("nss" ,nss) 943 ;; UNBUNDLE-ME! ("nss" ,nss)
922 ("shared-mime-info" ,shared-mime-info) 944 ("shared-mime-info" ,shared-mime-info)
923 ;; UNBUNDLE-ME! ("sqlite" ,sqlite) 945 ("sqlite" ,sqlite)
924 ("eudev" ,eudev) 946 ("eudev" ,eudev)
925 ("unzip" ,unzip) 947 ("unzip" ,unzip)
926 ("zip" ,zip) 948 ("zip" ,zip)
927 ;; UNBUNDLE-ME! ("zlib" ,zlib) 949 ("zlib" ,zlib)))
928 ))
929 (native-inputs 950 (native-inputs
930 ;; The following patches are specific to the Guix packaging of IceCat, 951 ;; The following patches are specific to the Guix packaging of IceCat,
931 ;; and therefore we prefer to leave them out of 'source', which should be 952 ;; and therefore we prefer to leave them out of 'source', which should be
932 ;; a tarball suitable for compilation on any system that IceCat supports. 953 ;; a tarball suitable for compilation on any system that IceCat supports.
933 ;; (Bug fixes and security fixes, however, should go in 'source'). 954 ;; (Bug fixes and security fixes, however, should go in 'source').
934 `(;; XXX TODO: Adapt these patches to IceCat 68. 955 `(;; XXX TODO: Adapt these patches to IceCat 91.
935 ;; ("icecat-avoid-bundled-libraries.patch" 956 ;; ("icecat-avoid-bundled-libraries.patch"
936 ;; ,(search-patch "icecat-avoid-bundled-libraries.patch")) 957 ;; ,(search-patch "icecat-avoid-bundled-libraries.patch"))
937 ;; ("icecat-use-system-graphite2+harfbuzz.patch" 958 ;; ("icecat-use-system-graphite2+harfbuzz.patch"
@@ -941,11 +962,11 @@ in C/C++.")
941 962
942 ("patch" ,(canonical-package patch)) 963 ("patch" ,(canonical-package patch))
943 964
944 ("rust" ,rust) 965 ("rust" ,rust-1.51)
945 ("cargo" ,rust "cargo") 966 ("cargo" ,rust-1.51 "cargo")
946 ("rust-cbindgen" ,rust-cbindgen-0.14) 967 ("rust-cbindgen" ,rust-cbindgen-0.19)
947 ("llvm" ,llvm) 968 ("llvm" ,llvm-11)
948 ("clang" ,clang) 969 ("clang" ,clang-11)
949 ("perl" ,perl) 970 ("perl" ,perl)
950 ("node" ,node) 971 ("node" ,node)
951 ("python" ,python) 972 ("python" ,python)
@@ -954,14 +975,15 @@ in C/C++.")
954 ("yasm" ,yasm) 975 ("yasm" ,yasm)
955 ("nasm" ,nasm) ; XXX FIXME: only needed on x86_64 and i686 976 ("nasm" ,nasm) ; XXX FIXME: only needed on x86_64 and i686
956 ("pkg-config" ,pkg-config) 977 ("pkg-config" ,pkg-config)
957 ("autoconf" ,autoconf-2.13) 978 ("m4" ,m4)
958 ("which" ,which))) 979 ("which" ,which)))
959 (arguments 980 (arguments
960 `(#:tests? #f ; no check target 981 `(#:tests? #f ;not worth the cost
961 #:out-of-source? #t ; must be built outside of the source directory
962 982
963 #:configure-flags `("--enable-default-toolkit=cairo-gtk3-wayland" 983 ;; Some dynamic lib was determined at runtime, so rpath check may fail.
984 #:validate-runpath? #f
964 985
986 #:configure-flags `("--enable-application=browser"
965 "--with-distribution-id=org.gnu" 987 "--with-distribution-id=org.gnu"
966 988
967 ;; Do not require addons in the global app or 989 ;; Do not require addons in the global app or
@@ -981,6 +1003,12 @@ in C/C++.")
981 "--disable-debug" 1003 "--disable-debug"
982 "--disable-debug-symbols" 1004 "--disable-debug-symbols"
983 1005
1006 "--enable-rust-simd"
1007 "--enable-release"
1008 "--enable-optimize"
1009 "--enable-strip"
1010 "--disable-elf-hack"
1011
984 ;; Clang is needed to build Stylo, Mozilla's new 1012 ;; Clang is needed to build Stylo, Mozilla's new
985 ;; CSS engine. We must specify the clang paths 1013 ;; CSS engine. We must specify the clang paths
986 ;; manually, because otherwise the Mozilla build 1014 ;; manually, because otherwise the Mozilla build
@@ -1001,7 +1029,8 @@ in C/C++.")
1001 1029
1002 ;; Avoid bundled libraries. 1030 ;; Avoid bundled libraries.
1003 "--with-system-jpeg" ; must be libjpeg-turbo 1031 "--with-system-jpeg" ; must be libjpeg-turbo
1004 ;; UNBUNDLE-ME! "--with-system-zlib" 1032 "--with-system-png" ; must be libpng-apng
1033 "--with-system-zlib"
1005 ;; UNBUNDLE-ME! "--with-system-bz2" 1034 ;; UNBUNDLE-ME! "--with-system-bz2"
1006 ;; UNBUNDLE-ME! "--with-system-libevent" 1035 ;; UNBUNDLE-ME! "--with-system-libevent"
1007 ;; UNBUNDLE-ME! "--with-system-ogg" 1036 ;; UNBUNDLE-ME! "--with-system-ogg"
@@ -1021,26 +1050,14 @@ in C/C++.")
1021 "--enable-system-pixman" 1050 "--enable-system-pixman"
1022 "--enable-system-ffi" 1051 "--enable-system-ffi"
1023 ;; UNBUNDLE-ME! "--enable-system-sqlite" 1052 ;; UNBUNDLE-ME! "--enable-system-sqlite"
1024
1025 ;; Fails with "--with-system-png won't work because
1026 ;; the system's libpng doesn't have APNG support".
1027 ;; According to
1028 ;; http://sourceforge.net/projects/libpng-apng/ ,
1029 ;; "the Animated Portable Network Graphics (APNG)
1030 ;; is an unofficial extension of the Portable
1031 ;; Network Graphics (PNG) format";
1032 ;; we probably do not wish to support it.
1033 ;; "--with-system-png"
1034 ) 1053 )
1035 1054
1036 #:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums' 1055 #:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
1037 1056
1038 #:modules ((ice-9 ftw) 1057 #:modules ((ice-9 ftw)
1039 (ice-9 rdelim)
1040 (ice-9 regex)
1041 (ice-9 match) 1058 (ice-9 match)
1042 (srfi srfi-34) 1059 (srfi srfi-1)
1043 (srfi srfi-35) 1060 (srfi srfi-26)
1044 (rnrs bytevectors) 1061 (rnrs bytevectors)
1045 (rnrs io ports) 1062 (rnrs io ports)
1046 (guix elf) 1063 (guix elf)
@@ -1112,22 +1129,7 @@ in C/C++.")
1112 ;; UNBUNDLE-ME! "db/sqlite3" 1129 ;; UNBUNDLE-ME! "db/sqlite3"
1113 )) 1130 ))
1114 #t)) 1131 #t))
1115 (add-after 'remove-bundled-libraries 'link-libxul-with-libraries 1132 (add-after 'remove-bundled-libraries 'fix-ffmpeg-runtime-linker
1116 (lambda _
1117 ;; libxul.so dynamically opens libraries, so here we explicitly
1118 ;; link them into libxul.so instead.
1119 ;;
1120 ;; TODO: It might be preferable to patch in absolute file names in
1121 ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
1122 ;; work. More investigation is needed.
1123 (substitute* "toolkit/library/moz.build"
1124 (("^# This library needs to be last" all)
1125 (string-append "OS_LIBS += [
1126 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
1127 'avcodec', 'avutil', 'pulse' ]\n\n"
1128 all)))
1129 #t))
1130 (add-after 'link-libxul-with-libraries 'fix-ffmpeg-runtime-linker
1131 (lambda* (#:key inputs #:allow-other-keys) 1133 (lambda* (#:key inputs #:allow-other-keys)
1132 (let* ((ffmpeg (assoc-ref inputs "ffmpeg")) 1134 (let* ((ffmpeg (assoc-ref inputs "ffmpeg"))
1133 (libavcodec (string-append ffmpeg "/lib/libavcodec.so"))) 1135 (libavcodec (string-append ffmpeg "/lib/libavcodec.so")))
@@ -1135,31 +1137,37 @@ in C/C++.")
1135 (substitute* "dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp" 1137 (substitute* "dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp"
1136 (("libavcodec\\.so") 1138 (("libavcodec\\.so")
1137 libavcodec)) 1139 libavcodec))
1138 ;; Populate the sandbox read-path whitelist as needed by ffmpeg.
1139 (let* ((mime-info (assoc-ref inputs "shared-mime-info"))
1140 (libavcodec-runpath (call-with-input-file libavcodec
1141 (compose elf-dynamic-info-runpath
1142 elf-dynamic-info
1143 parse-elf
1144 get-bytevector-all)))
1145 (whitelist (cons (string-append mime-info "/share/mime/")
1146 (map (lambda (dir)
1147 (string-append dir "/"))
1148 libavcodec-runpath)))
1149 (whitelist-string (string-join whitelist ","))
1150 (port (open-file "browser/app/profile/icecat.js" "a")))
1151 (format #t "setting 'security.sandbox.content.read_path_whitelist' to '~a'~%"
1152 whitelist-string)
1153 (format port "~%pref(\"security.sandbox.content.read_path_whitelist\", ~S);~%"
1154 whitelist-string)
1155 (close-output-port port))
1156 #t))) 1140 #t)))
1157 (replace 'bootstrap 1141 (add-after 'fix-ffmpeg-runtime-linker 'build-sandbox-whitelist
1158 (lambda _ 1142 (lambda* (#:key inputs #:allow-other-keys)
1159 (invoke "sh" "-c" "autoconf old-configure.in > old-configure") 1143 (define (runpath-of lib)
1160 ;; 'configure' must be newer than 'old-configure.in', or else the 1144 (call-with-input-file lib
1161 ;; build system will raise an alarm and abort. 1145 (compose elf-dynamic-info-runpath
1162 (invoke "touch" "configure"))) 1146 elf-dynamic-info
1147 parse-elf
1148 get-bytevector-all)))
1149 (define (runpaths-of-input label)
1150 (let* ((dir (string-append (assoc-ref inputs label) "/lib"))
1151 (libs (find-files dir "\\.so$")))
1152 (append-map runpath-of libs)))
1153 ;; Populate the sandbox read-path whitelist as needed by ffmpeg.
1154 (let* ((whitelist
1155 (map (cut string-append <> "/")
1156 (delete-duplicates
1157 `(,(string-append (assoc-ref inputs "shared-mime-info")
1158 "/share/mime")
1159 ,(string-append (assoc-ref inputs "font-dejavu")
1160 "/share/fonts")
1161 ,@(append-map runpaths-of-input
1162 '("mesa" "ffmpeg"))))))
1163 (whitelist-string (string-join whitelist ","))
1164 (port (open-file "browser/app/profile/icecat.js" "a")))
1165 (format #t "setting 'security.sandbox.content.read_path_whitelist' to '~a'~%"
1166 whitelist-string)
1167 (format port "~%pref(\"security.sandbox.content.read_path_whitelist\", ~S);~%"
1168 whitelist-string)
1169 (close-output-port port))
1170 #t))
1163 (add-after 'patch-source-shebangs 'patch-cargo-checksums 1171 (add-after 'patch-source-shebangs 'patch-cargo-checksums
1164 (lambda _ 1172 (lambda _
1165 (use-modules (guix build cargo-utils)) 1173 (use-modules (guix build cargo-utils))
@@ -1190,6 +1198,7 @@ in C/C++.")
1190 "security/manager/ssl" 1198 "security/manager/ssl"
1191 "build"))) 1199 "build")))
1192 #t)) 1200 #t))
1201 (delete 'bootstrap)
1193 (replace 'configure 1202 (replace 'configure
1194 ;; configure does not work followed by both "SHELL=..." and 1203 ;; configure does not work followed by both "SHELL=..." and
1195 ;; "CONFIG_SHELL=..."; set environment variables instead 1204 ;; "CONFIG_SHELL=..."; set environment variables instead
@@ -1197,57 +1206,88 @@ in C/C++.")
1197 (let* ((out (assoc-ref outputs "out")) 1206 (let* ((out (assoc-ref outputs "out"))
1198 (bash (which "bash")) 1207 (bash (which "bash"))
1199 (abs-srcdir (getcwd)) 1208 (abs-srcdir (getcwd))
1200 (srcdir (string-append "../" (basename abs-srcdir)))
1201 (flags `(,(string-append "--prefix=" out) 1209 (flags `(,(string-append "--prefix=" out)
1202 ,(string-append "--with-l10n-base=" 1210 ,(string-append "--with-l10n-base="
1203 abs-srcdir "/l10n") 1211 abs-srcdir "/l10n")
1204 ,@configure-flags))) 1212 ,@configure-flags)))
1205 (setenv "SHELL" bash) 1213 (setenv "SHELL" bash)
1206 (setenv "CONFIG_SHELL" bash) 1214 (setenv "CONFIG_SHELL" bash)
1207 (setenv "AUTOCONF" (which "autoconf")) ; must be autoconf-2.13 1215
1208 (setenv "CC" "gcc") ; apparently needed when Stylo is enabled 1216 (setenv "AR" "llvm-ar")
1209 (setenv "MOZ_BUILD_DATE" ,%icecat-build-id) ; avoid timestamp 1217 (setenv "NM" "llvm-nm")
1218 (setenv "CC" "clang")
1219 (setenv "CXX" "clang++")
1210 (setenv "LDFLAGS" (string-append "-Wl,-rpath=" 1220 (setenv "LDFLAGS" (string-append "-Wl,-rpath="
1211 (assoc-ref outputs "out") 1221 (assoc-ref outputs "out")
1212 "/lib/icecat")) 1222 "/lib/icecat"))
1213 (mkdir "../build") 1223
1214 (chdir "../build") 1224 (setenv "MACH_USE_SYSTEM_PYTHON" "1")
1225 (setenv "MOZ_NOSPAM" "1")
1226 (setenv "MOZ_BUILD_DATE" ,%icecat-build-id) ; avoid timestamp
1227
1215 (format #t "build directory: ~s~%" (getcwd)) 1228 (format #t "build directory: ~s~%" (getcwd))
1216 (format #t "configure flags: ~s~%" flags) 1229 (format #t "configure flags: ~s~%" flags)
1217 (apply invoke bash 1230
1218 (string-append srcdir "/configure") 1231 (call-with-output-file "mozconfig"
1219 flags)))) 1232 (lambda (out)
1233 (for-each (lambda (flag)
1234 (format out "ac_add_options ~a\n" flag))
1235 flags)))
1236
1237 (invoke "./mach" "configure"))))
1220 (replace 'build 1238 (replace 'build
1221 ;; The build system often spuriously fails. See 1239 (lambda* (#:key (make-flags '()) (parallel-build? #t)
1222 ;; <https://bugs.gentoo.org/show_bug.cgi?id=680934>. To 1240 #:allow-other-keys)
1223 ;; work around this, we try the standard 'build' phase up 1241 (apply invoke "./mach" "build"
1224 ;; to 5 times. 1242 ;; mach will use parallel build if possible by default
1225 (lambda args 1243 `(,@(if parallel-build?
1226 (let ((build (assoc-ref %standard-phases 'build))) 1244 '()
1227 (let retry ((remaining-attempts 5)) 1245 '("-j1"))
1228 (if (= remaining-attempts 1) 1246 ,@make-flags))))
1229 (apply build args)
1230 (guard (c ((invoke-error? c)
1231 (format #t "~%Retrying build! (~a attempts remaining)~%~%"
1232 (- remaining-attempts 1))
1233 (force-output)
1234 (retry (- remaining-attempts 1))))
1235 (apply build args)))))))
1236 (add-after 'build 'neutralise-store-references 1247 (add-after 'build 'neutralise-store-references
1237 (lambda _ 1248 (lambda _
1238 ;; Mangle the store references to compilers & other build tools in 1249 ;; Mangle the store references to compilers & other build tools in
1239 ;; about:buildconfig, reducing IceCat's closure by 1 GiB on x86-64. 1250 ;; about:buildconfig, reducing IceCat's closure by 1 GiB on x86-64.
1240 (substitute* 1251 (let* ((obj-dir (match (scandir "." (cut string-prefix? "obj-" <>))
1241 "dist/bin/chrome/toolkit/content/global/buildconfig.html" 1252 ((dir) dir)))
1242 (((format #f "(~a/)([0-9a-df-np-sv-z]{32})" 1253 (file (string-append
1243 (regexp-quote (%store-directory))) 1254 obj-dir
1244 _ store hash) 1255 "/dist/bin/chrome/toolkit/content/global/buildconfig.html")))
1245 (string-append store 1256 (substitute* file
1246 (string-take hash 8) 1257 (("[0-9a-df-np-sv-z]{32}" hash)
1247 "<!-- Guix: not a runtime dependency -->" 1258 (string-append (string-take hash 8)
1248 (string-drop hash 8)))) 1259 "<!-- Guix: not a runtime dependency -->"
1260 (string-drop hash 8)))))
1249 #t)) 1261 #t))
1250 (add-before 'configure 'install-desktop-entry 1262 (replace 'install
1263 (lambda _ (invoke "./mach" "install")))
1264 (add-after 'install 'wrap-program
1265 (lambda* (#:key inputs outputs #:allow-other-keys)
1266 (let* ((out (assoc-ref outputs "out"))
1267 (lib (string-append out "/lib"))
1268 (gtk (assoc-ref inputs "gtk+"))
1269 (gtk-share (string-append gtk "/share"))
1270 (ld-libs (map (lambda (label)
1271 (string-append (assoc-ref inputs label)
1272 "/lib"))
1273 '("libpng-apng"
1274 "libxscrnsaver"
1275 "mesa"
1276 "pciutils"
1277 "mit-krb5"
1278 "eudev"
1279 "pulseaudio"
1280 ;; For the integration of native notifications
1281 "libnotify"))))
1282 (wrap-program (car (find-files lib "^icecat$"))
1283 `("XDG_DATA_DIRS" prefix (,gtk-share))
1284 ;; The following line is commented out because the icecat
1285 ;; package on guix has been observed to be unstable when
1286 ;; using wayland, and the bundled extensions stop working.
1287 ;; `("MOZ_ENABLE_WAYLAND" = ("1"))
1288 `("LD_LIBRARY_PATH" prefix ,ld-libs))
1289 #t)))
1290 (add-after 'wrap-program 'install-desktop-entry
1251 (lambda* (#:key outputs #:allow-other-keys) 1291 (lambda* (#:key outputs #:allow-other-keys)
1252 ;; Install the '.desktop' file. 1292 ;; Install the '.desktop' file.
1253 (let* ((desktop-file "taskcluster/docker/icecat-snap/icecat.desktop") 1293 (let* ((desktop-file "taskcluster/docker/icecat-snap/icecat.desktop")
@@ -1275,30 +1315,7 @@ in C/C++.")
1275 '("default16.png" "default22.png" "default24.png" 1315 '("default16.png" "default22.png" "default24.png"
1276 "default32.png" "default48.png" "content/icon64.png" 1316 "default32.png" "default48.png" "content/icon64.png"
1277 "mozicon128.png" "default256.png")) 1317 "mozicon128.png" "default256.png"))
1278 #t)))) 1318 #t)))))))
1279 ;; This fixes the file chooser crash that happens with GTK 3.
1280 (add-after 'install 'wrap-program
1281 (lambda* (#:key inputs outputs #:allow-other-keys)
1282 (let* ((out (assoc-ref outputs "out"))
1283 (lib (string-append out "/lib"))
1284 (gtk (assoc-ref inputs "gtk+"))
1285 (gtk-share (string-append gtk "/share"))
1286 (ld-libs (map (lambda (lib)
1287 (string-append (assoc-ref inputs lib)
1288 "/lib"))
1289 '("libxscrnsaver"
1290 "mesa"
1291 "mit-krb5"
1292 "eudev"
1293 "pulseaudio"))))
1294 (wrap-program (car (find-files lib "^icecat$"))
1295 `("XDG_DATA_DIRS" prefix (,gtk-share))
1296 ;; The following line is commented out because the icecat
1297 ;; package on guix has been observed to be unstable when
1298 ;; using wayland, and the bundled extensions stop working.
1299 ;; `("MOZ_ENABLE_WAYLAND" = ("1"))
1300 `("LD_LIBRARY_PATH" prefix ,ld-libs))
1301 #t))))))
1302 (home-page "https://www.gnu.org/software/gnuzilla/") 1319 (home-page "https://www.gnu.org/software/gnuzilla/")
1303 (synopsis "Entirely free browser derived from Mozilla Firefox") 1320 (synopsis "Entirely free browser derived from Mozilla Firefox")
1304 (description 1321 (description
@@ -1306,7 +1323,7 @@ in C/C++.")
1306software, which does not recommend non-free plugins and addons. It also 1323software, which does not recommend non-free plugins and addons. It also
1307features built-in privacy-protecting features. 1324features built-in privacy-protecting features.
1308 1325
1309WARNING: IceCat 78 has not yet been released by the upstream IceCat project. 1326WARNING: IceCat 91 has not yet been released by the upstream IceCat project.
1310This is a preview release, and does not currently meet the privacy-respecting 1327This is a preview release, and does not currently meet the privacy-respecting
1311standards of the IceCat project.") 1328standards of the IceCat project.")
1312 (license license:mpl2.0) ;and others, see toolkit/content/license.html 1329 (license license:mpl2.0) ;and others, see toolkit/content/license.html
@@ -1315,13 +1332,290 @@ standards of the IceCat project.")
1315 (cpe-name . "firefox_esr") 1332 (cpe-name . "firefox_esr")
1316 (cpe-version . ,(first (string-split version #\-))))))) 1333 (cpe-version . ,(first (string-split version #\-)))))))
1317 1334
1335(define mozilla-78-compare-locales
1336 (origin
1337 (method hg-fetch)
1338 (uri (hg-reference
1339 (url "https://hg.mozilla.org/l10n/compare-locales/")
1340 (changeset "RELEASE_8_0_0")))
1341 (file-name "mozilla-compare-locales")
1342 (sha256 (base32 "0052wq92sg4i776x407b5838jx9h3phl9xy69m2q34f31n3gdyk2"))))
1343
1344(define all-mozilla-78-locales
1345 (mozilla-locales
1346 ;; sha256 changeset locale
1347 ;;---------------------------------------------------------------------------
1348 ("1q1p7nl97478hkf1msbbcdh98k6fn87xwqihbw8np00ll5gk9k4v" "97cf3c155484" "ach")
1349 ("0sajpblp639l448xywx7xlybjr5dm0rfrzx511a8pa9wn7dma4mf" "46929b4dda4e" "af")
1350 ("04s756aaf1yyli1dn1vfdjymgyjs1pz2n7jvz76j27x4nzdgss7l" "96ffd2b04ba3" "an")
1351 ("16nw7slm7irsnjf81r6zl273kbzri8sdbimzgzxwm0vh6xr61rgs" "1c4231166ddf" "ar")
1352 ("0i0qrj4j8zjv55cisbmr21dp8mz933hc9wkpn3abz5k5pn84gpry" "bc4384b8be78" "ast")
1353 ("1r77mmwg9x1jfa7g5lqa31rgyfrnix1zj80ibn5rq9gyhhsdrwbd" "dd56aead51fa" "az")
1354 ("1kzjpy5bnvps8di72ksynhbhc9bpw1ml6hvphm74z8dz55ai4c18" "9d2bff64ddfb" "be")
1355 ("1fygvjgph3siknfm7l0fh9y4ava72z1rxkip1zgmcdgq7jz8wzpf" "3808f4fe4db6" "bg")
1356 ("1x9nlqia441xh04rhkmkw6qrgpwnyqw0grrf5n2qw96939wnmgl7" "5ca8752ed8df" "bn")
1357 ("18yyxqzab44bgqx7h052d5nxyhv0l5bidgr16z1b3ak2crsfyx9q" "4c5d30ca9bf2" "br")
1358 ("11bschjz7pgsm4r1qan5l4s3nkzm5jb0kivpp186wd1xsjci5bjb" "cf2478a7eae1" "bs")
1359 ("12bak64nl6qi092l55xv330vh38mfsicrrf4wi693nn7zqb3mbpw" "4aa2cc349211" "ca")
1360 ("0p97d7pnxqs971rr5c57i6cw3mx1mp3iasa0xdmdk0zpz9pjd3s4" "806914072144" "ca-valencia")
1361 ("1rligf98h9r16mw3r3n5jalzi74xn2dnh6hkiixp7s2bvhjicwa4" "db2163383129" "cak")
1362 ("18y5j8ljh72mj2nbx0m64mi3fyjbwyx992i004sv3zvs4d4z18w4" "d1d09eedddde" "cs")
1363 ("12i4m9q6f8sl8arm8ja4gs4sl9m59p3kddlqi68srpz9mk66rqxz" "1caf58c64227" "cy")
1364 ("16wacsd23zd4j0yi6vbj033wylia8hlpswx949x5hy1h9817j4vn" "9ef3b56aa243" "da")
1365 ("1ddxnqpfi1wnciwmzkvvjinb51h22bg70r0dn7db17q64p4271rk" "a050b0eaec0a" "de")
1366 ("0gw5h52rw3bc2lwffnv845sjwwj22gmabchmpa1rw2y6087dc7zk" "613135cb0759" "dsb")
1367 ("0v17da37w1kbs73i6xql4c9xng6rfachyylpy3w8hpibpvi7i30n" "903db7c76b31" "el")
1368 ("0ky1nj4kp070nriw0igsa64l39plcv2365zl8lqpbydyp6clwc3m" "6bb74673e9aa" "en-CA")
1369 ("15jck6si2l4h5lrs8zjx56y97p70njpi26nnq6xfmvj1dk5qb4g2" "c06bd83a9295" "en-GB")
1370 ("1gc400n8j8qk70vdw7fkf4m9yviia35cmj6361pxnyvsjrgm4qvm" "ae0fda5114c4" "eo")
1371 ("0y01lahdrd3krsh6nrr3iw36r2x4advh5qw54vf92w11l3aiyvfz" "0c294dc9ce40" "es-AR")
1372 ("16jjbsfa62dxk36ccziv7nmh26c1s0b05960in6zs5nnfrv4yh35" "7c30b2981fb4" "es-CL")
1373 ("0qh8c8f8dsv1v56n1mcpn84l39bpnqfl8v8iacq12zh322srr549" "ad1444f4f833" "es-ES")
1374 ("1vh3hm5r4ch6mk3ymbk12b9rppwc75fmbi0i7cml82kxsi77bzw5" "0a26cdb23536" "es-MX")
1375 ("159l92jxx48lgba1g8ig3mdzhwsf3jpg3nx1g9blq4majk5hqr6q" "65a38a830795" "et")
1376 ("1ha8y1wbgb66dqm26x1q2xwygy7bblkjz40y9vh5d2qlpr3fn0av" "21e0930b221d" "eu")
1377 ("0rq4pcw6klm0bbljm1wdfvna8bpa35cm47hh2s63i2xdax4scahf" "5a4bb020cf09" "fa")
1378 ("1py2594gsvpgrxnplz278ffb7grsf384kzjskrl1zyps0jw8fb1x" "4a4f712cd4aa" "ff")
1379 ("1dyd55ngsglp1w2gh0yaacwb0vsq23gdvnj76f2x6g39h1li9s0z" "9c51cd915e2b" "fi")
1380 ("0kimwivpq6pr63jh1k9fszsv8bi8vns3scg76mmnvbhh2ca8q7wj" "4f9e24a696ee" "fr")
1381 ("1sbbnnp12lgy5qan2kix02942830b1969bd7jxrv7piwqfch9i06" "9e21a0eeb5b1" "fy-NL")
1382 ("0dsvvyfrzkx5h44gqgdci7arb8h4lq48w20cnr8fc7j17grvnkzz" "999a995bc09d" "ga-IE")
1383 ("1487msbsgrfzmyijhf6a4wbqdjpd7b7ki9nwrjjjjlnbw0h0ljpb" "6a9ddcab3240" "gd")
1384 ("1kzc4fwr18kgisdzba2acj1ag8mxbifqpk5p30jv68nmvqfsvl8d" "51eb5e352db9" "gl")
1385 ("13gy3wn44kcxr7j3sbl69fp415875f4vb0gm91hx0fysqlvryhcs" "b9de1ffe3224" "gn")
1386 ("0w5nvzpjn5vr35c1852rlff581vpy71nc096cz125852kyqkzkc3" "5b3307475ada" "gu-IN")
1387 ("1ycakc4qpy9vcy50j3ricryjfnjr9v3a5ijj6bbfl4y6aks157fy" "c742df968ffd" "he")
1388 ("1b2jf83c500wm5wcdnijq0b7y4m8n6271smq8pygahn5nq17f0gq" "1a3039a52b8a" "hi-IN")
1389 ("19bbw8ix5m83cf4yarcmjl7jqa8xfabwqnh3nj6vi52rwvn7whk5" "8dc50e269ef3" "hr")
1390 ("12rrsvgg6bb2h8fhni7jbx8pv983q8ym5fhfjim957n9q2yp5db6" "67e40f48dec7" "hsb")
1391 ("0apyh713p3hrlj8041xwblcssahbmsqp9v9hbmb50ayf4z850kr1" "40073a597b1b" "hu")
1392 ("0q0r076lq250d3vmnz9d92wj137c2v8i362c2avmkgp5zr3mcl0z" "2ea33335afdb" "hy-AM")
1393 ("0qza33gdc1i9259dwd2f7vd78s0a6rg34aqdkhcn7f2l6ybw6xd6" "930041db15eb" "ia")
1394 ("1211h0gp7gianh3qf76w04gfzk4n2bnyc9i8dviyz0vh4cjbx11m" "08811a49b41c" "id")
1395 ("12lcr841g1j7453s7gb51vrvxmshx4ha3h1jx4vh8wr891xv8l6a" "2f7a8d31e0ba" "is")
1396 ("1x585g0r2kcv0d3phnxx85bk5g0pi1yl0hwp4idv19yc9hslr04s" "188357cc04b4" "it")
1397 ("09v35g9v7j6x0p1hggydm3a1rmq2fh4z7g1l88z3w5k6wq2nhj1b" "45cee0ba4771" "ja")
1398 ("0prs3vycfvvaffjigdgyxiq41ak2rc34lnan5a6cwdqjgy7z450s" "d60a19d9bf17" "ja-JP-mac")
1399 ("1nskzm8rgczrbgcxlzzq5zqdfd456ad0cylq27nf0wjiyq6kjzcm" "00cb00e78672" "ka")
1400 ("0g6zznmhiam172nm7g2qzfpk415mna8kiihm73z2sdns64xb3ymg" "77a293a4bced" "kab")
1401 ("17dld9lrym7rpvpvnkssivp4wx1f11zpk86wczbq1h52qgd70p55" "2c9b33a56d5d" "kk")
1402 ("1nlzl8930c8ql3yq425wyqlxvq8arrjv20xpm5g7yfxd54av89ac" "9cddd42af05c" "km")
1403 ("07hkrcdksvrqk816yimd036dlw15nc4sjk4gmw16ywbp093v0mqq" "e0c2969a8398" "kn")
1404 ("08aqggvk3qbv5bzks9i1iba9akhkpm01d2c9k0zf41mpr2r5yfg2" "827567d0dafc" "ko")
1405 ("0vagaiwy80bs1k3gkacshlzb5zchkcshx0ypwirvayc63sw4yl8l" "694b2a24e868" "lij")
1406 ("1r43kp1kzahrbza0hiyavqplk9h08pzsb6rpjy79jr6l1iqb89sy" "d6728db7e060" "lt")
1407 ("0sq2wbsj79xl7fi454k6q5xdhxyck1whjz315rv37vphqpx86b9b" "61e9b33f4d94" "lv")
1408 ("0q8jxg1af22hs9wjdf0jd3bqk4rafxyzvsjl35k75am7l2y1fl3c" "9e482f6dd72c" "mk")
1409 ("1zsfzjrzbc58d30a9yz12h5vphywgpw8xg6y6zn3677a785dvr20" "1fd2763336a4" "mr")
1410 ("1rzygkkpn1a59daygd3hdaqph2np6sqvpgh68j0xr4il958ymnsm" "67ddab62dab4" "ms")
1411 ("16jp6w5gizfxs7jvncg3ly13m59vqvh4rlmjd0q23m5g5ff9sklc" "3ed015b51bf3" "my")
1412 ("1wfv023j67lb4iyf49fsknwm4z3xy0xqcf25b2nzanggxj26n01x" "d01801233a8f" "nb-NO")
1413 ("1946vfia58vbjfippb5pfsskbjj95w7hb340smn6ry2vmza99mxp" "582defb08fb2" "ne-NP")
1414 ("12w5ywh4c3s55y3zqc48cp1gcpwwjg444yfh1bghhhb9ni1xkh5i" "05f6359a29a6" "nl")
1415 ("17jb076320cgkw1ypwmws2vjxsqlv2ww8aaisa3j334vbrw1m4zx" "50b41a1ddded" "nn-NO")
1416 ("1y840j0v5zdgj94cbacy6j1snf44rynmzxq3yk8i26arcar62akl" "a6a138531a44" "oc")
1417 ("0jq1hq4xhqxpa26r8pb1bgbaljgfkhn9l6p5pbnslkllpbh70q6l" "e70a3afaef25" "pa-IN")
1418 ("1hih138skwy2gb8q10ngg6zalrk3aa3d549mg79gqzxbi5zy19fw" "e035f33389eb" "pl")
1419 ("1hhif4hx4k351wm1bzykzycfzb5q8msxmiwh5r1cy32rh8wkxwhh" "54098495f37f" "pt-BR")
1420 ("0gkjs12rxjml1m3mljskpz1gr6aph0c31nwpwdqybfg54w9qslib" "3fdf021f624e" "pt-PT")
1421 ("0anyvwd9v6mr8y3ww33s6qnxkawqn5lz65vrxx3m3kzky63ai1xk" "794f9374eb87" "rm")
1422 ("1p4drj25gsfv7lwgm5saazh38iqrh53952n8i4bmxpn0nadbm2n5" "71ce18bcf6cc" "ro")
1423 ("17yssf4axd3zvncl4ka4wkfnwcn0z0arp3390vb9cps67na29p36" "3a9587227699" "ru")
1424 ("0xk6rksspcw1222v4rgk5a6gzrpx64k29hm7p9qkqwd70s34yj46" "c020582a72ce" "si")
1425 ("1ax5ibydyn7sj208r66zcxlcr8dxdqrw28vqyjif4jx583rp4lfp" "745a699b7f51" "sk")
1426 ("13rin7hm1dv8g0hbcv8mp2hiwpk1k5bhzvkqpqajkkik4lx523mc" "8e437e2351ef" "sl")
1427 ("0yh5jkl5zw3f7x1w2w6zfj3dyvcl4wj1zv4di7qsq2nl2yyizf7x" "2d99e2eff94f" "son")
1428 ("0vzq7s27jsdbw5k59wfykysg1kd8w229ab5d4zjdf30l59igkahh" "69bbdf07bd80" "sq")
1429 ("1mwivvs8vrk6vjq6i33kwlrlisra7dy35521ayps9p2rz2dll4rr" "215df5c5125c" "sr")
1430 ("0g97yz1rg5cfflj8vvq3sqliyvm06x818z9yldfh5rjg1y6n9fjd" "8be00a1a50d4" "sv-SE")
1431 ("0ii02jn3lh2i6d0s95whx9aj6w3x8axc7w1rlzj0lc2s9n52krz3" "170a84339dbe" "ta")
1432 ("1ss7symad2crapxjqc0xhc0n17l79r5vf7flvkgk7npjky4vb7nv" "72a79a304f7f" "te")
1433 ("11iqmg8zamgscnvs4n2xpw3g9azn6w38qs313wiwm86pyx6694ss" "8e91ce3064c5" "th")
1434 ("1zgkvn9flb8by62ip9r3gmpgxwgkww1zhml5mwa0djq3ppfdgi1c" "0f914d0cda56" "tl")
1435 ("1filkhdak6dbrd83q602x1qw1703nlm53nm9gcyab8s16gsx6ylz" "62ca6a8eaeba" "tr")
1436 ("0cgagdy0ixprk3knczdmkqxkmx4ybmshhh0956kxbd0iab0dfcf6" "f110ccac4cde" "trs")
1437 ("1f1ghk67zwnwc5x3nk82vcv94nf8glngkfya1hg074q3088sj9pa" "56c0102d5f1c" "uk")
1438 ("0iyw1b2jjylkdwxv9sxvj4ikxl64sx612b2dvvmf1di8bw86w74r" "7d53bce5ae98" "ur")
1439 ("1q83cp5pfgs8l03zirwi8r5qp8qyh4zvxdx1ilgaqqlyg42yql7c" "9b500e1a054d" "uz")
1440 ("1d4nkybz2hk64ay04k965b9lc5nhhpmzcs5ww3b6q4n93rf9c2z7" "2a000025928a" "vi")
1441 ("1cnrsfnyl3sw3sxsggmjwydvphb2diy0vzknvxdhpnvq3ln18hga" "74724087c25b" "xh")
1442 ("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN")
1443 ("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW")))
1444
1445(define %icecat-78-version "78.15.0-guix0-preview1")
1446
1447(define icecat-78-source
1448 (let* ((base-version (first (string-split %icecat-78-version #\-)))
1449
1450 (major-version (first (string-split base-version #\.)))
1451 (minor-version (second (string-split base-version #\.)))
1452 (sub-version (third (string-split base-version #\.)))
1453
1454 (upstream-firefox-version (string-append base-version "esr"))
1455 (upstream-firefox-source
1456 (origin
1457 (method url-fetch)
1458 (uri (string-append
1459 "https://ftp.mozilla.org/pub/firefox/releases/"
1460 upstream-firefox-version "/source/"
1461 "firefox-" upstream-firefox-version ".source.tar.xz"))
1462 (sha256
1463 (base32
1464 "0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4"))))
1465
1466 (upstream-icecat-base-version "78.7.0") ; maybe older than base-version
1467 ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
1468 (gnuzilla-commit "abfe5eebaca3c2787f1a9505669393674493c177")
1469 (gnuzilla-source
1470 (origin
1471 (method git-fetch)
1472 (uri (git-reference
1473 (url "git://git.savannah.gnu.org/gnuzilla.git")
1474 (commit gnuzilla-commit)))
1475 (file-name (git-file-name "gnuzilla"
1476 ;;upstream-icecat-base-version
1477 (string-take gnuzilla-commit 8)))
1478 (sha256
1479 (base32
1480 "00ws3540x5whpicc5fx4k949ff73cqvajz6jp13ahn49wqdads47"))))
1481
1482 ;; 'search-patch' returns either a valid file name or #f, so wrap it
1483 ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
1484 (gnuzilla-fixes-patch
1485 (local-file (assume-valid-file-name
1486 (search-patch "icecat-use-older-reveal-hidden-html.patch"))))
1487 (makeicecat-patch
1488 (local-file (assume-valid-file-name
1489 (search-patch "icecat-78-makeicecat.patch")))))
1490
1491 (origin
1492 (method computed-origin-method)
1493 (file-name (string-append "icecat-" %icecat-78-version ".tar.xz"))
1494 (sha256 #f)
1495 (uri
1496 (delay
1497 (with-imported-modules '((guix build utils))
1498 #~(begin
1499 (use-modules (guix build utils))
1500 (let ((firefox-dir
1501 (string-append "firefox-" #$base-version))
1502 (icecat-dir
1503 (string-append "icecat-" #$%icecat-78-version)))
1504
1505 (mkdir "/tmp/bin")
1506 (set-path-environment-variable
1507 "PATH" '("bin")
1508 (list "/tmp"
1509 #+(canonical-package bash)
1510 #+(canonical-package coreutils)
1511 #+(canonical-package findutils)
1512 #+(canonical-package patch)
1513 #+(canonical-package xz)
1514 #+(canonical-package sed)
1515 #+(canonical-package grep)
1516 #+(canonical-package bzip2)
1517 #+(canonical-package gzip)
1518 #+(canonical-package tar)
1519 #+rename))
1520
1521 (symlink #+(file-append rename "/bin/rename")
1522 "/tmp/bin/prename")
1523
1524 ;; We copy the gnuzilla source directory because it is
1525 ;; read-only in 'gnuzilla-source', and the makeicecat script
1526 ;; uses "cp -a" to copy parts of it and assumes that the
1527 ;; copies will be writable.
1528 (copy-recursively #+gnuzilla-source "/tmp/gnuzilla"
1529 #:log (%make-void-port "w"))
1530
1531 (with-directory-excursion "/tmp/gnuzilla"
1532 (make-file-writable "makeicecat")
1533 (invoke "patch" "--force" "--no-backup-if-mismatch"
1534 "-p1" "--input" #+gnuzilla-fixes-patch)
1535 (invoke "patch" "--force" "--no-backup-if-mismatch"
1536 "-p1" "--input" #+makeicecat-patch)
1537 (patch-shebang "makeicecat")
1538 (substitute* "makeicecat"
1539 (("^FFMAJOR=(.*)" all ffmajor)
1540 (unless (string=? #$major-version
1541 (string-trim-both ffmajor))
1542 ;; The makeicecat script cannot be expected to work
1543 ;; properly on a different version of Firefox, even if
1544 ;; no errors occur during execution.
1545 (error "makeicecat major version mismatch"))
1546 (string-append "FFMAJOR=" #$major-version "\n"))
1547 (("^FFMINOR=.*")
1548 (string-append "FFMINOR=" #$minor-version "\n"))
1549 (("^FFSUB=.*")
1550 (string-append "FFSUB=" #$sub-version "\n"))
1551 (("^DATA=.*")
1552 "DATA=/tmp/gnuzilla/data\n")
1553 (("/bin/sed")
1554 #+(file-append (canonical-package sed) "/bin/sed"))))
1555
1556 (format #t "Unpacking upstream firefox tarball...~%")
1557 (force-output)
1558 (invoke "tar" "xf" #+upstream-firefox-source)
1559 (rename-file firefox-dir icecat-dir)
1560
1561 (with-directory-excursion icecat-dir
1562 (format #t "Populating l10n directory...~%")
1563 (force-output)
1564 (mkdir "l10n")
1565 (with-directory-excursion "l10n"
1566 (for-each
1567 (lambda (locale-dir)
1568 (let ((locale
1569 (string-drop (basename locale-dir)
1570 (+ 32 ; length of hash
1571 (string-length "-mozilla-locale-")))))
1572 (format #t " ~a~%" locale)
1573 (force-output)
1574 (copy-recursively locale-dir locale
1575 #:log (%make-void-port "w"))
1576 (for-each make-file-writable (find-files locale))
1577 (with-directory-excursion locale
1578 (when (file-exists? ".hgtags")
1579 (delete-file ".hgtags"))
1580 (mkdir-p "browser/chrome/browser/preferences")
1581 (call-with-output-file
1582 "browser/chrome/browser/preferences/advanced-scripts.dtd"
1583 (lambda (port) #f)))))
1584 '#+all-mozilla-78-locales)
1585 (copy-recursively #+mozilla-78-compare-locales
1586 "compare-locales"
1587 #:log (%make-void-port "w"))
1588 (delete-file "compare-locales/.gitignore")
1589 (delete-file "compare-locales/.hgignore")
1590 (delete-file "compare-locales/.hgtags"))
1591
1592 (format #t "Running makeicecat script...~%")
1593 (force-output)
1594 (invoke "bash" "/tmp/gnuzilla/makeicecat"))
1595
1596 (format #t "Packing IceCat source tarball...~%")
1597 (force-output)
1598 (invoke "tar" "cfa" #$output
1599 ;; Avoid non-determinism in the archive. We set the
1600 ;; mtime of files in the archive to early 1980 because
1601 ;; the build process fails if the mtime of source
1602 ;; files is pre-1980, due to the creation of zip
1603 ;; archives.
1604 "--mtime=@315619200" ; 1980-01-02 UTC
1605 "--owner=root:0"
1606 "--group=root:0"
1607 "--sort=name"
1608 icecat-dir)
1609
1610 #t))))))))
1611
1318;; Update this together with icecat! 1612;; Update this together with icecat!
1319(define %icedove-build-id "20211008000000") ;must be of the form YYYYMMDDhhmmss 1613(define %icedove-build-id "20211008000000") ;must be of the form YYYYMMDDhhmmss
1320(define-public icedove 1614(define-public icedove
1321 (package 1615 (package
1322 (name "icedove") 1616 (name "icedove")
1323 (version "78.15.0") 1617 (version "78.15.0")
1324 (source icecat-source) 1618 (source icecat-78-source)
1325 (properties 1619 (properties
1326 `((cpe-name . "thunderbird_esr"))) 1620 `((cpe-name . "thunderbird_esr")))
1327 (build-system gnu-build-system) 1621 (build-system gnu-build-system)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 6b6cc85afea..a49310c467a 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -26,6 +26,7 @@
26;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net> 26;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
27;;; Copyright © 2021 Andy Tai <atai@atai.org> 27;;; Copyright © 2021 Andy Tai <atai@atai.org>
28;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech> 28;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
29;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
29;;; 30;;;
30;;; This file is part of GNU Guix. 31;;; This file is part of GNU Guix.
31;;; 32;;;
@@ -573,7 +574,7 @@ typically encountered in feature film production.")
573 ("libxrender" ,libxrender) 574 ("libxrender" ,libxrender)
574 ("opencolorio" ,opencolorio) 575 ("opencolorio" ,opencolorio)
575 ("openimageio" ,openimageio) 576 ("openimageio" ,openimageio)
576 ("openexr" ,openexr) 577 ("openexr" ,openexr-2)
577 ("opensubdiv" ,opensubdiv) 578 ("opensubdiv" ,opensubdiv)
578 ("ilmbase" ,ilmbase) 579 ("ilmbase" ,ilmbase)
579 ("openjpeg" ,openjpeg) 580 ("openjpeg" ,openjpeg)
@@ -672,7 +673,7 @@ application can be customized via its API for Python scripting.")
672 ("libx11" ,libx11) 673 ("libx11" ,libx11)
673 ("opencolorio" ,opencolorio) 674 ("opencolorio" ,opencolorio)
674 ("openimageio" ,openimageio) 675 ("openimageio" ,openimageio)
675 ("openexr" ,openexr) 676 ("openexr" ,openexr-2)
676 ("ilmbase" ,ilmbase) 677 ("ilmbase" ,ilmbase)
677 ("openjpeg" ,openjpeg) 678 ("openjpeg" ,openjpeg)
678 ("libjpeg" ,libjpeg-turbo) 679 ("libjpeg" ,libjpeg-turbo)
@@ -800,6 +801,28 @@ many more.")
800 ;; permissive licenses. 801 ;; permissive licenses.
801 (license license:gpl3+))) 802 (license license:gpl3+)))
802 803
804(define-public imath
805 (package
806 (name "imath")
807 (version "3.1.3")
808 (source
809 (origin
810 (method git-fetch)
811 (uri (git-reference
812 (url "https://github.com/AcademySoftwareFoundation/Imath")
813 (commit (string-append "v" version))))
814 (file-name (git-file-name name version))
815 (sha256
816 (base32 "1nyld18mf220ghm1vidnfnn0rdns9z5i4l9s66xgd0kfdgarb31f"))))
817 (build-system cmake-build-system)
818 (home-page "https://github.com/AcademySoftwareFoundation/Imath")
819 (synopsis "Library of math operations for computer graphics")
820 (description
821 "Imath is a C++ representation of 2D and 3D vectors and matrices and other
822mathematical objects, functions, and data types common in computer graphics
823applications, including the \"half\" 16-bit floating-point type.")
824 (license license:bsd-3)))
825
803(define-public ilmbase 826(define-public ilmbase
804 (package 827 (package
805 (name "ilmbase") 828 (name "ilmbase")
@@ -1089,17 +1112,47 @@ graphics.")
1089(define-public openexr 1112(define-public openexr
1090 (package 1113 (package
1091 (name "openexr") 1114 (name "openexr")
1115 (version "3.1.2")
1116 (source
1117 (origin
1118 (method git-fetch)
1119 (uri (git-reference
1120 (url "https://github.com/AcademySoftwareFoundation/openexr")
1121 (commit (string-append "v" version))))
1122 (file-name (git-file-name name version))
1123 (sha256
1124 (base32 "0vyclrrikphwkkpyjg8kzh3qzflzk3d6xsidgqllgfdgllr9wmgv"))))
1125 (build-system cmake-build-system)
1126 (arguments
1127 '(#:phases
1128 (modify-phases %standard-phases
1129 ;; /var/tmp does not exist in the Guix build environment
1130 (add-after 'unpack 'patch-test-directory
1131 (lambda _
1132 (substitute* '("src/test/OpenEXRUtilTest/tmpDir.h"
1133 "src/test/OpenEXRFuzzTest/tmpDir.h"
1134 "src/test/OpenEXRTest/tmpDir.h"
1135 "src/test/OpenEXRCoreTest/main.cpp")
1136 (("/var/tmp") "/tmp")))))))
1137 (inputs
1138 `(("imath" ,imath)
1139 ("zlib" ,zlib)))
1140 (home-page "https://www.openexr.com/")
1141 (synopsis "High-dynamic-range file format library")
1142 (description
1143 "OpenEXR provides the specification and reference implementation of the
1144EXR file format. The purpose of EXR format is to accurately and efficiently
1145represent high-dynamic-range scene-linear image data and associated metadata,
1146with strong support for multi-part, multi-channel use cases.")
1147 (license license:bsd-3)))
1148
1149(define-public openexr-2
1150 (package
1151 (name "openexr")
1092 (version (package-version ilmbase)) 1152 (version (package-version ilmbase))
1093 (source (origin 1153 (source (origin
1094 (inherit (package-source ilmbase)) 1154 (inherit (package-source ilmbase))
1095 (file-name (git-file-name "openexr" version)) 1155 (file-name (git-file-name "openexr" version))))
1096 (modules '((guix build utils)))
1097 (snippet
1098 '(begin
1099 (substitute* (find-files "OpenEXR" "tmpDir\\.h")
1100 (("\"/var/tmp/\"")
1101 "\"/tmp/\""))
1102 #t))))
1103 (build-system cmake-build-system) 1156 (build-system cmake-build-system)
1104 (arguments 1157 (arguments
1105 `(#:phases 1158 `(#:phases
@@ -1108,6 +1161,12 @@ graphics.")
1108 (lambda _ 1161 (lambda _
1109 (chdir "OpenEXR") 1162 (chdir "OpenEXR")
1110 #t)) 1163 #t))
1164 (add-after 'change-directory 'patch-test-directory
1165 (lambda _
1166 (substitute* '("IlmImfFuzzTest/tmpDir.h"
1167 "IlmImfTest/tmpDir.h"
1168 "IlmImfUtilTest/tmpDir.h")
1169 (("/var/tmp") "/tmp"))))
1111 (add-after 'change-directory 'increase-test-timeout 1170 (add-after 'change-directory 'increase-test-timeout
1112 (lambda _ 1171 (lambda _
1113 ;; On armhf-linux, we need to override the CTest default 1172 ;; On armhf-linux, we need to override the CTest default
@@ -1133,13 +1192,10 @@ graphics.")
1133 (propagated-inputs 1192 (propagated-inputs
1134 `(("ilmbase" ,ilmbase) ;used in public headers 1193 `(("ilmbase" ,ilmbase) ;used in public headers
1135 ("zlib" ,zlib))) ;OpenEXR.pc reads "-lz" 1194 ("zlib" ,zlib))) ;OpenEXR.pc reads "-lz"
1136 (home-page "https://www.openexr.com/") 1195 (home-page (package-home-page openexr))
1137 (synopsis "High-dynamic range file format library") 1196 (synopsis (package-synopsis openexr))
1138 (description 1197 (description (package-description openexr))
1139 "OpenEXR is a high dynamic-range (HDR) image file format developed for 1198 (license (package-license openexr))))
1140use in computer imaging applications. The IlmImf C++ libraries support
1141storage of the \"EXR\" file format for storing 16-bit floating-point images.")
1142 (license license:bsd-3)))
1143 1199
1144(define-public openimageio 1200(define-public openimageio
1145 (package 1201 (package
@@ -1171,7 +1227,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
1171 ("libjpeg" ,libjpeg-turbo) 1227 ("libjpeg" ,libjpeg-turbo)
1172 ("libtiff" ,libtiff) 1228 ("libtiff" ,libtiff)
1173 ("giflib" ,giflib) 1229 ("giflib" ,giflib)
1174 ("openexr" ,openexr) 1230 ("openexr" ,openexr-2)
1175 ("ilmbase" ,ilmbase) 1231 ("ilmbase" ,ilmbase)
1176 ("pugixml" ,pugixml) 1232 ("pugixml" ,pugixml)
1177 ("python" ,python-wrapper) 1233 ("python" ,python-wrapper)
@@ -1259,6 +1315,56 @@ virtual reality, scientific visualization and modeling.")
1259 `(("libjpeg" ,libjpeg-turbo) 1315 `(("libjpeg" ,libjpeg-turbo)
1260 ,@(package-inputs openscenegraph))))) 1316 ,@(package-inputs openscenegraph)))))
1261 1317
1318(define-public gr-framework
1319 (package
1320 (name "gr-framework")
1321 (version "0.58.1")
1322 (source
1323 (origin
1324 (method git-fetch)
1325 (uri (git-reference
1326 (url "https://github.com/sciapp/gr")
1327 (commit (string-append "v" version))))
1328 (file-name (git-file-name name version))
1329 (sha256
1330 (base32 "0q1rz4iyxbh0dc22y4w28ry3hr0yypdwdm6pw2zlwgjya7wkbvsw"))
1331 (modules '((guix build utils)))
1332 (snippet
1333 '(begin
1334 (delete-file-recursively "3rdparty")
1335 #t))))
1336 (build-system cmake-build-system)
1337 (arguments
1338 `(#:tests? #f)) ; no test target
1339 (inputs
1340 `(("bzip2" ,bzip2)
1341 ("cairo" ,cairo)
1342 ("fontconfig" ,fontconfig)
1343 ("ffmpeg" ,ffmpeg)
1344 ("freetype" ,freetype)
1345 ("ghostscript" ,ghostscript)
1346 ("glfw" ,glfw)
1347 ("libjpeg-turbo" ,libjpeg-turbo)
1348 ("libpng" ,libpng)
1349 ("libtiff" ,libtiff)
1350 ("libx11" ,libx11)
1351 ("libxft" ,libxft)
1352 ("libxt" ,libxt)
1353 ("pixman" ,pixman)
1354 ("qtbase" ,qtbase-5)
1355 ("qhull" ,qhull)
1356 ("zlib" ,zlib)))
1357 (home-page "https://gr-framework.org/")
1358 (synopsis "Graphics library for visualisation applications")
1359 (description "GR is a universal framework for cross-platform visualization
1360applications. It offers developers a compact, portable and consistent graphics
1361library for their programs. Applications range from publication quality 2D
1362graphs to the representation of complex 3D scenes. GR is essentially based on
1363an implementation of a @acronym{GKS, Graphical Kernel System}. As a
1364self-contained system it can quickly and easily be integrated into existing
1365applications (i.e. using the @code{ctypes} mechanism in Python or @code{ccall}
1366in Julia).")
1367 (license license:expat)))
1262 1368
1263(define-public openmw-openscenegraph 1369(define-public openmw-openscenegraph
1264 ;; OpenMW prefers its own fork of openscenegraph: 1370 ;; OpenMW prefers its own fork of openscenegraph:
@@ -1324,7 +1430,7 @@ virtual reality, scientific visualization and modeling.")
1324 ("libjpeg" ,libjpeg-turbo) 1430 ("libjpeg" ,libjpeg-turbo)
1325 ("libpng" ,libpng) 1431 ("libpng" ,libpng)
1326 ("libtiff" ,libtiff) 1432 ("libtiff" ,libtiff)
1327 ("openexr" ,openexr) 1433 ("openexr" ,openexr-2)
1328 ("sdl" ,sdl) 1434 ("sdl" ,sdl)
1329 ("zlib" ,zlib))) 1435 ("zlib" ,zlib)))
1330 (arguments 1436 (arguments
@@ -1445,7 +1551,7 @@ and is connected to the programming logic using data bindings and commands.")
1445 (arguments '(#:tests? #f)) ;no 'test' target 1551 (arguments '(#:tests? #f)) ;no 'test' target
1446 1552
1447 ;; Headers include OpenEXR and IlmBase headers. 1553 ;; Headers include OpenEXR and IlmBase headers.
1448 (propagated-inputs `(("openexr" ,openexr))) 1554 (propagated-inputs `(("openexr" ,openexr-2)))
1449 1555
1450 (home-page "http://ampasctl.sourceforge.net") 1556 (home-page "http://ampasctl.sourceforge.net")
1451 (synopsis "Color Transformation Language") 1557 (synopsis "Color Transformation Language")
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 9e7525bea5f..d6c2fb3f468 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -773,7 +773,7 @@ model to base your own plug-in on, here it is.")
773 ("mesa" ,mesa) 773 ("mesa" ,mesa)
774 ("neon" ,neon) 774 ("neon" ,neon)
775 ("openal" ,openal) 775 ("openal" ,openal)
776 ("openexr" ,openexr) 776 ("openexr" ,openexr-2)
777 ("openjpeg" ,openjpeg) 777 ("openjpeg" ,openjpeg)
778 ("openssl" ,openssl) 778 ("openssl" ,openssl)
779 ("opus" ,opus) 779 ("opus" ,opus)
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index e64055c4a5d..2bf3576d5a0 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -7,6 +7,7 @@
7;;; Copyright © 2021 Denis Carikli <GNUtoo@cyberdimension.org> 7;;; Copyright © 2021 Denis Carikli <GNUtoo@cyberdimension.org>
8;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> 8;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
9;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> 9;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
10;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
10;;; 11;;;
11;;; This file is part of GNU Guix. 12;;; This file is part of GNU Guix.
12;;; 13;;;
@@ -59,6 +60,7 @@
59 #:use-module (gnu packages xorg) 60 #:use-module (gnu packages xorg)
60 #:use-module (guix build-system cmake) 61 #:use-module (guix build-system cmake)
61 #:use-module (guix build-system gnu) 62 #:use-module (guix build-system gnu)
63 #:use-module (guix build-system meson)
62 #:use-module (guix build-system python) 64 #:use-module (guix build-system python)
63 #:use-module (guix download) 65 #:use-module (guix download)
64 #:use-module (guix git-download) 66 #:use-module (guix git-download)
@@ -568,6 +570,32 @@ MSR addresses differ (greatly) between processors, and any such modification can
568be dangerous and may void your CPU or system board's warranty.") 570be dangerous and may void your CPU or system board's warranty.")
569 (license license:gpl2))) ; cpuid.c is gpl2, {rd,wr}msr.c are gpl2+ 571 (license license:gpl2))) ; cpuid.c is gpl2, {rd,wr}msr.c are gpl2+
570 572
573(define-public openhmd
574 (package
575 (name "openhmd")
576 (version "0.3.0")
577 (source
578 (origin
579 (method git-fetch)
580 (uri (git-reference
581 (url "https://github.com/OpenHMD/OpenHMD")
582 (commit version)))
583 (file-name (git-file-name name version))
584 (sha256
585 (base32 "1hkpdl4zgycag5k8njvqpx01apxmm8m8pvhlsxgxpqiqy9a38ccg"))))
586 (build-system meson-build-system)
587 (arguments
588 `(#:tests? #f)) ; no test target although there is a test folder
589 (native-inputs
590 `(("pkg-config" ,pkg-config)))
591 (inputs
592 `(("hidapi" ,hidapi)))
593 (home-page "http://www.openhmd.net/")
594 (synopsis "API and drivers for immersive technology")
595 (description "OpenHMD aims to provide an API and drivers for immersive
596technology, such as head mounted displays with built in head tracking.")
597 (license license:boost1.0)))
598
571(define-public wavemon 599(define-public wavemon
572 (package 600 (package
573 (name "wavemon") 601 (name "wavemon")
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 16dfebb1b71..bfa2fb4cf70 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -18,6 +18,7 @@
18;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech> 18;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
19;;; Copyright © 2021 Paul Garlick <pgarlick@tourbillion-technology.com> 19;;; Copyright © 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
20;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> 20;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
21;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
21;;; 22;;;
22;;; This file is part of GNU Guix. 23;;; This file is part of GNU Guix.
23;;; 24;;;
@@ -57,6 +58,7 @@
57 #:use-module (gnu packages fontutils) 58 #:use-module (gnu packages fontutils)
58 #:use-module (gnu packages geo) 59 #:use-module (gnu packages geo)
59 #:use-module (gnu packages ghostscript) 60 #:use-module (gnu packages ghostscript)
61 #:use-module (gnu packages gimp)
60 #:use-module (gnu packages gl) 62 #:use-module (gnu packages gl)
61 #:use-module (gnu packages glib) 63 #:use-module (gnu packages glib)
62 #:use-module (gnu packages gnome) 64 #:use-module (gnu packages gnome)
@@ -161,7 +163,7 @@ licences similar to the Modified BSD licence."))))
161 ("maxflow" ,maxflow) 163 ("maxflow" ,maxflow)
162 ("niftilib" ,niftilib) 164 ("niftilib" ,niftilib)
163 ("nlopt" ,nlopt) 165 ("nlopt" ,nlopt)
164 ("openexr" ,openexr) 166 ("openexr" ,openexr-2)
165 ("python-lxml" ,python2-lxml) 167 ("python-lxml" ,python2-lxml)
166 ("vtk" ,vtk))) 168 ("vtk" ,vtk)))
167 (native-inputs 169 (native-inputs
@@ -231,7 +233,7 @@ of external libraries that provide additional functionality.")
231 ;; ocioconvert fails: error: conflicting declaration ?typedef void 233 ;; ocioconvert fails: error: conflicting declaration ?typedef void
232 ;; (* PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum, GLenum, GLfloat*) 234 ;; (* PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum, GLenum, GLfloat*)
233 `(("lcms" ,lcms) 235 `(("lcms" ,lcms)
234 ("openexr" ,openexr) 236 ("openexr" ,openexr-2)
235 ("tinyxml" ,tinyxml))) 237 ("tinyxml" ,tinyxml)))
236 (home-page "https://opencolorio.org") 238 (home-page "https://opencolorio.org")
237 (synopsis "Color management for visual effects and animation") 239 (synopsis "Color management for visual effects and animation")
@@ -635,7 +637,7 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
635 ("libwebp" ,libwebp) 637 ("libwebp" ,libwebp)
636 ("zlib" ,zlib) 638 ("zlib" ,zlib)
637 ("gtkglext" ,gtkglext) 639 ("gtkglext" ,gtkglext)
638 ("openexr" ,openexr) 640 ("openexr" ,openexr-2)
639 ("ilmbase" ,ilmbase) 641 ("ilmbase" ,ilmbase)
640 ("gtk+" ,gtk+-2) 642 ("gtk+" ,gtk+-2)
641 ("python-numpy" ,python-numpy) 643 ("python-numpy" ,python-numpy)
@@ -701,7 +703,7 @@ vision algorithms. It can be used to do things like:
701 ("libwebp" ,libwebp) 703 ("libwebp" ,libwebp)
702 ("matio" ,matio) 704 ("matio" ,matio)
703 ("niftilib" ,niftilib) 705 ("niftilib" ,niftilib)
704 ("openexr" ,openexr) 706 ("openexr" ,openexr-2)
705 ("orc" ,orc) 707 ("orc" ,orc)
706 ("pango" ,pango) 708 ("pango" ,pango)
707 ("poppler" ,poppler))) 709 ("poppler" ,poppler)))
@@ -753,7 +755,7 @@ due to its architecture which automatically parallelises the image workflows.")
753 ("libtiff" ,libtiff) 755 ("libtiff" ,libtiff)
754 ("libx11" ,libx11) 756 ("libx11" ,libx11)
755 ;;("opencv" ,opencv) ;OpenCV is currently broken in the CI 757 ;;("opencv" ,opencv) ;OpenCV is currently broken in the CI
756 ("openexr" ,openexr) 758 ("openexr" ,openexr-2)
757 ("zlib" ,zlib))) 759 ("zlib" ,zlib)))
758 (home-page "https://gmic.eu/") 760 (home-page "https://gmic.eu/")
759 (synopsis "Full-featured framework for digital image processing") 761 (synopsis "Full-featured framework for digital image processing")
@@ -801,6 +803,25 @@ including 2D color images.")
801 (assoc-ref %build-inputs "gmic") "/lib"))))) 803 (assoc-ref %build-inputs "gmic") "/lib")))))
802 (synopsis "Krita plugin for the G'MIC image processing framework"))) 804 (synopsis "Krita plugin for the G'MIC image processing framework")))
803 805
806(define-public gmic-qt-gimp
807 (package
808 (inherit gmic-qt)
809 (name "gmic-qt-gimp")
810 (inputs
811 ;; GIMP and its dependencies.
812 `(("gimp" ,gimp)
813 ("gdk-pixbuf" ,gdk-pixbuf)
814 ("cairo" ,cairo)
815 ("gegl" ,gegl)
816 ,@(package-inputs gmic-qt)))
817 (arguments
818 (substitute-keyword-arguments (package-arguments gmic-qt)
819 ((#:configure-flags flags)
820 '(list "-DGMIC_QT_HOST=gimp" "-DENABLE_DYNAMIC_LINKING=ON"
821 (string-append "-DGMIC_LIB_PATH="
822 (assoc-ref %build-inputs "gmic") "/lib")))))
823 (synopsis "GIMP plugin for the G'MIC image processing framework")))
824
804(define-public nip2 825(define-public nip2
805 (package 826 (package
806 (name "nip2") 827 (name "nip2")
@@ -840,7 +861,7 @@ including 2D color images.")
840 ("matio" ,matio) 861 ("matio" ,matio)
841 ("lcms" ,lcms) 862 ("lcms" ,lcms)
842 ("libwebp" ,libwebp) 863 ("libwebp" ,libwebp)
843 ("openexr" ,openexr) 864 ("openexr" ,openexr-2)
844 ("poppler" ,poppler) 865 ("poppler" ,poppler)
845 ("gsl" ,gsl))) 866 ("gsl" ,gsl)))
846 (native-inputs 867 (native-inputs
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 75372ecf73d..3917540744e 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -546,7 +546,7 @@ It supports JPEG, PNG and GIF formats.")
546 ("libpng" ,libpng) 546 ("libpng" ,libpng)
547 ("libjpeg" ,libjpeg-turbo) 547 ("libjpeg" ,libjpeg-turbo)
548 ("lcms" ,lcms) 548 ("lcms" ,lcms)
549 ("openexr" ,openexr) 549 ("openexr" ,openexr-2)
550 ("fftw" ,fftwf) 550 ("fftw" ,fftwf)
551 ("gsl" ,gsl) 551 ("gsl" ,gsl)
552 ("libtiff" ,libtiff))) 552 ("libtiff" ,libtiff)))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index fce2212c5df..21fba15baa7 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -11,7 +11,7 @@
11;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> 11;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
12;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr> 12;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
13;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> 13;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
14;;; Copyright © 2016, 2017, 2020 Arun Isaac <arunisaac@systemreboot.net> 14;;; Copyright © 2016, 2017, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
15;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net> 15;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
16;;; Copyright © 2017 Nikita <nikita@n0.is> 16;;; Copyright © 2017 Nikita <nikita@n0.is>
17;;; Copyright © 2017,2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com> 17;;; Copyright © 2017,2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -1168,7 +1168,7 @@ supplies a generic doubly-linked list and some string functions.")
1168 ("libraw" ,libraw) 1168 ("libraw" ,libraw)
1169 ("libtiff" ,libtiff) 1169 ("libtiff" ,libtiff)
1170 ("libwebp" ,libwebp) 1170 ("libwebp" ,libwebp)
1171 ("openexr" ,openexr) 1171 ("openexr" ,openexr-2)
1172 ("openjpeg" ,openjpeg) 1172 ("openjpeg" ,openjpeg)
1173 ("zlib" ,zlib))) 1173 ("zlib" ,zlib)))
1174 (synopsis "Library for handling popular graphics image formats") 1174 (synopsis "Library for handling popular graphics image formats")
@@ -1209,7 +1209,7 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
1209 ("libjpeg" ,libjpeg-turbo) 1209 ("libjpeg" ,libjpeg-turbo)
1210 ("libpng" ,libpng) 1210 ("libpng" ,libpng)
1211 ("libtiff" ,libtiff) 1211 ("libtiff" ,libtiff)
1212 ("openexr" ,openexr) 1212 ("openexr" ,openexr-2)
1213 ("python" ,python-wrapper) 1213 ("python" ,python-wrapper)
1214 ("python-numpy" ,python-numpy) 1214 ("python-numpy" ,python-numpy)
1215 ("zlib" ,zlib))) 1215 ("zlib" ,zlib)))
@@ -1362,18 +1362,25 @@ channels.")
1362(define-public exiv2 1362(define-public exiv2
1363 (package 1363 (package
1364 (name "exiv2") 1364 (name "exiv2")
1365 (version "0.27.4") 1365 (version "0.27.5")
1366 (source 1366 (source
1367 (origin 1367 (origin
1368 (method url-fetch) 1368 (method url-fetch)
1369 (uri (string-append "https://www.exiv2.org/builds/exiv2-" version 1369 (uri (string-append "https://www.exiv2.org/builds/exiv2-" version
1370 "-Source.tar.gz")) 1370 "-Source.tar.gz"))
1371 (sha256 1371 (sha256
1372 (base32 "0klhxkxvkzzzcqpzv8jb56pykq0gyhb6rk9vc2kzjahngjx6sdl4")))) 1372 (base32 "1qm6bvj28l42km009nc60gffn1qhngc0m2wjlhf90si3mcc8d99m"))))
1373 (build-system cmake-build-system) 1373 (build-system cmake-build-system)
1374 (arguments 1374 (arguments
1375 '(#:test-target "tests" 1375 '(#:test-target "tests"
1376 #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON"))) 1376 #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON")
1377 #:phases
1378 (modify-phases %standard-phases
1379 (add-after 'install 'delete-static-libraries
1380 (lambda* (#:key outputs #:allow-other-keys)
1381 (let* ((out (assoc-ref outputs "out"))
1382 (lib (string-append out "/lib")))
1383 (for-each delete-file (find-files lib "\\.a$"))))))))
1377 (propagated-inputs 1384 (propagated-inputs
1378 `(("expat" ,expat) 1385 `(("expat" ,expat)
1379 ("zlib" ,zlib))) 1386 ("zlib" ,zlib)))
@@ -1421,7 +1428,7 @@ and XMP metadata of images in various formats.")
1421 ("libmng" ,libmng) 1428 ("libmng" ,libmng)
1422 ("libpng" ,libpng) 1429 ("libpng" ,libpng)
1423 ("libtiff" ,libtiff) 1430 ("libtiff" ,libtiff)
1424 ("openexr" ,openexr) 1431 ("openexr" ,openexr-2)
1425 ("zlib" ,zlib))) 1432 ("zlib" ,zlib)))
1426 (synopsis "Library for manipulating many image formats") 1433 (synopsis "Library for manipulating many image formats")
1427 (description "Developer's Image Library (DevIL) is a library to develop 1434 (description "Developer's Image Library (DevIL) is a library to develop
@@ -1433,7 +1440,7 @@ convert, manipulate, filter and display a wide variety of image formats.")
1433(define-public jasper 1440(define-public jasper
1434 (package 1441 (package
1435 (name "jasper") 1442 (name "jasper")
1436 (version "2.0.32") 1443 (version "2.0.33")
1437 (source (origin 1444 (source (origin
1438 (method git-fetch) 1445 (method git-fetch)
1439 (uri (git-reference 1446 (uri (git-reference
@@ -1442,7 +1449,7 @@ convert, manipulate, filter and display a wide variety of image formats.")
1442 (file-name (git-file-name name version)) 1449 (file-name (git-file-name name version))
1443 (sha256 1450 (sha256
1444 (base32 1451 (base32
1445 "0hhggh2jxp1wn7nwzvbx2z1vi1ih8wmz4av17bljyn0c3mxjs22k")))) 1452 "0p3fj89gkhd2ys5ci75cwb6p7rvb2pf52jd8c9d4g76qp846njnx"))))
1446 (build-system cmake-build-system) 1453 (build-system cmake-build-system)
1447 (inputs 1454 (inputs
1448 `(("libjpeg" ,libjpeg-turbo))) 1455 `(("libjpeg" ,libjpeg-turbo)))
@@ -2364,7 +2371,7 @@ Wacom-style graphics tablets.")
2364(define-public phockup 2371(define-public phockup
2365 (package 2372 (package
2366 (name "phockup") 2373 (name "phockup")
2367 (version "1.5.9") 2374 (version "1.7.1")
2368 (source 2375 (source
2369 (origin 2376 (origin
2370 (method git-fetch) 2377 (method git-fetch)
@@ -2374,7 +2381,7 @@ Wacom-style graphics tablets.")
2374 (file-name (git-file-name name version)) 2381 (file-name (git-file-name name version))
2375 (sha256 2382 (sha256
2376 (base32 2383 (base32
2377 "13ajj0xch7yfqaaxbw0awxs0fz17n1rxir4gqh2wcgxjysqk1j2y")))) 2384 "0nqd89g4ppwc96gxyh9npain7ipnzj66p6n3irsvhrpi4k54h388"))))
2378 (build-system copy-build-system) 2385 (build-system copy-build-system)
2379 (arguments 2386 (arguments
2380 `(#:install-plan '(("src" "share/phockup/") 2387 `(#:install-plan '(("src" "share/phockup/")
@@ -2394,11 +2401,18 @@ Wacom-style graphics tablets.")
2394 (let ((out (assoc-ref outputs "out"))) 2401 (let ((out (assoc-ref outputs "out")))
2395 (mkdir (string-append out "/bin")) 2402 (mkdir (string-append out "/bin"))
2396 (symlink (string-append out "/share/phockup/phockup.py") 2403 (symlink (string-append out "/share/phockup/phockup.py")
2397 (string-append out "/bin/phockup"))) 2404 (string-append out "/bin/phockup")))))
2398 #t))))) 2405 (add-after 'install-bin 'wrap-program
2406 (lambda* (#:key inputs outputs #:allow-other-keys)
2407 (let ((out (assoc-ref outputs "out")))
2408 (wrap-program (string-append out "/bin/phockup")
2409 `("GUIX_PYTHONPATH" prefix
2410 ,(search-path-as-string->list
2411 (getenv "GUIX_PYTHONPATH"))))))))))
2399 (inputs 2412 (inputs
2400 `(("perl-image-exiftool" ,perl-image-exiftool) 2413 `(("perl-image-exiftool" ,perl-image-exiftool)
2401 ("python" ,python))) 2414 ("python" ,python)
2415 ("python-tqdm" ,python-tqdm)))
2402 (native-inputs 2416 (native-inputs
2403 `(("python-pytest" ,python-pytest) 2417 `(("python-pytest" ,python-pytest)
2404 ("python-pytest-mock" ,python-pytest-mock))) 2418 ("python-pytest-mock" ,python-pytest-mock)))
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 694b12adae5..49ada1aedd7 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -553,7 +553,7 @@ external server.")
553(define-public mujs 553(define-public mujs
554 (package 554 (package
555 (name "mujs") 555 (name "mujs")
556 (version "1.1.1") 556 (version "1.1.3")
557 (source 557 (source
558 (origin 558 (origin
559 (method git-fetch) 559 (method git-fetch)
@@ -562,7 +562,7 @@ external server.")
562 (commit version))) 562 (commit version)))
563 (file-name (git-file-name name version)) 563 (file-name (git-file-name name version))
564 (sha256 564 (sha256
565 (base32 "0ivqz06fq8v36p2gkjh64vgv0gm7nghds0n42vrv7vm46phdffvb")))) 565 (base32 "0qizld89qw24i9v6i2j9cxjyqn425xbiqfp1b7qfrkyxqkn0byws"))))
566 (build-system gnu-build-system) 566 (build-system gnu-build-system)
567 (arguments 567 (arguments
568 `(#:phases 568 `(#:phases
diff --git a/gnu/packages/julia-jll.scm b/gnu/packages/julia-jll.scm
index d3677d0a332..51643819ae6 100644
--- a/gnu/packages/julia-jll.scm
+++ b/gnu/packages/julia-jll.scm
@@ -36,6 +36,7 @@
36 #:use-module (gnu packages gl) 36 #:use-module (gnu packages gl)
37 #:use-module (gnu packages glib) 37 #:use-module (gnu packages glib)
38 #:use-module (gnu packages gnupg) 38 #:use-module (gnu packages gnupg)
39 #:use-module (gnu packages graphics)
39 #:use-module (gnu packages gtk) 40 #:use-module (gnu packages gtk)
40 #:use-module (gnu packages image) 41 #:use-module (gnu packages image)
41 #:use-module (gnu packages imagemagick) 42 #:use-module (gnu packages imagemagick)
@@ -522,6 +523,55 @@ rendering library.")
522 (description "This package provides a wrapper for the glib library.") 523 (description "This package provides a wrapper for the glib library.")
523 (license license:expat))) 524 (license license:expat)))
524 525
526(define-public julia-gr-jll
527 (package
528 (name "julia-gr-jll")
529 (version "0.58.1+0")
530 (source
531 (origin
532 (method git-fetch)
533 (uri (git-reference
534 (url "https://github.com/JuliaBinaryWrappers/GR_jll.jl")
535 (commit (string-append "GR-v" version))))
536 (file-name (git-file-name name version))
537 (sha256
538 (base32 "16m22n0wh86v3lh0im2pc9bg381djbmqji5hjx42j6aaz634gqiq"))))
539 (build-system julia-build-system)
540 (arguments
541 '(#:tests? #f ; no runtests
542 #:phases
543 (modify-phases %standard-phases
544 (add-after 'unpack 'override-binary-path
545 (lambda* (#:key inputs #:allow-other-keys)
546 (map
547 (lambda (wrapper)
548 (substitute* wrapper
549 (("generate_wrapper_header.*")
550 (string-append
551 "generate_wrapper_header(\"GR\", \""
552 (assoc-ref inputs "gr-framework") "\")\n"))))
553 ;; There's a Julia file for each platform, override them all
554 (find-files "src/wrappers/" "\\.jl$")))))))
555 (inputs
556 `(("gr-framework" ,gr-framework)))
557 (propagated-inputs
558 `(("julia-jllwrappers" ,julia-jllwrappers)
559 ("julia-bzip2-jll" ,julia-bzip2-jll)
560 ("julia-cairo-jll" ,julia-cairo-jll)
561 ("julia-ffmpeg-jll" ,julia-ffmpeg-jll)
562 ("julia-fontconfig-jll" ,julia-fontconfig-jll)
563 ("julia-glfw-jll" ,julia-glfw-jll)
564 ("julia-jpegturbo-jll" ,julia-jpegturbo-jll)
565 ("julia-libpng-jll" ,julia-libpng-jll)
566 ("julia-libtiff-jll" ,julia-libtiff-jll)
567 ("julia-pixman-jll" ,julia-pixman-jll)
568 ("julia-qt5base-jll" ,julia-qt5base-jll)
569 ("julia-zlib-jll" ,julia-zlib-jll)))
570 (home-page "https://github.com/JuliaBinaryWrappers/GR_jll.jl")
571 (synopsis "GR framework library wrappers")
572 (description "This package provides a wrapper for the GR framework.")
573 (license license:expat)))
574
525(define-public julia-gumbo-jll 575(define-public julia-gumbo-jll
526 (package 576 (package
527 (name "julia-gumbo-jll") 577 (name "julia-gumbo-jll")
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index c1ebc0fba13..93fadf318cc 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -561,6 +561,38 @@ can be a test-only dependency, allowing it to have potentially heavy
561dependencies, while keeping @code{ChainRulesCore.jl} as light-weight as possible.") 561dependencies, while keeping @code{ChainRulesCore.jl} as light-weight as possible.")
562 (license license:expat))) 562 (license license:expat)))
563 563
564(define-public julia-codeczlib
565 (package
566 (name "julia-codeczlib")
567 (version "0.7.0")
568 (source
569 (origin
570 (method git-fetch)
571 (uri (git-reference
572 (url "https://github.com/JuliaIO/CodecZlib.jl")
573 (commit (string-append "v" version))))
574 (file-name (git-file-name name version))
575 (sha256
576 (base32 "0xm603nylkwk4bzx66zv1g3syzrvn3jh9spdx7kvcvgszzyrrgh4"))))
577 (build-system julia-build-system)
578 (arguments
579 `(#:phases
580 (modify-phases %standard-phases
581 (add-before 'reset-gzip-timestamps 'make-files-writable
582 (lambda* (#:key outputs #:allow-other-keys)
583 (let ((out (assoc-ref outputs "out")))
584 (for-each make-file-writable
585 (find-files out "\\.gz$"))
586 #t))))))
587 (propagated-inputs
588 `(("julia-zlib-jll" ,julia-zlib-jll)
589 ("julia-transcodingstreams" ,julia-transcodingstreams)))
590 (home-page "https://github.com/JuliaIO/CodecZlib.jl")
591 (synopsis "Zlib codecs for @code{TranscodingStreams.jl}")
592 (description "This package provides zlib codecs for
593@code{TranscodingStreams.jl}.")
594 (license license:expat)))
595
564(define-public julia-colors 596(define-public julia-colors
565 (package 597 (package
566 (name "julia-colors") 598 (name "julia-colors")
@@ -624,11 +656,11 @@ color scales for graphics.")
624 (file-name (git-file-name name version)) 656 (file-name (git-file-name name version))
625 (sha256 657 (sha256
626 (base32 "0n7h70caqv7yd0khjhn90iax62r73mcif8qzkwj5b4q46li1r8ih")))) 658 (base32 "0n7h70caqv7yd0khjhn90iax62r73mcif8qzkwj5b4q46li1r8ih"))))
627 (arguments
628 '(#:tests? #f)) ;require Documenter, not packaged yet
629 (build-system julia-build-system) 659 (build-system julia-build-system)
630 (propagated-inputs 660 (propagated-inputs
631 `(("julia-fixedpointnumbers" ,julia-fixedpointnumbers))) 661 `(("julia-fixedpointnumbers" ,julia-fixedpointnumbers)))
662 (native-inputs
663 `(("julia-documenter" ,julia-documenter)))
632 (home-page "https://github.com/JuliaGraphics/ColorTypes.jl") 664 (home-page "https://github.com/JuliaGraphics/ColorTypes.jl")
633 (synopsis "Basic color types and constructor") 665 (synopsis "Basic color types and constructor")
634 (description "This minimalistic package serves as the foundation for 666 (description "This minimalistic package serves as the foundation for
@@ -806,14 +838,12 @@ for construction of objects.")
806 (sha256 838 (sha256
807 (base32 "15zbkn32v7xlz7559s0r5a0vkwmjwsswxaqpzijly4lky4jnp33d")))) 839 (base32 "15zbkn32v7xlz7559s0r5a0vkwmjwsswxaqpzijly4lky4jnp33d"))))
808 (build-system julia-build-system) 840 (build-system julia-build-system)
809 (arguments
810 `(#:tests? #f)) ; Documenter.jl not packaged yet.
811 (propagated-inputs 841 (propagated-inputs
812 `(("julia-staticarrays" ,julia-staticarrays))) 842 `(("julia-staticarrays" ,julia-staticarrays)))
813 ;(native-inputs 843 (native-inputs
814 ; `(("julia-documenter" ,julia-documenter) 844 `(("julia-documenter" ,julia-documenter)
815 ; ("julia-forwarddiff" ,julia-forwarddiff) 845 ("julia-forwarddiff" ,julia-forwarddiff)
816 ; ("julia-unitful" ,julia-unitful))) 846 ("julia-unitful" ,julia-unitful)))
817 (home-page "https://github.com/JuliaGeometry/CoordinateTransformations.jl") 847 (home-page "https://github.com/JuliaGeometry/CoordinateTransformations.jl")
818 (synopsis "Coordinate transformations in Julia") 848 (synopsis "Coordinate transformations in Julia")
819 (description "@code{CoordinateTransformations} is a Julia package to manage 849 (description "@code{CoordinateTransformations} is a Julia package to manage
@@ -1745,6 +1775,31 @@ differentiation (AD).")
1745arbitrary functions.") 1775arbitrary functions.")
1746 (license license:expat))) 1776 (license license:expat)))
1747 1777
1778(define-public julia-functors
1779 (package
1780 (name "julia-functors")
1781 (version "0.2.7")
1782 (source
1783 (origin
1784 (method git-fetch)
1785 (uri (git-reference
1786 (url "https://github.com/FluxML/Functors.jl")
1787 (commit (string-append "v" version))))
1788 (file-name (git-file-name name version))
1789 (sha256
1790 (base32 "03ry1wn1y2jssq65l29bi6q4ki041aa6gl1nd2w6cgl00k2mrxf3"))))
1791 (build-system julia-build-system)
1792 (home-page "https://fluxml.ai/Functors.jl/stable/")
1793 (synopsis "Design pattern for structures as in machine learning")
1794 (description "This package provides tools to express a design pattern for
1795dealing with large/ nested structures, as in machine learning and
1796optimisation. For large machine learning models it can be cumbersome or
1797inefficient to work with parameters as one big, flat vector, and structs help
1798in managing complexity; but it is also desirable to easily operate over all
1799parameters at once, e.g. for changing precision or applying an optimiser
1800update step.")
1801 (license license:expat)))
1802
1748(define-public julia-fuzzycompletions 1803(define-public julia-fuzzycompletions
1749 (package 1804 (package
1750 (name "julia-fuzzycompletions") 1805 (name "julia-fuzzycompletions")
@@ -1840,6 +1895,73 @@ analysis of dense matrices. The diagonal eigen-decomposition of normal
1840matrices the Schur form is often more useful.") 1895matrices the Schur form is often more useful.")
1841 (license license:expat))) 1896 (license license:expat)))
1842 1897
1898(define-public julia-geometrybasics
1899 (package
1900 (name "julia-geometrybasics")
1901 (version "0.4.1")
1902 (source
1903 (origin
1904 (method git-fetch)
1905 (uri (git-reference
1906 (url "https://github.com/JuliaGeometry/GeometryBasics.jl")
1907 (commit (string-append "v" version))))
1908 (file-name (git-file-name name version))
1909 (sha256
1910 (base32 "057j3hjpli3q5b98cqkpi4p10x2k9pyksrz62hjmv1kb5qzdvhsj"))))
1911 (build-system julia-build-system)
1912 (arguments
1913 `(#:phases
1914 (modify-phases %standard-phases
1915 (add-after 'unpack 'remove-earcut
1916 (lambda _
1917 (substitute* '("Project.toml"
1918 "src/GeometryBasics.jl")
1919 ((".*EarCut.*") ""))
1920 #t))
1921 (add-after 'unpack 'skip-incompatible-test
1922 (lambda _
1923 (substitute* "test/runtests.jl"
1924 (("@testset.*MetaT and heterogeneous data.*" all)
1925 (string-append all "return\n")))
1926 #t)))))
1927 (propagated-inputs
1928 `(("julia-itertools" ,julia-itertools)
1929 ("julia-staticarrays" ,julia-staticarrays)
1930 ("julia-structarrays" ,julia-structarrays)
1931 ("julia-tables" ,julia-tables)))
1932 (native-inputs
1933 `(("julia-offsetarrays" ,julia-offsetarrays)))
1934 (home-page "https://github.com/JuliaGeometry/GeometryBasics.jl")
1935 (synopsis "Basic Geometry Types")
1936 (description "This package aims to offer a standard set of Geometry types,
1937which easily work with metadata, query frameworks on geometries and different
1938memory layouts. The aim is to create a solid basis for Graphics/Plotting,
1939finite elements analysis, Geo applications, and general geometry manipulations
1940- while offering a Julian API, that still allows performant C-interop.")
1941 (license license:expat)))
1942
1943(define-public julia-gr
1944 (package
1945 (name "julia-gr")
1946 (version "0.58.1")
1947 (source
1948 (origin
1949 (method git-fetch)
1950 (uri (git-reference
1951 (url "https://github.com/jheinen/GR.jl")
1952 (commit (string-append "v" version))))
1953 (file-name (git-file-name name version))
1954 (sha256
1955 (base32 "18zxa1w2wmrf44c5l10qbh99zjdp7h94gxlymh47cf5kj5fc4xmx"))))
1956 (build-system julia-build-system)
1957 (propagated-inputs
1958 `(("julia-gr-jll" ,julia-gr-jll)))
1959 (home-page "https://github.com/jheinen/GR.jl")
1960 (synopsis "Plotting for Julia based on GR")
1961 (description "This module provides a Julia interface to GR, a framework for
1962visualisation applications.")
1963 (license license:expat)))
1964
1843(define-public julia-graphics 1965(define-public julia-graphics
1844 (package 1966 (package
1845 (name "julia-graphics") 1967 (name "julia-graphics")
@@ -2326,6 +2448,39 @@ assigned its own index, which is used to retrieve the value from the
2326indexed images, sometimes called \"colormap images\" or \"paletted images.\"") 2448indexed images, sometimes called \"colormap images\" or \"paletted images.\"")
2327 (license license:expat))) 2449 (license license:expat)))
2328 2450
2451(define-public julia-infinity
2452 (package
2453 (name "julia-infinity")
2454 (version "0.2.4")
2455 (source
2456 (origin
2457 (method git-fetch)
2458 (uri (git-reference
2459 (url "https://github.com/cjdoris/Infinity.jl")
2460 (commit (string-append "v" version))))
2461 (file-name (git-file-name name version))
2462 (sha256
2463 (base32 "1941lwvrdjnrynigzixxin3chpg1ba6xplvcwc89x0f6z658hwmm"))))
2464 (build-system julia-build-system)
2465 (arguments
2466 `(#:phases
2467 (modify-phases %standard-phases
2468 (add-after 'unpack 'remove-timezones.jl
2469 (lambda _
2470 (substitute* "test/runtests.jl"
2471 (("using TimeZones.*") "")
2472 ((".*infextendedtime.*") ""))
2473 #t)))))
2474 (propagated-inputs
2475 `(("julia-requires" ,julia-requires)))
2476 (native-inputs
2477 `(("julia-compat" ,julia-compat)))
2478 (home-page "https://docs.juliahub.com/Infinity/")
2479 (synopsis "Representation of infinity in Julia")
2480 (description "This package provides representations for infinity and
2481negative infinity in Julia.")
2482 (license license:expat)))
2483
2329(define-public julia-inifile 2484(define-public julia-inifile
2330 (package 2485 (package
2331 (name "julia-inifile") 2486 (name "julia-inifile")
@@ -2463,11 +2618,11 @@ as a string together with the return value.")
2463 (file-name (git-file-name name version)) 2618 (file-name (git-file-name name version))
2464 (sha256 2619 (sha256
2465 (base32 "11334fcg2slpwcj0raxf457brhf7pxglgxc6cy8q58ggrpxqfqql")))) 2620 (base32 "11334fcg2slpwcj0raxf457brhf7pxglgxc6cy8q58ggrpxqfqql"))))
2466 (arguments
2467 '(#:tests? #f)) ;require Documenter, not packaged yet
2468 (build-system julia-build-system) 2621 (build-system julia-build-system)
2469 (propagated-inputs 2622 (propagated-inputs
2470 `(("julia-macrotools" ,julia-macrotools))) 2623 `(("julia-macrotools" ,julia-macrotools)))
2624 (native-inputs
2625 `(("julia-documenter" ,julia-documenter)))
2471 (home-page "https://github.com/FluxML/IRTools.jl") 2626 (home-page "https://github.com/FluxML/IRTools.jl")
2472 (synopsis "Simple and flexible IR format") 2627 (synopsis "Simple and flexible IR format")
2473 (description "This package provides a simple and flexible IR format, 2628 (description "This package provides a simple and flexible IR format,
@@ -2810,6 +2965,32 @@ expressions involving differing types of units that are then evaluated,
2810resolving them into absolute units.") 2965resolving them into absolute units.")
2811 (license license:expat))) 2966 (license license:expat)))
2812 2967
2968(define-public julia-media
2969 (package
2970 (name "julia-media")
2971 (version "0.5.0")
2972 (source
2973 (origin
2974 (method git-fetch)
2975 (uri (git-reference
2976 (url "https://github.com/JunoLab/Media.jl")
2977 (commit (string-append "v" version))))
2978 (file-name (git-file-name name version))
2979 (sha256
2980 (base32 "05jq9j3vs8yfj2lwz3sh1vk5rha06xdcikp9s2q3dn316vryy6di"))))
2981 (build-system julia-build-system)
2982 ;; Package without Project.toml
2983 (arguments
2984 '(#:julia-package-name "Media"))
2985 (propagated-inputs
2986 `(("julia-macrotools" ,julia-macrotools)))
2987 (home-page "https://github.com/JunoLab/Media.jl")
2988 (synopsis "Unified measure and coordinates types")
2989 (description "This package provides a display system which enables the
2990user handle multiple input/output devices and decide what media types get
2991displayed where.")
2992 (license license:expat)))
2993
2813(define-public julia-missings 2994(define-public julia-missings
2814 (package 2995 (package
2815 (name "julia-missings") 2996 (name "julia-missings")
@@ -3125,10 +3306,10 @@ languages like Fortran.")
3125 (sha256 3306 (sha256
3126 (base32 "0ran2vj6ahlzib0g77y7g0jhavy3k9s2mqq23ybpgp9z677wf26h")))) 3307 (base32 "0ran2vj6ahlzib0g77y7g0jhavy3k9s2mqq23ybpgp9z677wf26h"))))
3127 (build-system julia-build-system) 3308 (build-system julia-build-system)
3128 (arguments
3129 '(#:tests? #f)) ;require Documenter, not packaged yet
3130 (propagated-inputs 3309 (propagated-inputs
3131 `(("julia-offsetarrays" ,julia-offsetarrays))) 3310 `(("julia-offsetarrays" ,julia-offsetarrays)))
3311 (native-inputs
3312 `(("julia-documenter" ,julia-documenter)))
3132 (home-page "https://github.com/JuliaArrays/PaddedViews.jl") 3313 (home-page "https://github.com/JuliaArrays/PaddedViews.jl")
3133 (synopsis "Add virtual padding to the edges of an array") 3314 (synopsis "Add virtual padding to the edges of an array")
3134 (description "@code{PaddedViews} provides a simple wrapper type, 3315 (description "@code{PaddedViews} provides a simple wrapper type,
@@ -4125,8 +4306,7 @@ some performance improvements).")
4125 (base32 "1fwiaxdpx1z9dli3jr8kyraych0jbdiny3qklynf0r13px25r6i7")))) 4306 (base32 "1fwiaxdpx1z9dli3jr8kyraych0jbdiny3qklynf0r13px25r6i7"))))
4126 (build-system julia-build-system) 4307 (build-system julia-build-system)
4127 (arguments 4308 (arguments
4128 `(#:tests? #f ; Documenter.jl not packaged yet 4309 `(#:phases
4129 #:phases
4130 (modify-phases %standard-phases 4310 (modify-phases %standard-phases
4131 (add-after 'unpack 'skip-doctest 4311 (add-after 'unpack 'skip-doctest
4132 (lambda _ 4312 (lambda _
@@ -4135,9 +4315,9 @@ some performance improvements).")
4135 #t))))) 4315 #t)))))
4136 (propagated-inputs 4316 (propagated-inputs
4137 `(("julia-offsetarrays" ,julia-offsetarrays))) 4317 `(("julia-offsetarrays" ,julia-offsetarrays)))
4138 ;(native-inputs 4318 (native-inputs
4139 ; `(("julia-aqua" ,julia-aqua) 4319 `(("julia-aqua" ,julia-aqua)
4140 ; ("julia-documenter" ,julia-documenter))) 4320 ("julia-documenter" ,julia-documenter)))
4141 (home-page "https://github.com/JuliaArrays/StackViews.jl") 4321 (home-page "https://github.com/JuliaArrays/StackViews.jl")
4142 (synopsis "No more catcat") 4322 (synopsis "No more catcat")
4143 (description "StackViews provides only one array type: @code{StackView}. 4323 (description "StackViews provides only one array type: @code{StackView}.
@@ -4541,6 +4721,34 @@ package.")
4541automatic differentiation for its machine learning platform.") 4721automatic differentiation for its machine learning platform.")
4542 (license license:expat))) 4722 (license license:expat)))
4543 4723
4724(define-public julia-transcodingstreams
4725 (package
4726 (name "julia-transcodingstreams")
4727 (version "0.9.6")
4728 (source
4729 (origin
4730 (method git-fetch)
4731 (uri (git-reference
4732 (url "https://github.com/JuliaIO/TranscodingStreams.jl")
4733 (commit (string-append "v" version))))
4734 (file-name (git-file-name name version))
4735 (sha256
4736 (base32 "1w3klii293caqiclfh28jggv7f53xclm9fr6xmw38brwrn1hjb48"))))
4737 (build-system julia-build-system)
4738 (arguments
4739 `(#:tests? #f)) ; Circular dependency with various codecs.
4740 (home-page "https://github.com/JuliaIO/TranscodingStreams.jl")
4741 (synopsis "Fast I/O transcoding data streams")
4742 (description "This package provides tools for transcoding data streams
4743which are:
4744@itemize
4745@item fast: small overhead and specialized methods
4746@item consistent: basic I/O operations work as expected
4747@item generic: support any I/O objects like files, buffers, pipes, etc.
4748@item extensible: easy definition for new codec to transcode data
4749@end itemize")
4750 (license license:expat)))
4751
4544(define-public julia-typedtables 4752(define-public julia-typedtables
4545 (package 4753 (package
4546 (name "julia-typedtables") 4754 (name "julia-typedtables")
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index f7af1f58a95..fe343b19cff 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -1814,7 +1814,7 @@ by applications to write metadata.")
1814 ("pkg-config" ,pkg-config))) 1814 ("pkg-config" ,pkg-config)))
1815 (inputs 1815 (inputs
1816 `(("karchive" ,karchive) ; for Krita and OpenRaster images 1816 `(("karchive" ,karchive) ; for Krita and OpenRaster images
1817 ("openexr" ,openexr) ; for OpenEXR high dynamic-range images 1817 ("openexr" ,openexr-2) ; for OpenEXR high dynamic-range images
1818 ("qtbase" ,qtbase-5))) 1818 ("qtbase" ,qtbase-5)))
1819 (arguments 1819 (arguments
1820 `(#:phases 1820 `(#:phases
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index dcb91fdb0b0..b5c2357cb40 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -522,7 +522,7 @@ illustrate project schedules.")
522 ("libx11" ,libx11) 522 ("libx11" ,libx11)
523 ("libxcb" ,libxcb) 523 ("libxcb" ,libxcb)
524 ("libxi" ,libxi) 524 ("libxi" ,libxi)
525 ("openexr" ,openexr) 525 ("openexr" ,openexr-2)
526 ("perl" ,perl) 526 ("perl" ,perl)
527 ("poppler-qt5" ,poppler-qt5) 527 ("poppler-qt5" ,poppler-qt5)
528 ("qtbase" ,qtbase-5) 528 ("qtbase" ,qtbase-5)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 83761e59556..fb7c6f2f093 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -57,6 +57,7 @@
57;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> 57;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
58;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> 58;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
59;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch> 59;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
60;;; Copyright © 2021 Olivier Dion <olivier.dion@polymtl.ca>
60;;; 61;;;
61;;; This file is part of GNU Guix. 62;;; This file is part of GNU Guix.
62;;; 63;;;
@@ -351,17 +352,17 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
351 352
352;; The current "stable" kernels. That is, the most recently released major 353;; The current "stable" kernels. That is, the most recently released major
353;; versions that are still supported upstream. 354;; versions that are still supported upstream.
354(define-public linux-libre-5.14-version "5.14.12") 355(define-public linux-libre-5.14-version "5.14.15")
355(define-public linux-libre-5.14-gnu-revision "gnu") 356(define-public linux-libre-5.14-gnu-revision "gnu")
356(define deblob-scripts-5.14 357(define deblob-scripts-5.14
357 (linux-libre-deblob-scripts 358 (linux-libre-deblob-scripts
358 linux-libre-5.14-version 359 linux-libre-5.14-version
359 linux-libre-5.14-gnu-revision 360 linux-libre-5.14-gnu-revision
360 (base32 "00vv2a51cvw2nx8iazmiy9i4h3jj9gvvpwz9gxp2v1hcmrsxq935") 361 (base32 "11zax57brk8bl75q68c71xsdlvslj48wpmrv8rh34sb8wym9n4mc")
361 (base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7"))) 362 (base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7")))
362(define-public linux-libre-5.14-pristine-source 363(define-public linux-libre-5.14-pristine-source
363 (let ((version linux-libre-5.14-version) 364 (let ((version linux-libre-5.14-version)
364 (hash (base32 "0dswxf1qk70lms5lph15i7nz3ybwiia58v8zzrmi71ajviwjc9wd"))) 365 (hash (base32 "01m4qw1z7xn3ngsbm1bvcvikqpkjjr9n8585556wkmz9d469mwvl")))
365 (make-linux-libre-source version 366 (make-linux-libre-source version
366 (%upstream-linux-source version hash) 367 (%upstream-linux-source version hash)
367 deblob-scripts-5.14))) 368 deblob-scripts-5.14)))
@@ -369,92 +370,92 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
369;; The "longterm" kernels — the older releases with long-term upstream support. 370;; The "longterm" kernels — the older releases with long-term upstream support.
370;; Here are the support timelines: 371;; Here are the support timelines:
371;; <https://www.kernel.org/category/releases.html> 372;; <https://www.kernel.org/category/releases.html>
372(define-public linux-libre-5.10-version "5.10.73") 373(define-public linux-libre-5.10-version "5.10.76")
373(define-public linux-libre-5.10-gnu-revision "gnu1") 374(define-public linux-libre-5.10-gnu-revision "gnu1")
374(define deblob-scripts-5.10 375(define deblob-scripts-5.10
375 (linux-libre-deblob-scripts 376 (linux-libre-deblob-scripts
376 linux-libre-5.10-version 377 linux-libre-5.10-version
377 linux-libre-5.10-gnu-revision 378 linux-libre-5.10-gnu-revision
378 (base32 "19d1pdsilq1ycnx1zw3vhf9mwdxbi5nmgzm0g1kj1lkkf1y4i1mv") 379 (base32 "1swy3y851jnnmk3hc0khllpsifb98camlwyskpn1dyvjsgjljd8x")
379 (base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7"))) 380 (base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7")))
380(define-public linux-libre-5.10-pristine-source 381(define-public linux-libre-5.10-pristine-source
381 (let ((version linux-libre-5.10-version) 382 (let ((version linux-libre-5.10-version)
382 (hash (base32 "0xhf0g5pra27hnavpy0y3mn05m5hqn5rd3d6fx0a3vr35c1jicpd"))) 383 (hash (base32 "140qkvs88b5zh6mxxzpf36z1r8bbvyh3yigripqjz1k236x0j2j8")))
383 (make-linux-libre-source version 384 (make-linux-libre-source version
384 (%upstream-linux-source version hash) 385 (%upstream-linux-source version hash)
385 deblob-scripts-5.10))) 386 deblob-scripts-5.10)))
386 387
387(define-public linux-libre-5.4-version "5.4.153") 388(define-public linux-libre-5.4-version "5.4.156")
388(define-public linux-libre-5.4-gnu-revision "gnu1") 389(define-public linux-libre-5.4-gnu-revision "gnu1")
389(define deblob-scripts-5.4 390(define deblob-scripts-5.4
390 (linux-libre-deblob-scripts 391 (linux-libre-deblob-scripts
391 linux-libre-5.4-version 392 linux-libre-5.4-version
392 linux-libre-5.4-gnu-revision 393 linux-libre-5.4-gnu-revision
393 (base32 "1cdxljvmivdwcy9v9fr5iv0x0d1884pf3876p9nzrly599lz2wnl") 394 (base32 "1nlgk8ajb5wl3aa96h9a0pb9j5a5wmrbpk63varn557x1d00r7wj")
394 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) 395 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
395(define-public linux-libre-5.4-pristine-source 396(define-public linux-libre-5.4-pristine-source
396 (let ((version linux-libre-5.4-version) 397 (let ((version linux-libre-5.4-version)
397 (hash (base32 "0jaz57sd51xqc7w8k3f43bfc5mdsh1413mdngqqsgr8isv4hg7vd"))) 398 (hash (base32 "1zkpqfhrc5n0yiij3jzvzywgabva53c8668f1ly1pkrzcbj77zh6")))
398 (make-linux-libre-source version 399 (make-linux-libre-source version
399 (%upstream-linux-source version hash) 400 (%upstream-linux-source version hash)
400 deblob-scripts-5.4))) 401 deblob-scripts-5.4)))
401 402
402(define-public linux-libre-4.19-version "4.19.211") 403(define-public linux-libre-4.19-version "4.19.214")
403(define-public linux-libre-4.19-gnu-revision "gnu1") 404(define-public linux-libre-4.19-gnu-revision "gnu1")
404(define deblob-scripts-4.19 405(define deblob-scripts-4.19
405 (linux-libre-deblob-scripts 406 (linux-libre-deblob-scripts
406 linux-libre-4.19-version 407 linux-libre-4.19-version
407 linux-libre-4.19-gnu-revision 408 linux-libre-4.19-gnu-revision
408 (base32 "1hiaagdyfy6b0f9ivdy7zq0cd6akaj6v3c4nzikrgsk12vgc1a1q") 409 (base32 "06pqv050bkii0hc2v7ymny5264w1bca8db0dp1pw9mfmjg865am5")
409 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) 410 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
410(define-public linux-libre-4.19-pristine-source 411(define-public linux-libre-4.19-pristine-source
411 (let ((version linux-libre-4.19-version) 412 (let ((version linux-libre-4.19-version)
412 (hash (base32 "1m3y5gsf5s8bb4jxkri20dlxi8aiqabzaijj2h1svz4r19ca8j7v"))) 413 (hash (base32 "0i08np4gxiks7chp6j328pdqb02apbba53mj4zvxb9v37qpxzqgz")))
413 (make-linux-libre-source version 414 (make-linux-libre-source version
414 (%upstream-linux-source version hash) 415 (%upstream-linux-source version hash)
415 deblob-scripts-4.19))) 416 deblob-scripts-4.19)))
416 417
417(define-public linux-libre-4.14-version "4.14.250") 418(define-public linux-libre-4.14-version "4.14.253")
418(define-public linux-libre-4.14-gnu-revision "gnu1") 419(define-public linux-libre-4.14-gnu-revision "gnu1")
419(define deblob-scripts-4.14 420(define deblob-scripts-4.14
420 (linux-libre-deblob-scripts 421 (linux-libre-deblob-scripts
421 linux-libre-4.14-version 422 linux-libre-4.14-version
422 linux-libre-4.14-gnu-revision 423 linux-libre-4.14-gnu-revision
423 (base32 "0cnax38650m9sxiwvc1xm5saymlsmx427j3jqpx34df2ah2rnrwf") 424 (base32 "02rxvr0gmxb3zfsyyzdmzgfq04gkdkv1cc38md0xfl0mxzdzdfyk")
424 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) 425 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
425(define-public linux-libre-4.14-pristine-source 426(define-public linux-libre-4.14-pristine-source
426 (let ((version linux-libre-4.14-version) 427 (let ((version linux-libre-4.14-version)
427 (hash (base32 "0zbf6gxm8iwf7cra310gfd0zyj8l9ckdahky9w6wb9wlznwkvd54"))) 428 (hash (base32 "1mgl55c8fa2ry4qp0phkdkzjhwfnkbhvi266n348kyjyqnjl234f")))
428 (make-linux-libre-source version 429 (make-linux-libre-source version
429 (%upstream-linux-source version hash) 430 (%upstream-linux-source version hash)
430 deblob-scripts-4.14))) 431 deblob-scripts-4.14)))
431 432
432(define-public linux-libre-4.9-version "4.9.286") 433(define-public linux-libre-4.9-version "4.9.288")
433(define-public linux-libre-4.9-gnu-revision "gnu1") 434(define-public linux-libre-4.9-gnu-revision "gnu1")
434(define deblob-scripts-4.9 435(define deblob-scripts-4.9
435 (linux-libre-deblob-scripts 436 (linux-libre-deblob-scripts
436 linux-libre-4.9-version 437 linux-libre-4.9-version
437 linux-libre-4.9-gnu-revision 438 linux-libre-4.9-gnu-revision
438 (base32 "1n74ddrifnw06hx7ih2sk8jaiqlm1jyyhswyjpxiyhrrcvjcilch") 439 (base32 "0nai5m4rbh37qaj1xf2qj7656l2gacfh0847q5d07y22b048fq5n")
439 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) 440 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
440(define-public linux-libre-4.9-pristine-source 441(define-public linux-libre-4.9-pristine-source
441 (let ((version linux-libre-4.9-version) 442 (let ((version linux-libre-4.9-version)
442 (hash (base32 "0id62p43dmkl9ir278p0dsfg3q7m1d8rlxv0c9qi1pzalkygv8p2"))) 443 (hash (base32 "0v5592v565bl924c23m1n7p5zddr0w7zn8m97pmikk6p7cyhjq9n")))
443 (make-linux-libre-source version 444 (make-linux-libre-source version
444 (%upstream-linux-source version hash) 445 (%upstream-linux-source version hash)
445 deblob-scripts-4.9))) 446 deblob-scripts-4.9)))
446 447
447(define-public linux-libre-4.4-version "4.4.288") 448(define-public linux-libre-4.4-version "4.4.290")
448(define-public linux-libre-4.4-gnu-revision "gnu1") 449(define-public linux-libre-4.4-gnu-revision "gnu1")
449(define deblob-scripts-4.4 450(define deblob-scripts-4.4
450 (linux-libre-deblob-scripts 451 (linux-libre-deblob-scripts
451 linux-libre-4.4-version 452 linux-libre-4.4-version
452 linux-libre-4.4-gnu-revision 453 linux-libre-4.4-gnu-revision
453 (base32 "11397dgj6cdfv6anxrj7jwgvnqvwh5i0ci6c8mb85ry6h4fnfmq4") 454 (base32 "1mmnv77432la5dkhpy1n8w59c0v6l08fyf2ggh294gyrx8nbci11")
454 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) 455 (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
455(define-public linux-libre-4.4-pristine-source 456(define-public linux-libre-4.4-pristine-source
456 (let ((version linux-libre-4.4-version) 457 (let ((version linux-libre-4.4-version)
457 (hash (base32 "028w3yzmzymy7l1nf3n1pfbg95hfi4ilphkyl00ddgj8sfm542c7"))) 458 (hash (base32 "1dcx58nmzkcc5nz2b5b7mgw4w7y28v3s9wd8h78czdqfa0kxrl20")))
458 (make-linux-libre-source version 459 (make-linux-libre-source version
459 (%upstream-linux-source version hash) 460 (%upstream-linux-source version hash)
460 deblob-scripts-4.4))) 461 deblob-scripts-4.4)))
@@ -1226,7 +1227,7 @@ and should be used with caution, especially on untested models.")
1226(define-public corefreq 1227(define-public corefreq
1227 (package 1228 (package
1228 (name "corefreq") 1229 (name "corefreq")
1229 (version "1.86.7") 1230 (version "1.87.4")
1230 (source 1231 (source
1231 (origin 1232 (origin
1232 (method git-fetch) 1233 (method git-fetch)
@@ -1235,7 +1236,7 @@ and should be used with caution, especially on untested models.")
1235 (commit version))) 1236 (commit version)))
1236 (file-name (git-file-name name version)) 1237 (file-name (git-file-name name version))
1237 (sha256 1238 (sha256
1238 (base32 "1k8pyxcahc78kcc8q1h76dr91i1r33jciqhgkajkz3xa28qx8mhn")))) 1239 (base32 "01g1smhfzb02gmfjm8c7rchc79dan9jc9pv9c0f8f7fly2hy5zvs"))))
1239 (build-system linux-module-build-system) 1240 (build-system linux-module-build-system)
1240 (outputs (list "out" "linux-module")) 1241 (outputs (list "out" "linux-module"))
1241 (arguments 1242 (arguments
@@ -5820,7 +5821,7 @@ feature, and a laptop with an accelerometer. It has no effect on SSDs.")
5820(define-public thinkfan 5821(define-public thinkfan
5821 (package 5822 (package
5822 (name "thinkfan") 5823 (name "thinkfan")
5823 (version "1.2.2") 5824 (version "1.3.0")
5824 (source 5825 (source
5825 (origin 5826 (origin
5826 (method git-fetch) 5827 (method git-fetch)
@@ -5829,7 +5830,7 @@ feature, and a laptop with an accelerometer. It has no effect on SSDs.")
5829 (commit version))) 5830 (commit version)))
5830 (file-name (git-file-name name version)) 5831 (file-name (git-file-name name version))
5831 (sha256 5832 (sha256
5832 (base32 "01l1pnj1cgy3dwgyys2s5iqzyv6kk47vlpy09qjafk8py21ijik3")))) 5833 (base32 "1whdhf3aw0g4xwbn1csy2wz6g1hw5nlw64r91nnxba9qn25nl9k4"))))
5833 (build-system cmake-build-system) 5834 (build-system cmake-build-system)
5834 (arguments 5835 (arguments
5835 `(#:modules ((guix build cmake-build-system) 5836 `(#:modules ((guix build cmake-build-system)
@@ -8288,6 +8289,71 @@ enable and disable specific instrumentation points, and writes event records
8288to ring buffers shared with a consumer daemon.") 8289to ring buffers shared with a consumer daemon.")
8289 (license license:lgpl2.1+))) 8290 (license license:lgpl2.1+)))
8290 8291
8292(define-public lttng-tools
8293 (package
8294 (name "lttng-tools")
8295 (version "2.12.5")
8296 (source (origin
8297 (method url-fetch)
8298 (uri (string-append "https://lttng.org/files/lttng-tools/"
8299 "lttng-tools-" version ".tar.bz2"))
8300 (sha256
8301 (base32
8302 "0bgk35423v6z17j1w80m7dcza7gigs1pwyq24sdmgqwg6j2d1zmc"))))
8303 (build-system gnu-build-system)
8304 (arguments
8305 `(;; FIXME - Currently there's a segmentation fault by swig when enabling
8306 ;; Python's bindings. Thus, bindings are disable here. Replace
8307 ;; `disable` by `enable` in #:configure-flags when this is fixed.
8308 #:configure-flags '("--disable-python-bindings")
8309 ;; FIXME - Tests are disabled for now because one test hangs
8310 ;; indefinetely. Also, parallel testing is not possible because of how
8311 ;; the lttng-daemon handles sessions. Thus, keep parallel testing
8312 ;; disabled even after tests are enabled!
8313 #:tests? #f
8314 #:parallel-tests? #f
8315 #:phases
8316 (modify-phases %standard-phases
8317 (add-before 'configure 'set-environment-variables
8318 (lambda _
8319 (setenv "HOME" "/tmp")
8320 (setenv "LTTNG_HOME" "/tmp")))
8321 ;; We don't put (which "man") here because LTTng uses execlp.
8322 (add-after 'unpack 'patch-default-man-path
8323 (lambda _
8324 (substitute* "src/common/defaults.h"
8325 (("/usr/bin/man") "man")))))))
8326 ;; NOTE - Users have to install python-3 in their profile to use the
8327 ;; bindings. We don't put it in the inputs, because the rest of the tools
8328 ;; can work without it.
8329 (inputs
8330 `(("liburcu" ,liburcu)
8331 ("popt" ,popt)
8332 ("numactl" ,numactl)))
8333 (propagated-inputs
8334 `(("kmod" ,kmod)
8335 ("module-init-tools" ,module-init-tools)))
8336 (native-inputs
8337 `(("pkg-config" ,pkg-config)
8338 ("perl" ,perl)
8339 ("libpfm4" ,libpfm4)
8340 ("python-3" ,python-3)
8341 ("swig" ,swig)
8342 ("procps" ,procps)
8343 ("which" ,which)
8344 ("flex" ,flex)
8345 ("bison" ,bison)
8346 ("asciidoc" ,asciidoc)
8347 ("libxml2" ,libxml2)
8348 ("lttng-ust" ,lttng-ust)))
8349 (home-page "https://lttng.org/")
8350 (synopsis "LTTng userspace tracer libraries")
8351 (description "The lttng-tools project provides a session
8352daemon @code{lttng-sessiond} that acts as a tracing registry, the @command{lttng} command
8353line for tracing control, a @code{lttng-ctl} library for tracing control and a
8354@code{lttng-relayd} for network streaming.")
8355 (license (list license:gpl2 license:lgpl2.1))))
8356
8291(define-public kexec-tools 8357(define-public kexec-tools
8292 (package 8358 (package
8293 (name "kexec-tools") 8359 (name "kexec-tools")
diff --git a/gnu/packages/lisp-check.scm b/gnu/packages/lisp-check.scm
index 95918433c4a..ca00e5054e3 100644
--- a/gnu/packages/lisp-check.scm
+++ b/gnu/packages/lisp-check.scm
@@ -1,5 +1,13 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
3;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
4;;; Copyright © 2018, 2019, 2020, 2021 Pierre Neidhardt <mail@ambrevar.xyz>
5;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
6;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
7;;; Copyright © 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
8;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
2;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> 9;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
10;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
3;;; 11;;;
4;;; This file is part of GNU Guix. 12;;; This file is part of GNU Guix.
5;;; 13;;;
@@ -16,6 +24,9 @@
16;;; You should have received a copy of the GNU General Public License 24;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18 26
27;;; This module only contains Common Lisp libraries related to code testing
28;;; facilities.
29
19(define-module (gnu packages lisp-check) 30(define-module (gnu packages lisp-check)
20 #:use-module (gnu packages) 31 #:use-module (gnu packages)
21 #:use-module ((guix licenses) #:prefix license:) 32 #:use-module ((guix licenses) #:prefix license:)
@@ -24,10 +35,474 @@
24 #:use-module (guix git-download) 35 #:use-module (guix git-download)
25 #:use-module (guix build-system asdf)) 36 #:use-module (guix build-system asdf))
26 37
27;;; Commentary: 38(define-public sbcl-1am
28;;; 39 (let ((commit "8b1da94eca4613fd8a20bdf63f0e609e379b0ba5"))
29;;; This module only contains Common Lisp libraries related to code testing 40 (package
30;;; facilities. 41 (name "sbcl-1am")
42 (version (git-version "0.0" "1" commit))
43 (source
44 (origin
45 (method git-fetch)
46 (uri (git-reference
47 (url "https://github.com/lmj/1am")
48 (commit commit)))
49 (file-name (git-file-name name version))
50 (sha256
51 (base32
52 "05ss4nz1jb9kb796295482b62w5cj29msfj8zis33sp2rw2vmv2g"))))
53 (build-system asdf-build-system/sbcl)
54 (home-page "https://github.com/lmj/1am")
55 (synopsis "Minimal testing framework for Common Lisp")
56 (description "A minimal testing framework for Common Lisp.")
57 (license license:expat))))
58
59(define-public cl-1am
60 (sbcl-package->cl-source-package sbcl-1am))
61
62(define-public ecl-1am
63 (sbcl-package->ecl-package sbcl-1am))
64
65(define-public sbcl-check-it
66 (let ((commit "b79c9103665be3976915b56b570038f03486e62f"))
67 (package
68 (name "sbcl-check-it")
69 (version (git-version "0.1.0" "1" commit))
70 (source
71 (origin
72 (method git-fetch)
73 (uri (git-reference
74 (url "https://github.com/DalekBaldwin/check-it/")
75 (commit commit)))
76 (file-name (git-file-name name version))
77 (sha256
78 (base32 "1kbjwpniffdpv003igmlz5r0vy65m7wpfnhg54fhwirp1227hgg7"))))
79 (build-system asdf-build-system/sbcl)
80 (inputs
81 `(("alexandria" ,sbcl-alexandria)
82 ("closer-mop" ,sbcl-closer-mop)
83 ("optima" ,sbcl-optima)))
84 (native-inputs
85 `(("stefil" ,sbcl-stefil)))
86 (home-page "https://github.com/arclanguage/Clamp")
87 (synopsis "Randomized specification-based testing for Common Lisp")
88 (description
89 "This is a randomized property-based testing library for Common Lisp.
90Rather than being a full-fledged general test framework in its own right, it's
91designed to embed randomized tests in whatever framework you like.")
92 (license license:llgpl))))
93
94(define-public cl-check-it
95 (sbcl-package->cl-source-package sbcl-check-it))
96
97(define-public ecl-check-it
98 (sbcl-package->ecl-package sbcl-check-it))
99
100(define-public sbcl-checkl
101 (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
102 (revision "1"))
103 (package
104 (name "sbcl-checkl")
105 (version (git-version "0.0.0" revision commit))
106 (source
107 (origin
108 (method git-fetch)
109 (uri (git-reference
110 (url "https://github.com/rpav/CheckL")
111 (commit commit)))
112 (file-name (git-file-name name version))
113 (sha256
114 (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
115 (build-system asdf-build-system/sbcl)
116 (arguments
117 ;; Error while trying to load definition for system checkl-test from
118 ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
119 ;; is undefined.
120 '(#:asd-files '("checkl.asd")
121 #:tests? #f))
122 (native-inputs
123 `(("sbcl-fiveam" ,sbcl-fiveam)))
124 (inputs
125 `(("sbcl-marshal" ,sbcl-marshal)))
126 (home-page "https://github.com/rpav/CheckL/")
127 (synopsis "Dynamic testing for Common Lisp")
128 (description
129 "CheckL lets you write tests dynamically, it checks resulting values
130against the last run.")
131 ;; The author specifies both LLGPL and "BSD", but the "BSD" license
132 ;; isn't specified anywhere, so I don't know which kind. LLGPL is the
133 ;; stronger of the two and so I think only listing this should suffice.
134 (license license:llgpl))))
135
136(define-public cl-checkl
137 (sbcl-package->cl-source-package sbcl-checkl))
138
139(define-public ecl-checkl
140 (sbcl-package->ecl-package sbcl-checkl))
141
142(define-public sbcl-cl-mock
143 ;; .asd version only got updated recently, despired the old GitHug "1.0.1" release.
144 (let ((commit "7988dca2093358911b67597a2cd1570c785dfe76"))
145 (package
146 (name "sbcl-cl-mock")
147 (version (git-version "1.0.1" "1" commit))
148 (source
149 (origin
150 (method git-fetch)
151 (uri (git-reference
152 (url "https://github.com/Ferada/cl-mock/")
153 (commit commit)))
154 (file-name (git-file-name name version))
155 (sha256
156 (base32 "0f40wikcf783jx26ip0nnhwjjfjvjiw7njqsqrb6kaphc8bgw0i1"))))
157 (build-system asdf-build-system/sbcl)
158 (inputs
159 `(("alexandria" ,sbcl-alexandria)
160 ("closer-mop" ,sbcl-closer-mop)
161 ("trivia" ,sbcl-trivia)))
162 (native-inputs
163 `(("fiveam" ,sbcl-fiveam)))
164 (home-page "https://github.com/Ferada/cl-mock")
165 (synopsis "Mocking functions for Common Lisp testing")
166 (description
167 "This small library provides a way to replace the actual implementation
168of either regular or generic functions with mocks.")
169 (license license:agpl3))))
170
171(define-public ecl-cl-mock
172 (sbcl-package->ecl-package sbcl-cl-mock))
173
174(define-public cl-mock
175 (sbcl-package->cl-source-package sbcl-cl-mock))
176
177(define-public sbcl-cl-quickcheck
178 (let ((commit "807b2792a30c883a2fbecea8e7db355b50ba662f")
179 (revision "1"))
180 (package
181 (name "sbcl-cl-quickcheck")
182 (version (git-version "0.0.4" revision commit))
183 (source
184 (origin
185 (method git-fetch)
186 (uri (git-reference
187 (url "https://github.com/mcandre/cl-quickcheck")
188 (commit commit)))
189 (file-name (git-file-name name version))
190 (sha256
191 (base32
192 "165lhypq5xkcys6hvzb3jq7ywnmqvzaflda29qk2cbs3ggas4767"))))
193 (build-system asdf-build-system/sbcl)
194 (synopsis
195 "Common Lisp port of the QuickCheck unit test framework")
196 (description
197 "Common Lisp port of the QuickCheck unit test framework")
198 (home-page "https://github.com/mcandre/cl-quickcheck")
199 ;; MIT
200 (license license:expat))))
201
202(define-public cl-quickcheck
203 (sbcl-package->cl-source-package sbcl-cl-quickcheck))
204
205(define-public ecl-cl-quickcheck
206 (sbcl-package->ecl-package sbcl-cl-quickcheck))
207
208(define-public sbcl-clunit
209 (let ((commit "6f6d72873f0e1207f037470105969384f8380628")
210 (revision "1"))
211 (package
212 (name "sbcl-clunit")
213 (version (git-version "0.2.3" revision commit))
214 (source
215 (origin
216 (method git-fetch)
217 (uri (git-reference
218 (url "https://github.com/tgutu/clunit")
219 (commit commit)))
220 (file-name (git-file-name name version))
221 (sha256
222 (base32
223 "1idf2xnqzlhi8rbrqmzpmb3i1l6pbdzhhajkmhwbp6qjkmxa4h85"))))
224 (build-system asdf-build-system/sbcl)
225 (synopsis "CLUnit is a Common Lisp unit testing framework")
226 (description
227 "CLUnit is a Common Lisp unit testing framework. It is designed
228to be easy to use so that you can quickly start testing. CLUnit
229provides a rich set of features aimed at improving your unit testing
230experience.")
231 (home-page "https://tgutu.github.io/clunit/")
232 ;; MIT License
233 (license license:expat))))
234
235(define-public cl-clunit
236 (sbcl-package->cl-source-package sbcl-clunit))
237
238(define-public ecl-clunit
239 (sbcl-package->ecl-package sbcl-clunit))
240
241(define-public sbcl-clunit2
242 (let ((commit "5e28343734eb9b7aee39306a614af92c1062d50b")
243 (revision "1"))
244 (package
245 (name "sbcl-clunit2")
246 (version (git-version "0.2.4" revision commit))
247 (source
248 (origin
249 (method git-fetch)
250 (uri (git-reference
251 (url "https://notabug.org/cage/clunit2.git")
252 (commit commit)))
253 (file-name (git-file-name name version))
254 (sha256
255 (base32 "1ngiapfki6nm8a555mzhb5p7ch79i3w665za5bmb5j7q34fy80vw"))))
256 (build-system asdf-build-system/sbcl)
257 (synopsis "Unit testing framework for Common Lisp")
258 (description
259 "CLUnit is a Common Lisp unit testing framework. It is designed to be
260easy to use so that you can quickly start testing.")
261 (home-page "https://notabug.org/cage/clunit2")
262 (license license:expat))))
263
264(define-public cl-clunit2
265 (sbcl-package->cl-source-package sbcl-clunit2))
266
267(define-public ecl-clunit2
268 (sbcl-package->ecl-package sbcl-clunit2))
269
270(define-public sbcl-eos
271 (let ((commit "b4413bccc4d142cbe1bf49516c3a0a22c9d99243")
272 (revision "2"))
273 (package
274 (name "sbcl-eos")
275 (version (git-version "0.0.0" revision commit))
276 (source
277 (origin
278 (method git-fetch)
279 (uri (git-reference
280 (url "https://github.com/adlai/Eos")
281 (commit commit)))
282 (sha256
283 (base32 "1afllvmlnx97yzz404gycl3pa3kwx427k3hrbf37rpmjlv47knhk"))
284 (file-name (git-file-name "eos" version))))
285 (build-system asdf-build-system/sbcl)
286 (synopsis "Unit Testing for Common Lisp")
287 (description
288 "Eos was a unit testing library for Common Lisp.
289It began as a fork of FiveAM; however, FiveAM development has continued, while
290that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
291 (home-page "https://github.com/adlai/Eos")
292 (license license:expat))))
293
294(define-public cl-eos
295 (sbcl-package->cl-source-package sbcl-eos))
296
297(define-public ecl-eos
298 (sbcl-package->ecl-package sbcl-eos))
299
300(define-public sbcl-fiasco
301 (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
302 (revision "1"))
303 (package
304 (name "sbcl-fiasco")
305 (version (git-version "0.0.1" revision commit))
306 (source
307 (origin
308 (method git-fetch)
309 (uri (git-reference
310 (url "https://github.com/joaotavora/fiasco")
311 (commit commit)))
312 (file-name (git-file-name "fiasco" version))
313 (sha256
314 (base32
315 "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
316 (build-system asdf-build-system/sbcl)
317 (inputs
318 `(("alexandria" ,sbcl-alexandria)
319 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
320 (synopsis "Simple and powerful test framework for Common Lisp")
321 (description "A Common Lisp test framework that treasures your failures,
322logical continuation of Stefil. It focuses on interactive debugging.")
323 (home-page "https://github.com/joaotavora/fiasco")
324 ;; LICENCE specifies this is public-domain unless the legislation
325 ;; doesn't allow or recognize it. In that case it falls back to a
326 ;; permissive licence.
327 (license (list license:public-domain
328 (license:x11-style "file://LICENCE"))))))
329
330(define-public cl-fiasco
331 (sbcl-package->cl-source-package sbcl-fiasco))
332
333(define-public ecl-fiasco
334 (sbcl-package->ecl-package sbcl-fiasco))
335
336(define-public sbcl-fiveam
337 (package
338 (name "sbcl-fiveam")
339 (version "1.4.2")
340 (source
341 (origin
342 (method git-fetch)
343 (uri (git-reference
344 (url "https://github.com/sionescu/fiveam")
345 (commit (string-append "v" version))))
346 (file-name (git-file-name "fiveam" version))
347 (sha256
348 (base32 "04mh5plmlb15jbq3dkd8b9jl1dmbbg4hnd3k7859vpf6s12k5p4j"))))
349 (inputs
350 `(("alexandria" ,sbcl-alexandria)
351 ("net.didierverna.asdf-flv" ,sbcl-net.didierverna.asdf-flv)
352 ("trivial-backtrace" ,sbcl-trivial-backtrace)))
353 (build-system asdf-build-system/sbcl)
354 (synopsis "Common Lisp testing framework")
355 (description "FiveAM is a simple (as far as writing and running tests
356goes) regression testing framework. It has been designed with Common Lisp's
357interactive development model in mind.")
358 (home-page "https://common-lisp.net/project/fiveam/")
359 (license license:bsd-3)))
360
361(define-public cl-fiveam
362 (sbcl-package->cl-source-package sbcl-fiveam))
363
364(define-public ecl-fiveam
365 (sbcl-package->ecl-package sbcl-fiveam))
366
367(define-public sbcl-hu.dwim.stefil
368 (let ((commit "414902c6f575818c39a8a156b8b61b1adfa73dad"))
369 (package
370 (name "sbcl-hu.dwim.stefil")
371 (version (git-version "0.0.0" "2" commit))
372 (source
373 (origin
374 (method git-fetch)
375 (uri
376 (git-reference
377 (url "https://github.com/hu-dwim/hu.dwim.stefil")
378 (commit commit)))
379 (sha256
380 (base32 "14izmjjim590rh74swrssavdmdznj2z8vhqixy780sjhpcr5pmkc"))
381 (file-name (git-file-name "hu.dwim.stefil" version))))
382 (build-system asdf-build-system/sbcl)
383 (native-inputs
384 `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
385 (inputs
386 `(("sbcl-alexandria" ,sbcl-alexandria)))
387 (home-page "http://dwim.hu/project/hu.dwim.stefil")
388 (synopsis "Simple test framework")
389 (description "Stefil is a simple test framework for Common Lisp,
390with a focus on interactive development.")
391 (license license:public-domain))))
392
393(define-public cl-hu.dwim.stefil
394 (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
395
396(define-public ecl-hu.dwim.stefil
397 (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
398
399(define-public sbcl-lift
400 (let ((commit "2594160d6ca3a77d8750110dfa63214256aab852")
401 (revision "2"))
402 (package
403 (name "sbcl-lift")
404 (version (git-version "1.7.1" revision commit))
405 (source
406 (origin
407 (method git-fetch)
408 (uri (git-reference
409 (url "https://github.com/gwkkwg/lift")
410 (commit commit)))
411 (sha256
412 (base32 "01xvz9sl5l5lai4h9dabmcjnm659wf5zllaxqbs55lffskp6jwq3"))
413 (file-name (git-file-name "lift" version))
414 (modules '((guix build utils)))
415 (snippet
416 ;; Don't keep the bundled website
417 `(begin
418 (delete-file-recursively "website")
419 #t))))
420 (build-system asdf-build-system/sbcl)
421 (arguments
422 ;; The tests require a debugger, but we run with the debugger disabled.
423 '(#:tests? #f))
424 (synopsis "LIsp Framework for Testing")
425 (description
426 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
427Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
428testcases are organized into hierarchical testsuites each of which can have
429its own fixture. When run, a testcase can succeed, fail, or error. LIFT
430supports randomized testing, benchmarking, profiling, and reporting.")
431 (home-page "https://github.com/gwkkwg/lift")
432 (license license:expat))))
433
434(define-public cl-lift
435 (sbcl-package->cl-source-package sbcl-lift))
436
437(define-public ecl-lift
438 (sbcl-package->ecl-package sbcl-lift))
439
440(define-public sbcl-lisp-unit
441 (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
442 (package
443 (name "sbcl-lisp-unit")
444 (version (git-version "0.0.0" "1" commit))
445 (source
446 (origin
447 (method git-fetch)
448 (uri (git-reference
449 (url "https://github.com/OdonataResearchLLC/lisp-unit")
450 (commit commit)))
451 (sha256
452 (base32
453 "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
454 (file-name (git-file-name "lisp-unit" version))))
455 (build-system asdf-build-system/sbcl)
456 (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
457 (description
458 "@command{lisp-unit} is a Common Lisp library that supports unit
459testing. It is an extension of the library written by Chris Riesbeck.")
460 (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
461 (license license:expat))))
462
463(define-public cl-lisp-unit
464 (sbcl-package->cl-source-package sbcl-lisp-unit))
465
466(define-public ecl-lisp-unit
467 (sbcl-package->ecl-package sbcl-lisp-unit))
468
469(define-public sbcl-lisp-unit2
470 ;; There is a cyclical dependency between symbol-munger and lisp-unit2.
471 ;; See https://github.com/AccelerationNet/symbol-munger/issues/4
472 (let ((commit "fb9721524d1e4e73abb223ee036d74ce14a5505c")
473 (revision "1"))
474 (package
475 (name "sbcl-lisp-unit2")
476 (version (git-version "0.2.0" revision commit))
477 (source
478 (origin
479 (method git-fetch)
480 (uri (git-reference
481 (url "https://github.com/AccelerationNet/lisp-unit2")
482 (commit commit)))
483 (file-name (git-file-name name version))
484 (sha256
485 (base32
486 "1rsqy8y0jqll6xn9a593848f5wvd5ribv4csry1ly0hmdhfnqzlp"))))
487 (build-system asdf-build-system/sbcl)
488 (inputs
489 `(("alexandria" ,sbcl-alexandria)
490 ("cl-interpol" ,sbcl-cl-interpol)
491 ("iterate" ,sbcl-iterate)
492 ("symbol-munger" ,sbcl-symbol-munger)))
493 (synopsis "Test Framework for Common Lisp")
494 (description
495 "LISP-UNIT2 is a Common Lisp library that supports unit testing in the
496style of JUnit for Java. It is a new version of the lisp-unit library written
497by Chris Riesbeck.")
498 (home-page "https://github.com/AccelerationNet/lisp-unit2")
499 (license license:expat))))
500
501(define-public cl-lisp-unit2
502 (sbcl-package->cl-source-package sbcl-lisp-unit2))
503
504(define-public ecl-lisp-unit2
505 (sbcl-package->ecl-package sbcl-lisp-unit2))
31 506
32(define-public sbcl-nst 507(define-public sbcl-nst
33 (let ((commit "6c0990f594abcf5887e8d80f1035e3b60454b61b") 508 (let ((commit "6c0990f594abcf5887e8d80f1035e3b60454b61b")
@@ -60,4 +535,313 @@
60(define-public cl-nst 535(define-public cl-nst
61 (sbcl-package->cl-source-package sbcl-nst)) 536 (sbcl-package->cl-source-package sbcl-nst))
62 537
63;;; lisp-check.scm ends here 538(define-public sbcl-parachute
539 (let ((commit "ca04dd8e43010a6dfffa26dbe1d62af86008d666")
540 (revision "0"))
541 (package
542 (name "sbcl-parachute")
543 (version (git-version "1.1.1" revision commit))
544 (source
545 (origin
546 (method git-fetch)
547 (uri
548 (git-reference
549 (url "https://github.com/Shinmera/parachute")
550 (commit commit)))
551 (file-name (git-file-name name version))
552 (sha256
553 (base32
554 "1mvsm3r0r6a2bg75nw0q7n9vlby3ch45qjl7hnb5k1z2n5x5lh60"))))
555 (build-system asdf-build-system/sbcl)
556 (inputs
557 `(("documentation-utils" ,sbcl-documentation-utils)
558 ("form-fiddle" ,sbcl-form-fiddle)))
559 (synopsis "Extensible and cross-compatible testing framework for Common Lisp")
560 (description
561 "Parachute is a simple-to-use and extensible testing framework.
562In Parachute, things are organised as a bunch of named tests within a package.
563Each test can contain a bunch of test forms that make up its body.")
564 (home-page "https://shinmera.github.io/parachute/")
565 (license license:zlib))))
566
567(define-public cl-parachute
568 (sbcl-package->cl-source-package sbcl-parachute))
569
570(define-public ecl-parachute
571 (sbcl-package->ecl-package sbcl-parachute))
572
573(define-public sbcl-prove
574 (let ((commit "5d71f02795b89e36f34e8c7d50e69b67ec6ca2de")
575 (revision "2"))
576 (package
577 (name "sbcl-prove")
578 (version (git-version "1.0.0" revision commit))
579 (source
580 (origin
581 (method git-fetch)
582 (uri (git-reference
583 (url "https://github.com/fukamachi/prove")
584 (commit commit)))
585 (sha256
586 (base32 "0ca6ha3zhmckq3ad9lxm6sbg4i0hg3m81xhan4dkxd3x9898jzpc"))
587 (file-name (git-file-name "prove" version))))
588 (build-system asdf-build-system/sbcl)
589 (inputs
590 `(("alexandria" ,sbcl-alexandria)
591 ("cl-colors" ,sbcl-cl-colors)
592 ("cl-ppcre" ,sbcl-cl-ppcre)
593 ("cl-ansi-text" ,sbcl-cl-ansi-text)))
594 (synopsis "Yet another unit testing framework for Common Lisp")
595 (description
596 "This project was originally called @command{cl-test-more}.
597@command{prove} is yet another unit testing framework for Common Lisp. The
598advantages of @command{prove} are:
599
600@itemize
601@item Various simple functions for testing and informative error messages
602@item ASDF integration
603@item Extensible test reporters
604@item Colorizes the report if it's available (note for SLIME)
605@item Reports test durations
606@end itemize\n")
607 (home-page "https://github.com/fukamachi/prove")
608 (license license:expat))))
609
610(define-public cl-prove
611 (sbcl-package->cl-source-package sbcl-prove))
612
613(define-public ecl-prove
614 (sbcl-package->ecl-package sbcl-prove))
615
616(define-public sbcl-ptester
617 (let ((commit "fe69fde54f4bce00ce577feb918796c293fc7253")
618 (revision "1"))
619 (package
620 (name "sbcl-ptester")
621 (version (git-version "2.1.3" revision commit))
622 (source
623 (origin
624 (method git-fetch)
625 (uri (git-reference
626 (url "http://git.kpe.io/ptester.git")
627 (commit commit)))
628 (file-name (git-file-name name version))
629 (sha256
630 (base32 "1l0lfl7cdnr2qf4zh38hi4llxg22c49zkm639bdkmvlkzwj3ndwf"))))
631 (build-system asdf-build-system/sbcl)
632 (home-page "http://quickdocs.org/ptester/")
633 (synopsis "Portable test harness package")
634 (description
635 "@command{ptester} is a portable testing framework based on Franz's
636tester module.")
637 (license license:llgpl))))
638
639(define-public cl-ptester
640 (sbcl-package->cl-source-package sbcl-ptester))
641
642(define-public ecl-ptester
643 (sbcl-package->ecl-package sbcl-ptester))
644
645(define-public sbcl-rove
646 (package
647 (name "sbcl-rove")
648 (version "0.9.6")
649 (source
650 (origin
651 (method git-fetch)
652 (uri (git-reference
653 (url "https://github.com/fukamachi/rove")
654 (commit "f3695db08203bf26f3b861dc22ac0f4257d3ec21")))
655 (file-name (git-file-name name version))
656 (sha256
657 (base32
658 "07ala4l2fncxf540fzxj3h5mhi9i4wqllhj0rqk8m2ljl5zbz89q"))))
659 (build-system asdf-build-system/sbcl)
660 (inputs
661 `(("bordeaux-threads" ,sbcl-bordeaux-threads)
662 ("dissect" ,sbcl-dissect)
663 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
664 (home-page "https://github.com/fukamachi/rove")
665 (synopsis
666 "Yet another common lisp testing library")
667 (description
668 "Rove is a unit testing framework for Common Lisp applications.
669This is intended to be a successor of Prove.")
670 (license license:bsd-3)))
671
672(define-public cl-rove
673 (sbcl-package->cl-source-package sbcl-rove))
674
675(define-public ecl-rove
676 (sbcl-package->ecl-package sbcl-rove))
677
678(define-public sbcl-rt
679 (let ((commit "a6a7503a0b47953bc7579c90f02a6dba1f6e4c5a")
680 (revision "1"))
681 (package
682 (name "sbcl-rt")
683 (version (git-version "1990.12.19" revision commit))
684 (source
685 (origin
686 (method git-fetch)
687 (uri (git-reference
688 (url "http://git.kpe.io/rt.git")
689 (commit commit)))
690 (file-name (git-file-name name version))
691 (sha256
692 (base32 "13si2rrxaagbr0bkvg6sqicxxpyshabx6ad6byc9n2ik5ysna69b"))))
693 (build-system asdf-build-system/sbcl)
694 (synopsis "MIT Regression Tester")
695 (description
696 "RT provides a framework for writing regression test suites.")
697 (home-page "https://www.cliki.net/rt")
698 (license license:expat))))
699
700(define-public cl-rt
701 (sbcl-package->cl-source-package sbcl-rt))
702
703(define-public ecl-rt
704 (sbcl-package->ecl-package sbcl-rt))
705
706(define-public sbcl-should-test
707 (let ((commit "48facb9f9c07aeceb71fc0c48ce17fd7d54a09d4")
708 (revision "0"))
709 (package
710 (name "sbcl-should-test")
711 (version (git-version "1.0.0" revision commit))
712 (source
713 (origin
714 (method git-fetch)
715 (uri (git-reference
716 (url "https://github.com/vseloved/should-test")
717 (commit commit)))
718 (file-name (git-file-name "should-test" version))
719 (sha256
720 (base32 "1fqqa7lhf28qg60ji9libkylkcy747x576qpjn1y7c945j2fxmnm"))))
721 (build-system asdf-build-system/sbcl)
722 (inputs
723 `(("cl-ppcre" ,sbcl-cl-ppcre)
724 ("local-time" ,sbcl-local-time)
725 ("osicat" ,sbcl-osicat)
726 ("rutils" ,sbcl-rutils)))
727 (home-page "https://github.com/vseloved/should-test")
728 (synopsis "Minimal yet feature-rich Common Lisp test framework")
729 (description
730 "SHOULD-TEST is a methodology-agnostic and non-opinionated Common Lisp
731test framework, i.e. it doesn't care what kind of test approach you'd like to
732take.")
733 (license license:expat))))
734
735(define-public cl-should-test
736 (sbcl-package->cl-source-package sbcl-should-test))
737
738(define-public ecl-should-test
739 (sbcl-package->ecl-package sbcl-should-test))
740
741(define-public sbcl-stefil
742 (let ((commit "0398548ec95dceb50fc2c2c03e5fb0ce49b86c7a")
743 (revision "0"))
744 (package
745 (name "sbcl-stefil")
746 (version (git-version "0.1" revision commit))
747 (source
748 (origin
749 (method git-fetch)
750 (uri (git-reference
751 (url "https://gitlab.common-lisp.net/stefil/stefil.git")
752 (commit commit)))
753 (file-name (git-file-name name version))
754 (sha256
755 (base32
756 "0bqz64q2szzhf91zyqyssmvrz7da6442rs01808pf3wrdq28bclh"))))
757 (build-system asdf-build-system/sbcl)
758 (inputs
759 `(("alexandria" ,sbcl-alexandria)
760 ("iterate" ,sbcl-iterate)
761 ("metabang-bind" ,sbcl-metabang-bind)
762 ("swank" ,sbcl-slime-swank)))
763 (arguments
764 '(#:phases
765 (modify-phases %standard-phases
766 (add-after 'unpack 'drop-unnecessary-dependency
767 (lambda _
768 (substitute* "package.lisp"
769 ((":stefil-system") ""))
770 #t)))))
771 (home-page "https://common-lisp.net/project/stefil/index-old.shtml")
772 (synopsis "Simple test framework")
773 (description
774 "Stefil is a simple test framework for Common Lisp, with a focus on
775interactive development.")
776 (license license:public-domain))))
777
778(define-public cl-stefil
779 (sbcl-package->cl-source-package sbcl-stefil))
780
781(define-public ecl-stefil
782 (sbcl-package->ecl-package sbcl-stefil))
783
784(define-public sbcl-unit-test
785 (let ((commit "266afaf4ac091fe0e8803bac2ae72d238144e735")
786 (revision "1"))
787 (package
788 (name "sbcl-unit-test")
789 (version (git-version "0.0.0" revision commit))
790 (source
791 (origin
792 (method git-fetch)
793 (uri (git-reference
794 (url "https://github.com/hanshuebner/unit-test")
795 (commit commit)))
796 (file-name (git-file-name "unit-test" version))
797 (sha256
798 (base32 "11hpksz56iqkv7jw25p2a8r3n9dj922fyarn16d98589g6hdskj9"))))
799 (build-system asdf-build-system/sbcl)
800 (home-page "https://github.com/hanshuebner/unit-test")
801 (synopsis "Unit-testing framework for Common Lisp")
802 (description "This is a unit-testing framework for Common Lisp.")
803 (license license:unlicense))))
804
805(define-public ecl-unit-test
806 (sbcl-package->ecl-package sbcl-unit-test))
807
808(define-public cl-unit-test
809 (sbcl-package->cl-source-package sbcl-unit-test))
810
811(define-public sbcl-xlunit
812 (let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
813 (revision "1"))
814 (package
815 (name "sbcl-xlunit")
816 (version (git-version "0.6.3" revision commit))
817 (source
818 (origin
819 (method git-fetch)
820 (uri (git-reference
821 (url "http://git.kpe.io/xlunit.git")
822 (commit commit)))
823 (file-name (git-file-name name version))
824 (sha256
825 (base32
826 "0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
827 (build-system asdf-build-system/sbcl)
828 (arguments
829 '(#:phases
830 (modify-phases %standard-phases
831 (add-after 'unpack 'fix-tests
832 (lambda _
833 (substitute* "xlunit.asd"
834 ((" :force t") ""))
835 #t)))))
836 (synopsis "Unit testing package for Common Lisp")
837 (description
838 "The XLUnit package is a toolkit for building test suites. It is based
839on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
840 (home-page "http://quickdocs.org/xlunit/")
841 (license license:bsd-3))))
842
843(define-public cl-xlunit
844 (sbcl-package->cl-source-package sbcl-xlunit))
845
846(define-public ecl-xlunit
847 (sbcl-package->ecl-package sbcl-xlunit))
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index cee2bbe37b4..6521a1add38 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -78,6 +78,7 @@
78 #:use-module (gnu packages libffi) 78 #:use-module (gnu packages libffi)
79 #:use-module (gnu packages linux) 79 #:use-module (gnu packages linux)
80 #:use-module (gnu packages lisp) 80 #:use-module (gnu packages lisp)
81 #:use-module (gnu packages lisp-check)
81 #:use-module (gnu packages maths) 82 #:use-module (gnu packages maths)
82 #:use-module (gnu packages mp3) 83 #:use-module (gnu packages mp3)
83 #:use-module (gnu packages ncurses) 84 #:use-module (gnu packages ncurses)
@@ -333,37 +334,6 @@ or cl-launch for portable processing of command-line arguments.")
333(define-public cl-command-line-arguments 334(define-public cl-command-line-arguments
334 (sbcl-package->cl-source-package sbcl-command-line-arguments)) 335 (sbcl-package->cl-source-package sbcl-command-line-arguments))
335 336
336(define-public sbcl-fiveam
337 (package
338 (name "sbcl-fiveam")
339 (version "1.4.2")
340 (source
341 (origin
342 (method git-fetch)
343 (uri (git-reference
344 (url "https://github.com/sionescu/fiveam")
345 (commit (string-append "v" version))))
346 (file-name (git-file-name "fiveam" version))
347 (sha256
348 (base32 "04mh5plmlb15jbq3dkd8b9jl1dmbbg4hnd3k7859vpf6s12k5p4j"))))
349 (inputs
350 `(("alexandria" ,sbcl-alexandria)
351 ("net.didierverna.asdf-flv" ,sbcl-net.didierverna.asdf-flv)
352 ("trivial-backtrace" ,sbcl-trivial-backtrace)))
353 (build-system asdf-build-system/sbcl)
354 (synopsis "Common Lisp testing framework")
355 (description "FiveAM is a simple (as far as writing and running tests
356goes) regression testing framework. It has been designed with Common Lisp's
357interactive development model in mind.")
358 (home-page "https://common-lisp.net/project/fiveam/")
359 (license license:bsd-3)))
360
361(define-public cl-fiveam
362 (sbcl-package->cl-source-package sbcl-fiveam))
363
364(define-public ecl-fiveam
365 (sbcl-package->ecl-package sbcl-fiveam))
366
367(define-public sbcl-cl-irc 337(define-public sbcl-cl-irc
368 (let ((commit "963823537c7bfcda2edd4c44d172192da6722175") 338 (let ((commit "963823537c7bfcda2edd4c44d172192da6722175")
369 (revision "0")) 339 (revision "0"))
@@ -512,42 +482,6 @@ thin compatibility layer for gray streams.")
512(define-public ecl-trivial-gray-streams 482(define-public ecl-trivial-gray-streams
513 (sbcl-package->ecl-package sbcl-trivial-gray-streams)) 483 (sbcl-package->ecl-package sbcl-trivial-gray-streams))
514 484
515(define-public sbcl-fiasco
516 (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
517 (revision "1"))
518 (package
519 (name "sbcl-fiasco")
520 (version (git-version "0.0.1" revision commit))
521 (source
522 (origin
523 (method git-fetch)
524 (uri (git-reference
525 (url "https://github.com/joaotavora/fiasco")
526 (commit commit)))
527 (file-name (git-file-name "fiasco" version))
528 (sha256
529 (base32
530 "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
531 (build-system asdf-build-system/sbcl)
532 (inputs
533 `(("alexandria" ,sbcl-alexandria)
534 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
535 (synopsis "Simple and powerful test framework for Common Lisp")
536 (description "A Common Lisp test framework that treasures your failures,
537logical continuation of Stefil. It focuses on interactive debugging.")
538 (home-page "https://github.com/joaotavora/fiasco")
539 ;; LICENCE specifies this is public-domain unless the legislation
540 ;; doesn't allow or recognize it. In that case it falls back to a
541 ;; permissive licence.
542 (license (list license:public-domain
543 (license:x11-style "file://LICENCE"))))))
544
545(define-public cl-fiasco
546 (sbcl-package->cl-source-package sbcl-fiasco))
547
548(define-public ecl-fiasco
549 (sbcl-package->ecl-package sbcl-fiasco))
550
551(define-public sbcl-flexi-streams 485(define-public sbcl-flexi-streams
552 (package 486 (package
553 (name "sbcl-flexi-streams") 487 (name "sbcl-flexi-streams")
@@ -1427,38 +1361,6 @@ documentation system, explicit development support, etc.")
1427(define-public ecl-hu.dwim.asdf 1361(define-public ecl-hu.dwim.asdf
1428 (sbcl-package->ecl-package sbcl-hu.dwim.asdf)) 1362 (sbcl-package->ecl-package sbcl-hu.dwim.asdf))
1429 1363
1430(define-public sbcl-hu.dwim.stefil
1431 (let ((commit "414902c6f575818c39a8a156b8b61b1adfa73dad"))
1432 (package
1433 (name "sbcl-hu.dwim.stefil")
1434 (version (git-version "0.0.0" "2" commit))
1435 (source
1436 (origin
1437 (method git-fetch)
1438 (uri
1439 (git-reference
1440 (url "https://github.com/hu-dwim/hu.dwim.stefil")
1441 (commit commit)))
1442 (sha256
1443 (base32 "14izmjjim590rh74swrssavdmdznj2z8vhqixy780sjhpcr5pmkc"))
1444 (file-name (git-file-name "hu.dwim.stefil" version))))
1445 (build-system asdf-build-system/sbcl)
1446 (native-inputs
1447 `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
1448 (inputs
1449 `(("sbcl-alexandria" ,sbcl-alexandria)))
1450 (home-page "http://dwim.hu/project/hu.dwim.stefil")
1451 (synopsis "Simple test framework")
1452 (description "Stefil is a simple test framework for Common Lisp,
1453with a focus on interactive development.")
1454 (license license:public-domain))))
1455
1456(define-public cl-hu.dwim.stefil
1457 (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
1458
1459(define-public ecl-hu.dwim.stefil
1460 (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
1461
1462(define-public sbcl-babel 1364(define-public sbcl-babel
1463 ;; No release since 2014. 1365 ;; No release since 2014.
1464 (let ((commit "aeed2d1b76358db48e6b70a64399c05678a6b9ea")) 1366 (let ((commit "aeed2d1b76358db48e6b70a64399c05678a6b9ea"))
@@ -1785,36 +1687,6 @@ libraries such as Bordeaux-Threads and Eager Future.")
1785(define-public ecl-calispel 1687(define-public ecl-calispel
1786 (sbcl-package->ecl-package sbcl-calispel)) 1688 (sbcl-package->ecl-package sbcl-calispel))
1787 1689
1788(define-public sbcl-eos
1789 (let ((commit "b4413bccc4d142cbe1bf49516c3a0a22c9d99243")
1790 (revision "2"))
1791 (package
1792 (name "sbcl-eos")
1793 (version (git-version "0.0.0" revision commit))
1794 (source
1795 (origin
1796 (method git-fetch)
1797 (uri (git-reference
1798 (url "https://github.com/adlai/Eos")
1799 (commit commit)))
1800 (sha256
1801 (base32 "1afllvmlnx97yzz404gycl3pa3kwx427k3hrbf37rpmjlv47knhk"))
1802 (file-name (git-file-name "eos" version))))
1803 (build-system asdf-build-system/sbcl)
1804 (synopsis "Unit Testing for Common Lisp")
1805 (description
1806 "Eos was a unit testing library for Common Lisp.
1807It began as a fork of FiveAM; however, FiveAM development has continued, while
1808that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
1809 (home-page "https://github.com/adlai/Eos")
1810 (license license:expat))))
1811
1812(define-public cl-eos
1813 (sbcl-package->cl-source-package sbcl-eos))
1814
1815(define-public ecl-eos
1816 (sbcl-package->ecl-package sbcl-eos))
1817
1818(define-public sbcl-esrap 1690(define-public sbcl-esrap
1819 (let ((commit "866f28fa7a2c1d3fb6d0d0423850d1f9d955750f") 1691 (let ((commit "866f28fa7a2c1d3fb6d0d0423850d1f9d955750f")
1820 (revision "2")) 1692 (revision "2"))
@@ -2060,34 +1932,6 @@ than the body of the lambda.")
2060(define-public cl-fn 1932(define-public cl-fn
2061 (sbcl-package->cl-source-package sbcl-fn)) 1933 (sbcl-package->cl-source-package sbcl-fn))
2062 1934
2063(define-public sbcl-rt
2064 (let ((commit "a6a7503a0b47953bc7579c90f02a6dba1f6e4c5a")
2065 (revision "1"))
2066 (package
2067 (name "sbcl-rt")
2068 (version (git-version "1990.12.19" revision commit))
2069 (source
2070 (origin
2071 (method git-fetch)
2072 (uri (git-reference
2073 (url "http://git.kpe.io/rt.git")
2074 (commit commit)))
2075 (file-name (git-file-name name version))
2076 (sha256
2077 (base32 "13si2rrxaagbr0bkvg6sqicxxpyshabx6ad6byc9n2ik5ysna69b"))))
2078 (build-system asdf-build-system/sbcl)
2079 (synopsis "MIT Regression Tester")
2080 (description
2081 "RT provides a framework for writing regression test suites.")
2082 (home-page "https://www.cliki.net/rt")
2083 (license license:expat))))
2084
2085(define-public cl-rt
2086 (sbcl-package->cl-source-package sbcl-rt))
2087
2088(define-public ecl-rt
2089 (sbcl-package->ecl-package sbcl-rt))
2090
2091(define-public sbcl-nibbles 1935(define-public sbcl-nibbles
2092 ;; No tagged release since 2018. 1936 ;; No tagged release since 2018.
2093 (let ((commit "dad25240928d5cf8f7df69c4398244e03570bb35") 1937 (let ((commit "dad25240928d5cf8f7df69c4398244e03570bb35")
@@ -2388,35 +2232,6 @@ project.")
2388(define-public cl-mssql 2232(define-public cl-mssql
2389 (sbcl-package->cl-source-package sbcl-mssql)) 2233 (sbcl-package->cl-source-package sbcl-mssql))
2390 2234
2391(define-public sbcl-lisp-unit
2392 (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
2393 (package
2394 (name "sbcl-lisp-unit")
2395 (version (git-version "0.0.0" "1" commit))
2396 (source
2397 (origin
2398 (method git-fetch)
2399 (uri (git-reference
2400 (url "https://github.com/OdonataResearchLLC/lisp-unit")
2401 (commit commit)))
2402 (sha256
2403 (base32
2404 "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
2405 (file-name (git-file-name "lisp-unit" version))))
2406 (build-system asdf-build-system/sbcl)
2407 (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
2408 (description
2409 "@command{lisp-unit} is a Common Lisp library that supports unit
2410testing. It is an extension of the library written by Chris Riesbeck.")
2411 (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
2412 (license license:expat))))
2413
2414(define-public cl-lisp-unit
2415 (sbcl-package->cl-source-package sbcl-lisp-unit))
2416
2417(define-public ecl-lisp-unit
2418 (sbcl-package->ecl-package sbcl-lisp-unit))
2419
2420(define-public sbcl-anaphora 2235(define-public sbcl-anaphora
2421 (package 2236 (package
2422 (name "sbcl-anaphora") 2237 (name "sbcl-anaphora")
@@ -2448,47 +2263,6 @@ new fiends in addition to old friends like @command{aif} and
2448(define-public ecl-anaphora 2263(define-public ecl-anaphora
2449 (sbcl-package->ecl-package sbcl-anaphora)) 2264 (sbcl-package->ecl-package sbcl-anaphora))
2450 2265
2451(define-public sbcl-lift
2452 (let ((commit "2594160d6ca3a77d8750110dfa63214256aab852")
2453 (revision "2"))
2454 (package
2455 (name "sbcl-lift")
2456 (version (git-version "1.7.1" revision commit))
2457 (source
2458 (origin
2459 (method git-fetch)
2460 (uri (git-reference
2461 (url "https://github.com/gwkkwg/lift")
2462 (commit commit)))
2463 (sha256
2464 (base32 "01xvz9sl5l5lai4h9dabmcjnm659wf5zllaxqbs55lffskp6jwq3"))
2465 (file-name (git-file-name "lift" version))
2466 (modules '((guix build utils)))
2467 (snippet
2468 ;; Don't keep the bundled website
2469 `(begin
2470 (delete-file-recursively "website")
2471 #t))))
2472 (build-system asdf-build-system/sbcl)
2473 (arguments
2474 ;; The tests require a debugger, but we run with the debugger disabled.
2475 '(#:tests? #f))
2476 (synopsis "LIsp Framework for Testing")
2477 (description
2478 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
2479Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
2480testcases are organized into hierarchical testsuites each of which can have
2481its own fixture. When run, a testcase can succeed, fail, or error. LIFT
2482supports randomized testing, benchmarking, profiling, and reporting.")
2483 (home-page "https://github.com/gwkkwg/lift")
2484 (license license:expat))))
2485
2486(define-public cl-lift
2487 (sbcl-package->cl-source-package sbcl-lift))
2488
2489(define-public ecl-lift
2490 (sbcl-package->ecl-package sbcl-lift))
2491
2492(define-public sbcl-let-plus 2266(define-public sbcl-let-plus
2493 (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb")) 2267 (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
2494 (package 2268 (package
@@ -2609,49 +2383,6 @@ named color.")
2609(define-public ecl-cl-ansi-text 2383(define-public ecl-cl-ansi-text
2610 (sbcl-package->ecl-package sbcl-cl-ansi-text)) 2384 (sbcl-package->ecl-package sbcl-cl-ansi-text))
2611 2385
2612(define-public sbcl-prove
2613 (let ((commit "5d71f02795b89e36f34e8c7d50e69b67ec6ca2de")
2614 (revision "2"))
2615 (package
2616 (name "sbcl-prove")
2617 (version (git-version "1.0.0" revision commit))
2618 (source
2619 (origin
2620 (method git-fetch)
2621 (uri (git-reference
2622 (url "https://github.com/fukamachi/prove")
2623 (commit commit)))
2624 (sha256
2625 (base32 "0ca6ha3zhmckq3ad9lxm6sbg4i0hg3m81xhan4dkxd3x9898jzpc"))
2626 (file-name (git-file-name "prove" version))))
2627 (build-system asdf-build-system/sbcl)
2628 (inputs
2629 `(("alexandria" ,sbcl-alexandria)
2630 ("cl-colors" ,sbcl-cl-colors)
2631 ("cl-ppcre" ,sbcl-cl-ppcre)
2632 ("cl-ansi-text" ,sbcl-cl-ansi-text)))
2633 (synopsis "Yet another unit testing framework for Common Lisp")
2634 (description
2635 "This project was originally called @command{cl-test-more}.
2636@command{prove} is yet another unit testing framework for Common Lisp. The
2637advantages of @command{prove} are:
2638
2639@itemize
2640@item Various simple functions for testing and informative error messages
2641@item ASDF integration
2642@item Extensible test reporters
2643@item Colorizes the report if it's available (note for SLIME)
2644@item Reports test durations
2645@end itemize\n")
2646 (home-page "https://github.com/fukamachi/prove")
2647 (license license:expat))))
2648
2649(define-public cl-prove
2650 (sbcl-package->cl-source-package sbcl-prove))
2651
2652(define-public ecl-prove
2653 (sbcl-package->ecl-package sbcl-prove))
2654
2655(define-public sbcl-proc-parse 2386(define-public sbcl-proc-parse
2656 (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd")) 2387 (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
2657 (package 2388 (package
@@ -2773,35 +2504,6 @@ utilities that make it even easier to manipulate text in Common Lisp. It has
2773(define-public ecl-cl-string-match 2504(define-public ecl-cl-string-match
2774 (sbcl-package->ecl-package sbcl-cl-string-match)) 2505 (sbcl-package->ecl-package sbcl-cl-string-match))
2775 2506
2776(define-public sbcl-ptester
2777 (let ((commit "fe69fde54f4bce00ce577feb918796c293fc7253")
2778 (revision "1"))
2779 (package
2780 (name "sbcl-ptester")
2781 (version (git-version "2.1.3" revision commit))
2782 (source
2783 (origin
2784 (method git-fetch)
2785 (uri (git-reference
2786 (url "http://git.kpe.io/ptester.git")
2787 (commit commit)))
2788 (file-name (git-file-name name version))
2789 (sha256
2790 (base32 "1l0lfl7cdnr2qf4zh38hi4llxg22c49zkm639bdkmvlkzwj3ndwf"))))
2791 (build-system asdf-build-system/sbcl)
2792 (home-page "http://quickdocs.org/ptester/")
2793 (synopsis "Portable test harness package")
2794 (description
2795 "@command{ptester} is a portable testing framework based on Franz's
2796tester module.")
2797 (license license:llgpl))))
2798
2799(define-public cl-ptester
2800 (sbcl-package->cl-source-package sbcl-ptester))
2801
2802(define-public ecl-ptester
2803 (sbcl-package->ecl-package sbcl-ptester))
2804
2805(define-public sbcl-puri 2507(define-public sbcl-puri
2806 (let ((commit "4bbab89d9ccbb26346899d1f496c97604fec567b") 2508 (let ((commit "4bbab89d9ccbb26346899d1f496c97604fec567b")
2807 (revision "2")) 2509 (revision "2"))
@@ -3191,6 +2893,59 @@ relational database engine.")
3191(define-public ecl-cl-sqlite 2893(define-public ecl-cl-sqlite
3192 (sbcl-package->ecl-package sbcl-cl-sqlite)) 2894 (sbcl-package->ecl-package sbcl-cl-sqlite))
3193 2895
2896(define-public sbcl-cl-redis
2897 (let ((commit "7d592417421cf7cd1cffa96043b457af0490df7d")
2898 (revision "0"))
2899 (package
2900 (name "sbcl-cl-redis")
2901 (version (git-version "2.3.8" revision commit))
2902 (source
2903 (origin
2904 (method git-fetch)
2905 (uri (git-reference
2906 (url "https://github.com/vseloved/cl-redis")
2907 (commit commit)))
2908 (file-name (git-file-name "cl-redis" version))
2909 (sha256
2910 (base32 "0x5ahxb5cx37biyn3cjycshhm1rr9p5cf1a9l5hd1n1xjxm2f8vi"))))
2911 (build-system asdf-build-system/sbcl)
2912 (arguments
2913 '(#:phases
2914 (modify-phases %standard-phases
2915 (add-before 'check 'start-redis
2916 (lambda _
2917 (system "redis-server --port 6379 &"))))))
2918 (native-inputs
2919 `(("bordeaux-threads" ,sbcl-bordeaux-threads)
2920 ("flexi-streams" ,sbcl-flexi-streams)
2921 ("redis" ,redis)
2922 ("should-test" ,sbcl-should-test)))
2923 (inputs
2924 `(("babel" ,sbcl-babel)
2925 ("cl-ppcre" ,sbcl-cl-ppcre)
2926 ("flexi-streams" ,sbcl-flexi-streams)
2927 ("rutils" ,sbcl-rutils)
2928 ("usocket" ,sbcl-usocket)))
2929 (home-page "https://github.com/vseloved/cl-redis")
2930 (synopsis "Common Lisp client for Redis")
2931 (description "This is a Common Lisp wrapper for interacting with the
2932Redis data structure store.")
2933 (license license:expat))))
2934
2935(define-public cl-redis
2936 (sbcl-package->cl-source-package sbcl-cl-redis))
2937
2938(define-public ecl-cl-redis
2939 (let ((pkg (sbcl-package->ecl-package sbcl-cl-redis)))
2940 (package
2941 (inherit pkg)
2942 (arguments
2943 (substitute-keyword-arguments (package-arguments pkg)
2944 ;; Tests are failing on ECL with:
2945 ;; Test L-COMMANDS: An error occurred during initialization:
2946 ;; Protocol not found: "tcp".
2947 ((#:tests? _ #f) #f))))))
2948
3194(define-public sbcl-parenscript 2949(define-public sbcl-parenscript
3195 ;; Source archives are overwritten on every release, we use the Git repo instead. 2950 ;; Source archives are overwritten on every release, we use the Git repo instead.
3196 (let ((commit "7a1ac46353cecd144fc91915ba9f122aafcf4766")) 2951 (let ((commit "7a1ac46353cecd144fc91915ba9f122aafcf4766"))
@@ -4755,48 +4510,6 @@ Only minimal changes required to make your CLOS objects serializable.")
4755(define-public ecl-marshal 4510(define-public ecl-marshal
4756 (sbcl-package->ecl-package sbcl-marshal)) 4511 (sbcl-package->ecl-package sbcl-marshal))
4757 4512
4758(define-public sbcl-checkl
4759 (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
4760 (revision "1"))
4761 (package
4762 (name "sbcl-checkl")
4763 (version (git-version "0.0.0" revision commit))
4764 (source
4765 (origin
4766 (method git-fetch)
4767 (uri (git-reference
4768 (url "https://github.com/rpav/CheckL")
4769 (commit commit)))
4770 (file-name (git-file-name name version))
4771 (sha256
4772 (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
4773 (build-system asdf-build-system/sbcl)
4774 (arguments
4775 ;; Error while trying to load definition for system checkl-test from
4776 ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
4777 ;; is undefined.
4778 '(#:asd-files '("checkl.asd")
4779 #:tests? #f))
4780 (native-inputs
4781 `(("sbcl-fiveam" ,sbcl-fiveam)))
4782 (inputs
4783 `(("sbcl-marshal" ,sbcl-marshal)))
4784 (home-page "https://github.com/rpav/CheckL/")
4785 (synopsis "Dynamic testing for Common Lisp")
4786 (description
4787 "CheckL lets you write tests dynamically, it checks resulting values
4788against the last run.")
4789 ;; The author specifies both LLGPL and "BSD", but the "BSD" license
4790 ;; isn't specified anywhere, so I don't know which kind. LLGPL is the
4791 ;; stronger of the two and so I think only listing this should suffice.
4792 (license license:llgpl))))
4793
4794(define-public cl-checkl
4795 (sbcl-package->cl-source-package sbcl-checkl))
4796
4797(define-public ecl-checkl
4798 (sbcl-package->ecl-package sbcl-checkl))
4799
4800(define-public sbcl-fast-io 4513(define-public sbcl-fast-io
4801 (let ((commit "603f4903dd74fb221859da7058ae6ca3853fe64b") 4514 (let ((commit "603f4903dd74fb221859da7058ae6ca3853fe64b")
4802 (revision "2")) 4515 (revision "2"))
@@ -5451,39 +5164,6 @@ port within a range.")
5451(define-public ecl-find-port 5164(define-public ecl-find-port
5452 (sbcl-package->ecl-package sbcl-find-port)) 5165 (sbcl-package->ecl-package sbcl-find-port))
5453 5166
5454(define-public sbcl-clunit
5455 (let ((commit "6f6d72873f0e1207f037470105969384f8380628")
5456 (revision "1"))
5457 (package
5458 (name "sbcl-clunit")
5459 (version (git-version "0.2.3" revision commit))
5460 (source
5461 (origin
5462 (method git-fetch)
5463 (uri (git-reference
5464 (url "https://github.com/tgutu/clunit")
5465 (commit commit)))
5466 (file-name (git-file-name name version))
5467 (sha256
5468 (base32
5469 "1idf2xnqzlhi8rbrqmzpmb3i1l6pbdzhhajkmhwbp6qjkmxa4h85"))))
5470 (build-system asdf-build-system/sbcl)
5471 (synopsis "CLUnit is a Common Lisp unit testing framework")
5472 (description
5473 "CLUnit is a Common Lisp unit testing framework. It is designed
5474to be easy to use so that you can quickly start testing. CLUnit
5475provides a rich set of features aimed at improving your unit testing
5476experience.")
5477 (home-page "https://tgutu.github.io/clunit/")
5478 ;; MIT License
5479 (license license:expat))))
5480
5481(define-public cl-clunit
5482 (sbcl-package->cl-source-package sbcl-clunit))
5483
5484(define-public ecl-clunit
5485 (sbcl-package->ecl-package sbcl-clunit))
5486
5487(define-public sbcl-py4cl 5167(define-public sbcl-py4cl
5488 (let ((commit "4c8a2b0814fd311f978964f825ce012290f60136") 5168 (let ((commit "4c8a2b0814fd311f978964f825ce012290f60136")
5489 (revision "1")) 5169 (revision "1"))
@@ -5615,37 +5295,6 @@ high-level way. This library provides such operators.")
5615(define-public ecl-parse-declarations 5295(define-public ecl-parse-declarations
5616 (sbcl-package->ecl-package sbcl-parse-declarations)) 5296 (sbcl-package->ecl-package sbcl-parse-declarations))
5617 5297
5618(define-public sbcl-cl-quickcheck
5619 (let ((commit "807b2792a30c883a2fbecea8e7db355b50ba662f")
5620 (revision "1"))
5621 (package
5622 (name "sbcl-cl-quickcheck")
5623 (version (git-version "0.0.4" revision commit))
5624 (source
5625 (origin
5626 (method git-fetch)
5627 (uri (git-reference
5628 (url "https://github.com/mcandre/cl-quickcheck")
5629 (commit commit)))
5630 (file-name (git-file-name name version))
5631 (sha256
5632 (base32
5633 "165lhypq5xkcys6hvzb3jq7ywnmqvzaflda29qk2cbs3ggas4767"))))
5634 (build-system asdf-build-system/sbcl)
5635 (synopsis
5636 "Common Lisp port of the QuickCheck unit test framework")
5637 (description
5638 "Common Lisp port of the QuickCheck unit test framework")
5639 (home-page "https://github.com/mcandre/cl-quickcheck")
5640 ;; MIT
5641 (license license:expat))))
5642
5643(define-public cl-quickcheck
5644 (sbcl-package->cl-source-package sbcl-cl-quickcheck))
5645
5646(define-public ecl-cl-quickcheck
5647 (sbcl-package->ecl-package sbcl-cl-quickcheck))
5648
5649(define-public sbcl-burgled-batteries3 5298(define-public sbcl-burgled-batteries3
5650 (let ((commit "f65f454d13bb6c40e17e9ec62e41eb5069e09760") 5299 (let ((commit "f65f454d13bb6c40e17e9ec62e41eb5069e09760")
5651 (revision "2")) 5300 (revision "2"))
@@ -7087,44 +6736,6 @@ decisions becomes significantly easier.")
7087(define-public ecl-cl-containers 6736(define-public ecl-cl-containers
7088 (sbcl-package->ecl-package sbcl-cl-containers)) 6737 (sbcl-package->ecl-package sbcl-cl-containers))
7089 6738
7090(define-public sbcl-xlunit
7091 (let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
7092 (revision "1"))
7093 (package
7094 (name "sbcl-xlunit")
7095 (version (git-version "0.6.3" revision commit))
7096 (source
7097 (origin
7098 (method git-fetch)
7099 (uri (git-reference
7100 (url "http://git.kpe.io/xlunit.git")
7101 (commit commit)))
7102 (file-name (git-file-name name version))
7103 (sha256
7104 (base32
7105 "0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
7106 (build-system asdf-build-system/sbcl)
7107 (arguments
7108 '(#:phases
7109 (modify-phases %standard-phases
7110 (add-after 'unpack 'fix-tests
7111 (lambda _
7112 (substitute* "xlunit.asd"
7113 ((" :force t") ""))
7114 #t)))))
7115 (synopsis "Unit testing package for Common Lisp")
7116 (description
7117 "The XLUnit package is a toolkit for building test suites. It is based
7118on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
7119 (home-page "http://quickdocs.org/xlunit/")
7120 (license license:bsd-3))))
7121
7122(define-public cl-xlunit
7123 (sbcl-package->cl-source-package sbcl-xlunit))
7124
7125(define-public ecl-xlunit
7126 (sbcl-package->ecl-package sbcl-xlunit))
7127
7128(define-public sbcl-cambl 6739(define-public sbcl-cambl
7129 (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636") 6740 (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
7130 (revision "1")) 6741 (revision "1"))
@@ -7735,6 +7346,47 @@ supplement, not a competitor, to Alexandria.")
7735(define-public ecl-serapeum 7346(define-public ecl-serapeum
7736 (sbcl-package->ecl-package sbcl-serapeum)) 7347 (sbcl-package->ecl-package sbcl-serapeum))
7737 7348
7349(define-public sbcl-rutils
7350 (let ((commit "db3c3f4ae897025b5f0cd81042ca147da60ca0c5")
7351 (revision "0"))
7352 (package
7353 (name "sbcl-rutils")
7354 (version (git-version "5.2.1" revision commit))
7355 (source
7356 (origin
7357 (method git-fetch)
7358 (uri (git-reference
7359 (url "https://github.com/vseloved/rutils")
7360 (commit commit)))
7361 (file-name (git-file-name "rutils" version))
7362 (sha256
7363 (base32 "1d2whscknh1zga2vdqvfqri8wx0gnml3sfqz62igq0ppap6q07y3"))))
7364 (build-system asdf-build-system/sbcl)
7365 (arguments
7366 `(#:asd-systems '("rutils" "rutilsx")
7367 ;; Tests disabled because of a circular dependency with should-test.
7368 #:tests? #f
7369 #:phases
7370 (modify-phases %standard-phases
7371 (add-after 'unpack 'fix-build
7372 (lambda _
7373 ;; File faild to load, and we don't use it as tests are
7374 ;; disabled, so let's delete it.
7375 (delete-file "rutilsx-test.asd"))))))
7376 (inputs
7377 `(("closer-mop" ,sbcl-closer-mop)
7378 ("named-readtables" ,sbcl-named-readtables)))
7379 (home-page "https://github.com/vseloved/rutils")
7380 (synopsis "Radical Utilities for Common Lisp")
7381 (description "RUTILS is a syntactic utilities package for Common Lisp.")
7382 (license license:bsd-3))))
7383
7384(define-public cl-rutils
7385 (sbcl-package->cl-source-package sbcl-rutils))
7386
7387(define-public ecl-rutils
7388 (sbcl-package->ecl-package sbcl-rutils))
7389
7738(define-public sbcl-arrows 7390(define-public sbcl-arrows
7739 (let ((commit "df7cf0067e0132d9697ac8b1a4f1b9c88d4f5382") 7391 (let ((commit "df7cf0067e0132d9697ac8b1a4f1b9c88d4f5382")
7740 (revision "0")) 7392 (revision "0"))
@@ -7894,49 +7546,6 @@ JSON interchange format.")
7894(define-public ecl-yason 7546(define-public ecl-yason
7895 (sbcl-package->ecl-package sbcl-yason)) 7547 (sbcl-package->ecl-package sbcl-yason))
7896 7548
7897(define-public sbcl-stefil
7898 (let ((commit "0398548ec95dceb50fc2c2c03e5fb0ce49b86c7a")
7899 (revision "0"))
7900 (package
7901 (name "sbcl-stefil")
7902 (version (git-version "0.1" revision commit))
7903 (source
7904 (origin
7905 (method git-fetch)
7906 (uri (git-reference
7907 (url "https://gitlab.common-lisp.net/stefil/stefil.git")
7908 (commit commit)))
7909 (file-name (git-file-name name version))
7910 (sha256
7911 (base32
7912 "0bqz64q2szzhf91zyqyssmvrz7da6442rs01808pf3wrdq28bclh"))))
7913 (build-system asdf-build-system/sbcl)
7914 (inputs
7915 `(("alexandria" ,sbcl-alexandria)
7916 ("iterate" ,sbcl-iterate)
7917 ("metabang-bind" ,sbcl-metabang-bind)
7918 ("swank" ,sbcl-slime-swank)))
7919 (arguments
7920 '(#:phases
7921 (modify-phases %standard-phases
7922 (add-after 'unpack 'drop-unnecessary-dependency
7923 (lambda _
7924 (substitute* "package.lisp"
7925 ((":stefil-system") ""))
7926 #t)))))
7927 (home-page "https://common-lisp.net/project/stefil/index-old.shtml")
7928 (synopsis "Simple test framework")
7929 (description
7930 "Stefil is a simple test framework for Common Lisp, with a focus on
7931interactive development.")
7932 (license license:public-domain))))
7933
7934(define-public cl-stefil
7935 (sbcl-package->cl-source-package sbcl-stefil))
7936
7937(define-public ecl-stefil
7938 (sbcl-package->ecl-package sbcl-stefil))
7939
7940(define-public sbcl-graph 7549(define-public sbcl-graph
7941 (let ((commit "78bf9ec930d8eae4f0861b5be76765fb1e45e24f") 7550 (let ((commit "78bf9ec930d8eae4f0861b5be76765fb1e45e24f")
7942 (revision "0")) 7551 (revision "0"))
@@ -8120,41 +7729,6 @@ macro. This library provides a set of simple utilities to help with that.")
8120(define-public ecl-form-fiddle 7729(define-public ecl-form-fiddle
8121 (sbcl-package->ecl-package sbcl-form-fiddle)) 7730 (sbcl-package->ecl-package sbcl-form-fiddle))
8122 7731
8123(define-public sbcl-parachute
8124 (let ((commit "ca04dd8e43010a6dfffa26dbe1d62af86008d666")
8125 (revision "0"))
8126 (package
8127 (name "sbcl-parachute")
8128 (version (git-version "1.1.1" revision commit))
8129 (source
8130 (origin
8131 (method git-fetch)
8132 (uri
8133 (git-reference
8134 (url "https://github.com/Shinmera/parachute")
8135 (commit commit)))
8136 (file-name (git-file-name name version))
8137 (sha256
8138 (base32
8139 "1mvsm3r0r6a2bg75nw0q7n9vlby3ch45qjl7hnb5k1z2n5x5lh60"))))
8140 (build-system asdf-build-system/sbcl)
8141 (inputs
8142 `(("documentation-utils" ,sbcl-documentation-utils)
8143 ("form-fiddle" ,sbcl-form-fiddle)))
8144 (synopsis "Extensible and cross-compatible testing framework for Common Lisp")
8145 (description
8146 "Parachute is a simple-to-use and extensible testing framework.
8147In Parachute, things are organised as a bunch of named tests within a package.
8148Each test can contain a bunch of test forms that make up its body.")
8149 (home-page "https://shinmera.github.io/parachute/")
8150 (license license:zlib))))
8151
8152(define-public cl-parachute
8153 (sbcl-package->cl-source-package sbcl-parachute))
8154
8155(define-public ecl-parachute
8156 (sbcl-package->ecl-package sbcl-parachute))
8157
8158(define-public sbcl-array-utils 7732(define-public sbcl-array-utils
8159 (let ((commit "f90eb9070d0b2205af51126a35033574725e5c56") 7733 (let ((commit "f90eb9070d0b2205af51126a35033574725e5c56")
8160 (revision "0")) 7734 (revision "0"))
@@ -8470,44 +8044,6 @@ and camel-case rules.")
8470(define-public ecl-symbol-munger 8044(define-public ecl-symbol-munger
8471 (sbcl-package->ecl-package sbcl-symbol-munger)) 8045 (sbcl-package->ecl-package sbcl-symbol-munger))
8472 8046
8473(define-public sbcl-lisp-unit2
8474 ;; There is a cyclical dependency between symbol-munger and lisp-unit2.
8475 ;; See https://github.com/AccelerationNet/symbol-munger/issues/4
8476 (let ((commit "fb9721524d1e4e73abb223ee036d74ce14a5505c")
8477 (revision "1"))
8478 (package
8479 (name "sbcl-lisp-unit2")
8480 (version (git-version "0.2.0" revision commit))
8481 (source
8482 (origin
8483 (method git-fetch)
8484 (uri (git-reference
8485 (url "https://github.com/AccelerationNet/lisp-unit2")
8486 (commit commit)))
8487 (file-name (git-file-name name version))
8488 (sha256
8489 (base32
8490 "1rsqy8y0jqll6xn9a593848f5wvd5ribv4csry1ly0hmdhfnqzlp"))))
8491 (build-system asdf-build-system/sbcl)
8492 (inputs
8493 `(("alexandria" ,sbcl-alexandria)
8494 ("cl-interpol" ,sbcl-cl-interpol)
8495 ("iterate" ,sbcl-iterate)
8496 ("symbol-munger" ,sbcl-symbol-munger)))
8497 (synopsis "Test Framework for Common Lisp")
8498 (description
8499 "LISP-UNIT2 is a Common Lisp library that supports unit testing in the
8500style of JUnit for Java. It is a new version of the lisp-unit library written
8501by Chris Riesbeck.")
8502 (home-page "https://github.com/AccelerationNet/lisp-unit2")
8503 (license license:expat))))
8504
8505(define-public cl-lisp-unit2
8506 (sbcl-package->cl-source-package sbcl-lisp-unit2))
8507
8508(define-public ecl-lisp-unit2
8509 (sbcl-package->ecl-package sbcl-lisp-unit2))
8510
8511(define-public sbcl-cl-csv 8047(define-public sbcl-cl-csv
8512 (let ((commit "68ecb5d816545677513d7f6308d9e5e8d2265651") 8048 (let ((commit "68ecb5d816545677513d7f6308d9e5e8d2265651")
8513 (revision "2")) 8049 (revision "2"))
@@ -9294,35 +8830,6 @@ be used with @code{cl-yacc}.")
9294(define-public ecl-cl-lex 8830(define-public ecl-cl-lex
9295 (sbcl-package->ecl-package sbcl-cl-lex)) 8831 (sbcl-package->ecl-package sbcl-cl-lex))
9296 8832
9297(define-public sbcl-clunit2
9298 (let ((commit "5e28343734eb9b7aee39306a614af92c1062d50b")
9299 (revision "1"))
9300 (package
9301 (name "sbcl-clunit2")
9302 (version (git-version "0.2.4" revision commit))
9303 (source
9304 (origin
9305 (method git-fetch)
9306 (uri (git-reference
9307 (url "https://notabug.org/cage/clunit2.git")
9308 (commit commit)))
9309 (file-name (git-file-name name version))
9310 (sha256
9311 (base32 "1ngiapfki6nm8a555mzhb5p7ch79i3w665za5bmb5j7q34fy80vw"))))
9312 (build-system asdf-build-system/sbcl)
9313 (synopsis "Unit testing framework for Common Lisp")
9314 (description
9315 "CLUnit is a Common Lisp unit testing framework. It is designed to be
9316easy to use so that you can quickly start testing.")
9317 (home-page "https://notabug.org/cage/clunit2")
9318 (license license:expat))))
9319
9320(define-public cl-clunit2
9321 (sbcl-package->cl-source-package sbcl-clunit2))
9322
9323(define-public ecl-clunit2
9324 (sbcl-package->ecl-package sbcl-clunit2))
9325
9326(define-public sbcl-cl-colors2 8833(define-public sbcl-cl-colors2
9327 (let ((commit "795aedee593b095fecde574bd999b520dd03ed24") 8834 (let ((commit "795aedee593b095fecde574bd999b520dd03ed24")
9328 (revision "1")) 8835 (revision "1"))
@@ -11269,39 +10776,6 @@ and active restarts.")
11269(define-public ecl-dissect 10776(define-public ecl-dissect
11270 (sbcl-package->ecl-package sbcl-dissect)) 10777 (sbcl-package->ecl-package sbcl-dissect))
11271 10778
11272(define-public sbcl-rove
11273 (package
11274 (name "sbcl-rove")
11275 (version "0.9.6")
11276 (source
11277 (origin
11278 (method git-fetch)
11279 (uri (git-reference
11280 (url "https://github.com/fukamachi/rove")
11281 (commit "f3695db08203bf26f3b861dc22ac0f4257d3ec21")))
11282 (file-name (git-file-name name version))
11283 (sha256
11284 (base32
11285 "07ala4l2fncxf540fzxj3h5mhi9i4wqllhj0rqk8m2ljl5zbz89q"))))
11286 (build-system asdf-build-system/sbcl)
11287 (inputs
11288 `(("bordeaux-threads" ,sbcl-bordeaux-threads)
11289 ("dissect" ,sbcl-dissect)
11290 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
11291 (home-page "https://github.com/fukamachi/rove")
11292 (synopsis
11293 "Yet another common lisp testing library")
11294 (description
11295 "Rove is a unit testing framework for Common Lisp applications.
11296This is intended to be a successor of Prove.")
11297 (license license:bsd-3)))
11298
11299(define-public cl-rove
11300 (sbcl-package->cl-source-package sbcl-rove))
11301
11302(define-public ecl-rove
11303 (sbcl-package->ecl-package sbcl-rove))
11304
11305(define-public sbcl-exponential-backoff 10779(define-public sbcl-exponential-backoff
11306 (let ((commit "8d9e8444d8b3184a524c12ce3449f91613ab714f")) 10780 (let ((commit "8d9e8444d8b3184a524c12ce3449f91613ab714f"))
11307 (package 10781 (package
@@ -11368,33 +10842,6 @@ learn about each of the parameters.")
11368(define-public ecl-sxql 10842(define-public ecl-sxql
11369 (sbcl-package->ecl-package sbcl-sxql)) 10843 (sbcl-package->ecl-package sbcl-sxql))
11370 10844
11371(define-public sbcl-1am
11372 (let ((commit "8b1da94eca4613fd8a20bdf63f0e609e379b0ba5"))
11373 (package
11374 (name "sbcl-1am")
11375 (version (git-version "0.0" "1" commit))
11376 (source
11377 (origin
11378 (method git-fetch)
11379 (uri (git-reference
11380 (url "https://github.com/lmj/1am")
11381 (commit commit)))
11382 (file-name (git-file-name name version))
11383 (sha256
11384 (base32
11385 "05ss4nz1jb9kb796295482b62w5cj29msfj8zis33sp2rw2vmv2g"))))
11386 (build-system asdf-build-system/sbcl)
11387 (home-page "https://github.com/lmj/1am")
11388 (synopsis "Minimal testing framework for Common Lisp")
11389 (description "A minimal testing framework for Common Lisp.")
11390 (license license:expat))))
11391
11392(define-public cl-1am
11393 (sbcl-package->cl-source-package sbcl-1am))
11394
11395(define-public ecl-1am
11396 (sbcl-package->ecl-package sbcl-1am))
11397
11398(define-public sbcl-cl-ascii-table 10845(define-public sbcl-cl-ascii-table
11399 (let ((commit "d9f5e774a56fad1b416e4dadb8f8a5b0e84094e2") 10846 (let ((commit "d9f5e774a56fad1b416e4dadb8f8a5b0e84094e2")
11400 (revision "1")) 10847 (revision "1"))
@@ -13994,41 +13441,6 @@ latitude/longitude and Open Location Code.")
13994(define-public ecl-clawk 13441(define-public ecl-clawk
13995 (sbcl-package->ecl-package sbcl-clawk)) 13442 (sbcl-package->ecl-package sbcl-clawk))
13996 13443
13997(define-public sbcl-check-it
13998 (let ((commit "b79c9103665be3976915b56b570038f03486e62f"))
13999 (package
14000 (name "sbcl-check-it")
14001 (version (git-version "0.1.0" "1" commit))
14002 (source
14003 (origin
14004 (method git-fetch)
14005 (uri (git-reference
14006 (url "https://github.com/DalekBaldwin/check-it/")
14007 (commit commit)))
14008 (file-name (git-file-name name version))
14009 (sha256
14010 (base32 "1kbjwpniffdpv003igmlz5r0vy65m7wpfnhg54fhwirp1227hgg7"))))
14011 (build-system asdf-build-system/sbcl)
14012 (inputs
14013 `(("alexandria" ,sbcl-alexandria)
14014 ("closer-mop" ,sbcl-closer-mop)
14015 ("optima" ,sbcl-optima)))
14016 (native-inputs
14017 `(("stefil" ,sbcl-stefil)))
14018 (home-page "https://github.com/arclanguage/Clamp")
14019 (synopsis "Randomized specification-based testing for Common Lisp")
14020 (description
14021 "This is a randomized property-based testing library for Common Lisp.
14022Rather than being a full-fledged general test framework in its own right, it's
14023designed to embed randomized tests in whatever framework you like.")
14024 (license license:llgpl))))
14025
14026(define-public cl-check-it
14027 (sbcl-package->cl-source-package sbcl-check-it))
14028
14029(define-public ecl-check-it
14030 (sbcl-package->ecl-package sbcl-check-it))
14031
14032(define-public sbcl-clamp 13444(define-public sbcl-clamp
14033 (let ((commit "02b8f3953e5753cc61a719807c82f3795cd28fe1")) 13445 (let ((commit "02b8f3953e5753cc61a719807c82f3795cd28fe1"))
14034 (package 13446 (package
@@ -16517,33 +15929,6 @@ color spaces, which supports many color models.")
16517(define-public cl-dufy 15929(define-public cl-dufy
16518 (sbcl-package->cl-source-package sbcl-dufy)) 15930 (sbcl-package->cl-source-package sbcl-dufy))
16519 15931
16520(define-public sbcl-unit-test
16521 (let ((commit "266afaf4ac091fe0e8803bac2ae72d238144e735")
16522 (revision "1"))
16523 (package
16524 (name "sbcl-unit-test")
16525 (version (git-version "0.0.0" revision commit))
16526 (source
16527 (origin
16528 (method git-fetch)
16529 (uri (git-reference
16530 (url "https://github.com/hanshuebner/unit-test")
16531 (commit commit)))
16532 (file-name (git-file-name "unit-test" version))
16533 (sha256
16534 (base32 "11hpksz56iqkv7jw25p2a8r3n9dj922fyarn16d98589g6hdskj9"))))
16535 (build-system asdf-build-system/sbcl)
16536 (home-page "https://github.com/hanshuebner/unit-test")
16537 (synopsis "Unit-testing framework for Common Lisp")
16538 (description "This is a unit-testing framework for Common Lisp.")
16539 (license license:unlicense))))
16540
16541(define-public ecl-unit-test
16542 (sbcl-package->ecl-package sbcl-unit-test))
16543
16544(define-public cl-unit-test
16545 (sbcl-package->cl-source-package sbcl-unit-test))
16546
16547(define-public sbcl-bknr-datastore 15932(define-public sbcl-bknr-datastore
16548 (let ((commit "c98d44f47cc88d19ff91ca3eefbd9719a8ace022") 15933 (let ((commit "c98d44f47cc88d19ff91ca3eefbd9719a8ace022")
16549 (revision "1")) 15934 (revision "1"))
@@ -17819,41 +17204,6 @@ implementations offer.")
17819(define-public cl-atomics 17204(define-public cl-atomics
17820 (sbcl-package->cl-source-package sbcl-atomics)) 17205 (sbcl-package->cl-source-package sbcl-atomics))
17821 17206
17822(define-public sbcl-cl-mock
17823 ;; .asd version only got updated recently, despired the old GitHug "1.0.1" release.
17824 (let ((commit "7988dca2093358911b67597a2cd1570c785dfe76"))
17825 (package
17826 (name "sbcl-cl-mock")
17827 (version (git-version "1.0.1" "1" commit))
17828 (source
17829 (origin
17830 (method git-fetch)
17831 (uri (git-reference
17832 (url "https://github.com/Ferada/cl-mock/")
17833 (commit commit)))
17834 (file-name (git-file-name name version))
17835 (sha256
17836 (base32 "0f40wikcf783jx26ip0nnhwjjfjvjiw7njqsqrb6kaphc8bgw0i1"))))
17837 (build-system asdf-build-system/sbcl)
17838 (inputs
17839 `(("alexandria" ,sbcl-alexandria)
17840 ("closer-mop" ,sbcl-closer-mop)
17841 ("trivia" ,sbcl-trivia)))
17842 (native-inputs
17843 `(("fiveam" ,sbcl-fiveam)))
17844 (home-page "https://github.com/Ferada/cl-mock")
17845 (synopsis "Mocking functions for Common Lisp testing")
17846 (description
17847 "This small library provides a way to replace the actual implementation
17848of either regular or generic functions with mocks.")
17849 (license license:agpl3))))
17850
17851(define-public ecl-cl-mock
17852 (sbcl-package->ecl-package sbcl-cl-mock))
17853
17854(define-public cl-mock
17855 (sbcl-package->cl-source-package sbcl-cl-mock))
17856
17857(define-public sbcl-cl-murmurhash 17207(define-public sbcl-cl-murmurhash
17858 ;; No release. 17208 ;; No release.
17859 (let ((commit "5433f5e95f1cce63a81259a471150834c6a59364") 17209 (let ((commit "5433f5e95f1cce63a81259a471150834c6a59364")
@@ -19231,3 +18581,70 @@ higher-level lispier interface.")
19231 18581
19232(define-public ecl-cl-charms 18582(define-public ecl-cl-charms
19233 (sbcl-package->ecl-package sbcl-cl-charms)) 18583 (sbcl-package->ecl-package sbcl-cl-charms))
18584
18585(define-public sbcl-clinenoise
18586 (let ((commit "46e21f99d06a55d93eaa382cf652d55d457032ef")
18587 (revision "1"))
18588 (package
18589 (name "sbcl-clinenoise")
18590 (version (git-version "0.0.0" revision commit))
18591 (source
18592 (origin
18593 (method git-fetch)
18594 (uri (git-reference
18595 (url "https://github.com/jasom/clinenoise")
18596 (commit commit)))
18597 (file-name (git-file-name "clinenoise" version))
18598 (sha256
18599 (base32 "0ydlirfk4dbpqqjwwph99v5swcrhd8v9g8q24fvs35wn2vm08lh1"))))
18600 (build-system asdf-build-system/sbcl)
18601 (inputs
18602 `(("alexandria" ,sbcl-alexandria)
18603 ("cffi" ,sbcl-cffi)
18604 ("split-sequence" ,sbcl-split-sequence)))
18605 (home-page "https://github.com/jasom/clinenoise")
18606 (synopsis "Port of linenoise to Common Lisp")
18607 (description
18608 "This package provides a trivial line-input library for VT-like
18609terminals.")
18610 (license license:bsd-2))))
18611
18612(define-public cl-clinenoise
18613 (sbcl-package->cl-source-package sbcl-clinenoise))
18614
18615(define-public ecl-clinenoise
18616 (sbcl-package->ecl-package sbcl-clinenoise))
18617
18618(define-public sbcl-cl-pass
18619 (let ((commit "e58e97c0c0588dc742c061208afb9bc31e4dbd34")
18620 (revision "1"))
18621 (package
18622 (name "sbcl-cl-pass")
18623 (version (git-version "0.1" revision commit))
18624 (source
18625 (origin
18626 (method git-fetch)
18627 (uri (git-reference
18628 (url "https://github.com/eudoxia0/cl-pass")
18629 (commit commit)))
18630 (file-name (git-file-name "cl-pass" version))
18631 (sha256
18632 (base32 "05qx4jrkxqbqi72cxgswbpnifbdvp9mh7apc7566v522899bh0hb"))))
18633 (build-system asdf-build-system/sbcl)
18634 (inputs
18635 `(("ironclad" ,sbcl-ironclad)
18636 ("trivial-utf-8" ,sbcl-trivial-utf-8)
18637 ("split-sequence" ,sbcl-split-sequence)))
18638 (native-inputs
18639 `(("fiveam" ,sbcl-fiveam)))
18640 (home-page "https://github.com/eudoxia0/cl-pass")
18641 (synopsis "Password hashing and verification library")
18642 (description
18643 "@code{cl-pass} is a password hashing and verification library.")
18644 (license license:expat))))
18645
18646(define-public cl-pass
18647 (sbcl-package->cl-source-package sbcl-cl-pass))
18648
18649(define-public ecl-cl-pass
18650 (sbcl-package->ecl-package sbcl-cl-pass))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 23a8710b9bc..900011ddaa2 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1896,7 +1896,7 @@ facilities for checking incoming mail.")
1896 (package 1896 (package
1897 (name "dovecot") 1897 (name "dovecot")
1898 ;; Also update dovecot-pigeonhole when updating to a new minor version. 1898 ;; Also update dovecot-pigeonhole when updating to a new minor version.
1899 (version "2.3.16") 1899 (version "2.3.17")
1900 (source 1900 (source
1901 (origin 1901 (origin
1902 (method url-fetch) 1902 (method url-fetch)
@@ -1904,7 +1904,7 @@ facilities for checking incoming mail.")
1904 (version-major+minor version) "/" 1904 (version-major+minor version) "/"
1905 "dovecot-" version ".tar.gz")) 1905 "dovecot-" version ".tar.gz"))
1906 (sha256 1906 (sha256
1907 (base32 "04ngqv5mml5z0i4p7fkchp4xw2awy7x7mq2mim9frnav0m9iv9q3")))) 1907 (base32 "1y9dpn4jgzrfjibp5zrc11bdk0q843d998kxhpxkyfm2fz6i4i12"))))
1908 (build-system gnu-build-system) 1908 (build-system gnu-build-system)
1909 (native-inputs 1909 (native-inputs
1910 `(("pkg-config" ,pkg-config))) 1910 `(("pkg-config" ,pkg-config)))
@@ -1939,8 +1939,7 @@ facilities for checking incoming mail.")
1939 (("sleep") (which "sleep"))) 1939 (("sleep") (which "sleep")))
1940 (substitute* (list "src/lib-smtp/test-bin/sendmail-exit-1.sh" 1940 (substitute* (list "src/lib-smtp/test-bin/sendmail-exit-1.sh"
1941 "src/lib-smtp/test-bin/sendmail-success.sh") 1941 "src/lib-smtp/test-bin/sendmail-success.sh")
1942 (("cat") (which "cat"))) 1942 (("cat") (which "cat")))))
1943 #t))
1944 (replace 'install 1943 (replace 'install
1945 (lambda* (#:key make-flags #:allow-other-keys) 1944 (lambda* (#:key make-flags #:allow-other-keys)
1946 ;; Simple hack to avoid installing a trivial README in /etc. 1945 ;; Simple hack to avoid installing a trivial README in /etc.
@@ -1961,7 +1960,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
1961 (let ((dovecot-version (version-major+minor (package-version dovecot)))) 1960 (let ((dovecot-version (version-major+minor (package-version dovecot))))
1962 (package 1961 (package
1963 (name "dovecot-pigeonhole") 1962 (name "dovecot-pigeonhole")
1964 (version "0.5.16") 1963 (version "0.5.17")
1965 (source 1964 (source
1966 (origin 1965 (origin
1967 (method url-fetch) 1966 (method url-fetch)
@@ -1969,7 +1968,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
1969 "https://pigeonhole.dovecot.org/releases/" dovecot-version "/" 1968 "https://pigeonhole.dovecot.org/releases/" dovecot-version "/"
1970 "dovecot-" dovecot-version "-pigeonhole-" version ".tar.gz")) 1969 "dovecot-" dovecot-version "-pigeonhole-" version ".tar.gz"))
1971 (sha256 1970 (sha256
1972 (base32 "0f79qsiqnhaxn7mrrfcrnsjyv6357kzb7wa0chhfd69vwa06g8sw")) 1971 (base32 "0j6ng173hh5iiqxdkxfb5v9djpn39gxdrv5ki7i22cf5cqwq47h3"))
1973 (modules '((guix build utils))) 1972 (modules '((guix build utils)))
1974 (snippet 1973 (snippet
1975 '(begin 1974 '(begin
@@ -1978,8 +1977,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
1978 (substitute* "configure" 1977 (substitute* "configure"
1979 (("doc/rfc/Makefile") "")) 1978 (("doc/rfc/Makefile") ""))
1980 (substitute* "doc/Makefile.in" 1979 (substitute* "doc/Makefile.in"
1981 (("rfc ") "")) 1980 (("rfc ") ""))))))
1982 #t))))
1983 (build-system gnu-build-system) 1981 (build-system gnu-build-system)
1984 (arguments 1982 (arguments
1985 `(#:configure-flags 1983 `(#:configure-flags
@@ -2007,8 +2005,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
2007 (substitute* "src/managesieve-login/managesieve-login-settings.c" 2005 (substitute* "src/managesieve-login/managesieve-login-settings.c"
2008 (("\\.executable = \"managesieve-login\"") 2006 (("\\.executable = \"managesieve-login\"")
2009 (string-append ".executable = \"" libexec 2007 (string-append ".executable = \"" libexec
2010 "/managesieve-login\""))) 2008 "/managesieve-login\"")))))))))
2011 #t))))))
2012 (native-inputs 2009 (native-inputs
2013 `(("pkg-config" ,pkg-config))) 2010 `(("pkg-config" ,pkg-config)))
2014 (inputs 2011 (inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 39608709cb5..c7a3b677219 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1315,7 +1315,7 @@ extremely large and complex data collections.")
1315(define-public hdf5-1.12 1315(define-public hdf5-1.12
1316 (package 1316 (package
1317 (inherit hdf5-1.8) 1317 (inherit hdf5-1.8)
1318 (version "1.12.0") 1318 (version "1.12.1")
1319 (source 1319 (source
1320 (origin 1320 (origin
1321 (method url-fetch) 1321 (method url-fetch)
@@ -1329,7 +1329,7 @@ extremely large and complex data collections.")
1329 (take (string-split version #\.) 2)) 1329 (take (string-split version #\.) 2))
1330 "/src/hdf5-" version ".tar.bz2"))) 1330 "/src/hdf5-" version ".tar.bz2")))
1331 (sha256 1331 (sha256
1332 (base32 "0qazfslkqbmzg495jafpvqp0khws3jkxa0z7rph9qvhacil6544p")) 1332 (base32 "074g3z504xf77ff38igs30i1aqxpm508p7yw78ykva7dncrgbyda"))
1333 (patches (search-patches "hdf5-config-date.patch")))))) 1333 (patches (search-patches "hdf5-config-date.patch"))))))
1334 1334
1335(define-public hdf5 1335(define-public hdf5
@@ -2224,6 +2224,163 @@ Computational Engineering and Sciences} at The University of Texas at Austin.
2224includes a complete LAPACK implementation.") 2224includes a complete LAPACK implementation.")
2225 (license license:bsd-3))) 2225 (license license:bsd-3)))
2226 2226
2227(define-public libpotassco
2228 ;; No public release, update together with clasp
2229 (let ((revision "1")
2230 (commit "2f9fb7ca2c202f1b47643aa414054f2f4f9c1821"))
2231 (package
2232 (name "libpotassco")
2233 (version (git-version "0.0" revision commit))
2234 (source (origin
2235 (method git-fetch)
2236 (uri (git-reference
2237 (url "https://github.com/potassco/libpotassco")
2238 (commit commit)))
2239 (file-name (git-file-name name version))
2240 (sha256
2241 (base32
2242 "1c32f9gqclf7qx07lpx8wd720vfhkjqhzc6nyy8mjmgwpmb3iyyn"))))
2243 (arguments
2244 `(#:configure-flags '("-DLIB_POTASSCO_BUILD_TESTS=on"
2245 "-DLIB_POTASSCO_INSTALL_LIB=on"
2246 "-DBUILD_SHARED_LIBS=on")
2247 #:phases
2248 (modify-phases %standard-phases
2249 (add-after 'unpack 'patch-cmake
2250 (lambda _
2251 (substitute* "CMakeLists.txt"
2252 ;; clasp expects lowercase potassco and include directory is
2253 ;; lowercase as well, so let's use that
2254 (("\"cmake/Potassco\"") "\"cmake/potassco\"")
2255 (("PotasscoConfig\\.cmake") "potassco-config.cmake")
2256 (("PotasscoConfigVersion\\.cmake")
2257 "potassco-config-version.cmake"))
2258 (rename-file "cmake/PotasscoConfig.cmake.in"
2259 "cmake/potassco-config.cmake.in"))))))
2260 (build-system cmake-build-system)
2261 (home-page "https://potassco.org/")
2262 (synopsis "Utility library for Potassco's projects")
2263 (description "@code{libpotassco} is a utility library providing functions
2264and datatypes for
2265@itemize
2266@item parsing, writing, and converting logic programs in aspif and smodels
2267format,
2268@item passing information between a grounder and a solver,
2269@item and defining and parsing command-line options and for creating
2270command-line applications.
2271@end itemize
2272Furthermore, it comes with the tool @command{lpconvert} that converts either
2273between aspif and smodels format or to a human-readable text format.")
2274 (license license:expat))))
2275
2276(define-public clasp
2277 (package
2278 (name "clasp")
2279 (version "3.3.6")
2280 (source (origin
2281 (method git-fetch)
2282 (uri (git-reference
2283 (url "https://github.com/potassco/clasp")
2284 (commit (string-append "v" version))))
2285 (file-name (git-file-name name version))
2286 (sha256
2287 (base32
2288 "0rahqiq530jckvx717858h1q5p8znp1kb6sjm95p8blkr4n3pvmj"))))
2289 (build-system cmake-build-system)
2290 (arguments
2291 `(#:configure-flags '("-DCLASP_BUILD_TESTS=on"
2292 "-DCLASP_INSTALL_LIB=on"
2293 "-DCLASP_USE_LOCAL_LIB_POTASSCO=off"
2294 "-DBUILD_SHARED_LIBS=on")
2295 #:phases
2296 (modify-phases %standard-phases
2297 (add-after 'unpack 'patch-cmake
2298 (lambda _
2299 (substitute* "CMakeLists.txt"
2300 ;; Use lowercase to be consistent with libpotassco
2301 (("\"cmake/Clasp\"") "\"cmake/clasp\"")
2302 (("ClaspConfig\\.cmake") "clasp-config.cmake")
2303 (("ClaspConfigVersion\\.cmake")
2304 "clasp-config-version.cmake"))
2305 (substitute* "cmake/ClaspConfig.cmake.in"
2306 (("find_package\\(Potassco") "find_package(potassco"))
2307 (rename-file "cmake/ClaspConfig.cmake.in"
2308 "cmake/clasp-config.cmake.in"))))))
2309 (inputs
2310 `(("libpotassco" ,libpotassco)))
2311 (home-page "https://potassco.org/")
2312 (synopsis "Answer set solver")
2313 (description "clasp is an answer set solver for (extended) normal and
2314disjunctive logic programs. The primary algorithm of clasp relies on
2315conflict-driven nogood learning, a technique that proved very successful for
2316satisfiability checking (SAT).")
2317 (license license:expat)))
2318
2319(define-public clingo
2320 (package
2321 (name "clingo")
2322 (version "5.5.0")
2323 (source (origin
2324 (method git-fetch)
2325 (uri (git-reference
2326 (url "https://github.com/potassco/clingo")
2327 (commit (string-append "v" version))))
2328 (file-name (git-file-name name version))
2329 (sha256
2330 (base32
2331 "0rfjwkcwm0mmf3r4i7asyjwb6cia4i7px7fn2kdbi9j85qvas4pb"))))
2332 (build-system cmake-build-system)
2333 (arguments
2334 `(#:configure-flags `("-DCLINGO_BUILD_TESTS=on"
2335 "-DCLINGO_INSTALL_LIB=on"
2336 "-DCLINGO_BUILD_STATIC=off"
2337 "-DCLINGO_BUILD_SHARED=on"
2338 ;; XXX: Clingo requries private headers and
2339 ;; sources from clasp
2340 ,(string-append
2341 "-DCLASP_SOURCE_DIR="
2342 (assoc-ref %build-inputs "clasp-src")))
2343 #:phases
2344 (modify-phases %standard-phases
2345 (add-after 'unpack 'patch-cmake
2346 (lambda _
2347 (substitute* "CMakeLists.txt"
2348 (("add_subdirectory\\(clasp\\)")
2349 "find_package(clasp REQUIRED)"))
2350 (substitute* "libclingo/CMakeLists.txt"
2351 (("\"cmake/Clingo\"") "\"cmake/clingo\"")
2352 (("ClingoConfig\\.cmake") "clingo-config.cmake")
2353 (("ClingoConfigVersion\\.cmake")
2354 "clingo-config-version.cmake"))
2355 (substitute* "cmake/ClingoConfig.cmake.in"
2356 (("find_package\\(Clasp") "find_package(clasp"))
2357 (rename-file "cmake/ClingoConfig.cmake.in"
2358 "cmake/clingo-config.cmake.in")))
2359 (add-after 'unpack 'skip-failing-tests
2360 (lambda _
2361 (with-directory-excursion "libclingo/tests"
2362 (substitute* "CMakeLists.txt"
2363 (("COMMAND test_clingo" all)
2364 (string-append all
2365 " -f "
2366 "\"${CMAKE_CURRENT_SOURCE_DIR}/good.txt\"")))
2367 (call-with-output-file "good.txt"
2368 (lambda (port)
2369 (for-each (lambda (test) (format port "~s~%" test))
2370 '("parse-ast-v2" "add-ast-v2" "build-ast-v2"
2371 "unpool-ast-v2" "parse_term"
2372 "propagator" "propgator-sequence-mining"
2373 "symbol" "visitor"))))))))))
2374 (inputs
2375 `(("clasp" ,clasp)
2376 ("libpotassco" ,libpotassco)))
2377 (native-inputs
2378 `(("clasp-src" ,(package-source clasp))))
2379 (home-page "https://potassco.org/")
2380 (synopsis "Grounder and solver for logic programs")
2381 (description "Clingo computes answer sets for a given logic program.")
2382 (license license:expat)))
2383
2227(define-public ceres 2384(define-public ceres
2228 (package 2385 (package
2229 (name "ceres-solver") 2386 (name "ceres-solver")
@@ -5663,6 +5820,65 @@ as equations, scalars, vectors, and matrices.")
5663theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.") 5820theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
5664 (license license:expat))) 5821 (license license:expat)))
5665 5822
5823(define-public ocaml-z3
5824 (package
5825 (inherit z3)
5826 (name "ocaml-z3")
5827 (arguments
5828 `(#:imported-modules ((guix build python-build-system)
5829 ,@%gnu-build-system-modules)
5830 #:modules (((guix build python-build-system) #:select (site-packages))
5831 (guix build gnu-build-system)
5832 (guix build utils))
5833 #:tests? #f; no ml tests
5834 #:phases
5835 (modify-phases %standard-phases
5836 (add-before 'configure 'bootstrap
5837 (lambda* (#:key outputs #:allow-other-keys)
5838 (let ((out (assoc-ref outputs "out")))
5839 (setenv "OCAMLFIND_LDCONF" "ignore")
5840 (setenv "OCAMLFIND_DESTDIR" (string-append out "/lib/ocaml/site-lib"))
5841 (mkdir-p (string-append out "/lib/ocaml/site-lib"))
5842 (substitute* "scripts/mk_util.py"
5843 (("LIBZ3 = LIBZ3")
5844 (string-append "LIBZ3 = LIBZ3 + ' -dllpath " out "/lib'"))
5845 ;; Do not build z3 again, use the library passed as input
5846 ;; instead
5847 (("z3linkdep,") "\"\",")
5848 (("z3linkdep)") "\"\")"))
5849 (invoke "python" "scripts/mk_make.py"))))
5850 (replace 'configure
5851 (lambda* (#:key inputs outputs #:allow-other-keys)
5852 (invoke "./configure"
5853 "--ml"
5854 (string-append "--prefix=" (assoc-ref outputs "out")))))
5855 (add-after 'configure 'change-directory
5856 (lambda _
5857 (chdir "build")
5858 #t))
5859 (replace 'build
5860 (lambda _
5861 (invoke "make" "ml")))
5862 (replace 'install
5863 (lambda* (#:key outputs #:allow-other-keys)
5864 (invoke "ocamlfind" "install" "-destdir"
5865 (string-append (assoc-ref outputs "out") "/lib/ocaml/site-lib")
5866 "z3" "api/ml/META" "api/ml/z3enums.mli" "api/ml/z3enums.cmi"
5867 "api/ml/z3enums.cmx" "api/ml/z3native.mli"
5868 "api/ml/z3native.cmi" "api/ml/z3native.cmx"
5869 "../src/api/ml/z3.mli" "api/ml/z3.cmi" "api/ml/z3.cmx"
5870 "api/ml/libz3ml.a" "api/ml/z3ml.a" "api/ml/z3ml.cma"
5871 "api/ml/z3ml.cmxa" "api/ml/z3ml.cmxs" "api/ml/dllz3ml.so"))))))
5872 (native-inputs
5873 `(("which" ,which)
5874 ("python" ,python-wrapper)
5875 ("ocaml" ,ocaml)
5876 ("ocaml-findlib" ,ocaml-findlib)))
5877 (propagated-inputs
5878 `(("ocaml-zarith" ,ocaml-zarith)))
5879 (inputs
5880 `(("z3" ,z3)))))
5881
5666(define-public elpa 5882(define-public elpa
5667 (package 5883 (package
5668 (name "elpa") 5884 (name "elpa")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 9cd5481bd8d..8f67e6628cb 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1039,14 +1039,14 @@ simultaneously and therefore appear under the same nickname on IRC.")
1039(define-public python-nbxmpp 1039(define-public python-nbxmpp
1040 (package 1040 (package
1041 (name "python-nbxmpp") 1041 (name "python-nbxmpp")
1042 (version "2.0.2") 1042 (version "2.0.4")
1043 (source 1043 (source
1044 (origin 1044 (origin
1045 (method url-fetch) 1045 (method url-fetch)
1046 (uri 1046 (uri
1047 (pypi-uri "nbxmpp" version)) 1047 (pypi-uri "nbxmpp" version))
1048 (sha256 1048 (sha256
1049 (base32 "1482fva70i01w60fk70c0fhqmqgzi1fb4xflllz2v6c8mdqkd1m3")))) 1049 (base32 "1s2phiipq7ks8vrd93p96dzd5wgmgg8q9h2rxsnh2gg7iy06gj9c"))))
1050 (build-system python-build-system) 1050 (build-system python-build-system)
1051 (native-inputs 1051 (native-inputs
1052 `(("glib:bin" ,glib "bin"))) 1052 `(("glib:bin" ,glib "bin")))
@@ -1068,7 +1068,7 @@ of xmpppy.")
1068(define-public gajim 1068(define-public gajim
1069 (package 1069 (package
1070 (name "gajim") 1070 (name "gajim")
1071 (version "1.3.2") 1071 (version "1.3.3")
1072 (source 1072 (source
1073 (origin 1073 (origin
1074 (method url-fetch) 1074 (method url-fetch)
@@ -1077,7 +1077,7 @@ of xmpppy.")
1077 (version-major+minor version) 1077 (version-major+minor version)
1078 "/gajim-" version ".tar.gz")) 1078 "/gajim-" version ".tar.gz"))
1079 (sha256 1079 (sha256
1080 (base32 "1vjzv8zg9s393xw81klcgbkn4h6j2blzla9iil5kqfrw7wmldskh")) 1080 (base32 "1337qkpcv7j0fgws9scnk82mn2l7s17060vmrbh3ihinmxmbxg6x"))
1081 (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch")))) 1081 (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
1082 (build-system python-build-system) 1082 (build-system python-build-system)
1083 (arguments 1083 (arguments
@@ -1091,13 +1091,6 @@ of xmpppy.")
1091 (guix build utils)) 1091 (guix build utils))
1092 #:phases 1092 #:phases
1093 (modify-phases %standard-phases 1093 (modify-phases %standard-phases
1094 (add-after 'unpack 'disable-failing-tests
1095 (lambda _
1096 ;; ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
1097 ;; https://dev.gajim.org/gajim/gajim/-/issues/10478
1098 (delete-file "test/lib/gajim_mocks.py")
1099 (delete-file "test/unit/test_gui_interface.py")
1100 #t))
1101 (replace 'check 1094 (replace 'check
1102 (lambda _ 1095 (lambda _
1103 ;; Tests require a running X server. 1096 ;; Tests require a running X server.
@@ -1105,8 +1098,7 @@ of xmpppy.")
1105 (setenv "DISPLAY" ":1") 1098 (setenv "DISPLAY" ":1")
1106 ;; For missing '/etc/machine-id'. 1099 ;; For missing '/etc/machine-id'.
1107 (setenv "DBUS_FATAL_WARNINGS" "0") 1100 (setenv "DBUS_FATAL_WARNINGS" "0")
1108 (invoke "dbus-launch" "python" "./setup.py" "test") 1101 (invoke "dbus-launch" "python" "./setup.py" "test")))
1109 #t))
1110 (add-after 'install 'glib-or-gtk-compile-schemas 1102 (add-after 'install 'glib-or-gtk-compile-schemas
1111 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas)) 1103 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
1112 (add-after 'install 'glib-or-gtk-wrap 1104 (add-after 'install 'glib-or-gtk-wrap
@@ -1122,8 +1114,7 @@ of xmpppy.")
1122 (wrap-program file 1114 (wrap-program file
1123 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)) 1115 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
1124 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))) 1116 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
1125 '("gajim" "gajim-remote" "gajim-history-manager"))) 1117 '("gajim" "gajim-remote" "gajim-history-manager"))))))))
1126 #t)))))
1127 (native-search-paths 1118 (native-search-paths
1128 (list 1119 (list
1129 (search-path-specification 1120 (search-path-specification
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index bc03427e0a5..c7307da0cf6 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -7,6 +7,7 @@
7;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> 7;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
8;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org> 8;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
9;;; Copyright © 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il> 9;;; Copyright © 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
10;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
10;;; 11;;;
11;;; This file is part of GNU Guix. 12;;; This file is part of GNU Guix.
12;;; 13;;;
@@ -256,6 +257,29 @@ and (for Fortran-90 programs) read/write statements need to be changed. PSLQ
256and numerical quadrature programs are included.") 257and numerical quadrature programs are included.")
257 (license bsd-3))) 258 (license bsd-3)))
258 259
260(define-public cln
261 (package
262 (name "cln")
263 (version "1.3.6")
264 (source
265 (origin
266 (method url-fetch)
267 (uri (string-append "https://www.ginac.de/CLN/cln-"
268 version ".tar.bz2"))
269 (sha256
270 (base32 "0jlq9l4hphk7qqlgqj9ihjp4m3rwjbhk6q4v00lsbgbri07574pl"))))
271 (build-system gnu-build-system)
272 (arguments
273 `(#:configure-flags (list "--disable-static")))
274 (inputs
275 `(("gmp" ,gmp)))
276 (home-page "https://www.ginac.de/CLN/")
277 (synopsis "Library for arbitrary precision computations")
278 (description "CLN is a C++ library for efficient computations with all
279kinds of numbers in arbitrary precision. It provides a rich set of number
280classes and elementary, logical and transcendental functions.")
281 (license gpl2+)))
282
259(define-public tomsfastmath 283(define-public tomsfastmath
260 (package 284 (package
261 (name "tomsfastmath") 285 (name "tomsfastmath")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 83e5a3991db..73118f4c794 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1865,7 +1865,7 @@ device supports.")
1865(define-public bsequencer 1865(define-public bsequencer
1866 (package 1866 (package
1867 (name "bsequencer") 1867 (name "bsequencer")
1868 (version "1.8.0") 1868 (version "1.8.10")
1869 (source (origin 1869 (source (origin
1870 (method git-fetch) 1870 (method git-fetch)
1871 (uri (git-reference 1871 (uri (git-reference
@@ -1874,12 +1874,13 @@ device supports.")
1874 (file-name (git-file-name name version)) 1874 (file-name (git-file-name name version))
1875 (sha256 1875 (sha256
1876 (base32 1876 (base32
1877 "0w7iwzz2r4a699fi24qk71vv2k3jpl9ylzlgmvyc3rlgad0m01k1")))) 1877 "0w3m7x0619iq8rafcy0bal4gwh9m9h7iq93q7gkpxhv6dq58ix6l"))))
1878 (build-system gnu-build-system) 1878 (build-system gnu-build-system)
1879 (arguments 1879 (arguments
1880 `(#:make-flags 1880 `(#:make-flags
1881 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) 1881 (list (string-append "CC=" ,(cc-for-target))
1882 #:tests? #f ; there are none 1882 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1883 #:tests? #f ; there are none
1883 #:phases 1884 #:phases
1884 (modify-phases %standard-phases 1885 (modify-phases %standard-phases
1885 (delete 'configure)))) 1886 (delete 'configure))))
@@ -1900,7 +1901,7 @@ with a selectable pattern matrix size.")
1900 (package 1901 (package
1901 (inherit bsequencer) 1902 (inherit bsequencer)
1902 (name "bchoppr") 1903 (name "bchoppr")
1903 (version "1.8.0") 1904 (version "1.10.10")
1904 (source 1905 (source
1905 (origin 1906 (origin
1906 (method git-fetch) 1907 (method git-fetch)
@@ -1909,8 +1910,7 @@ with a selectable pattern matrix size.")
1909 (commit version))) 1910 (commit version)))
1910 (file-name (git-file-name name version)) 1911 (file-name (git-file-name name version))
1911 (sha256 1912 (sha256
1912 (base32 1913 (base32 "0gxz0cpxdfj7ajcd9yg05d26i7p24mx5865vy3ph76ni8kycdlrc"))))
1913 "1nd6byy75f0rbz9dm9drhxmpsfhxhg0y7q3v2m3098llynhy9k2j"))))
1914 (synopsis "Audio stream-chopping LV2 plugin") 1914 (synopsis "Audio stream-chopping LV2 plugin")
1915 (description "B.Choppr cuts the audio input stream into a repeated 1915 (description "B.Choppr cuts the audio input stream into a repeated
1916sequence of up to 16 chops. Each chop can be leveled up or down (gating). 1916sequence of up to 16 chops. Each chop can be leveled up or down (gating).
@@ -1922,7 +1922,7 @@ B.Choppr is the successor of B.Slizr.")
1922 (package 1922 (package
1923 (inherit bsequencer) 1923 (inherit bsequencer)
1924 (name "bshapr") 1924 (name "bshapr")
1925 (version "0.9") 1925 (version "0.13")
1926 (source 1926 (source
1927 (origin 1927 (origin
1928 (method git-fetch) 1928 (method git-fetch)
@@ -1931,7 +1931,7 @@ B.Choppr is the successor of B.Slizr.")
1931 (commit (string-append "v" version)))) 1931 (commit (string-append "v" version))))
1932 (file-name (git-file-name name version)) 1932 (file-name (git-file-name name version))
1933 (sha256 1933 (sha256
1934 (base32 "04zd3a178i2nivg5rjailzqvc5mlnilmhj1ziygmbhshbrywplri")))) 1934 (base32 "1qr3fxqcplgb6iqi2vxc27jghhv6qsidww2by15zb2vs34yh73pl"))))
1935 (synopsis "Beat/envelope shaper LV2 plugin") 1935 (synopsis "Beat/envelope shaper LV2 plugin")
1936 (description "B.Shapr is a beat/envelope shaper LV2 plugin.") 1936 (description "B.Shapr is a beat/envelope shaper LV2 plugin.")
1937 (home-page "https://github.com/sjaehn/BShapr") 1937 (home-page "https://github.com/sjaehn/BShapr")
@@ -1941,7 +1941,7 @@ B.Choppr is the successor of B.Slizr.")
1941 (package 1941 (package
1942 (inherit bsequencer) 1942 (inherit bsequencer)
1943 (name "bjumblr") 1943 (name "bjumblr")
1944 (version "1.4.2") 1944 (version "1.6.8")
1945 (source 1945 (source
1946 (origin 1946 (origin
1947 (method git-fetch) 1947 (method git-fetch)
@@ -1950,8 +1950,7 @@ B.Choppr is the successor of B.Slizr.")
1950 (commit version))) 1950 (commit version)))
1951 (file-name (git-file-name name version)) 1951 (file-name (git-file-name name version))
1952 (sha256 1952 (sha256
1953 (base32 1953 (base32 "00fgax8aqqggs54pjpagw5pc30kgxaghh8mrzpqwhs06cnchcam9"))))
1954 "0kl6hrxmqrdf0195bfnzsa2h1073fgiqrfhg2276fm1954sm994v"))))
1955 (inputs 1954 (inputs
1956 `(("cairo" ,cairo) 1955 `(("cairo" ,cairo)
1957 ("libsndfile" ,libsndfile) 1956 ("libsndfile" ,libsndfile)
@@ -1966,7 +1965,7 @@ re-sequencer LV2 plugin.")
1966 (package 1965 (package
1967 (inherit bsequencer) 1966 (inherit bsequencer)
1968 (name "bschaffl") 1967 (name "bschaffl")
1969 (version "1.2.0") 1968 (version "1.4.8")
1970 (source 1969 (source
1971 (origin 1970 (origin
1972 (method git-fetch) 1971 (method git-fetch)
@@ -1975,8 +1974,7 @@ re-sequencer LV2 plugin.")
1975 (commit version))) 1974 (commit version)))
1976 (file-name (git-file-name name version)) 1975 (file-name (git-file-name name version))
1977 (sha256 1976 (sha256
1978 (base32 1977 (base32 "1kfc75xhj365fwl8cbvhg5chwz1snzcvf4929flds02ljylc7k6d"))))
1979 "1c09acqrbd387ba41f8ch1qykdap5h6cg9if5pgd16i4dmjnpghj"))))
1980 (inputs 1978 (inputs
1981 `(("cairo" ,cairo) 1979 `(("cairo" ,cairo)
1982 ("fontconfig" ,fontconfig) 1980 ("fontconfig" ,fontconfig)
@@ -6271,7 +6269,7 @@ ones.")
6271(define-public dpf-plugins 6269(define-public dpf-plugins
6272 (package 6270 (package
6273 (name "dpf-plugins") 6271 (name "dpf-plugins")
6274 (version "1.3") 6272 (version "1.4")
6275 (source 6273 (source
6276 (origin 6274 (origin
6277 (method git-fetch) 6275 (method git-fetch)
@@ -6281,17 +6279,15 @@ ones.")
6281 (commit (string-append "v" version)))) 6279 (commit (string-append "v" version))))
6282 (file-name (git-file-name name version)) 6280 (file-name (git-file-name name version))
6283 (sha256 6281 (sha256
6284 (base32 6282 (base32 "0y7qvpfm34g6f7d786c6c9043dlbg5c4h71l2s24dsc9m8i7x2ww"))))
6285 "1hsfmpv3kvpiwk8nfw9xpaipzy0n27i83y2v1yr93lznwm5rqrbs"))))
6286 (build-system gnu-build-system) 6283 (build-system gnu-build-system)
6287 (arguments 6284 (arguments
6288 `(#:tests? #f ; no "check" target 6285 `(#:tests? #f ; no "check" target
6289 #:make-flags 6286 #:make-flags
6290 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) 6287 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
6288 (string-append "CC=" ,(cc-for-target)))
6291 #:phases 6289 #:phases
6292 (modify-phases %standard-phases 6290 (modify-phases %standard-phases
6293 (add-before 'build 'set-CC-variable
6294 (lambda _ (setenv "CC" "gcc") #t))
6295 (delete 'configure)))) 6291 (delete 'configure))))
6296 (inputs 6292 (inputs
6297 `(("cairo" ,cairo) 6293 `(("cairo" ,cairo)
@@ -6487,7 +6483,7 @@ plugin support, JACK support and chord assistance.")
6487(define-public dragonfly-reverb 6483(define-public dragonfly-reverb
6488 (package 6484 (package
6489 (name "dragonfly-reverb") 6485 (name "dragonfly-reverb")
6490 (version "3.2.1") 6486 (version "3.2.5")
6491 (source 6487 (source
6492 (origin 6488 (origin
6493 (method git-fetch) 6489 (method git-fetch)
@@ -6499,11 +6495,12 @@ plugin support, JACK support and chord assistance.")
6499 (recursive? #t))) 6495 (recursive? #t)))
6500 (file-name (git-file-name name version)) 6496 (file-name (git-file-name name version))
6501 (sha256 6497 (sha256
6502 (base32 "0vfm2510shah67k87mdyar4wr4vqwii59y9lqfhwm6blxparkrqa")))) 6498 (base32 "14kia9wjs0nqfx4psnr3vf4x6hihkf80gb0mjzmdnnnk4cnrdydm"))))
6503 (build-system gnu-build-system) 6499 (build-system gnu-build-system)
6504 (arguments 6500 (arguments
6505 `(#:tests? #f ; no check target 6501 `(#:tests? #f ; no check target
6506 #:make-flags (list "CC=gcc") 6502 #:make-flags
6503 (list (string-append "CC=" ,(cc-for-target)))
6507 #:phases 6504 #:phases
6508 (modify-phases %standard-phases 6505 (modify-phases %standard-phases
6509 (delete 'configure) ;no configure target 6506 (delete 'configure) ;no configure target
@@ -6527,8 +6524,7 @@ plugin support, JACK support and chord assistance.")
6527 (and 6524 (and
6528 (equal? (dirname name) "bin") 6525 (equal? (dirname name) "bin")
6529 (not (string-suffix? ".so" name)) 6526 (not (string-suffix? ".so" name))
6530 (not (string-suffix? ".lv2" name)))))) 6527 (not (string-suffix? ".lv2" name))))))))))))
6531 #t))))))
6532 (native-inputs 6528 (native-inputs
6533 `(("pkg-config" ,pkg-config))) 6529 `(("pkg-config" ,pkg-config)))
6534 (inputs 6530 (inputs
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 260399e2530..e5bce448dc9 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -649,14 +649,14 @@ systems with no further dependencies.")
649(define-public blueman 649(define-public blueman
650 (package 650 (package
651 (name "blueman") 651 (name "blueman")
652 (version "2.2.2") 652 (version "2.2.3")
653 (source 653 (source
654 (origin 654 (origin
655 (method url-fetch) 655 (method url-fetch)
656 (uri (string-append "https://github.com/blueman-project/blueman/releases" 656 (uri (string-append "https://github.com/blueman-project/blueman/releases"
657 "/download/" version "/blueman-" version ".tar.xz")) 657 "/download/" version "/blueman-" version ".tar.xz"))
658 (sha256 658 (sha256
659 (base32 "1xnhxhr2l4cf703j76wvzl4rf2k4xxgjjisz03y89x9ll6qmkv8r")))) 659 (base32 "1s86w4mklzr8hvbgl3nkg8jycl6grww533dhzw8gdn5glqfpkpbf"))))
660 (build-system glib-or-gtk-build-system) 660 (build-system glib-or-gtk-build-system)
661 (arguments 661 (arguments
662 `(#:configure-flags (list "--enable-polkit" 662 `(#:configure-flags (list "--enable-polkit"
@@ -1219,14 +1219,14 @@ receiving NDP messages.")
1219(define-public ethtool 1219(define-public ethtool
1220 (package 1220 (package
1221 (name "ethtool") 1221 (name "ethtool")
1222 (version "5.12") 1222 (version "5.14")
1223 (source (origin 1223 (source (origin
1224 (method url-fetch) 1224 (method url-fetch)
1225 (uri (string-append "mirror://kernel.org/software/network/" 1225 (uri (string-append "mirror://kernel.org/software/network/"
1226 "ethtool/ethtool-" version ".tar.xz")) 1226 "ethtool/ethtool-" version ".tar.xz"))
1227 (sha256 1227 (sha256
1228 (base32 1228 (base32
1229 "01vgyczgldrfss98cqrgjz8krj6kwb29xjf8p08q0g85fnfgmpgm")))) 1229 "11kns8imm55i0miggsnv9nblnzm60zgnanxnjajdgb2wj68xn4xv"))))
1230 (build-system gnu-build-system) 1230 (build-system gnu-build-system)
1231 (native-inputs 1231 (native-inputs
1232 `(("pkg-config" ,pkg-config))) 1232 `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 48fbea7394d..7b1363a5c3e 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -7258,8 +7258,8 @@ these missing pieces.")
7258 (synopsis 7258 (synopsis
7259 "Backport new syntax to older OCaml versions") 7259 "Backport new syntax to older OCaml versions")
7260 (description 7260 (description
7261 "This packages backports new features of the language to older 7261 "This package backports new language features such as @code{let+} to older
7262compilers, such as let+.") 7262OCaml compilers.")
7263 (license license:expat))) 7263 (license license:expat)))
7264 7264
7265(define-public ocaml-angstrom 7265(define-public ocaml-angstrom
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 65cd7087b4d..660c43604d0 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -145,8 +145,8 @@
145 ;; Note: the 'update-guix-package.scm' script expects this definition to 145 ;; Note: the 'update-guix-package.scm' script expects this definition to
146 ;; start precisely like this. 146 ;; start precisely like this.
147 (let ((version "1.3.0") 147 (let ((version "1.3.0")
148 (commit "c3c502896b1454b345ee9f17d20063853652a35a") 148 (commit "014f1b607f1d88a8e733017afaca006545b7d99b")
149 (revision 10)) 149 (revision 11))
150 (package 150 (package
151 (name "guix") 151 (name "guix")
152 152
@@ -162,7 +162,7 @@
162 (commit commit))) 162 (commit commit)))
163 (sha256 163 (sha256
164 (base32 164 (base32
165 "037nlr5z8qmq2zp0slcg5lyhcdp7v6vxl1f36wkqrw9xzgq8k6kf")) 165 "0mmq0ypkxj6dc1r9j1mdgih87h6fc0mk05hp481cjp8shdc1w6gw"))
166 (file-name (string-append "guix-" version "-checkout")))) 166 (file-name (string-append "guix-" version "-checkout"))))
167 (build-system gnu-build-system) 167 (build-system gnu-build-system)
168 (arguments 168 (arguments
@@ -1584,14 +1584,15 @@ the boot loader configuration.")
1584(define-public flatpak 1584(define-public flatpak
1585 (package 1585 (package
1586 (name "flatpak") 1586 (name "flatpak")
1587 (version "1.10.2") 1587 (version "1.12.1")
1588 (source 1588 (source
1589 (origin 1589 (origin
1590 (method url-fetch) 1590 (method url-fetch)
1591 (uri (string-append "https://github.com/flatpak/flatpak/releases/download/" 1591 (uri (string-append "https://github.com/flatpak/flatpak/releases/download/"
1592 version "/flatpak-" version ".tar.xz")) 1592 version "/flatpak-" version ".tar.xz"))
1593 (sha256 1593 (sha256
1594 (base32 "1r6xw7r3ir2vaa30n3mily6m7d51cf4qv22fkqlzzy3js0wjf5fv")))) 1594 (base32 "0my82ijg1ipa4lwrvh88jlrxbabfqfz2ssfb8cn6k0pfgz53p293"))
1595 (patches (search-patches "flatpak-fix-path.patch"))))
1595 1596
1596 ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to 1597 ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
1597 ;; find the TLS backend in glib-networking. 1598 ;; find the TLS backend in glib-networking.
@@ -1626,6 +1627,16 @@ cp -r /tmp/locale/*/en_US.*")))
1626 (("/bin/kill") (which "kill")) 1627 (("/bin/kill") (which "kill"))
1627 (("/usr/bin/python3") (which "python3"))) 1628 (("/usr/bin/python3") (which "python3")))
1628 #t)) 1629 #t))
1630 (add-after 'unpack 'p11-kit-fix
1631 (lambda* (#:key inputs #:allow-other-keys)
1632 (let ((p11-path (string-append (assoc-ref inputs "p11-kit-next")
1633 "/bin/p11-kit")))
1634 (substitute* "session-helper/flatpak-session-helper.c"
1635 (("\"p11-kit\",")
1636 (string-append "\"" p11-path "\","))
1637 (("if \\(g_find_program_in_path \\(\"p11-kit\"\\)\\)")
1638 (string-append "if (g_find_program_in_path (\""
1639 p11-path "\"))"))))))
1629 ;; Many tests fail for unknown reasons, so we just run a few basic 1640 ;; Many tests fail for unknown reasons, so we just run a few basic
1630 ;; tests. 1641 ;; tests.
1631 (replace 'check 1642 (replace 'check
@@ -1664,6 +1675,7 @@ cp -r /tmp/locale/*/en_US.*")))
1664 ("libsoup" ,libsoup) 1675 ("libsoup" ,libsoup)
1665 ("libxau" ,libxau) 1676 ("libxau" ,libxau)
1666 ("libxml2" ,libxml2) 1677 ("libxml2" ,libxml2)
1678 ("p11-kit-next" ,p11-kit-next)
1667 ("util-linux" ,util-linux) 1679 ("util-linux" ,util-linux)
1668 ("xdg-dbus-proxy" ,xdg-dbus-proxy))) 1680 ("xdg-dbus-proxy" ,xdg-dbus-proxy)))
1669 (home-page "https://flatpak.org") 1681 (home-page "https://flatpak.org")
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 6730772f24d..e3813b1512e 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -61,14 +61,14 @@
61(define-public parallel 61(define-public parallel
62 (package 62 (package
63 (name "parallel") 63 (name "parallel")
64 (version "20210922") 64 (version "20211022")
65 (source 65 (source
66 (origin 66 (origin
67 (method url-fetch) 67 (method url-fetch)
68 (uri (string-append "mirror://gnu/parallel/parallel-" 68 (uri (string-append "mirror://gnu/parallel/parallel-"
69 version ".tar.bz2")) 69 version ".tar.bz2"))
70 (sha256 70 (sha256
71 (base32 "0rjd9636sgmnhaww2q8rbnpwhpq1aqg3df6rmpdm880zqi7skp6y")))) 71 (base32 "16yyjvlm70lj7csaz4am98dlyqrc588xydnfnabxm71awby90wfs"))))
72 (build-system gnu-build-system) 72 (build-system gnu-build-system)
73 (arguments 73 (arguments
74 `(#:phases 74 `(#:phases
@@ -82,8 +82,7 @@
82 ;; $Global::shell = $ENV{'PARALLEL_SHELL'} || 82 ;; $Global::shell = $ENV{'PARALLEL_SHELL'} ||
83 ;; parent_shell($$) || $ENV{'SHELL'} || "/bin/sh"; 83 ;; parent_shell($$) || $ENV{'SHELL'} || "/bin/sh";
84 (("/bin/sh\\\";\n$") (string-append (which "sh") "\";\n")))) 84 (("/bin/sh\\\";\n$") (string-append (which "sh") "\";\n"))))
85 (list "src/parallel" "src/sem")) 85 (list "src/parallel" "src/sem"))))
86 #t))
87 (add-after 'install 'wrap-program 86 (add-after 'install 'wrap-program
88 (lambda* (#:key inputs outputs #:allow-other-keys) 87 (lambda* (#:key inputs outputs #:allow-other-keys)
89 (let ((out (assoc-ref outputs "out"))) 88 (let ((out (assoc-ref outputs "out")))
@@ -92,8 +91,7 @@
92 ,(map (lambda (input) 91 ,(map (lambda (input)
93 (string-append (assoc-ref inputs input) "/bin")) 92 (string-append (assoc-ref inputs input) "/bin"))
94 '("perl" 93 '("perl"
95 "procps")))) 94 "procps")))))))
96 #t)))
97 (add-after 'wrap-program 'post-install-test 95 (add-after 'wrap-program 'post-install-test
98 (lambda* (#:key outputs #:allow-other-keys) 96 (lambda* (#:key outputs #:allow-other-keys)
99 (invoke (string-append 97 (invoke (string-append
diff --git a/gnu/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch b/gnu/packages/patches/diffoscope-fix-llvm-test.patch
index 45e496a1283..45e496a1283 100644
--- a/gnu/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch
+++ b/gnu/packages/patches/diffoscope-fix-llvm-test.patch
diff --git a/gnu/packages/patches/disarchive-cross-compilation.patch b/gnu/packages/patches/disarchive-cross-compilation.patch
deleted file mode 100644
index 8061262168e..00000000000
--- a/gnu/packages/patches/disarchive-cross-compilation.patch
+++ /dev/null
@@ -1,77 +0,0 @@
1From dc0f8f8bf8608c39da32e3c8ca1484b766fc7452 Mon Sep 17 00:00:00 2001
2From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
3Date: Mon, 17 May 2021 16:47:19 -0400
4Subject: [PATCH] build: Fix cross-compilation.
5
6The cross-compilation issues corrected by this change were discovered
7when attempting to cross-compile disarchive for the i586-gnu target on
8GNU Guix.
9
10* configure.ac [O_NOFOLLOW]: Rewrite test using AC_COMPUTE_INT, which
11is supported even when cross-compiling.
12(GUILD_TARGET_OPTION): New computed variable.
13* build-aux/guile.am ($(AM_V_GUILEC)GUILE_AUTO_COMPILE): Use it.
14---
15 build-aux/guile.am | 6 +++---
16 configure.ac | 24 +++++++++++++++---------
17 2 files changed, 18 insertions(+), 12 deletions(-)
18
19diff --git a/build-aux/guile.am b/build-aux/guile.am
20index bec04ea..7745125 100644
21--- a/build-aux/guile.am
22+++ b/build-aux/guile.am
23@@ -54,7 +54,7 @@ AM_V_GUILEC_0 = @echo " GUILEC" $@;
24 SUFFIXES = .scm .go
25
26 .scm.go:
27- $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \
28- $(top_builddir)/pre-inst-env \
29- $(GUILD) compile $(GUILE_WARNINGS) \
30+ $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \
31+ $(top_builddir)/pre-inst-env \
32+ $(GUILD) compile $(GUILE_WARNINGS) $(GUILD_TARGET_OPTION) \
33 -o "$@" "$<"
34diff --git a/configure.ac b/configure.ac
35index 99c5ac5..0cd0173 100644
36--- a/configure.ac
37+++ b/configure.ac
38@@ -39,21 +39,27 @@ AS_IF([test "x$GUILD" = "x"],
39 [AC_MSG_ERROR(m4_normalize([
40 'guild' binary not found; please check your Guile installation.]))])])
41
42+dnl This argument is passed to guild; it ensures cross-compiling uses
43+dnl the right target.
44+if test -n "$host_alias"; then
45+ AC_SUBST([GUILD_TARGET_OPTION], [--target=$host_alias])
46+fi
47+
48 GUILE_MODULE_REQUIRED(gcrypt hash)
49
50 dnl Guile defines a handful of values from <fcntl.h>, but it is
51 dnl missing O_NOFOLLOW.
52 AC_ARG_VAR([O_NOFOLLOW], [value to use for O_NOFOLLOW (cf. <fcntl.h>)])
53 AS_IF([test "x$O_NOFOLLOW" = "x"],
54- [AC_MSG_CHECKING([the value of O_NOFOLLOW])
55- AC_RUN_IFELSE([AC_LANG_PROGRAM([[
56- #include <fcntl.h>
57- #include <stdio.h>
58- ]], [[
59- printf("%d\n", O_NOFOLLOW)
60- ]])],
61- [O_NOFOLLOW=`./conftest$EXEEXT`],
62- [AC_MSG_FAILURE([could find value for O_NOFOLLOW])])])
63+ [AC_MSG_CHECKING([the value of O_NOFOLLOW])]
64+ [AC_COMPUTE_INT([O_NOFOLLOW],
65+ [O_NOFOLLOW],
66+ [[
67+ #include <fcntl.h>
68+ #include <stdio.h>
69+ ]],
70+ [AC_MSG_FAILURE([could find value for O_NOFOLLOW])])]
71+ [AC_MSG_RESULT([$O_NOFOLLOW])])
72
73 AC_ARG_VAR([TAR], [tar utility])
74 AS_IF([test "x$TAR" = "x"], [AC_PATH_PROG([TAR], [tar])])
75--
762.31.1
77
diff --git a/gnu/packages/patches/flatpak-fix-path.patch b/gnu/packages/patches/flatpak-fix-path.patch
new file mode 100644
index 00000000000..e87a08a7fef
--- /dev/null
+++ b/gnu/packages/patches/flatpak-fix-path.patch
@@ -0,0 +1,29 @@
1Flatpak writes files for installed applications with the full Flatpak (store) path. This patch makes it write just "flatpak", using Flatpak from PATH. This is similar to the NixOS [0] patch, updated for Flatpak 1.12.1
2
3[0] https://github.com/NixOS/nixpkgs/blob/bf4167861d0f864b0fc457778d54feb4a2675ea2/pkgs/development/libraries/flatpak/use-flatpak-from-path.patch
4
5diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c
6index 80ff5e5f..0c111c31 100644
7--- a/common/flatpak-dir.c
8+++ b/common/flatpak-dir.c
9@@ -7134,8 +7134,7 @@ export_desktop_file (const char *app,
10 flatpak = FLATPAK_BINDIR "/flatpak";
11
12 g_string_append_printf (new_exec,
13- "%s run --branch=%s --arch=%s",
14- flatpak,
15+ "flatpak run --branch=%s --arch=%s",
16 escaped_branch,
17 escaped_arch);
18
19@@ -8467,8 +8466,8 @@ flatpak_dir_deploy (FlatpakDir *self,
20 if ((flatpak = g_getenv ("FLATPAK_BINARY")) == NULL)
21 flatpak = FLATPAK_BINDIR "/flatpak";
22
23- bin_data = g_strdup_printf ("#!/bin/sh\nexec %s run --branch=%s --arch=%s %s \"$@\"\n",
24- flatpak, escaped_branch, escaped_arch, escaped_app);
25+ bin_data = g_strdup_printf ("#!/bin/sh\nexec flatpak run --branch=%s --arch=%s %s \"$@\"\n",
26+ escaped_branch, escaped_arch, escaped_app);
27 if (!g_file_replace_contents (wrapper, bin_data, strlen (bin_data), NULL, FALSE,
28 G_FILE_CREATE_REPLACE_DESTINATION, NULL, cancellable, error))
29 return FALSE;
diff --git a/gnu/packages/patches/icecat-78-makeicecat.patch b/gnu/packages/patches/icecat-78-makeicecat.patch
new file mode 100644
index 00000000000..edd1ced257d
--- /dev/null
+++ b/gnu/packages/patches/icecat-78-makeicecat.patch
@@ -0,0 +1,110 @@
1Make some of the changes needed to the 'makeicecat' script, to allow it to run
2in a snippet without network access. After this patch is applied, some
3additional changes will be made using 'substitute*'.
4
5diff --git a/makeicecat b/makeicecat
6index 8be2362..48716f2 100755
7--- a/makeicecat
8+++ b/makeicecat
9@@ -31,55 +31,55 @@ SOURCEDIR=icecat-$FFVERSION
10
11 DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data
12
13-mkdir -p output
14-cd output
15+# mkdir -p output
16+# cd output
17
18 ###############################################################################
19 # Retrieve FF source code
20 ###############################################################################
21
22-rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
23-
24-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
25-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
26-gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
27-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
28-echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
29-
30-echo Extracting Firefox tarball
31-tar -xf firefox-${FFVERSION}esr.source.tar.xz
32-
33-mv firefox-${FFVERSION} $SOURCEDIR
34+# rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
35+#
36+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
37+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
38+# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
39+# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
40+# echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
41+#
42+# echo Extracting Firefox tarball
43+# tar -xf firefox-${FFVERSION}esr.source.tar.xz
44+#
45+# mv firefox-${FFVERSION} $SOURCEDIR
46
47 ###############################################################################
48 # Retrieve l10n
49 ###############################################################################
50
51-mkdir l10n
52-cd l10n
53-while read line;do
54- line=$(echo $line |cut -d' ' -f1)
55- #[ $line = "es-ES" ] || continue # To speed up testing
56- [ $line = "en-US" ] && continue
57- hg clone https://hg.mozilla.org/l10n-central/$line
58- mkdir -p $line/browser/chrome/browser/preferences
59- touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
60- rm -rf $line/.hg*
61-done < ../$SOURCEDIR/browser/locales/shipped-locales
62-cd ..
63-
64-mv l10n $SOURCEDIR
65-
66-hg clone https://hg.mozilla.org/l10n/compare-locales/
67-cd compare-locales/
68-hg checkout RELEASE_8_0_0
69-cd ..
70-rm compare-locales/.hg* compare-locales/.git* -rf
71-mv compare-locales $SOURCEDIR/l10n
72+# mkdir l10n
73+# cd l10n
74+# while read line;do
75+# line=$(echo $line |cut -d' ' -f1)
76+# #[ $line = "es-ES" ] || continue # To speed up testing
77+# [ $line = "en-US" ] && continue
78+# hg clone https://hg.mozilla.org/l10n-central/$line
79+# mkdir -p $line/browser/chrome/browser/preferences
80+# touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
81+# rm -rf $line/.hg*
82+# done < ../$SOURCEDIR/browser/locales/shipped-locales
83+# cd ..
84+#
85+# mv l10n $SOURCEDIR
86+#
87+# hg clone https://hg.mozilla.org/l10n/compare-locales/
88+# cd compare-locales/
89+# hg checkout RELEASE_8_0_0
90+# cd ..
91+# rm compare-locales/.hg* compare-locales/.git* -rf
92+# mv compare-locales $SOURCEDIR/l10n
93
94 #######################################################
95
96-cd $SOURCEDIR
97+# cd $SOURCEDIR
98
99 shopt -s nullglob
100 for patch in $DATA/patches/*.patch; do
101@@ -598,6 +598,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
102 # Fix CVE-2012-3386
103 /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
104
105-cd ..
106-echo Packaging tarball
107-tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
108+# cd ..
109+# echo Packaging tarball
110+# tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index edd1ced257d..c46cb27ff6c 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -3,108 +3,49 @@ in a snippet without network access. After this patch is applied, some
3additional changes will be made using 'substitute*'. 3additional changes will be made using 'substitute*'.
4 4
5diff --git a/makeicecat b/makeicecat 5diff --git a/makeicecat b/makeicecat
6index 8be2362..48716f2 100755 6index bf2b7a6..bc3b19b 100755
7--- a/makeicecat 7--- a/makeicecat
8+++ b/makeicecat 8+++ b/makeicecat
9@@ -31,55 +31,55 @@ SOURCEDIR=icecat-$FFVERSION 9@@ -58,7 +58,7 @@ readonly SOURCEDIR=icecat-${FFVERSION}
10 # debug/shell options
11 readonly DEVEL=0
12 set -euo pipefail
13-(( DEVEL )) && set -x
14+set -x
10 15
11 DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data
12 16
13-mkdir -p output
14-cd output
15+# mkdir -p output
16+# cd output
17
18 ###############################################################################
19 # Retrieve FF source code
20 ############################################################################### 17 ###############################################################################
18@@ -459,7 +459,7 @@ configure_search()
19 sed 's|ddg@|ddg-html@|' -i browser/components/search/extensions/ddg-html/manifest.json
21 20
22-rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf 21 # Process various JSON pre-configuration dumps.
23- 22- python3 ../../tools/process-json-files.py . browser/components/extensions/schemas/
24-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz 23+ python3 "${DATADIR}"/../tools/process-json-files.py . browser/components/extensions/schemas/
25-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc 24 }
26-gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
27-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
28-echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
29-
30-echo Extracting Firefox tarball
31-tar -xf firefox-${FFVERSION}esr.source.tar.xz
32-
33-mv firefox-${FFVERSION} $SOURCEDIR
34+# rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
35+#
36+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
37+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
38+# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
39+# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
40+# echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
41+#
42+# echo Extracting Firefox tarball
43+# tar -xf firefox-${FFVERSION}esr.source.tar.xz
44+#
45+# mv firefox-${FFVERSION} $SOURCEDIR
46 25
26 configure_mobile()
27@@ -855,12 +855,12 @@ finalize_sourceball()
28 # entry point
47 ############################################################################### 29 ###############################################################################
48 # Retrieve l10n
49 ###############################################################################
50
51-mkdir l10n
52-cd l10n
53-while read line;do
54- line=$(echo $line |cut -d' ' -f1)
55- #[ $line = "es-ES" ] || continue # To speed up testing
56- [ $line = "en-US" ] && continue
57- hg clone https://hg.mozilla.org/l10n-central/$line
58- mkdir -p $line/browser/chrome/browser/preferences
59- touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
60- rm -rf $line/.hg*
61-done < ../$SOURCEDIR/browser/locales/shipped-locales
62-cd ..
63-
64-mv l10n $SOURCEDIR
65-
66-hg clone https://hg.mozilla.org/l10n/compare-locales/
67-cd compare-locales/
68-hg checkout RELEASE_8_0_0
69-cd ..
70-rm compare-locales/.hg* compare-locales/.git* -rf
71-mv compare-locales $SOURCEDIR/l10n
72+# mkdir l10n
73+# cd l10n
74+# while read line;do
75+# line=$(echo $line |cut -d' ' -f1)
76+# #[ $line = "es-ES" ] || continue # To speed up testing
77+# [ $line = "en-US" ] && continue
78+# hg clone https://hg.mozilla.org/l10n-central/$line
79+# mkdir -p $line/browser/chrome/browser/preferences
80+# touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
81+# rm -rf $line/.hg*
82+# done < ../$SOURCEDIR/browser/locales/shipped-locales
83+# cd ..
84+#
85+# mv l10n $SOURCEDIR
86+#
87+# hg clone https://hg.mozilla.org/l10n/compare-locales/
88+# cd compare-locales/
89+# hg checkout RELEASE_8_0_0
90+# cd ..
91+# rm compare-locales/.hg* compare-locales/.git* -rf
92+# mv compare-locales $SOURCEDIR/l10n
93
94 #######################################################
95
96-cd $SOURCEDIR
97+# cd $SOURCEDIR
98
99 shopt -s nullglob
100 for patch in $DATA/patches/*.patch; do
101@@ -598,6 +598,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
102 # Fix CVE-2012-3386
103 /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
104 30
105-cd .. 31-validate_env || exit 1
106-echo Packaging tarball 32-prepare_env
107-tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR 33-fetch_source
108+# cd .. 34-verify_sources
109+# echo Packaging tarball 35-extract_sources
110+# tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR 36-fetch_l10n
37+# validate_env || exit 1
38+# prepare_env
39+# fetch_source
40+# verify_sources
41+# extract_sources
42+# fetch_l10n
43 apply_patches
44 configure
45 configure_search
46@@ -872,4 +872,4 @@ prepare_macos_packaging
47 configure_extensions
48 configure_onboarding
49 apply_bugfixes
50-finalize_sourceball
51+# finalize_sourceball
diff --git a/gnu/packages/patches/mupdf-CVE-2021-3407.patch b/gnu/packages/patches/mupdf-CVE-2021-3407.patch
deleted file mode 100644
index 9f901517c5d..00000000000
--- a/gnu/packages/patches/mupdf-CVE-2021-3407.patch
+++ /dev/null
@@ -1,51 +0,0 @@
1This patch came from https://git.ghostscript.com/?p=mupdf.git;a=patch;h=cee7cefc610d42fd383b3c80c12cbc675443176a
2and fixes CVE-2021-3407.
3
4From cee7cefc610d42fd383b3c80c12cbc675443176a Mon Sep 17 00:00:00 2001
5From: Robin Watts <Robin.Watts@artifex.com>
6Date: Fri, 22 Jan 2021 17:05:15 +0000
7Subject: [PATCH] Bug 703366: Fix double free of object during linearization.
8
9This appears to happen because we parse an illegal object from
10a broken file and assign it to object 0, which is defined to
11be free.
12
13Here, we fix the parsing code so this can't happen.
14---
15 source/pdf/pdf-parse.c | 6 ++++++
16 source/pdf/pdf-xref.c | 2 ++
17 2 files changed, 8 insertions(+)
18
19diff --git a/source/pdf/pdf-parse.c b/source/pdf/pdf-parse.c
20index 7abc8c3d4..5761c3351 100644
21--- a/source/pdf/pdf-parse.c
22+++ b/source/pdf/pdf-parse.c
23@@ -749,6 +749,12 @@ pdf_parse_ind_obj(fz_context *ctx, pdf_document *doc,
24 fz_throw(ctx, FZ_ERROR_SYNTAX, "expected generation number (%d ? obj)", num);
25 }
26 gen = buf->i;
27+ if (gen < 0 || gen >= 65536)
28+ {
29+ if (try_repair)
30+ *try_repair = 1;
31+ fz_throw(ctx, FZ_ERROR_SYNTAX, "invalid generation number (%d)", gen);
32+ }
33
34 tok = pdf_lex(ctx, file, buf);
35 if (tok != PDF_TOK_OBJ)
36diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
37index 1b2bdcd59..30197b4b8 100644
38--- a/source/pdf/pdf-xref.c
39+++ b/source/pdf/pdf-xref.c
40@@ -1190,6 +1190,8 @@ pdf_read_new_xref(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf)
41 {
42 ofs = fz_tell(ctx, doc->file);
43 trailer = pdf_parse_ind_obj(ctx, doc, doc->file, buf, &num, &gen, &stm_ofs, NULL);
44+ if (num == 0)
45+ fz_throw(ctx, FZ_ERROR_GENERIC, "Trailer object number cannot be 0\n");
46 }
47 fz_catch(ctx)
48 {
49--
502.17.1
51
diff --git a/gnu/packages/patches/mupdf-fix-linkage.patch b/gnu/packages/patches/mupdf-fix-linkage.patch
deleted file mode 100644
index 4ffd1c6a77e..00000000000
--- a/gnu/packages/patches/mupdf-fix-linkage.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From: Tobias Geerinckx-Rice <me@tobias.gr>
2Date: Tue, 24 Nov 2020 10:29:28 +0000
3Subject: [PATCH] gnu: mupdf: Fix linkage.
4
5Replace broken linkage to ‘build/shared-release/libmupdf.so’ with the
6proper ‘-L$(libdir) -lmupdf’ incantation, and fix libmupdf.so's mode.
7
8--- mupdf-1.18.0-source.org/Makefile
9+++ mupdf-1.18.0-source/Makefile
10@@ -61,7 +61,7 @@
11 ifdef RANLIB
12 RANLIB_CMD = $(QUIET_RANLIB) $(RANLIB) $@
13 endif
14-LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
15+LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $(subst $(MUPDF_LIB),-L$(libdir) -L$(OUT) -lmupdf,$^) $(LIBS)
16 TAGS_CMD = $(QUIET_TAGS) ctags -R --c-kinds=+p
17 WINDRES_CMD = $(QUIET_WINDRES) $(MKTGTDIR) ; $(WINDRES) $< $@
18 OBJCOPY_CMD = $(QUIET_OBJCOPY) $(MKTGTDIR) ; $(LD) -r -b binary -z noexecstack -o $@ $<
19@@ -364,7 +364,7 @@ install: libs apps
20 install -m 644 include/mupdf/pdf/*.h $(DESTDIR)$(incdir)/mupdf/pdf
21
22 install -d $(DESTDIR)$(libdir)
23- install -m 644 $(INSTALL_LIBS) $(DESTDIR)$(libdir)
24+ install -m 755 $(INSTALL_LIBS) $(DESTDIR)$(libdir)
25
26 install -d $(DESTDIR)$(bindir)
27 install -m 755 $(TOOL_APPS) $(VIEW_APPS) $(DESTDIR)$(bindir)
diff --git a/gnu/packages/patches/python-peachpy-determinism.patch b/gnu/packages/patches/python-peachpy-determinism.patch
new file mode 100644
index 00000000000..f326a4b6b07
--- /dev/null
+++ b/gnu/packages/patches/python-peachpy-determinism.patch
@@ -0,0 +1,25 @@
1Make PeachPy processes deterministic:
2
3 https://github.com/Maratyszcza/PeachPy/issues/88
4 https://issues.guix.gnu.org/50672
5
6diff --git a/peachpy/name.py b/peachpy/name.py
7index b6a03dc..412079d 100644
8--- a/peachpy/name.py
9+++ b/peachpy/name.py
10@@ -86,13 +86,13 @@ def add_scoped_name(self, scoped_name):
11 self.names[scope_name.name] = scope
12 else:
13 assert scope_name.name is None
14- self.prenames.setdefault(scope_name.prename, set())
15+ self.prenames.setdefault(scope_name.prename, {})
16 if subscoped_name:
17 for subscope in iter(self.prenames[scope_name.prename]):
18 if isinstance(subscope, Namespace) and subscope.scope_name is scope_name:
19 subscope.add_scoped_name(subscoped_name)
20 return
21- self.prenames[scope_name.prename].add(scope)
22+ self.prenames[scope_name.prename][scope] = None
23
24 def assign_names(self):
25 # Step 1: assign names to symbols with prenames with no conflicts
diff --git a/gnu/packages/patches/qemu-fix-agent-paths.patch b/gnu/packages/patches/qemu-fix-agent-paths.patch
new file mode 100644
index 00000000000..bae62fadbf7
--- /dev/null
+++ b/gnu/packages/patches/qemu-fix-agent-paths.patch
@@ -0,0 +1,66 @@
1Allow a QEMU host to set the time and shutdown Guix guests. Styled
2after the patch from the Nix package:
3
4https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/virtualization/qemu/fix-qemu-ga.patch
5
6diff --git a/qga/commands-posix.c b/qga/commands-posix.c
7index 75dbaab..b416b03 100644
8--- a/qga/commands-posix.c
9+++ b/qga/commands-posix.c
10@@ -84,6 +84,7 @@ static void ga_wait_child(pid_t pid, int *status, Error **errp)
11 void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
12 {
13 const char *shutdown_flag;
14+ const char *command;
15 Error *local_err = NULL;
16 pid_t pid;
17 int status;
18@@ -91,10 +92,13 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
19 slog("guest-shutdown called, mode: %s", mode);
20 if (!has_mode || strcmp(mode, "powerdown") == 0) {
21 shutdown_flag = "-P";
22+ command = "shutdown";
23 } else if (strcmp(mode, "halt") == 0) {
24 shutdown_flag = "-H";
25+ command = "halt";
26 } else if (strcmp(mode, "reboot") == 0) {
27 shutdown_flag = "-r";
28+ command = "reboot";
29 } else {
30 error_setg(errp,
31 "mode is invalid (valid values are: halt|powerdown|reboot");
32@@ -109,6 +113,11 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
33 reopen_fd_to_null(1);
34 reopen_fd_to_null(2);
35
36+ /* try Guix’s shutdown/halt/reboot first */
37+ char *path = g_strdup_printf("/run/current-system/profile/sbin/%s", command);
38+ execle(path, command, (char *)NULL, environ);
39+ g_free(path);
40+
41 execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0",
42 "hypervisor initiated shutdown", (char *)NULL, environ);
43 _exit(EXIT_FAILURE);
44@@ -158,10 +167,12 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
45 Error *local_err = NULL;
46 struct timeval tv;
47 static const char hwclock_path[] = "/sbin/hwclock";
48+ static const char hwclock_path_guix[] = "/run/current-system/profile/sbin/hwclock";
49 static int hwclock_available = -1;
50
51 if (hwclock_available < 0) {
52- hwclock_available = (access(hwclock_path, X_OK) == 0);
53+ hwclock_available = (access(hwclock_path_guix, X_OK) == 0) ||
54+ (access(hwclock_path, X_OK) == 0);
55 }
56
57 if (!hwclock_available) {
58@@ -207,6 +218,8 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
59
60 /* Use '/sbin/hwclock -w' to set RTC from the system time,
61 * or '/sbin/hwclock -s' to set the system time from RTC. */
62+ execle(hwclock_path_guix, "hwclock", has_time ? "-w" : "-s",
63+ NULL, environ);
64 execle(hwclock_path, "hwclock", has_time ? "-w" : "-s",
65 NULL, environ);
66 _exit(EXIT_FAILURE);
diff --git a/gnu/packages/patches/u-boot-allow-disabling-openssl.patch b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
new file mode 100644
index 00000000000..e3ec92be849
--- /dev/null
+++ b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
@@ -0,0 +1,164 @@
1From f060e90d148270307228315e2759a0065ec1d796 Mon Sep 17 00:00:00 2001
2From: Vagrant Cascadian <vagrant@debian.org>
3Date: Fri, 22 Oct 2021 17:34:53 -0700
4Subject: [PATCH] Revert "tools: kwbimage: Do not hide usage of secure header
5 under CONFIG_ARMADA_38X"
6
7This reverts commit b4f3cc2c42d97967a3a3c8796c340f6b07ecccac.
8---
9 tools/Makefile | 8 ++++++++
10 tools/kwbimage.c | 22 ++++++++++++++++++++++
11 2 files changed, 30 insertions(+)
12
13diff --git a/tools/Makefile b/tools/Makefile
14index 4a86321f64..9517f203fd 100644
15--- a/tools/Makefile
16+++ b/tools/Makefile
17@@ -169,6 +169,14 @@ HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE_MAX_SIZE=0xffffffff
18 HOST_EXTRACFLAGS += -DCONFIG_FIT_CIPHER
19 endif
20
21+ifneq ($(CONFIG_SYS_U_BOOT_OFFS),)
22+HOSTCFLAGS_kwbimage.o += -DCONFIG_SYS_U_BOOT_OFFS=$(CONFIG_SYS_U_BOOT_OFFS)
23+endif
24+
25+ifneq ($(CONFIG_ARMADA_38X),)
26+HOSTCFLAGS_kwbimage.o += -DCONFIG_KWB_SECURE
27+endif
28+
29 # MXSImage needs LibSSL
30 ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_TOOLS_LIBCRYPTO),)
31 HOSTCFLAGS_kwbimage.o += \
32diff --git a/tools/kwbimage.c b/tools/kwbimage.c
33index d200ff2425..23d6be3c9a 100644
34--- a/tools/kwbimage.c
35+++ b/tools/kwbimage.c
36@@ -14,6 +14,7 @@
37 #include <stdint.h>
38 #include "kwbimage.h"
39
40+#ifdef CONFIG_KWB_SECURE
41 #include <openssl/bn.h>
42 #include <openssl/rsa.h>
43 #include <openssl/pem.h>
44@@ -39,10 +40,13 @@ void EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx)
45 EVP_MD_CTX_reset(ctx);
46 }
47 #endif
48+#endif
49
50 static struct image_cfg_element *image_cfg;
51 static int cfgn;
52+#ifdef CONFIG_KWB_SECURE
53 static int verbose_mode;
54+#endif
55
56 struct boot_mode {
57 unsigned int id;
58@@ -237,6 +241,8 @@ image_count_options(unsigned int optiontype)
59 return count;
60 }
61
62+#if defined(CONFIG_KWB_SECURE)
63+
64 static int image_get_csk_index(void)
65 {
66 struct image_cfg_element *e;
67@@ -259,6 +265,8 @@ static bool image_get_spezialized_img(void)
68 return e->sec_specialized_img;
69 }
70
71+#endif
72+
73 /*
74 * Compute a 8-bit checksum of a memory area. This algorithm follows
75 * the requirements of the Marvell SoC BootROM specifications.
76@@ -353,6 +361,7 @@ static uint8_t baudrate_to_option(unsigned int baudrate)
77 }
78 }
79
80+#if defined(CONFIG_KWB_SECURE)
81 static void kwb_msg(const char *fmt, ...)
82 {
83 if (verbose_mode) {
84@@ -847,6 +856,8 @@ done:
85 return ret;
86 }
87
88+#endif
89+
90 static void *image_create_v0(size_t *imagesz, struct image_tool_params *params,
91 int payloadsz)
92 {
93@@ -977,11 +988,13 @@ static size_t image_headersz_v1(int *hasext)
94 *hasext = 1;
95 }
96
97+#if defined(CONFIG_KWB_SECURE)
98 if (image_get_csk_index() >= 0) {
99 headersz += sizeof(struct secure_hdr_v1);
100 if (hasext)
101 *hasext = 1;
102 }
103+#endif
104
105 /*
106 * The payload should be aligned on some reasonable
107@@ -1058,6 +1071,8 @@ err_close:
108 return -1;
109 }
110
111+#if defined(CONFIG_KWB_SECURE)
112+
113 int export_pub_kak_hash(RSA *kak, struct secure_hdr_v1 *secure_hdr)
114 {
115 FILE *hashf;
116@@ -1170,6 +1185,7 @@ int add_secure_header_v1(struct image_tool_params *params, uint8_t *ptr,
117
118 return 0;
119 }
120+#endif
121
122 static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
123 uint8_t *ptr, int payloadsz)
124@@ -1177,7 +1193,9 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
125 struct image_cfg_element *e;
126 struct main_hdr_v1 *main_hdr;
127 struct register_set_hdr_v1 *register_set_hdr;
128+#if defined(CONFIG_KWB_SECURE)
129 struct secure_hdr_v1 *secure_hdr = NULL;
130+#endif
131 size_t headersz;
132 uint8_t *image, *cur;
133 int hasext = 0;
134@@ -1253,6 +1271,7 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
135 if (main_hdr->blockid == IBR_HDR_PEX_ID)
136 main_hdr->srcaddr = cpu_to_le32(0xFFFFFFFF);
137
138+#if defined(CONFIG_KWB_SECURE)
139 if (image_get_csk_index() >= 0) {
140 /*
141 * only reserve the space here; we fill the header later since
142@@ -1263,6 +1282,7 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
143 *next_ext = 1;
144 next_ext = &secure_hdr->next;
145 }
146+#endif
147
148 datai = 0;
149 register_set_hdr = (struct register_set_hdr_v1 *)cur;
150@@ -1310,9 +1330,11 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
151 return NULL;
152 }
153
154+#if defined(CONFIG_KWB_SECURE)
155 if (secure_hdr && add_secure_header_v1(params, ptr, payloadsz,
156 headersz, image, secure_hdr))
157 return NULL;
158+#endif
159
160 /* Calculate and set the header checksum */
161 main_hdr->checksum = image_checksum8(main_hdr, headersz);
162--
1632.30.2
164
diff --git a/gnu/packages/patches/udiskie-no-appindicator.patch b/gnu/packages/patches/udiskie-no-appindicator.patch
deleted file mode 100644
index df3efe104be..00000000000
--- a/gnu/packages/patches/udiskie-no-appindicator.patch
+++ /dev/null
@@ -1,155 +0,0 @@
1Remove the support for Unity's appindicator.
2
3diff -Naur udiskie-2.0.4/completions/zsh/_udiskie udiskie-2.0.4-new/completions/zsh/_udiskie
4--- udiskie-2.0.4/completions/zsh/_udiskie 2020-01-21 01:12:40.000000000 +0100
5+++ udiskie-2.0.4-new/completions/zsh/_udiskie 2020-01-23 10:15:46.956141667 +0100
6@@ -18,8 +18,6 @@
7 '(-a)'{-A,--no-automount}"[disable automounting]"
8 '(-N)'{-n,--notify}"[show popup notifications]"
9 '(-n)'{-N,--no-notify}"[disable notifications]"
10- '(--no-appindicator)'--appindicator"[use appindicator for status icon]"
11- '(--appindicator)'--no-appindicator"[don't use appindicator]"
12 '(-T -s)'{-t,--tray}"[show tray icon]"
13 '(-T -t)'{-s,--smart-tray}"[auto hide tray icon]"
14 '(-t -s)'{-T,--no-tray}"[disable tray icon]"
15diff -Naur udiskie-2.0.4/doc/udiskie.8.txt udiskie-2.0.4-new/doc/udiskie.8.txt
16--- udiskie-2.0.4/doc/udiskie.8.txt 2020-01-21 01:12:40.000000000 +0100
17+++ udiskie-2.0.4-new/doc/udiskie.8.txt 2020-01-23 10:16:12.636290647 +0100
18@@ -92,12 +92,6 @@
19 *--no-terminal*::
20 Disable terminal action.
21
22-*--appindicator*::
23- Use AppIndicator3 for the status icon. Use this on Ubuntu/Unity if no icon is shown.
24-
25-*--no-appindicator*::
26- Use Gtk.StatusIcon for the status icon (default).
27-
28 *--password-cache MINUTES*::
29 Cache passwords for LUKS partitions and set the timeout.
30
31diff -Naur udiskie-2.0.4/udiskie/appindicator.py udiskie-2.0.4-new/udiskie/appindicator.py
32--- udiskie-2.0.4/udiskie/appindicator.py 2020-01-21 01:12:40.000000000 +0100
33+++ udiskie-2.0.4-new/udiskie/appindicator.py 1970-01-01 01:00:00.000000000 +0100
34@@ -1,61 +0,0 @@
35-"""
36-Status icon using AppIndicator3.
37-"""
38-
39-from gi.repository import Gtk
40-from gi.repository import AppIndicator3
41-
42-from .async_ import Future
43-
44-
45-class AppIndicatorIcon:
46-
47- """
48- Show status icon using AppIndicator as backend. Replaces
49- `udiskie.tray.StatusIcon` on ubuntu/unity.
50- """
51-
52- def __init__(self, menumaker, _icons):
53- self._maker = menumaker
54- self._menu = Gtk.Menu()
55- self._indicator = AppIndicator3.Indicator.new(
56- 'udiskie',
57- _icons.get_icon_name('media'),
58- AppIndicator3.IndicatorCategory.HARDWARE)
59- self._indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE)
60- self._indicator.set_menu(self._menu)
61- # Get notified before menu is shown, see:
62- # https://bugs.launchpad.net/screenlets/+bug/522152/comments/15
63- dbusmenuserver = self._indicator.get_property('dbus-menu-server')
64- self._dbusmenuitem = dbusmenuserver.get_property('root-node')
65- self._conn = self._dbusmenuitem.connect('about-to-show', self._on_show)
66- self.task = Future()
67- menumaker._quit_action = self.destroy
68- # Populate menu initially, so libdbusmenu does not ignore the
69- # 'about-to-show':
70- self._maker(self._menu)
71-
72- def destroy(self):
73- self.show(False)
74- self._dbusmenuitem.disconnect(self._conn)
75- self.task.set_result(True)
76-
77- @property
78- def visible(self):
79- status = self._indicator.get_status()
80- return status == AppIndicator3.IndicatorStatus.ACTIVE
81-
82- def show(self, show=True):
83- if show == self.visible:
84- return
85- status = (AppIndicator3.IndicatorStatus.ACTIVE if show else
86- AppIndicator3.IndicatorStatus.PASSIVE)
87- self._indicator.set_status(status)
88-
89- def _on_show(self, menu):
90- # clear menu:
91- for item in self._menu.get_children():
92- self._menu.remove(item)
93- # repopulate:
94- self._maker(self._menu)
95- self._menu.show_all()
96diff -Naur udiskie-2.0.4/udiskie/cli.py udiskie-2.0.4-new/udiskie/cli.py
97--- udiskie-2.0.4/udiskie/cli.py 2020-01-21 01:12:40.000000000 +0100
98+++ udiskie-2.0.4-new/udiskie/cli.py 2020-01-23 10:17:13.064810617 +0100
99@@ -287,9 +287,6 @@
100 -T, --no-tray Disable tray icon
101 -m MENU, --menu MENU Tray menu [flat/nested]
102
103- --appindicator Use appindicator for status icon
104- --no-appindicator Don't use appindicator
105-
106 --password-cache MINUTES Set password cache timeout
107 --no-password-cache Disable password cache
108
109@@ -312,7 +309,6 @@
110 'notify': True,
111 'tray': False,
112 'menu': 'flat',
113- 'appindicator': False,
114 'file_manager': 'xdg-open',
115 'terminal': '',
116 'password_prompt': 'builtin:gui',
117@@ -328,7 +324,6 @@
118 '--no-tray': False,
119 '--smart-tray': 'auto'}),
120 'menu': Value('--menu'),
121- 'appindicator': Switch('appindicator'),
122 'file_manager': OptionalValue('--file-manager'),
123 'password_prompt': OptionalValue('--password-prompt'),
124 'password_cache': OptionalValue('--password-cache'),
125@@ -459,11 +454,7 @@
126
127 menu_maker = udiskie.tray.UdiskieMenu(self, icons, actions, flat,
128 config.quickmenu_actions)
129- if options['appindicator']:
130- import udiskie.appindicator
131- TrayIcon = udiskie.appindicator.AppIndicatorIcon
132- else:
133- TrayIcon = udiskie.tray.TrayIcon
134+ TrayIcon = udiskie.tray.TrayIcon
135 trayicon = TrayIcon(menu_maker, icons)
136 return udiskie.tray.UdiskieStatusIcon(trayicon, menu_maker, smart)
137
138diff -Naur udiskie-2.0.4/udiskie.egg-info/SOURCES.txt udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt
139--- udiskie-2.0.4/udiskie.egg-info/SOURCES.txt 2020-01-21 01:12:41.000000000 +0100
140+++ udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt 2020-01-23 10:17:50.657205798 +0100
141@@ -25,7 +25,6 @@
142 test/test_cache.py
143 test/test_match.py
144 udiskie/__init__.py
145-udiskie/appindicator.py
146 udiskie/async_.py
147 udiskie/automount.py
148 udiskie/cache.py
149@@ -47,4 +46,4 @@
150 udiskie.egg-info/entry_points.txt
151 udiskie.egg-info/requires.txt
152 udiskie.egg-info/top_level.txt
153-udiskie.egg-info/zip-safe
154\ Pas de fin de ligne à la fin du fichier
155+udiskie.egg-info/zip-safe
diff --git a/gnu/packages/patches/zig-disable-libc-note-test.patch b/gnu/packages/patches/zig-disable-libc-note-test.patch
new file mode 100644
index 00000000000..4d76139efbe
--- /dev/null
+++ b/gnu/packages/patches/zig-disable-libc-note-test.patch
@@ -0,0 +1,31 @@
1This test fails with "error.CompilationIncorrectlySucceeded".
2
3diff --git a/test/compile_errors.zig b/test/compile_errors.zig
4index fd1255c..20d5548 100644
5--- a/test/compile_errors.zig
6+++ b/test/compile_errors.zig
7@@ -2751,15 +2751,15 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
8 "tmp.zig:3:5: error: dependency on libc must be explicitly specified in the build command",
9 });
10
11- cases.addTest("libc headers note",
12- \\const c = @cImport(@cInclude("stdio.h"));
13- \\export fn entry() void {
14- \\ _ = c.printf("hello, world!\n");
15- \\}
16- , &[_][]const u8{
17- "tmp.zig:1:11: error: C import failed",
18- "tmp.zig:1:11: note: libc headers not available; compilation does not link against libc",
19- });
20+// cases.addTest("libc headers note",
21+// \\const c = @cImport(@cInclude("stdio.h"));
22+// \\export fn entry() void {
23+// \\ _ = c.printf("hello, world!\n");
24+// \\}
25+// , &[_][]const u8{
26+// "tmp.zig:1:11: error: C import failed",
27+// "tmp.zig:1:11: note: libc headers not available; compilation does not link against libc",
28+// });
29 }
30
31 cases.addTest("comptime vector overflow shows the index",
diff --git a/gnu/packages/patches/zig-use-system-paths.patch b/gnu/packages/patches/zig-use-system-paths.patch
new file mode 100644
index 00000000000..33b7da1e0df
--- /dev/null
+++ b/gnu/packages/patches/zig-use-system-paths.patch
@@ -0,0 +1,143 @@
1This patch replaces the OS-specific detection mechanism by one that solely
2relies on environment variables. This has the benefit that said environment
3variables can be used as search paths in Guix.
4
5Index: zig-0.8.1/lib/std/zig/system.zig
6===================================================================
7--- zig-0.8.1.orig/lib/std/zig/system.zig
8+++ zig-0.8.1/lib/std/zig/system.zig
9@@ -39,101 +39,57 @@ pub const NativePaths = struct {
10 };
11 errdefer self.deinit();
12
13- var is_nix = false;
14- if (process.getEnvVarOwned(allocator, "NIX_CFLAGS_COMPILE")) |nix_cflags_compile| {
15- defer allocator.free(nix_cflags_compile);
16-
17- is_nix = true;
18- var it = mem.tokenize(nix_cflags_compile, " ");
19+ // TODO: Support cross-compile paths?
20+ if (process.getEnvVarOwned(allocator, "C_INCLUDE_PATH")) |c_include_path| {
21+ defer allocator.free(c_include_path);
22+ var it = mem.tokenize(c_include_path, ":");
23 while (true) {
24- const word = it.next() orelse break;
25- if (mem.eql(u8, word, "-isystem")) {
26- const include_path = it.next() orelse {
27- try self.addWarning("Expected argument after -isystem in NIX_CFLAGS_COMPILE");
28- break;
29- };
30- try self.addIncludeDir(include_path);
31- } else {
32- if (mem.startsWith(u8, word, "-frandom-seed=")) {
33- continue;
34- }
35- try self.addWarningFmt("Unrecognized C flag from NIX_CFLAGS_COMPILE: {s}", .{word});
36- }
37+ const dir = it.next() orelse break;
38+ try self.addIncludeDir(dir);
39 }
40 } else |err| switch (err) {
41 error.InvalidUtf8 => {},
42 error.EnvironmentVariableNotFound => {},
43 error.OutOfMemory => |e| return e,
44 }
45- if (process.getEnvVarOwned(allocator, "NIX_LDFLAGS")) |nix_ldflags| {
46- defer allocator.free(nix_ldflags);
47
48- is_nix = true;
49- var it = mem.tokenize(nix_ldflags, " ");
50+ if (process.getEnvVarOwned(allocator, "CPLUS_INCLUDE_PATH")) |cplus_include_path| {
51+ defer allocator.free(cplus_include_path);
52+ var it = mem.tokenize(cplus_include_path, ":");
53 while (true) {
54- const word = it.next() orelse break;
55- if (mem.eql(u8, word, "-rpath")) {
56- const rpath = it.next() orelse {
57- try self.addWarning("Expected argument after -rpath in NIX_LDFLAGS");
58- break;
59- };
60- try self.addRPath(rpath);
61- } else if (word.len > 2 and word[0] == '-' and word[1] == 'L') {
62- const lib_path = word[2..];
63- try self.addLibDir(lib_path);
64- } else {
65- try self.addWarningFmt("Unrecognized C flag from NIX_LDFLAGS: {s}", .{word});
66- break;
67- }
68+ const dir = it.next() orelse break;
69+ try self.addIncludeDir(dir);
70 }
71 } else |err| switch (err) {
72 error.InvalidUtf8 => {},
73 error.EnvironmentVariableNotFound => {},
74 error.OutOfMemory => |e| return e,
75 }
76- if (is_nix) {
77- return self;
78- }
79-
80- if (comptime Target.current.isDarwin()) {
81- try self.addIncludeDir("/usr/include");
82- try self.addIncludeDir("/usr/local/include");
83
84- try self.addLibDir("/usr/lib");
85- try self.addLibDir("/usr/local/lib");
86-
87- try self.addFrameworkDir("/Library/Frameworks");
88- try self.addFrameworkDir("/System/Library/Frameworks");
89-
90- return self;
91+ if (process.getEnvVarOwned(allocator, "LIBRARY_PATH")) |library_path| {
92+ defer allocator.free(library_path);
93+ var it = mem.tokenize(library_path, ":");
94+ while (true) {
95+ const dir = it.next() orelse break;
96+ try self.addLibDir(dir);
97+ }
98+ } else |err| switch (err) {
99+ error.InvalidUtf8 => {},
100+ error.EnvironmentVariableNotFound => {},
101+ error.OutOfMemory => |e| return e,
102 }
103
104- if (native_target.os.tag != .windows) {
105- const triple = try native_target.linuxTriple(allocator);
106- const qual = native_target.cpu.arch.ptrBitWidth();
107-
108- // TODO: $ ld --verbose | grep SEARCH_DIR
109- // the output contains some paths that end with lib64, maybe include them too?
110- // TODO: what is the best possible order of things?
111- // TODO: some of these are suspect and should only be added on some systems. audit needed.
112-
113- try self.addIncludeDir("/usr/local/include");
114- try self.addLibDirFmt("/usr/local/lib{d}", .{qual});
115- try self.addLibDir("/usr/local/lib");
116-
117- try self.addIncludeDirFmt("/usr/include/{s}", .{triple});
118- try self.addLibDirFmt("/usr/lib/{s}", .{triple});
119-
120- try self.addIncludeDir("/usr/include");
121- try self.addLibDirFmt("/lib{d}", .{qual});
122- try self.addLibDir("/lib");
123- try self.addLibDirFmt("/usr/lib{d}", .{qual});
124- try self.addLibDir("/usr/lib");
125-
126- // example: on a 64-bit debian-based linux distro, with zlib installed from apt:
127- // zlib.h is in /usr/include (added above)
128- // libz.so.1 is in /lib/x86_64-linux-gnu (added here)
129- try self.addLibDirFmt("/lib/{s}", .{triple});
130+ if (process.getEnvVarOwned(allocator, "DYLD_FRAMEWORK_PATH")) |dyld_framework_path| {
131+ defer allocator.free(dyld_framework_path);
132+ var it = mem.tokenize(dyld_framework_path, ":");
133+ while (true) {
134+ const dir = it.next() orelse break;
135+ try self.addFrameworkDir(dir);
136+ }
137+ } else |err| switch (err) {
138+ error.InvalidUtf8 => {},
139+ error.EnvironmentVariableNotFound => {},
140+ error.OutOfMemory => |e| return e,
141 }
142
143 return self;
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 042003e8988..80f62946ead 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -721,21 +721,20 @@ extracting content or merging files.")
721(define-public mupdf 721(define-public mupdf
722 (package 722 (package
723 (name "mupdf") 723 (name "mupdf")
724 (version "1.18.0") 724 (version "1.19.0")
725 (source 725 (source
726 (origin 726 (origin
727 (method url-fetch) 727 (method url-fetch)
728 (uri (string-append "https://mupdf.com/downloads/archive/" 728 (uri (string-append "https://mupdf.com/downloads/archive/"
729 "mupdf-" version "-source.tar.xz")) 729 "mupdf-" version "-source.tar.xz"))
730 (sha256 730 (sha256
731 (base32 "16m5sksil22sshxy70xkslsb2qhvcqb1d95i9savnhds1xn4ybar")) 731 (base32 "1i98xqgnzp168hnnhradl8658qsif06wlbvcglz0mmh8wi1rkwrq"))
732 (patches (search-patches "mupdf-fix-linkage.patch"
733 "mupdf-CVE-2021-3407.patch"))
734 (modules '((guix build utils))) 732 (modules '((guix build utils)))
735 (snippet 733 (snippet
736 '(begin 734 '(begin
737 ;; Remove bundled software. 735 ;; Remove bundled software.
738 (let* ((keep (list "lcms2")) ; different from our lcms2 package 736 (let* ((keep (list "extract"
737 "lcms2")) ; different from our lcms2 package
739 (from "thirdparty") 738 (from "thirdparty")
740 (kept (string-append from "~temp"))) 739 (kept (string-append from "~temp")))
741 (mkdir-p kept) 740 (mkdir-p kept)
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index e85af9305ae..a3b8f471dcd 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -413,7 +413,7 @@ overlapping images, as well as some command line tools.")
413 ("libjpeg" ,libjpeg-turbo) 413 ("libjpeg" ,libjpeg-turbo)
414 ("libpng" ,libpng) 414 ("libpng" ,libpng)
415 ("libtiff" ,libtiff) 415 ("libtiff" ,libtiff)
416 ("openexr" ,openexr) 416 ("openexr" ,openexr-2)
417 ("vigra" ,vigra) 417 ("vigra" ,vigra)
418 ("zlib" ,zlib))) 418 ("zlib" ,zlib)))
419 (arguments 419 (arguments
@@ -568,7 +568,7 @@ photographic equipment.")
568 ("libxslt" ,libxslt) 568 ("libxslt" ,libxslt)
569 ("lua" ,lua) ;optional, for plugins 569 ("lua" ,lua) ;optional, for plugins
570 ("opencl-icd-loader" ,opencl-icd-loader) ;optional, for OpenCL support 570 ("opencl-icd-loader" ,opencl-icd-loader) ;optional, for OpenCL support
571 ("openexr" ,openexr) ;optional, for EXR import/export 571 ("openexr" ,openexr-2) ;optional, for EXR import/export
572 ("openjpeg" ,openjpeg) ;optional, for JPEG2000 export 572 ("openjpeg" ,openjpeg) ;optional, for JPEG2000 export
573 ("osm-gps-map" ,osm-gps-map) ;optional, for geotagging view 573 ("osm-gps-map" ,osm-gps-map) ;optional, for geotagging view
574 ("pugixml" ,pugixml) 574 ("pugixml" ,pugixml)
@@ -726,7 +726,7 @@ off' shooting directly from the controlling computer.")
726 ("libxi" ,libxi) 726 ("libxi" ,libxi)
727 ("libxmu" ,libxmu) 727 ("libxmu" ,libxmu)
728 ("mesa" ,mesa) 728 ("mesa" ,mesa)
729 ("openexr" ,openexr) 729 ("openexr" ,openexr-2)
730 ("sqlite" ,sqlite) 730 ("sqlite" ,sqlite)
731 ("vigra" ,vigra) 731 ("vigra" ,vigra)
732 ("wxwidgets" ,wxwidgets) 732 ("wxwidgets" ,wxwidgets)
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index fcdc1a309ba..44eab769187 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -60,7 +60,7 @@
60(define-public php 60(define-public php
61 (package 61 (package
62 (name "php") 62 (name "php")
63 (version "7.4.22") 63 (version "7.4.25")
64 (home-page "https://secure.php.net/") 64 (home-page "https://secure.php.net/")
65 (source (origin 65 (source (origin
66 (method url-fetch) 66 (method url-fetch)
@@ -68,7 +68,7 @@
68 "php-" version ".tar.xz")) 68 "php-" version ".tar.xz"))
69 (sha256 69 (sha256
70 (base32 70 (base32
71 "1s5xjy1cchlg0vfxic73wy2wip8spfjr094hzzyc76plsbbqq1wf")) 71 "02iw75niazf3zh3ry15k5yjy6ivg49rwzlr8g8w49rgyszqmi9qj"))
72 (patches (search-patches "php-bug-74093-test.patch")) 72 (patches (search-patches "php-bug-74093-test.patch"))
73 (modules '((guix build utils))) 73 (modules '((guix build utils)))
74 (snippet 74 (snippet
@@ -82,8 +82,7 @@
82 ;;"fileinfo/libmagic" ; a patched version of libmagic 82 ;;"fileinfo/libmagic" ; a patched version of libmagic
83 '("gd/libgd" 83 '("gd/libgd"
84 "pcre/pcre2lib" 84 "pcre/pcre2lib"
85 "xmlrpc/libxmlrpc")) 85 "xmlrpc/libxmlrpc"))))))
86 #t))))
87 (build-system gnu-build-system) 86 (build-system gnu-build-system)
88 (arguments 87 (arguments
89 `(#:configure-flags 88 `(#:configure-flags
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 9ae697d85f0..cb812762c9b 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -120,7 +120,7 @@ interfaces with pytest.")
120 ("python-six" ,python-six))) 120 ("python-six" ,python-six)))
121 (home-page "https://github.com/nicoulaj/pytest-csv") 121 (home-page "https://github.com/nicoulaj/pytest-csv")
122 (synopsis "CSV reporter for Pytest") 122 (synopsis "CSV reporter for Pytest")
123 (description "This packages provides a plugin for Pytest that enables a 123 (description "This package provides a plugin for Pytest that enables a
124CSV output mode for Pytest. It can be enabled via the @option{--csv} option 124CSV output mode for Pytest. It can be enabled via the @option{--csv} option
125it adds to the Pytest command line interface (CLI).") 125it adds to the Pytest command line interface (CLI).")
126 (license license:gpl3+))) 126 (license license:gpl3+)))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 8783c750374..164886ce791 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -4571,13 +4571,13 @@ Python.")
4571(define-public python-slugify 4571(define-public python-slugify
4572 (package 4572 (package
4573 (name "python-slugify") 4573 (name "python-slugify")
4574 (version "4.0.1") 4574 (version "5.0.2")
4575 (source 4575 (source
4576 (origin 4576 (origin
4577 (method url-fetch) 4577 (method url-fetch)
4578 (uri (pypi-uri "python-slugify" version)) 4578 (uri (pypi-uri "python-slugify" version))
4579 (sha256 4579 (sha256
4580 (base32 "0w22fapghmzk3xdasc4dn7h8sl58l08d1h5zbf72dh80drv1g9b9")))) 4580 (base32 "1aww2ncglyii4jkbfjxqhinivawf9zmwifcj32d69gpwp6h86czi"))))
4581 (propagated-inputs 4581 (propagated-inputs
4582 `(("python-unidecode" ,python-unidecode) 4582 `(("python-unidecode" ,python-unidecode)
4583 ("python-text-unidecode" ,python-text-unidecode))) 4583 ("python-text-unidecode" ,python-text-unidecode)))
@@ -4585,8 +4585,9 @@ Python.")
4585 `(#:phases 4585 `(#:phases
4586 (modify-phases %standard-phases 4586 (modify-phases %standard-phases
4587 (replace 'check 4587 (replace 'check
4588 (lambda _ 4588 (lambda* (#:key tests? #:allow-other-keys)
4589 (invoke "python" "test.py")))))) 4589 (when tests?
4590 (invoke "python" "test.py")))))))
4590 (build-system python-build-system) 4591 (build-system python-build-system)
4591 (home-page "https://github.com/un33k/python-slugify") 4592 (home-page "https://github.com/un33k/python-slugify")
4592 (synopsis "Python Slugify application that handles Unicode") 4593 (synopsis "Python Slugify application that handles Unicode")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index b2aaef14d3b..5f46e524726 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -110,6 +110,7 @@
110;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev> 110;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev>
111;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> 111;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
112;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org> 112;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org>
113;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be>
113;;; 114;;;
114;;; This file is part of GNU Guix. 115;;; This file is part of GNU Guix.
115;;; 116;;;
@@ -4332,7 +4333,7 @@ software version simply.")
4332(define-public python-deprecated 4333(define-public python-deprecated
4333 (package 4334 (package
4334 (name "python-deprecated") 4335 (name "python-deprecated")
4335 (version "1.2.5") 4336 (version "1.2.13")
4336 (source 4337 (source
4337 (origin 4338 (origin
4338 (method git-fetch) 4339 (method git-fetch)
@@ -4342,13 +4343,14 @@ software version simply.")
4342 (file-name (git-file-name name version)) 4343 (file-name (git-file-name name version))
4343 (sha256 4344 (sha256
4344 (base32 4345 (base32
4345 "14909glxxwwc4b9qpz2b9jdriwzi5n65ichw85xqppap5f79wcwz")))) 4346 "0v4ys9xr8lski2r98da99spsj6hjlnnqgnhhmyhrm66myiix885c"))))
4346 (build-system python-build-system) 4347 (build-system python-build-system)
4347 (arguments 4348 (arguments
4348 `(#:phases (modify-phases %standard-phases 4349 `(#:phases (modify-phases %standard-phases
4349 (replace 'check 4350 (replace 'check
4350 (lambda _ 4351 (lambda* (#:key tests? #:allow-other-keys)
4351 (invoke "pytest")))))) 4352 (when tests?
4353 (invoke "pytest")))))))
4352 (propagated-inputs 4354 (propagated-inputs
4353 `(("python-wrapt" ,python-wrapt))) 4355 `(("python-wrapt" ,python-wrapt)))
4354 (native-inputs 4356 (native-inputs
@@ -18389,14 +18391,14 @@ perform the operations required for synchronizing plain text.")
18389(define-public python-levenshtein 18391(define-public python-levenshtein
18390 (package 18392 (package
18391 (name "python-levenshtein") 18393 (name "python-levenshtein")
18392 (version "0.12.0") 18394 (version "0.12.2")
18393 (source 18395 (source
18394 (origin 18396 (origin
18395 (method url-fetch) 18397 (method url-fetch)
18396 (uri (pypi-uri "python-Levenshtein" version)) 18398 (uri (pypi-uri "python-Levenshtein" version))
18397 (sha256 18399 (sha256
18398 (base32 18400 (base32
18399 "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3")))) 18401 "1xj60gymwx1jl2ra9razx2wk8nb9cv1i7l8d14qsp8a8s7xra8yw"))))
18400 (build-system python-build-system) 18402 (build-system python-build-system)
18401 (home-page "https://github.com/ztane/python-Levenshtein") 18403 (home-page "https://github.com/ztane/python-Levenshtein")
18402 (synopsis "Fast computation of Levenshtein distance and string similarity") 18404 (synopsis "Fast computation of Levenshtein distance and string similarity")
@@ -27051,8 +27053,8 @@ result.")
27051 (home-page "https://github.com/readthedocs/recommonmark") 27053 (home-page "https://github.com/readthedocs/recommonmark")
27052 (synopsis "Docutils-compatibility bridge to CommonMark") 27054 (synopsis "Docutils-compatibility bridge to CommonMark")
27053 (description 27055 (description
27054 "This packages provides a docutils-compatibility bridge to CommonMark, 27056 "This package provides a docutils-compatibility bridge to CommonMark that
27055enabling you to write CommonMark inside of Docutils & Sphinx projects.") 27057lets you write CommonMark inside of Docutils & Sphinx projects.")
27056 (license license:expat))) 27058 (license license:expat)))
27057 27059
27058(define-public python-pyhull 27060(define-public python-pyhull
@@ -27125,7 +27127,8 @@ and BMI2).")
27125 (file-name (git-file-name name version)) 27127 (file-name (git-file-name name version))
27126 (sha256 27128 (sha256
27127 (base32 27129 (base32
27128 "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2")))) 27130 "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2"))
27131 (patches (search-patches "python-peachpy-determinism.patch"))))
27129 (build-system python-build-system) 27132 (build-system python-build-system)
27130 (arguments 27133 (arguments
27131 '(#:phases (modify-phases %standard-phases 27134 '(#:phases (modify-phases %standard-phases
@@ -27660,3 +27663,38 @@ and decorators library. It is useful when changing behavior in existing
27660code is desired. It includes tools for debugging and testing: 27663code is desired. It includes tools for debugging and testing:
27661simple mock/record and a complete capture/replay framework.") 27664simple mock/record and a complete capture/replay framework.")
27662 (license license:bsd-2))) 27665 (license license:bsd-2)))
27666
27667(define-public python-ijson
27668 (package
27669 (name "python-ijson")
27670 (version "3.1.4")
27671 (source
27672 (origin
27673 (method url-fetch)
27674 (uri (pypi-uri "ijson" version))
27675 (sha256
27676 (base32 "1sp463ywj4jv5cp6hsv2qwiima30d09xsabxb2dyq5b17jp0640x"))))
27677 (arguments
27678 `(#:phases
27679 (modify-phases %standard-phases
27680 ;; the tests run by the default setup.py require yajl 1.x,
27681 ;; but we have 2.x. yajl 1.x support is going to be removed
27682 ;; anyway, so use pytest to avoid running the yajl1-related
27683 ;; tests. See: https://github.com/ICRAR/ijson/issues/55
27684 (replace 'check
27685 (lambda* (#:key tests? #:allow-other-keys)
27686 (when tests?
27687 (invoke "pytest" "-vv")))))))
27688 (inputs
27689 ;; libyajl is optional, but compiling with it makes faster
27690 ;; backends available to ijson:
27691 `(("libyajl", libyajl)))
27692 (native-inputs
27693 `(("python-pytest", python-pytest)))
27694 (build-system python-build-system)
27695 (home-page "https://github.com/ICRAR/ijson")
27696 (synopsis "Iterative JSON parser with Python iterator interfaces")
27697 (description
27698 "Ijson is an iterative JSON parser with standard Python iterator
27699interfaces.")
27700 (license license:bsd-3)))
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 09878f1669f..69ecba4054b 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -380,14 +380,14 @@ SoapySDR library.")
380(define-public chirp 380(define-public chirp
381 (package 381 (package
382 (name "chirp") 382 (name "chirp")
383 (version "20201121") 383 (version "20211016")
384 (source 384 (source
385 (origin 385 (origin
386 (method url-fetch) 386 (method url-fetch)
387 (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-" 387 (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
388 version "/chirp-daily-" version ".tar.gz")) 388 version "/chirp-daily-" version ".tar.gz"))
389 (sha256 389 (sha256
390 (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n")))) 390 (base32 "13xzqnhvnw6yipv4izkq0s9ykyl9pc5ifpr1ii8xfp28ch706qyw"))))
391 (build-system python-build-system) 391 (build-system python-build-system)
392 (inputs 392 (inputs
393 `(("python2-libxml2" ,python2-libxml2) 393 `(("python2-libxml2" ,python2-libxml2)
@@ -954,7 +954,7 @@ or USB connection.")
954(define-public flamp 954(define-public flamp
955 (package 955 (package
956 (name "flamp") 956 (name "flamp")
957 (version "2.2.05") 957 (version "2.2.07")
958 (source 958 (source
959 (origin 959 (origin
960 (method git-fetch) 960 (method git-fetch)
@@ -963,7 +963,7 @@ or USB connection.")
963 (commit (string-append "v" version)))) 963 (commit (string-append "v" version))))
964 (file-name (git-file-name name version)) 964 (file-name (git-file-name name version))
965 (sha256 965 (sha256
966 (base32 "0ll2wbhyh1sb4iqsypwrd118mrgw3vbsdbz442qhk4r6l8kjzblq")))) 966 (base32 "0rygd5w04nspxdj8qj81gpb3mgijvlmii74s1f4mihqs5kb8nwh6"))))
967 (build-system gnu-build-system) 967 (build-system gnu-build-system)
968 (native-inputs 968 (native-inputs
969 `(("autoconf" ,autoconf) 969 `(("autoconf" ,autoconf)
@@ -1070,7 +1070,7 @@ you must extend 'udev-service-type' with this package. E.g.:
1070(define-public hamlib 1070(define-public hamlib
1071 (package 1071 (package
1072 (name "hamlib") 1072 (name "hamlib")
1073 (version "4.2") 1073 (version "4.3.1")
1074 (source 1074 (source
1075 (origin 1075 (origin
1076 (method url-fetch) 1076 (method url-fetch)
@@ -1078,7 +1078,7 @@ you must extend 'udev-service-type' with this package. E.g.:
1078 "https://github.com/Hamlib/Hamlib/releases/download/" 1078 "https://github.com/Hamlib/Hamlib/releases/download/"
1079 version "/hamlib-" version ".tar.gz")) 1079 version "/hamlib-" version ".tar.gz"))
1080 (sha256 1080 (sha256
1081 (base32 "1m8gb20i8ga6ndnnw187ry1h4z8wx27v1hl7c610r6ky60pv4072")))) 1081 (base32 "0c578m04zs8dllbd4cv6nxb44y0dn8kiapzkih84ycfjzmnkhdrl"))))
1082 (build-system gnu-build-system) 1082 (build-system gnu-build-system)
1083 (native-inputs 1083 (native-inputs
1084 `(("doxygen" ,doxygen) 1084 `(("doxygen" ,doxygen)
@@ -2130,6 +2130,7 @@ various hardware.")
2130 (inputs 2130 (inputs
2131 `(("airspyhf" ,airspyhf) 2131 `(("airspyhf" ,airspyhf)
2132 ("alsa-lib" ,alsa-lib) 2132 ("alsa-lib" ,alsa-lib)
2133 ("codec2" ,codec2)
2133 ("fftwf" ,fftwf) 2134 ("fftwf" ,fftwf)
2134 ("glew" ,glew) 2135 ("glew" ,glew)
2135 ("glfw" ,glfw) 2136 ("glfw" ,glfw)
@@ -2144,7 +2145,8 @@ various hardware.")
2144 (arguments 2145 (arguments
2145 `(#:tests? #f ; No test suite. 2146 `(#:tests? #f ; No test suite.
2146 #:configure-flags '("-DOPT_BUILD_AIRSPY_SOURCE=OFF" 2147 #:configure-flags '("-DOPT_BUILD_AIRSPY_SOURCE=OFF"
2147 "-DOPT_BUILD_PLUTOSDR_SOURCE=OFF") 2148 "-DOPT_BUILD_PLUTOSDR_SOURCE=OFF"
2149 "-DOPT_BUILD_M17_DECODER=ON")
2148 #:phases 2150 #:phases
2149 (modify-phases %standard-phases 2151 (modify-phases %standard-phases
2150 (add-after 'unpack 'fix-paths 2152 (add-after 'unpack 'fix-paths
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 332a03f96b8..1cbc3d84f5d 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -8684,6 +8684,8 @@ application.")
8684 (build-system ruby-build-system) 8684 (build-system ruby-build-system)
8685 (arguments 8685 (arguments
8686 '(#:tests? #f)) ; test suite tries to connect to google.com 8686 '(#:tests? #f)) ; test suite tries to connect to google.com
8687 (inputs
8688 `(("openssl" ,openssl)))
8687 (native-inputs 8689 (native-inputs
8688 `(("ruby-rake-compiler" ,ruby-rake-compiler))) 8690 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8689 (synopsis "Single-threaded network event framework for Ruby") 8691 (synopsis "Single-threaded network event framework for Ruby")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index ea1adb99ee1..4bced0a611d 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -440,7 +440,7 @@ mixed.")
440(define-public chibi-scheme 440(define-public chibi-scheme
441 (package 441 (package
442 (name "chibi-scheme") 442 (name "chibi-scheme")
443 (version "0.9") 443 (version "0.10")
444 (home-page "https://github.com/ashinn/chibi-scheme") 444 (home-page "https://github.com/ashinn/chibi-scheme")
445 (source 445 (source
446 (origin 446 (origin
@@ -448,17 +448,15 @@ mixed.")
448 (uri (git-reference (url home-page) (commit version))) 448 (uri (git-reference (url home-page) (commit version)))
449 (file-name (git-file-name name version)) 449 (file-name (git-file-name name version))
450 (sha256 450 (sha256
451 (base32 451 (base32 "0yhmj0lws3r3bl4ivs31dhlzxqc7f0dinixi904mraz1fmrg3w7f"))))
452 "1lnap41gl9vg82h557f4rlr69jgmd2gh0iqs6cxm77d39kv1scb8"))))
453 (build-system gnu-build-system) 452 (build-system gnu-build-system)
454 (arguments 453 (arguments
455 `(#:phases (modify-phases %standard-phases 454 `(#:phases
456 (delete 'configure) 455 (modify-phases %standard-phases
457 (add-before 'build 'set-cc 456 (delete 'configure)) ; no configure script
458 (lambda _
459 (setenv "CC" "gcc"))))
460 #:make-flags (let ((out (assoc-ref %outputs "out"))) 457 #:make-flags (let ((out (assoc-ref %outputs "out")))
461 (list (string-append "PREFIX=" out) 458 (list (string-append "PREFIX=" out)
459 (string-append "CC=" ,(cc-for-target))
462 (string-append "LDFLAGS=-Wl,-rpath=" out "/lib"))) 460 (string-append "LDFLAGS=-Wl,-rpath=" out "/lib")))
463 #:test-target "test")) 461 #:test-target "test"))
464 (synopsis "Small embeddable Scheme implementation") 462 (synopsis "Small embeddable Scheme implementation")
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index df6a8b2dfc1..14b21e644fa 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -2,7 +2,7 @@
2;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> 2;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
3;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> 3;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
4;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> 4;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
5;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> 5;;; Copyright © 2017, 2021 Ricardo Wurmus <rekado@elephly.net>
6;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> 6;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
7;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> 7;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
8;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> 8;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -36,19 +36,26 @@
36 #:use-module (guix build-system python) 36 #:use-module (guix build-system python)
37 #:use-module (guix build-system meson) 37 #:use-module (guix build-system meson)
38 #:use-module (gnu packages) 38 #:use-module (gnu packages)
39 #:use-module (gnu packages aspell)
40 #:use-module (gnu packages base)
39 #:use-module (gnu packages compression) 41 #:use-module (gnu packages compression)
40 #:use-module (gnu packages check) 42 #:use-module (gnu packages check)
41 #:use-module (gnu packages databases) 43 #:use-module (gnu packages databases)
44 #:use-module (gnu packages ebook)
42 #:use-module (gnu packages freedesktop) 45 #:use-module (gnu packages freedesktop)
46 #:use-module (gnu packages gawk)
47 #:use-module (gnu packages groff)
43 #:use-module (gnu packages less) 48 #:use-module (gnu packages less)
44 #:use-module (gnu packages linux) 49 #:use-module (gnu packages linux)
45 #:use-module (gnu packages pcre) 50 #:use-module (gnu packages pcre)
46 #:use-module (gnu packages perl) 51 #:use-module (gnu packages perl)
47 #:use-module (gnu packages pdf) 52 #:use-module (gnu packages pdf)
53 #:use-module (gnu packages photo)
48 #:use-module (gnu packages python) 54 #:use-module (gnu packages python)
49 #:use-module (gnu packages python-crypto) 55 #:use-module (gnu packages python-crypto)
50 #:use-module (gnu packages python-web) 56 #:use-module (gnu packages python-web)
51 #:use-module (gnu packages python-xyz) 57 #:use-module (gnu packages python-xyz)
58 #:use-module (gnu packages qt)
52 #:use-module (gnu packages sphinx) 59 #:use-module (gnu packages sphinx)
53 #:use-module (gnu packages time) 60 #:use-module (gnu packages time)
54 #:use-module (gnu packages web) 61 #:use-module (gnu packages web)
@@ -286,6 +293,104 @@ accounting for new lines and paragraph changes. It also has robust support
286for parsing HTML files.") 293for parsing HTML files.")
287 (license gpl3+))) 294 (license gpl3+)))
288 295
296(define-public recoll
297 (package
298 (name "recoll")
299 (version "1.31.2")
300 (source
301 (origin
302 (method url-fetch)
303 (uri (string-append "https://www.lesbonscomptes.com/recoll/"
304 "recoll-" version ".tar.gz"))
305 (sha256
306 (base32 "0m1w5hf2n09lbzmzvlrm2lks4lci9vvjxy2mcmgb2avgly7v5vfk"))))
307 (build-system gnu-build-system)
308 (arguments
309 `(#:configure-flags
310 (list "--disable-webkit"
311 "--disable-python-module"
312 "--without-systemd"
313 (string-append "QMAKEPATH=" (assoc-ref %build-inputs "qtbase")
314 "/bin/qmake"))
315 #:phases
316 (modify-phases %standard-phases
317 (add-after 'unpack 'patch-default-data-dir
318 (lambda* (#:key outputs #:allow-other-keys)
319 (substitute* "python/recoll/recoll/rclconfig.py"
320 (("/opt/local")
321 (assoc-ref outputs "out")))))
322 (add-after 'install 'wrap-filters
323 (lambda* (#:key inputs outputs #:allow-other-keys)
324 (let* ((out (assoc-ref outputs "out"))
325 (mapping
326 '(("rclps"
327 "poppler")
328 ("rclpdf.py"
329 "poppler")
330 ("rclpurple"
331 "gawk")
332 ("rcllyx"
333 "libiconv")
334 ("rcltex"
335 "libiconv")
336 ("rclkwd"
337 "unzip" "gzip" "tar" "libxslt")
338 ("rclman"
339 "groff")
340 ("rclgaim"
341 "gawk" "libiconv")
342 ("rclaptosidman"
343 "sed")
344 ("rclscribus"
345 "grep" "gawk" "sed"))))
346 (for-each
347 (lambda (program packages)
348 (wrap-program (string-append out "/share/recoll/filters/" program)
349 `("PATH" ":" prefix
350 ,(map (lambda (i)
351 (string-append (assoc-ref inputs i) "/bin"))
352 packages))))
353 (map car mapping)
354 (map cdr mapping))
355
356 (wrap-program (string-append out "/share/recoll/filters/rclimg")
357 `("PERL5LIB" ":" prefix
358 (,(getenv "PERL5LIB"))))))))))
359 (inputs
360 `(("aspell" ,aspell)
361 ("chmlib" ,chmlib)
362 ("inotify-tools" ,inotify-tools)
363 ("libxslt" ,libxslt)
364 ("libxml2" ,libxml2)
365 ("python" ,python)
366 ("qtbase" ,qtbase-5)
367 ("unzip" ,unzip)
368 ("xapian" ,xapian)
369 ("zlib" ,zlib)
370
371 ;; For filters
372 ("gawk" ,gawk)
373 ("grep" ,grep)
374 ("groff" ,groff)
375 ("gzip" ,gzip)
376 ("libiconv" ,libiconv)
377 ("perl" ,perl)
378 ("perl-image-exiftool" ,perl-image-exiftool)
379 ("poppler" ,poppler)
380 ("sed" ,sed)
381 ("tar" ,tar)))
382 (native-inputs
383 `(("pkg-config" ,pkg-config)
384 ("which" ,which)))
385 (home-page "https://www.lesbonscomptes.com/recoll/")
386 (synopsis "Find documents based on their contents or file names")
387 (description "Recoll finds documents based on their contents as well as
388their file names. It can search most document formats, but you may need
389external applications for text extraction. It can reach any storage place:
390files, archive members, email attachments, transparently handling
391decompression.")
392 (license gpl2+)))
393
289(define-public hyperestraier 394(define-public hyperestraier
290 (package 395 (package
291 (name "hyperestraier") 396 (name "hyperestraier")
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 319cdee0ef6..cc8840bb109 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -53,6 +53,7 @@
53 #:use-module (gnu packages graphviz) 53 #:use-module (gnu packages graphviz)
54 #:use-module (gnu packages gnupg) 54 #:use-module (gnu packages gnupg)
55 #:use-module (gnu packages gtk) 55 #:use-module (gnu packages gtk)
56 #:use-module (gnu packages libbsd)
56 #:use-module (gnu packages libusb) 57 #:use-module (gnu packages libusb)
57 #:use-module (gnu packages linux) 58 #:use-module (gnu packages linux)
58 #:use-module (gnu packages man) 59 #:use-module (gnu packages man)
@@ -112,7 +113,8 @@ readers and is needed to communicate with such devices through the
112(define-public eid-mw 113(define-public eid-mw
113 (package 114 (package
114 (name "eid-mw") 115 (name "eid-mw")
115 (version "5.0.14") 116 ;; When updating, remove the short-lived libbsd input and module import!
117 (version "5.0.28")
116 (source 118 (source
117 (origin 119 (origin
118 (method git-fetch) 120 (method git-fetch)
@@ -121,7 +123,7 @@ readers and is needed to communicate with such devices through the
121 (commit (string-append "v" version)))) 123 (commit (string-append "v" version))))
122 (file-name (git-file-name name version)) 124 (file-name (git-file-name name version))
123 (sha256 125 (sha256
124 (base32 "1hyxsbxjjn9hh5p7jlcfb5yplf3n8dg49dfgi8fjp95phis3gbd4")))) 126 (base32 "0fmpdx09a60ndbsvy3m6w77naqy3j6k2ydq6jdcmdvxnr31z7fmf"))))
125 (build-system glib-or-gtk-build-system) 127 (build-system glib-or-gtk-build-system)
126 (native-inputs 128 (native-inputs
127 `(("autoconf" ,autoconf) 129 `(("autoconf" ,autoconf)
@@ -134,6 +136,7 @@ readers and is needed to communicate with such devices through the
134 ("perl" ,perl))) 136 ("perl" ,perl)))
135 (inputs 137 (inputs
136 `(("curl" ,curl) 138 `(("curl" ,curl)
139 ("libbsd" ,libbsd)
137 ("openssl" ,openssl) 140 ("openssl" ,openssl)
138 ("gtk+" ,gtk+) 141 ("gtk+" ,gtk+)
139 ("pcsc-lite" ,pcsc-lite) 142 ("pcsc-lite" ,pcsc-lite)
@@ -153,22 +156,7 @@ readers and is needed to communicate with such devices through the
153 (substitute* "scripts/build-aux/genver.sh" 156 (substitute* "scripts/build-aux/genver.sh"
154 (("/bin/sh") (which "sh")) 157 (("/bin/sh") (which "sh"))
155 (("^(GITDESC=).*" _ match) (string-append match ,version "\n"))) 158 (("^(GITDESC=).*" _ match) (string-append match ,version "\n")))
156 (invoke "sh" "./bootstrap.sh"))) 159 (invoke "sh" "./bootstrap.sh"))))))
157 (add-after 'unpack 'make-reproducible
158 (lambda _
159 (substitute* "scripts/mac/create-vers.sh"
160 (("NOW=.*")
161 "NOW=1970-01-01\n"))
162 #t))
163 ;; Remove failing test that was removed upstream after version 5.0.8.
164 ;; See: https://github.com/Fedict/eid-mw/commit/3d1187b1b61118b9ae97607903d3d2fc0bad7518
165 (add-before 'check 'remove-failing-test
166 (lambda _
167 (substitute* "tests/unit/Makefile.am"
168 (("sign_state ordering cardcom_common")
169 "sign_state ordering #cardcom_common"))
170 #t))
171 )))
172 (synopsis "Belgian eID Middleware") 160 (synopsis "Belgian eID Middleware")
173 (description "The Belgian eID Middleware is required to authenticate with 161 (description "The Belgian eID Middleware is required to authenticate with
174online services using the Belgian electronic identity card.") 162online services using the Belgian electronic identity card.")
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 70236d9e5c2..6e64cee1da0 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -12,6 +12,7 @@
12;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> 12;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
13;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org> 13;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org>
14;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> 14;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
15;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
15;;; 16;;;
16;;; This file is part of GNU Guix. 17;;; This file is part of GNU Guix.
17;;; 18;;;
@@ -42,18 +43,21 @@
42 #:use-module (gnu packages bison) 43 #:use-module (gnu packages bison)
43 #:use-module (gnu packages flex) 44 #:use-module (gnu packages flex)
44 #:use-module (gnu packages golang) 45 #:use-module (gnu packages golang)
46 #:use-module (gnu packages libunistring)
45 #:use-module (gnu packages ncurses) 47 #:use-module (gnu packages ncurses)
48 #:use-module (gnu packages pcre)
46 #:use-module (gnu packages pkg-config) 49 #:use-module (gnu packages pkg-config)
47 #:use-module (gnu packages python) 50 #:use-module (gnu packages python)
48 #:use-module (gnu packages readline) 51 #:use-module (gnu packages readline)
49 #:use-module (gnu packages ruby) 52 #:use-module (gnu packages ruby)
50 #:use-module (gnu packages shells) 53 #:use-module (gnu packages shells)
51 #:use-module (gnu packages tmux)) 54 #:use-module (gnu packages tmux)
55 #:use-module (gnu packages vim))
52 56
53(define-public boxes 57(define-public boxes
54 (package 58 (package
55 (name "boxes") 59 (name "boxes")
56 (version "1.3") 60 (version "2.1.1")
57 (source (origin 61 (source (origin
58 (method git-fetch) 62 (method git-fetch)
59 (uri (git-reference 63 (uri (git-reference
@@ -62,32 +66,43 @@
62 (file-name (git-file-name name version)) 66 (file-name (git-file-name name version))
63 (sha256 67 (sha256
64 (base32 68 (base32
65 "0b12rsynrmkldlwcb62drk33kk0aqwbj10mq5y5x3hjf626gjwsi")))) 69 "1bf5rnfiw04ffs1l17zhbg4wvq2vfn2qbz1xmd250xqj15lysw88"))))
66 (build-system gnu-build-system) 70 (build-system gnu-build-system)
67 (arguments 71 (arguments
68 `(#:test-target "test" 72 `(#:test-target "test"
69 #:make-flags (list (string-append "GLOBALCONF=" 73 #:make-flags (list (string-append "GLOBALCONF="
70 (assoc-ref %outputs "out") 74 (assoc-ref %outputs "out")
71 "/etc/boxes-config")) 75 "/etc/boxes-config"))
76 #:modules
77 ((ice-9 match)
78 ,@%gnu-build-system-modules)
72 #:phases 79 #:phases
73 (modify-phases %standard-phases 80 (modify-phases %standard-phases
74 (delete 'configure) 81 (delete 'configure)
75 (replace 'install 82 (replace 'install
76 (lambda* (#:key outputs #:allow-other-keys) 83 (lambda* (#:key outputs #:allow-other-keys)
77 (let ((dest (assoc-ref outputs "out"))) 84 (let ((out (assoc-ref outputs "out")))
78 (for-each (lambda (x) 85 (for-each (match-lambda
79 (install-file (car x) 86 ((source target)
80 (string-append dest "/" (cdr x)))) 87 (install-file source
81 '(("src/boxes" . "bin") 88 (string-append out "/" target))))
82 ("doc/boxes.1" . "share/man/man1") 89 '(("out/boxes" "bin/")
83 ("boxes-config" . "etc/"))) 90 ("doc/boxes.1" "share/man/man1/")
84 #t)))))) 91 ("boxes-config" "etc/")))))))))
85 (native-inputs `(("flex" ,flex) ("bison" ,bison))) 92 (native-inputs
93 `(("bison" ,bison)
94 ("flex" ,flex)
95
96 ;; For the tests.
97 ("xxd" ,xxd)))
98 (inputs
99 `(("libunistring" ,libunistring)
100 ("pcre2" ,pcre2)))
101 (home-page "https://boxes.thomasjensen.com")
86 (synopsis "Command line ASCII boxes") 102 (synopsis "Command line ASCII boxes")
87 (description 103 (description
88 "This command-line filter program draws ASCII-art boxes around your input 104 "This command-line filter program draws ASCII-art boxes around your input
89text.") 105text.")
90 (home-page "https://boxes.thomasjensen.com/build.html")
91 (license license:gpl2))) 106 (license license:gpl2)))
92 107
93(define-public zsh-autosuggestions 108(define-public zsh-autosuggestions
@@ -449,3 +464,51 @@ the UNIX philosophy, these commands are designed to be composed via pipes. A
449large collection of functions such as basename, replace, contains or is_dir 464large collection of functions such as basename, replace, contains or is_dir
450are provided as arguments to these commands.") 465are provided as arguments to these commands.")
451 (license license:expat))) 466 (license license:expat)))
467
468(define-public rig
469 (package
470 (name "rig")
471 (version "1.11")
472 (source (origin
473 (method url-fetch)
474 (uri (string-append "mirror://sourceforge/rig/rig/"
475 version "/rig-"
476 version ".tar.gz"))
477 (sha256
478 (base32
479 "1f3snysjqqlpk2kgvm5p2icrj4lsdymccmn3igkc2f60smqckgq0"))))
480 (build-system gnu-build-system)
481 (arguments `(#:make-flags
482 (list (string-append "CXX=" ,(cxx-for-target))
483 (string-append "PREFIX=" %output))
484 #:phases
485 (modify-phases %standard-phases
486 (delete 'configure)
487 (add-after 'unpack 'fix-build
488 (lambda _
489 (substitute* "rig.cc"
490 (("^#include <string>")
491 "#include <cstring>"))
492 (substitute* "Makefile"
493 (("g\\+\\+")
494 "${CXX} -O2")
495 (("install -g 0 -m 755 -o 0 -s rig \\$\\(BINDIR\\)")
496 "install -m 755 -d $(DESTDIR)$(BINDIR)\n\t\
497install -m 755 rig $(DESTDIR)$(BINDIR)/rig")
498 (("install -g 0 -m 644 -o 0 rig.6 \\$\\(MANDIR\\)/man6/rig.6")
499 "install -m 755 -d $(DESTDIR)$(MANDIR)/man6/\n\t\
500install -m 644 rig.6 $(DESTDIR)$(MANDIR)/man6/rig.6")
501 (("install -g 0 -m 755 -o 0 -d \\$\\(DATADIR\\)")
502 "install -m 755 -d $(DESTDIR)$(DATADIR)")
503 (("install -g 0 -m 644 -o 0 data/\\*.idx \\$\\(DATADIR\\)")
504 "install -m 644 data/*.idx $(DESTDIR)$(DATADIR)")))))
505 #:tests? #f))
506 (home-page "http://rig.sourceforge.net")
507 (synopsis "Random identity generator")
508 (description
509 "RIG (Random Identity Generator) generates random, yet real-looking,
510personal data. It is useful if you need to feed a name to a Web site, BBS, or
511real person, and are too lazy to think of one yourself. Also, if the Web
512site/BBS/person you are giving the information to tries to cross-check the
513city, state, zip, or area code, it will check out.")
514 (license license:gpl2+)))
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index b38d3f418f3..a2823990241 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -30,14 +30,14 @@
30(define-public skalibs 30(define-public skalibs
31 (package 31 (package
32 (name "skalibs") 32 (name "skalibs")
33 (version "2.10.0.3") 33 (version "2.11.0.0")
34 (source 34 (source
35 (origin 35 (origin
36 (method url-fetch) 36 (method url-fetch)
37 (uri (string-append "https://skarnet.org/software/skalibs/skalibs-" 37 (uri (string-append "https://skarnet.org/software/skalibs/skalibs-"
38 version ".tar.gz")) 38 version ".tar.gz"))
39 (sha256 39 (sha256
40 (base32 "0ka6n5rnxd5sn5lycarf596d5wlak5s535zqqlz0rnhdcnpb105p")))) 40 (base32 "1n9l7mb54dlb0iijjaf446jba6nmq1ql9n39s095ngrk5ahcipwq"))))
41 (build-system gnu-build-system) 41 (build-system gnu-build-system)
42 (arguments 42 (arguments
43 '(#:tests? #f ; no tests exist 43 '(#:tests? #f ; no tests exist
@@ -48,8 +48,7 @@
48 ;; and *.so files are reproducible. 48 ;; and *.so files are reproducible.
49 (substitute* "Makefile" 49 (substitute* "Makefile"
50 (("\\$\\(wildcard src/lib\\*/\\*.c\\)") 50 (("\\$\\(wildcard src/lib\\*/\\*.c\\)")
51 "$(sort $(wildcard src/lib*/*.c))")) 51 "$(sort $(wildcard src/lib*/*.c))")))))))
52 #t)))))
53 (home-page "https://skarnet.org/software/skalibs/") 52 (home-page "https://skarnet.org/software/skalibs/")
54 (synopsis "Platform abstraction libraries for skarnet.org software") 53 (synopsis "Platform abstraction libraries for skarnet.org software")
55 (description 54 (description
@@ -62,14 +61,14 @@ and file system operations. It is used by all skarnet.org software.")
62(define-public execline 61(define-public execline
63 (package 62 (package
64 (name "execline") 63 (name "execline")
65 (version "2.8.0.1") 64 (version "2.8.1.0")
66 (source 65 (source
67 (origin 66 (origin
68 (method url-fetch) 67 (method url-fetch)
69 (uri (string-append "https://skarnet.org/software/execline/execline-" 68 (uri (string-append "https://skarnet.org/software/execline/execline-"
70 version ".tar.gz")) 69 version ".tar.gz"))
71 (sha256 70 (sha256
72 (base32 "1v9swmhw2rcrr9fmkmd7qh8qq0kslhmvxwz2a3bhan9ksabz8wx3")))) 71 (base32 "0msmzf5zwjcsgjlvvq28rd2i0fkdb2skmv8ii0ix8dhyckwwjmav"))))
73 (build-system gnu-build-system) 72 (build-system gnu-build-system)
74 (inputs `(("skalibs" ,skalibs))) 73 (inputs `(("skalibs" ,skalibs)))
75 (arguments 74 (arguments
@@ -104,14 +103,14 @@ complexity.")))
104(define-public s6 103(define-public s6
105 (package 104 (package
106 (name "s6") 105 (name "s6")
107 (version "2.10.0.3") 106 (version "2.11.0.0")
108 (source 107 (source
109 (origin 108 (origin
110 (method url-fetch) 109 (method url-fetch)
111 (uri (string-append "https://skarnet.org/software/s6/s6-" 110 (uri (string-append "https://skarnet.org/software/s6/s6-"
112 version ".tar.gz")) 111 version ".tar.gz"))
113 (sha256 112 (sha256
114 (base32 "0mw7blp8dwr09z58m9mrxwmmvvpnjzq9klcf1vgm0hbha4qkf88x")))) 113 (base32 "1a3lj0xfhn1w3a4ygqsxy8q4dr3n48hnwml4xzdpz3nrikhy8if5"))))
115 (build-system gnu-build-system) 114 (build-system gnu-build-system)
116 (inputs `(("skalibs" ,skalibs) 115 (inputs `(("skalibs" ,skalibs)
117 ("execline" ,execline))) 116 ("execline" ,execline)))
@@ -133,8 +132,7 @@ complexity.")))
133 (lambda* (#:key outputs #:allow-other-keys) 132 (lambda* (#:key outputs #:allow-other-keys)
134 (let* ((out (assoc-ref outputs "out")) 133 (let* ((out (assoc-ref outputs "out"))
135 (doc (string-append out "/share/doc/s6-" ,version))) 134 (doc (string-append out "/share/doc/s6-" ,version)))
136 (copy-recursively "doc" doc) 135 (copy-recursively "doc" doc)))))))
137 #t))))))
138 (home-page "https://skarnet.org/software/s6") 136 (home-page "https://skarnet.org/software/s6")
139 (license isc) 137 (license isc)
140 (synopsis "Small suite of programs for process supervision") 138 (synopsis "Small suite of programs for process supervision")
@@ -150,14 +148,14 @@ functionality with a very small amount of code.")))
150(define-public s6-dns 148(define-public s6-dns
151 (package 149 (package
152 (name "s6-dns") 150 (name "s6-dns")
153 (version "2.3.5.1") 151 (version "2.3.5.2")
154 (source 152 (source
155 (origin 153 (origin
156 (method url-fetch) 154 (method url-fetch)
157 (uri (string-append "https://skarnet.org/software/s6-dns/s6-dns-" 155 (uri (string-append "https://skarnet.org/software/s6-dns/s6-dns-"
158 version ".tar.gz")) 156 version ".tar.gz"))
159 (sha256 157 (sha256
160 (base32 "0qsgqwdr5ms337fc9f2b4aa5cr7myvbzndvgkgswnrdwszjm078c")))) 158 (base32 "0nczzjprvp6wirzycgf5h32dlgx4r8grzkqhif27n3ii6f5g78yw"))))
161 (build-system gnu-build-system) 159 (build-system gnu-build-system)
162 (inputs `(("skalibs" ,skalibs))) 160 (inputs `(("skalibs" ,skalibs)))
163 (arguments 161 (arguments
@@ -179,14 +177,14 @@ as an alternative to the BIND, djbdns or other DNS clients.")))
179(define-public s6-networking 177(define-public s6-networking
180 (package 178 (package
181 (name "s6-networking") 179 (name "s6-networking")
182 (version "2.4.1.1") 180 (version "2.5.0.0")
183 (source 181 (source
184 (origin 182 (origin
185 (method url-fetch) 183 (method url-fetch)
186 (uri (string-append "https://skarnet.org/software/s6-networking/" 184 (uri (string-append "https://skarnet.org/software/s6-networking/"
187 "s6-networking-" version ".tar.gz")) 185 "s6-networking-" version ".tar.gz"))
188 (sha256 186 (sha256
189 (base32 "0m55ibx7k2wgrqbpci1n667ij0h925ajzggxalq2pj65kmwcmyx3")))) 187 (base32 "1fn3g9gkwgmnxallhk82f5rly81pnkilj7n49g5fbfmaalsq96mh"))))
190 (build-system gnu-build-system) 188 (build-system gnu-build-system)
191 (inputs `(("skalibs" ,skalibs) 189 (inputs `(("skalibs" ,skalibs)
192 ("execline" ,execline) 190 ("execline" ,execline)
@@ -222,14 +220,14 @@ clock synchronization.")))
222(define-public s6-rc 220(define-public s6-rc
223 (package 221 (package
224 (name "s6-rc") 222 (name "s6-rc")
225 (version "0.5.2.2") 223 (version "0.5.2.3")
226 (source 224 (source
227 (origin 225 (origin
228 (method url-fetch) 226 (method url-fetch)
229 (uri (string-append "https://skarnet.org/software/s6-rc/s6-rc-" 227 (uri (string-append "https://skarnet.org/software/s6-rc/s6-rc-"
230 version ".tar.gz")) 228 version ".tar.gz"))
231 (sha256 229 (sha256
232 (base32 "12bzc483jpd16xmhfsfrib84daj1k3kwy5s5nc18ap60apa1r39a")))) 230 (base32 "1xyaplwzvqnb53mg59a7jklakzwsiqivp6qggsry3sbaw4hf3d5j"))))
233 (build-system gnu-build-system) 231 (build-system gnu-build-system)
234 (inputs `(("skalibs" ,skalibs) 232 (inputs `(("skalibs" ,skalibs)
235 ("execline" ,execline) 233 ("execline" ,execline)
@@ -263,7 +261,7 @@ environment.")))
263(define-public s6-portable-utils 261(define-public s6-portable-utils
264 (package 262 (package
265 (name "s6-portable-utils") 263 (name "s6-portable-utils")
266 (version "2.2.3.2") 264 (version "2.2.3.3")
267 (source 265 (source
268 (origin 266 (origin
269 (method url-fetch) 267 (method url-fetch)
@@ -271,7 +269,7 @@ environment.")))
271 "https://skarnet.org/software/s6-portable-utils/s6-portable-utils-" 269 "https://skarnet.org/software/s6-portable-utils/s6-portable-utils-"
272 version ".tar.gz")) 270 version ".tar.gz"))
273 (sha256 271 (sha256
274 (base32 "173nmygkp7ky3093dg4rx3ahvyl7ll86z8qj6pl3jd96xb9s49v6")))) 272 (base32 "132jj5qk8x40kw6lrrn7jiqhvqj9d2h6g6mhl8zma1sp37bg0i84"))))
275 (build-system gnu-build-system) 273 (build-system gnu-build-system)
276 (inputs `(("skalibs" ,skalibs))) 274 (inputs `(("skalibs" ,skalibs)))
277 (arguments 275 (arguments
@@ -295,7 +293,7 @@ systems and other constrained environments, but they work everywhere.")))
295(define-public s6-linux-init 293(define-public s6-linux-init
296 (package 294 (package
297 (name "s6-linux-init") 295 (name "s6-linux-init")
298 (version "1.0.6.3") 296 (version "1.0.6.4")
299 (source 297 (source
300 (origin 298 (origin
301 (method url-fetch) 299 (method url-fetch)
@@ -303,7 +301,7 @@ systems and other constrained environments, but they work everywhere.")))
303 "https://skarnet.org/software/s6-linux-init/s6-linux-init-" 301 "https://skarnet.org/software/s6-linux-init/s6-linux-init-"
304 version ".tar.gz")) 302 version ".tar.gz"))
305 (sha256 303 (sha256
306 (base32 "1idqjcxhl5wgff8yrsvx2812wahjri2hcs7qs6k62g0sdd8niqr9")))) 304 (base32 "0grqk111d6aqym1c4l9j26fdqcgra1hvwb9vdgylrfbvn1c3hlpb"))))
307 (build-system gnu-build-system) 305 (build-system gnu-build-system)
308 (inputs 306 (inputs
309 `(("execline" ,execline) 307 `(("execline" ,execline)
@@ -341,7 +339,7 @@ all the details.")))
341(define-public s6-linux-utils 339(define-public s6-linux-utils
342 (package 340 (package
343 (name "s6-linux-utils") 341 (name "s6-linux-utils")
344 (version "2.5.1.5") 342 (version "2.5.1.6")
345 (source 343 (source
346 (origin 344 (origin
347 (method url-fetch) 345 (method url-fetch)
@@ -349,7 +347,7 @@ all the details.")))
349 "https://skarnet.org/software/s6-linux-utils/s6-linux-utils-" 347 "https://skarnet.org/software/s6-linux-utils/s6-linux-utils-"
350 version ".tar.gz")) 348 version ".tar.gz"))
351 (sha256 349 (sha256
352 (base32 "1fj5ldlrc6bx40pphg29rp3byd6fal6869v85kw86c2kdgrxn063")))) 350 (base32 "0hr49nl0d7a6i5w8cfg43xzvzayb8kpqij9xg7bmw2fyvc2z338z"))))
353 (build-system gnu-build-system) 351 (build-system gnu-build-system)
354 (inputs `(("skalibs" ,skalibs))) 352 (inputs `(("skalibs" ,skalibs)))
355 (arguments 353 (arguments
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index bb8099be555..9ea442d1ec8 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -904,6 +904,38 @@ It is a front end for ii-like chat programs. It uses @code{tail -f} to get the
904chat output in the background.") 904chat output in the background.")
905 (license license:isc)))) 905 (license license:isc))))
906 906
907(define-public snooze
908 (package
909 (name "snooze")
910 (version "0.5")
911 (source
912 (origin
913 (method git-fetch)
914 (uri
915 (git-reference
916 (url "https://github.com/leahneukirchen/snooze")
917 (commit (string-append "v" version))))
918 (file-name (git-file-name name version))
919 (sha256
920 (base32 "02ng3r1gzgpyjia4b60i11dj5bhn3xjsdcbwmxaam6dzb33dmgib"))))
921 (build-system gnu-build-system)
922 (arguments
923 `(#:tests? #f ; There are no tests.
924 #:make-flags
925 (list (string-append "CC=" ,(cc-for-target))
926 ;; Set prefix path to root of package path in store instead
927 ;; of /usr/local.
928 (string-append "PREFIX=" %output))
929 #:phases
930 (modify-phases %standard-phases
931 (delete 'configure))))
932 (home-page "https://github.com/leahneukirchen/snooze")
933 (synopsis "Run a command at a particular time")
934 (description
935"@command{snooze} is a tool for waiting until a particular time and then
936running a command.")
937 (license license:cc0)))
938
907(define-public scron 939(define-public scron
908 (package 940 (package
909 (name "scron") 941 (name "scron")
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index 80ad8163ea4..49b9bce3706 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -143,7 +143,7 @@ and querying data, exposing task data in multiple formats to other tools.")
143(define-public dstask 143(define-public dstask
144 (package 144 (package
145 (name "dstask") 145 (name "dstask")
146 (version "0.24.1") 146 (version "0.25")
147 (source 147 (source
148 (origin 148 (origin
149 (method git-fetch) 149 (method git-fetch)
@@ -152,7 +152,7 @@ and querying data, exposing task data in multiple formats to other tools.")
152 (commit (string-append "v" version)))) 152 (commit (string-append "v" version))))
153 (file-name (git-file-name name version)) 153 (file-name (git-file-name name version))
154 (sha256 154 (sha256
155 (base32 "03rl2wh58xd6a80ji43c7ak3h0ysi3ddg570pn8ry24s7s45zsz2")))) 155 (base32 "1m83zc2zqvpcbjng92jvlnk0biw4krv12wjvjas66jbbk3sjghcy"))))
156 (build-system go-build-system) 156 (build-system go-build-system)
157 (arguments 157 (arguments
158 `(#:import-path "github.com/naggie/dstask" 158 `(#:import-path "github.com/naggie/dstask"
@@ -178,8 +178,7 @@ and querying data, exposing task data in multiple formats to other tools.")
178 (install-file "dstask" bindir) 178 (install-file "dstask" bindir)
179 (install-file "dstask-import" bindir) 179 (install-file "dstask-import" bindir)
180 (install-file ".dstask-bash-completions.sh" bash-completion) 180 (install-file ".dstask-bash-completions.sh" bash-completion)
181 (install-file ".dstask-zsh-completions.sh" zsh-completion))) 181 (install-file ".dstask-zsh-completions.sh" zsh-completion))))))))
182 #t)))))
183 (synopsis "CLI-based TODO manager with git-based sync + markdown notes per task") 182 (synopsis "CLI-based TODO manager with git-based sync + markdown notes per task")
184 (description "dstask is a personal task tracker that uses git for 183 (description "dstask is a personal task tracker that uses git for
185synchronization. It offers a note command to attach a Markdown based note to 184synchronization. It offers a note command to attach a Markdown based note to
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 01b8f7a1e22..eb9a749a168 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -198,7 +198,7 @@ insert mode and command mode where keybindings have different functions.")
198(define-public asciinema 198(define-public asciinema
199 (package 199 (package
200 (name "asciinema") 200 (name "asciinema")
201 (version "2.0.2") 201 (version "2.1.0")
202 (source 202 (source
203 (origin 203 (origin
204 (method git-fetch) 204 (method git-fetch)
@@ -207,22 +207,13 @@ insert mode and command mode where keybindings have different functions.")
207 (commit (string-append "v" version)))) 207 (commit (string-append "v" version))))
208 (file-name (git-file-name name version)) 208 (file-name (git-file-name name version))
209 (sha256 209 (sha256
210 (base32 210 (base32 "1alcz018jrrpasrmgs8nw775a6pf62xq2xgs54c4mb396prdqy4x"))))
211 "1a2pysxnp6icyd08mgf66xr6f6j0irnfxdpf3fmzcz31ix7l9kc4"))))
212 (build-system python-build-system) 211 (build-system python-build-system)
213 (arguments 212 (arguments
214 `(#:phases 213 `(#:phases
215 (modify-phases %standard-phases 214 (modify-phases %standard-phases
216 (add-before 'build 'patch-exec-paths
217 (lambda* (#:key inputs #:allow-other-keys)
218 (let ((ncurses (assoc-ref inputs "ncurses")))
219 (substitute* "asciinema/term.py"
220 (("'tput'")
221 (string-append "'" ncurses "/bin/tput'"))))
222 #t))
223 (replace 'check 215 (replace 'check
224 (lambda _ (invoke "nosetests" "-v")))))) 216 (lambda _ (invoke "nosetests" "-v"))))))
225 (inputs `(("ncurses" ,ncurses)))
226 (native-inputs 217 (native-inputs
227 ;; For tests. 218 ;; For tests.
228 `(("python-nose" ,python-nose))) 219 `(("python-nose" ,python-nose)))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 18914b342ee..c5cec0a3b2b 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -925,14 +925,14 @@ Octave. TeXmacs is completely extensible via Guile.")
925(define-public scintilla 925(define-public scintilla
926 (package 926 (package
927 (name "scintilla") 927 (name "scintilla")
928 (version "5.1.1") 928 (version "5.1.3")
929 (source 929 (source
930 (origin 930 (origin
931 (method url-fetch) 931 (method url-fetch)
932 (uri (let ((v (apply string-append (string-split version #\.)))) 932 (uri (let ((v (apply string-append (string-split version #\.))))
933 (string-append "https://www.scintilla.org/scintilla" v ".tgz"))) 933 (string-append "https://www.scintilla.org/scintilla" v ".tgz")))
934 (sha256 934 (sha256
935 (base32 "1d0yjx2wlx4fj5bccxdgfmrr7nzazkw4m08i6h4c0a54sb484yif")))) 935 (base32 "1zgzpbl7yzyqwqlk7l8s8g74ddg02wa6f0w4dkwdp7fp7ayjn9a2"))))
936 (build-system gnu-build-system) 936 (build-system gnu-build-system)
937 (arguments 937 (arguments
938 `(#:make-flags (list "GTK3=1" "CC=gcc" "-Cgtk") 938 `(#:make-flags (list "GTK3=1" "CC=gcc" "-Cgtk")
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index df4b8ac6f53..b60fab5db52 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -435,10 +435,10 @@ timestamps.")
435 ("python-pytest" ,python-pytest) 435 ("python-pytest" ,python-pytest)
436 ("python-pytest-cov" ,python-pytest-cov) 436 ("python-pytest-cov" ,python-pytest-cov)
437 ("python-pytest-mock" ,python-pytest-mock) 437 ("python-pytest-mock" ,python-pytest-mock)
438 ("python-pytz" ,python-pytz)
438 ("python-simplejson" ,python-simplejson))) 439 ("python-simplejson" ,python-simplejson)))
439 (propagated-inputs 440 (propagated-inputs
440 `(("python-dateutil" ,python-dateutil) 441 `(("python-dateutil" ,python-dateutil)))
441 ("python-pytz" ,python-pytz)))
442 (home-page "https://github.com/arrow-py/arrow") 442 (home-page "https://github.com/arrow-py/arrow")
443 (synopsis "Dates and times for Python") 443 (synopsis "Dates and times for Python")
444 (description 444 (description
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index b7f3ddd953e..908858f6eb3 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -20,6 +20,7 @@
20;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> 20;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
21;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> 21;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
22;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org> 22;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
23;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
23;;; 24;;;
24;;; This file is part of GNU Guix. 25;;; This file is part of GNU Guix.
25;;; 26;;;
@@ -180,7 +181,7 @@ in intelligent transportation networks.")
180 (substitute* "Makefile" 181 (substitute* "Makefile"
181 (("test-runtime\\$\\(EXEEXT\\)") "")) 182 (("test-runtime\\$\\(EXEEXT\\)") ""))
182 #t))))) 183 #t)))))
183 (home-page "https://p11-glue.freedesktop.org/p11-kit.html") 184 (home-page "https://p11-glue.github.io/p11-glue/p11-kit.html")
184 (synopsis "PKCS#11 library") 185 (synopsis "PKCS#11 library")
185 (description 186 (description
186 "p11-kit provides a way to load and enumerate PKCS#11 modules. It 187 "p11-kit provides a way to load and enumerate PKCS#11 modules. It
@@ -190,6 +191,24 @@ coordinating the use of PKCS#11 by different components or libraries
190living in the same process.") 191living in the same process.")
191 (license license:bsd-3))) 192 (license license:bsd-3)))
192 193
194(define-public p11-kit-next
195 (package
196 (inherit p11-kit)
197 (version "0.24.0")
198 (source
199 (origin
200 (method url-fetch)
201 (uri (string-append "https://github.com/p11-glue/p11-kit/releases/"
202 "download/" version "/p11-kit-" version ".tar.xz"))
203 (sha256
204 (base32 "11f6saclxsclc1f3lbavzw8kikws4cr3mfd1avly8dgnhh2i9rl1"))))
205 (arguments
206 ;; Use the default certificates so that users such as flatpak find them.
207 ;; See <https://issues.guix.gnu.org/49957>.
208 (substitute-keyword-arguments (package-arguments p11-kit)
209 ((#:configure-flags flags ''())
210 ''("--with-trust-paths=/etc/ssl/certs/ca-certificates.crt"))))))
211
193(define-public gnutls 212(define-public gnutls
194 (package 213 (package
195 (name "gnutls") 214 (name "gnutls")
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 972160fb8e7..2507f80c742 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -57,14 +57,14 @@
57(define-public tor 57(define-public tor
58 (package 58 (package
59 (name "tor") 59 (name "tor")
60 (version "0.4.6.7") 60 (version "0.4.6.8")
61 (source (origin 61 (source (origin
62 (method url-fetch) 62 (method url-fetch)
63 (uri (string-append "https://dist.torproject.org/tor-" 63 (uri (string-append "https://dist.torproject.org/tor-"
64 version ".tar.gz")) 64 version ".tar.gz"))
65 (sha256 65 (sha256
66 (base32 66 (base32
67 "16hga7195va8v0x062dc05nbz4sm3dscifcqpl8235dj47hmqrpz")))) 67 "0sj7qn6d6js6gk4vjfkc7p9g021czbfaq00yfq3mn5ycnhvimkhm"))))
68 (build-system gnu-build-system) 68 (build-system gnu-build-system)
69 (arguments 69 (arguments
70 `(#:configure-flags 70 `(#:configure-flags
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 3bd087d6723..ab36625abae 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -875,16 +875,16 @@ to lock down your entire repository.")
875(define-public git-remote-gcrypt 875(define-public git-remote-gcrypt
876 (package 876 (package
877 (name "git-remote-gcrypt") 877 (name "git-remote-gcrypt")
878 (version "1.3") 878 (version "1.4")
879 (source (origin 879 (source (origin
880 (method git-fetch) 880 (method git-fetch)
881 (uri (git-reference 881 (uri (git-reference
882 (url "https://git.spwhitton.name/git-remote-gcrypt") 882 (url "https://git.spwhitton.name/git-remote-gcrypt")
883 (commit version))) 883 (commit version)))
884 (file-name (string-append name "-" version "-checkout")) 884 (file-name (git-file-name name version))
885 (sha256 885 (sha256
886 (base32 886 (base32
887 "0n8fzvr6y0pxrbvkywlky2bd8jvi0ayp4n9hwi84l1ldmv4a40dh")))) 887 "1x5ca1fi0hyn5w5mnz230x27bqr8j78adnzmlc7cbhzr13q36y5q"))))
888 (build-system trivial-build-system) 888 (build-system trivial-build-system)
889 (arguments 889 (arguments
890 `(#:modules ((guix build utils)) 890 `(#:modules ((guix build utils))
@@ -894,8 +894,7 @@ to lock down your entire repository.")
894 (output (assoc-ref %outputs "out")) 894 (output (assoc-ref %outputs "out"))
895 (bindir (string-append output "/bin"))) 895 (bindir (string-append output "/bin")))
896 (install-file (string-append source "/git-remote-gcrypt") 896 (install-file (string-append source "/git-remote-gcrypt")
897 bindir) 897 bindir)))))
898 #t))))
899 (home-page "https://spwhitton.name/tech/code/git-remote-gcrypt/") 898 (home-page "https://spwhitton.name/tech/code/git-remote-gcrypt/")
900 (synopsis "Whole remote repository encryption") 899 (synopsis "Whole remote repository encryption")
901 (description "git-remote-gcrypt is a Git remote helper to push and pull from 900 (description "git-remote-gcrypt is a Git remote helper to push and pull from
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index ebee15e296a..3a711f97320 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -54,6 +54,7 @@
54;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> 54;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
55;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com> 55;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>
56;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> 56;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
57;;; Copyright © 2021 Robin Templeton <robin@terpri.org>
57;;; 58;;;
58;;; This file is part of GNU Guix. 59;;; This file is part of GNU Guix.
59;;; 60;;;
@@ -143,6 +144,7 @@
143 #:use-module (gnu packages man) 144 #:use-module (gnu packages man)
144 #:use-module (gnu packages markup) 145 #:use-module (gnu packages markup)
145 #:use-module (gnu packages maths) 146 #:use-module (gnu packages maths)
147 #:use-module (gnu packages music)
146 #:use-module (gnu packages mp3) 148 #:use-module (gnu packages mp3)
147 #:use-module (gnu packages ncurses) 149 #:use-module (gnu packages ncurses)
148 #:use-module (gnu packages networking) 150 #:use-module (gnu packages networking)
@@ -2363,6 +2365,74 @@ YouTube.com and many more sites.")
2363 (home-page "https://yt-dl.org") 2365 (home-page "https://yt-dl.org")
2364 (license license:public-domain))) 2366 (license license:public-domain)))
2365 2367
2368(define-public yt-dlp
2369 (package/inherit youtube-dl
2370 (name "yt-dlp")
2371 (version "2021.10.22")
2372 (source (origin
2373 (method url-fetch)
2374 (uri (string-append "https://github.com/yt-dlp/yt-dlp/"
2375 "releases/download/"
2376 version "/yt-dlp.tar.gz"))
2377 (sha256
2378 (base32
2379 "0xh4cwmvx49pxn8x07wj2dy8ynj6xg8977l5493vv0l8zc27wp87"))
2380 (snippet
2381 '(begin
2382 ;; Delete the pre-generated files, except for the man page
2383 ;; which requires 'pandoc' to build.
2384 (for-each delete-file '("yt-dlp"
2385 ;;pandoc is needed to generate
2386 ;;"yt-dlp.1"
2387 "completions/bash/yt-dlp"
2388 "completions/fish/yt-dlp.fish"
2389 "completions/zsh/_yt-dlp"))
2390 #t))))
2391 (arguments
2392 (substitute-keyword-arguments (package-arguments youtube-dl)
2393 ((#:tests? _) #t)
2394 ((#:phases phases)
2395 `(modify-phases ,phases
2396 ;; See the comment for the corresponding phase in youtube-dl.
2397 (replace 'default-to-the-ffmpeg-input
2398 (lambda _
2399 (substitute* "yt_dlp/postprocessor/ffmpeg.py"
2400 (("\\.get_param\\('ffmpeg_location'\\)" match)
2401 (format #f "~a or '~a'" match (which "ffmpeg"))))
2402 #t))
2403 (replace 'build-generated-files
2404 (lambda _
2405 ;; Avoid the yt-dlp.1 target, which requires pandoc.
2406 (invoke "make" "PYTHON=python" "yt-dlp" "completions")))
2407 (replace 'fix-the-data-directories
2408 (lambda* (#:key outputs #:allow-other-keys)
2409 (let ((prefix (assoc-ref outputs "out")))
2410 (substitute* "setup.py"
2411 (("'etc/")
2412 (string-append "'" prefix "/etc/"))
2413 (("'share/")
2414 (string-append "'" prefix "/share/"))))
2415 #t))
2416 (delete 'install-completion)
2417 (replace 'check
2418 (lambda* (#:key tests? #:allow-other-keys)
2419 (when tests?
2420 (invoke "pytest" "-k" "not download"))))))))
2421 (inputs
2422 `(("python-mutagen" ,python-mutagen)
2423 ("python-pycryptodomex" ,python-pycryptodomex)
2424 ("python-websockets" ,python-websockets)
2425 ,@(package-inputs youtube-dl)))
2426 (native-inputs
2427 `(("python-pytest" ,python-pytest)
2428 ,@(package-native-inputs youtube-dl)))
2429 (description
2430 "yt-dlp is a small command-line program to download videos from
2431YouTube.com and many more sites. It is a fork of youtube-dl with a
2432focus on adding new features while keeping up-to-date with the
2433original project.")
2434 (home-page "https://github.com/yt-dlp/yt-dlp")))
2435
2366(define-public youtube-dl-gui 2436(define-public youtube-dl-gui
2367 (package 2437 (package
2368 (name "youtube-dl-gui") 2438 (name "youtube-dl-gui")
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index bd41800cbd8..0b3eee89318 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -1159,3 +1159,61 @@ anything).
1159@item Mappings and usage conform to Vim's conventions. 1159@item Mappings and usage conform to Vim's conventions.
1160@end itemize") 1160@end itemize")
1161 (license license:vim))) 1161 (license license:vim)))
1162
1163(define-public vim-mucomplete
1164 (package
1165 (name "vim-mucomplete")
1166 (version "1.5.0")
1167 (source
1168 (origin
1169 (method git-fetch)
1170 (uri (git-reference
1171 (url "https://github.com/lifepillar/vim-mucomplete")
1172 (commit (string-append "v" version))))
1173 (file-name (git-file-name name version))
1174 (sha256
1175 (base32 "054g80n09mmxxlh8xaic29bn8bgn3clvv732rymljdyvbj1mlhwd"))))
1176 (build-system copy-build-system)
1177 (arguments
1178 '(#:install-plan
1179 '(("autoload" "share/vim/vimfiles/")
1180 ("doc" "share/vim/vimfiles/")
1181 ("plugin" "share/vim/vimfiles/"))))
1182 (home-page "https://github.com/lifepillar/vim-mucomplete")
1183 (synopsis "MUcomplete is a minimalist autocompletion plugin for Vim")
1184 (description
1185 "MUcomplete is an implementation of chained (fallback) completion,
1186whereby several completion methods are attempted one after another until a
1187result is returned.")
1188 (license license:expat)))
1189
1190(define-public vim-gitgutter
1191 (let ((commit "256702dd1432894b3607d3de6cd660863b331818")
1192 (revision "1"))
1193 (package
1194 (name "vim-gitgutter")
1195 (version (git-version "0.0.0" revision commit))
1196 (source
1197 (origin
1198 (method git-fetch)
1199 (uri (git-reference
1200 (url "https://github.com/airblade/vim-gitgutter")
1201 (commit commit)))
1202 (file-name (git-file-name name version))
1203 (sha256
1204 (base32 "0zpa7cs59a8sq0k3frlf9flpf30jcn239yrpmv40r7nqvxzglbpl"))))
1205 (build-system copy-build-system)
1206 (arguments
1207 '(#:install-plan
1208 '(("autoload" "share/vim/vimfiles/")
1209 ("doc" "share/vim/vimfiles/")
1210 ("plugin" "share/vim/vimfiles/"))))
1211 (synopsis "Vim plugin which shows a git diff in the sign column")
1212 (description
1213 "A Vim plugin which shows a git diff in the sign column. It shows which
1214lines have been added, modified, or removed. You can also preview, stage, and
1215undo individual hunks; and stage partial hunks. The plugin also provides a hunk
1216text object. The signs are always up to date and the plugin never saves your
1217buffer.")
1218 (home-page "https://github.com/airblade/vim-gitgutter")
1219 (license license:expat))))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 9d005eec522..51dcea2daeb 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -159,7 +159,8 @@
159 (base32 159 (base32
160 "15iw7982g6vc4jy1l9kk1z9sl5bm1bdbwr74y7nvwjs1nffhig7f")) 160 "15iw7982g6vc4jy1l9kk1z9sl5bm1bdbwr74y7nvwjs1nffhig7f"))
161 (patches (search-patches "qemu-CVE-2021-20203.patch" 161 (patches (search-patches "qemu-CVE-2021-20203.patch"
162 "qemu-build-info-manual.patch")) 162 "qemu-build-info-manual.patch"
163 "qemu-fix-agent-paths.patch"))
163 (modules '((guix build utils))) 164 (modules '((guix build utils)))
164 (snippet 165 (snippet
165 '(begin 166 '(begin
@@ -1519,14 +1520,16 @@ domains, their live performance and resource utilization statistics.")
1519(define-public criu 1520(define-public criu
1520 (package 1521 (package
1521 (name "criu") 1522 (name "criu")
1522 (version "3.16") 1523 (version "3.16.1")
1523 (source (origin 1524 (source
1524 (method url-fetch) 1525 (origin
1525 (uri (string-append "https://download.openvz.org/criu/criu-" 1526 (method git-fetch)
1526 version ".tar.bz2")) 1527 (uri (git-reference
1527 (sha256 1528 (url "https://github.com/checkpoint-restore/criu")
1528 (base32 1529 (commit (string-append "v" version))))
1529 "13x4s7nms3ckb016d03icdsrw4k6f7i33qz9n84fzhmibm0grj70")))) 1530 (file-name (git-file-name name version))
1531 (sha256
1532 (base32 "1riw15197fnrs254jl7wks9x8bdml76kf1vnqkkgyypr13dnq55g"))))
1530 (build-system gnu-build-system) 1533 (build-system gnu-build-system)
1531 (arguments 1534 (arguments
1532 `(#:test-target "test" 1535 `(#:test-target "test"
@@ -1538,19 +1541,14 @@ domains, their live performance and resource utilization statistics.")
1538 (string-append "ASCIIDOC=" 1541 (string-append "ASCIIDOC="
1539 (search-input-file %build-inputs 1542 (search-input-file %build-inputs
1540 "/bin/asciidoc")) 1543 "/bin/asciidoc"))
1544 (string-append "PYTHON=python3")
1541 (string-append "XMLTO=" 1545 (string-append "XMLTO="
1542 (search-input-file %build-input 1546 (search-input-file %build-input
1543 "/bin/xmlto"))) 1547 "/bin/xmlto")))
1544 #:phases 1548 #:phases
1545 (modify-phases %standard-phases 1549 (modify-phases %standard-phases
1546 (replace 'configure 1550 (delete 'configure) ; no configure script
1547 (lambda* (#:key inputs #:allow-other-keys) 1551 (add-after 'unpack 'fix-documentation
1548 ;; The includes for libnl are located in a sub-directory.
1549 (setenv "C_INCLUDE_PATH"
1550 (string-append
1551 (search-input-directory inputs "/include/libnl3")
1552 ":" (or (getenv "C_INCLUDE_PATH") "")))))
1553 (add-after 'configure 'fix-documentation
1554 (lambda* (#:key inputs outputs #:allow-other-keys) 1552 (lambda* (#:key inputs outputs #:allow-other-keys)
1555 (substitute* "Documentation/Makefile" 1553 (substitute* "Documentation/Makefile"
1556 (("-m custom.xsl") 1554 (("-m custom.xsl")
@@ -1564,13 +1562,7 @@ domains, their live performance and resource utilization statistics.")
1564 (lambda* (#:key inputs #:allow-other-keys) 1562 (lambda* (#:key inputs #:allow-other-keys)
1565 ;; Hardcode arm version detection 1563 ;; Hardcode arm version detection
1566 (substitute* "Makefile" 1564 (substitute* "Makefile"
1567 (("ARMV.*:=.*") "ARMV := 7\n")) 1565 (("ARMV.*:=.*") "ARMV := 7\n"))))
1568 ;; We are currently using python-2
1569 (substitute* "crit/Makefile"
1570 (("\\$\\(PYTHON\\)") "python2"))
1571 (substitute* "lib/Makefile"
1572 (("\\$\\(PYTHON\\)")
1573 (search-input-file inputs "/bin/python")))))
1574 (add-before 'build 'fix-symlink 1566 (add-before 'build 'fix-symlink
1575 (lambda* (#:key inputs #:allow-other-keys) 1567 (lambda* (#:key inputs #:allow-other-keys)
1576 ;; The file 'images/google/protobuf/descriptor.proto' points to 1568 ;; The file 'images/google/protobuf/descriptor.proto' points to
@@ -1585,15 +1577,14 @@ domains, their live performance and resource utilization statistics.")
1585 (add-after 'install 'wrap 1577 (add-after 'install 'wrap
1586 (lambda* (#:key inputs outputs #:allow-other-keys) 1578 (lambda* (#:key inputs outputs #:allow-other-keys)
1587 ;; Make sure 'crit' runs with the correct PYTHONPATH. 1579 ;; Make sure 'crit' runs with the correct PYTHONPATH.
1588 (let* ((out (assoc-ref outputs "out")) 1580 (let* ((out (assoc-ref outputs "out"))
1589 (path (string-append out 1581 (site (string-append out "/lib/python"
1590 "/lib/python" 1582 ,(version-major+minor
1591 (string-take (string-take-right 1583 (package-version python))
1592 (assoc-ref inputs "python") 5) 3) 1584 "/site-packages"))
1593 "/site-packages:" 1585 (path (getenv "GUIX_PYTHONPATH")))
1594 (or (getenv "GUIX_PYTHONPATH") ""))))
1595 (wrap-program (string-append out "/bin/crit") 1586 (wrap-program (string-append out "/bin/crit")
1596 `("GUIX_PYTHONPATH" ":" prefix (,path)))))) 1587 `("GUIX_PYTHONPATH" ":" prefix (,site ,path))))))
1597 (add-after 'install 'delete-static-libraries 1588 (add-after 'install 'delete-static-libraries
1598 ;; Not building/installing these at all doesn't seem to be supported. 1589 ;; Not building/installing these at all doesn't seem to be supported.
1599 (lambda* (#:key outputs #:allow-other-keys) 1590 (lambda* (#:key outputs #:allow-other-keys)
@@ -1601,9 +1592,8 @@ domains, their live performance and resource utilization statistics.")
1601 (for-each delete-file (find-files out "\\.a$")))))))) 1592 (for-each delete-file (find-files out "\\.a$"))))))))
1602 (inputs 1593 (inputs
1603 `(("protobuf" ,protobuf) 1594 `(("protobuf" ,protobuf)
1604 ("python" ,python-2) 1595 ("python" ,python)
1605 ("python2-protobuf" ,python2-protobuf) 1596 ("python-protobuf" ,python-protobuf)
1606 ("python2-ipaddr" ,python2-ipaddr)
1607 ("iproute" ,iproute) 1597 ("iproute" ,iproute)
1608 ("libaio" ,libaio) 1598 ("libaio" ,libaio)
1609 ("libcap" ,libcap) 1599 ("libcap" ,libcap)
@@ -1997,11 +1987,11 @@ DOS or Microsoft Windows.")
1997(define-public xen 1987(define-public xen
1998 (package 1988 (package
1999 (name "xen") 1989 (name "xen")
2000 (version "4.14.1") 1990 (version "4.14.1") ; please update the mini-os input as well
2001 (source (origin 1991 (source (origin
2002 (method git-fetch) 1992 (method git-fetch)
2003 (uri (git-reference 1993 (uri (git-reference
2004 (url "git://xenbits.xenproject.org/xen.git") 1994 (url "https://xenbits.xen.org/git-http/xen.git")
2005 (commit (string-append "RELEASE-" version)))) 1995 (commit (string-append "RELEASE-" version))))
2006 (file-name (git-file-name name version)) 1996 (file-name (git-file-name name version))
2007 (sha256 1997 (sha256
@@ -2173,11 +2163,13 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
2173 ,(origin 2163 ,(origin
2174 (method git-fetch) 2164 (method git-fetch)
2175 (uri (git-reference 2165 (uri (git-reference
2176 (url "http://xenbits.xen.org/git-http/mini-os.git") 2166 (url "https://xenbits.xen.org/git-http/mini-os.git")
2177 (commit (string-append "xen-RELEASE-" version)))) 2167 ;; This corresponds to (string-append "xen-RELEASE-" version))
2168 ;; at time of packaging, but upstream has unfortunately modified
2169 ;; existing tags in the past.
2170 (commit "0b4b7897e08b967a09bed2028a79fabff82342dd")))
2178 (sha256 2171 (sha256
2179 (base32 2172 (base32 "1i8pcl19n60i2m9vlg79q3nknpj209c9ic5x10wxaicx45kc107f"))
2180 "1i8pcl19n60i2m9vlg79q3nknpj209c9ic5x10wxaicx45kc107f"))
2181 (file-name "mini-os-git-checkout"))) 2173 (file-name "mini-os-git-checkout")))
2182 ("perl" ,perl) 2174 ("perl" ,perl)
2183 ; TODO: markdown 2175 ; TODO: markdown
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index 4c2b13c93c5..10ae2b6e878 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -61,7 +61,7 @@
61(define-public remmina 61(define-public remmina
62 (package 62 (package
63 (name "remmina") 63 (name "remmina")
64 (version "1.4.20") 64 (version "1.4.21")
65 (source 65 (source
66 (origin 66 (origin
67 (method git-fetch) 67 (method git-fetch)
@@ -71,7 +71,7 @@
71 (commit (string-append "v" version)))) 71 (commit (string-append "v" version))))
72 (file-name (git-file-name name version)) 72 (file-name (git-file-name name version))
73 (sha256 73 (sha256
74 (base32 "0apm4lqcmqskdp2fjxl8dbg3686cm4w0b5806fqj7w43hdmd8w4v")))) 74 (base32 "1g6aqbkbjfywkbaigyysivxswmbp8fbcw9x5ppysaj658cfdnicx"))))
75 (build-system cmake-build-system) 75 (build-system cmake-build-system)
76 (arguments 76 (arguments
77 `(#:tests? #f ; No target 77 `(#:tests? #f ; No target
@@ -102,8 +102,7 @@
102 (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) 102 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
103 (wrap-program file 103 (wrap-program file
104 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))) 104 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
105 '("remmina" "remmina-file-wrapper"))) 105 '("remmina" "remmina-file-wrapper"))))))))
106 #t)))))
107 (native-inputs 106 (native-inputs
108 `(("gettext" ,gettext-minimal) 107 `(("gettext" ,gettext-minimal)
109 ("glib:bin" ,glib "bin") 108 ("glib:bin" ,glib "bin")
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 89eb61007fb..35e8db7e91a 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -73,6 +73,7 @@
73 #:use-module (gnu packages libunistring) 73 #:use-module (gnu packages libunistring)
74 #:use-module (gnu packages linux) 74 #:use-module (gnu packages linux)
75 #:use-module (gnu packages lisp) 75 #:use-module (gnu packages lisp)
76 #:use-module (gnu packages lisp-check)
76 #:use-module (gnu packages lisp-xyz) 77 #:use-module (gnu packages lisp-xyz)
77 #:use-module (gnu packages lua) 78 #:use-module (gnu packages lua)
78 #:use-module (gnu packages man) 79 #:use-module (gnu packages man)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index bb52eeab826..38be76d5827 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -809,7 +809,7 @@ programming language.")))
809 ;; The nginx source code is part of the module’s source. 809 ;; The nginx source code is part of the module’s source.
810 (format #t "decompressing nginx source code~%") 810 (format #t "decompressing nginx source code~%")
811 (invoke "tar" "xvf" (assoc-ref inputs "nginx-sources") 811 (invoke "tar" "xvf" (assoc-ref inputs "nginx-sources")
812 ;; This packages's LICENSE file would be 812 ;; This package's LICENSE file would be
813 ;; overwritten with the one from nginx when 813 ;; overwritten with the one from nginx when
814 ;; unpacking the nginx source, so rename the nginx 814 ;; unpacking the nginx source, so rename the nginx
815 ;; one when unpacking. 815 ;; one when unpacking.
@@ -5805,28 +5805,29 @@ and similar services.")
5805(define-public darkhttpd 5805(define-public darkhttpd
5806 (package 5806 (package
5807 (name "darkhttpd") 5807 (name "darkhttpd")
5808 (version "1.12") 5808 (version "1.13")
5809 (source 5809 (source
5810 (origin 5810 (origin
5811 (method url-fetch) 5811 (method git-fetch)
5812 (uri (string-append "https://unix4lyfe.org/darkhttpd/darkhttpd-" 5812 (uri (git-reference
5813 version ".tar.bz2")) 5813 (url "https://github.com/emikulic/darkhttpd")
5814 (commit (string-append "v" version))))
5815 (file-name (git-file-name name version))
5814 (sha256 5816 (sha256
5815 (base32 5817 (base32 "0w11xq160q9yyffv4mw9ncp1n0dl50d9plmwxb0yijaaxls9i4sk"))))
5816 "0185wlyx4iqiwfigp1zvql14zw7gxfacncii3d15yaxk4av1f155"))))
5817 (build-system gnu-build-system) 5818 (build-system gnu-build-system)
5818 (arguments 5819 (arguments
5819 `(#:make-flags '("CC=gcc") 5820 `(#:make-flags
5821 (list (string-append "CC=" ,(cc-for-target)))
5820 #:tests? #f ; No test suite 5822 #:tests? #f ; No test suite
5821 #:phases 5823 #:phases
5822 (modify-phases %standard-phases 5824 (modify-phases %standard-phases
5823 (delete 'configure) 5825 (delete 'configure) ; no configure script
5824 (replace 'install 5826 (replace 'install
5825 (lambda* (#:key outputs #:allow-other-keys) 5827 (lambda* (#:key outputs #:allow-other-keys)
5826 (install-file "darkhttpd" 5828 (install-file "darkhttpd"
5827 (string-append (assoc-ref outputs "out") 5829 (string-append (assoc-ref outputs "out")
5828 "/bin")) 5830 "/bin")))))))
5829 #t)))))
5830 (synopsis "Simple static web server") 5831 (synopsis "Simple static web server")
5831 (description "darkhttpd is a simple static web server. It is 5832 (description "darkhttpd is a simple static web server. It is
5832standalone and does not need inetd or ucspi-tcp. It does not need any 5833standalone and does not need inetd or ucspi-tcp. It does not need any
@@ -5837,20 +5838,19 @@ config files---you only have to specify the www root.")
5837(define-public goaccess 5838(define-public goaccess
5838 (package 5839 (package
5839 (name "goaccess") 5840 (name "goaccess")
5840 (version "1.5.1") 5841 (version "1.5.2")
5841 (source (origin 5842 (source (origin
5842 (method url-fetch) 5843 (method url-fetch)
5843 (uri (string-append "http://tar.goaccess.io/goaccess-" 5844 (uri (string-append "http://tar.goaccess.io/goaccess-"
5844 version ".tar.gz")) 5845 version ".tar.gz"))
5845 (sha256 5846 (sha256
5846 (base32 5847 (base32
5847 "03wp75n1krv8g643q00gcv1ikmzwwh8jjqmph0wxww1bwrw7whc8")) 5848 "12hwmd9cn7yy7vj92110skjaslpxkn05msb9wj228qmjjf9jzkm0"))
5848 (modules '((guix build utils))) 5849 (modules '((guix build utils)))
5849 (snippet '(begin 5850 (snippet '(begin
5850 (substitute* "src/error.h" 5851 (substitute* "src/error.h"
5851 (("__DATE__") "\"1970-01-01\"") 5852 (("__DATE__") "\"1970-01-01\"")
5852 (("__TIME__") "\"00:00:00\"")) 5853 (("__TIME__") "\"00:00:00\""))))))
5853 #t))))
5854 (build-system gnu-build-system) 5854 (build-system gnu-build-system)
5855 (inputs 5855 (inputs
5856 ;; TODO: Add dependency on geoip-tools. 5856 ;; TODO: Add dependency on geoip-tools.
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index acb593ade2d..e19a08da478 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -102,6 +102,7 @@
102 #:use-module (gnu packages imagemagick) 102 #:use-module (gnu packages imagemagick)
103 #:use-module (gnu packages libevent) 103 #:use-module (gnu packages libevent)
104 #:use-module (gnu packages linux) 104 #:use-module (gnu packages linux)
105 #:use-module (gnu packages lisp-check)
105 #:use-module (gnu packages lisp-xyz) 106 #:use-module (gnu packages lisp-xyz)
106 #:use-module (gnu packages logging) 107 #:use-module (gnu packages logging)
107 #:use-module (gnu packages lua) 108 #:use-module (gnu packages lua)
@@ -1422,14 +1423,14 @@ its size
1422(define-public polybar 1423(define-public polybar
1423 (package 1424 (package
1424 (name "polybar") 1425 (name "polybar")
1425 (version "3.5.5") 1426 (version "3.5.7")
1426 (source 1427 (source
1427 (origin 1428 (origin
1428 (method url-fetch) 1429 (method url-fetch)
1429 (uri (string-append "https://github.com/polybar/polybar/releases/" 1430 (uri (string-append "https://github.com/polybar/polybar/releases/"
1430 "download/" version "/polybar-" version ".tar.gz")) 1431 "download/" version "/polybar-" version ".tar.gz"))
1431 (sha256 1432 (sha256
1432 (base32 "1c8br9972x1qw7l2shj9aqzv0gsx58fdh3r0f1z5i1bqdwxmsqky")))) 1433 (base32 "1nr386jdlm8qkbdf23w7lyvbfhr362s90f957fawnyi1finhw8bk"))))
1433 (build-system cmake-build-system) 1434 (build-system cmake-build-system)
1434 (arguments 1435 (arguments
1435 ;; Test is disabled because it requires downloading googletest from the 1436 ;; Test is disabled because it requires downloading googletest from the
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 53a97931daa..166a747229f 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -11,7 +11,7 @@
11;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net> 11;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
12;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org> 12;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
13;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net> 13;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
14;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> 14;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
15;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 15;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
16;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com> 16;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
17;;; Copyright © 2016 Petter <petter@mykolab.ch> 17;;; Copyright © 2016 Petter <petter@mykolab.ch>
@@ -70,6 +70,7 @@
70 70
71(define-module (gnu packages xdisorg) 71(define-module (gnu packages xdisorg)
72 #:use-module (guix build-system cmake) 72 #:use-module (guix build-system cmake)
73 #:use-module (guix build-system copy)
73 #:use-module (guix build-system glib-or-gtk) 74 #:use-module (guix build-system glib-or-gtk)
74 #:use-module (guix build-system gnu) 75 #:use-module (guix build-system gnu)
75 #:use-module (guix build-system meson) 76 #:use-module (guix build-system meson)
@@ -85,6 +86,7 @@
85 #:use-module (gnu packages algebra) 86 #:use-module (gnu packages algebra)
86 #:use-module (gnu packages autotools) 87 #:use-module (gnu packages autotools)
87 #:use-module (gnu packages base) 88 #:use-module (gnu packages base)
89 #:use-module (gnu packages bash)
88 #:use-module (gnu packages bison) 90 #:use-module (gnu packages bison)
89 #:use-module (gnu packages check) 91 #:use-module (gnu packages check)
90 #:use-module (gnu packages compression) 92 #:use-module (gnu packages compression)
@@ -2399,6 +2401,50 @@ binary to setuid-binaries:
2399Wayland.") 2401Wayland.")
2400 (license license:gpl3+))) 2402 (license license:gpl3+)))
2401 2403
2404(define-public wl-clipboard-x11
2405 (package
2406 (name "wl-clipboard-x11")
2407 (version "5")
2408 (source
2409 (origin
2410 (method git-fetch)
2411 (uri (git-reference
2412 (url "https://github.com/brunelli/wl-clipboard-x11")
2413 (commit (string-append "v" version))))
2414 (file-name (git-file-name name version))
2415 (sha256
2416 (base32 "1y7jv7rps0sdzmm859wn2l8q4pg2x35smcrm7mbfxn5vrga0bslb"))))
2417 (build-system copy-build-system)
2418 (arguments
2419 `(#:install-plan
2420 '(("src/" "bin/")
2421 ("man/" "man/man1"))
2422 #:phases
2423 (modify-phases %standard-phases
2424 (add-after 'install 'wrap-binary
2425 (lambda* (#:key inputs outputs #:allow-other-keys)
2426 (let ((out (assoc-ref outputs "out"))
2427 (wl-clipboard (assoc-ref inputs "wl-clipboard")))
2428 (wrap-program (string-append out "/bin/wl-clipboard-x11")
2429 `("PATH" prefix (,(string-append wl-clipboard "/bin")))))
2430 #t))
2431 (add-after 'wrap-binary 'symlink-utilities
2432 ;; As seen in the Makefile.
2433 (lambda* (#:key outputs #:allow-other-keys)
2434 (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
2435 (symlink "wl-clipboard-x11" (string-append bin "xclip"))
2436 (symlink "wl-clipboard-x11" (string-append bin "xsel")))
2437 #t)))))
2438 (inputs
2439 `(("bash-minimal" ,bash-minimal)
2440 ("wl-clipboard" ,wl-clipboard)))
2441 (home-page "https://github.com/brunelli/wl-clipboard-x11")
2442 (synopsis "Use wl-clipboard as a drop-in replacement to X11 clipboard tools")
2443 (description "This package provides a wrapper script around
2444@code{x11-clipboard} to use it as a clipboard on X11 also. It also contains
2445helper scripts for @code{xclip} and @code{xsel} to assist with the transition.")
2446 (license license:gpl3+)))
2447
2402(define-public autocutsel 2448(define-public autocutsel
2403 (package 2449 (package
2404 (name "autocutsel") 2450 (name "autocutsel")
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index e259cefac44..c9efdc6efe3 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -2129,3 +2129,28 @@ lan interface (signal state, signal quality, network name (SSID)).")
2129local weather in the panel, using forecast data provided by the 2129local weather in the panel, using forecast data provided by the
2130@uref{https://met.no, Norwegian Meteorological Institute}.") 2130@uref{https://met.no, Norwegian Meteorological Institute}.")
2131 (license gpl2+))) 2131 (license gpl2+)))
2132
2133(define-public xfce4-dev-tools
2134 (package
2135 (name "xfce4-dev-tools")
2136 (version "4.17.0")
2137 (source (origin
2138 (method url-fetch)
2139 (uri (string-append "https://archive.xfce.org/src/xfce/"
2140 "xfce4-dev-tools/" (version-major+minor version) "/"
2141 "xfce4-dev-tools-" version ".tar.bz2"))
2142 (sha256
2143 (base32
2144 "1iwkqj96x2s7fk4srg1pymvsiwb2rn6vvhy6hrmnc3hl1vqw2d6k"))))
2145 (build-system gnu-build-system)
2146 (native-inputs
2147 `(("pkg-config" ,pkg-config)))
2148 (inputs
2149 `(("glib" ,glib)))
2150 (home-page "https://docs.xfce.org/xfce/xfce4-dev-tools/")
2151 (synopsis "Xfce developer tools")
2152 (description
2153 "The Xfce development tools are a collection of tools and macros for Xfce
2154developers and people that want to build Xfce from Git In addition it contains
2155the Xfce developer's handbook.")
2156 (license gpl2+)))
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
new file mode 100644
index 00000000000..ab62f554f4d
--- /dev/null
+++ b/gnu/packages/zig.scm
@@ -0,0 +1,104 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2021 Liliana Prikler <liliana.prikler@gmail.com>
3;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
4;;;
5;;; This file is part of GNU Guix.
6;;;
7;;; GNU Guix is free software; you can redistribute it and/or modify it
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
12;;; GNU Guix is distributed in the hope that it will be useful, but
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20(define-module (gnu packages zig)
21 #:use-module (guix packages)
22 #:use-module (guix git-download)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix build-system cmake)
25 #:use-module (gnu packages)
26 #:use-module (gnu packages llvm))
27
28(define-public zig
29 (package
30 (name "zig")
31 (version "0.8.1")
32 (source
33 (origin
34 (method git-fetch)
35 (uri (git-reference
36 (url "https://github.com/ziglang/zig.git")
37 (commit version)))
38 (file-name (git-file-name name version))
39 (sha256
40 (base32 "147qx7xgj0r353wh5ragzn6kmm1vrf31i8038z3zqwjnqqgqxi6c"))
41 (patches
42 (search-patches
43 "zig-disable-libc-note-test.patch"
44 "zig-use-system-paths.patch"))))
45 (build-system cmake-build-system)
46 (inputs
47 `(("clang" ,clang-12) ; Clang propagates llvm.
48 ("lld" ,lld)))
49 ;; Zig compiles fine with GCC, but also needs native LLVM libraries.
50 (native-inputs
51 `(("llvm" ,llvm-12)))
52 (arguments
53 `(#:configure-flags
54 (list ,@(if (%current-target-system)
55 (string-append "-DZIG_TARGET_TRIPLE="
56 (%current-target-system))
57 '()))
58 #:out-of-source? #f ; for tests
59 #:phases
60 (modify-phases %standard-phases
61 (add-after 'configure 'set-cache-dir
62 (lambda _
63 ;; Set cache dir, otherwise Zig looks for `$HOME/.cache'.
64 (setenv "ZIG_GLOBAL_CACHE_DIR"
65 (string-append (getcwd) "/zig-cache"))))
66 (delete 'check)
67 (add-after 'install 'check
68 (lambda* (#:key outputs tests? #:allow-other-keys)
69 (when tests?
70 (invoke (string-append (assoc-ref outputs "out") "/bin/zig")
71 ;; Testing the standard library takes >7.5GB RAM, and
72 ;; will fail if it is OOM-killed. The 'test-toolchain'
73 ;; target skips standard library and doc tests.
74 "build" "test-toolchain"
75 ;; Stage 2 is experimental, not what we run with `zig',
76 ;; and stage 2 tests require a lot of RAM.
77 "-Dskip-stage2-tests"
78 ;; Non-native tests try to link and execute non-native
79 ;; binaries.
80 "-Dskip-non-native")))))))
81 (native-search-paths
82 (list
83 (search-path-specification
84 (variable "C_INCLUDE_PATH")
85 (files '("include")))
86 (search-path-specification
87 (variable "CPLUS_INCLUDE_PATH")
88 (files '("include/c++" "include")))
89 (search-path-specification
90 (variable "LIBRARY_PATH")
91 (files '("lib" "lib64")))))
92 (synopsis "General purpose programming language and toolchain")
93 (description "Zig is a general-purpose programming language and
94toolchain. Among other features it provides
95@itemize
96@item an Optional type instead of null pointers,
97@item manual memory management,
98@item generic data structures and functions,
99@item compile-time reflection and compile-time code execution,
100@item integration with C using zig as a C compiler, and
101@item concurrency via async functions.
102@end itemize")
103 (home-page "https://github.com/ziglang/zig")
104 (license license:expat)))
diff --git a/gnu/services/rsync.scm b/gnu/services/rsync.scm
index 6c117bbda44..59faed78f6d 100644
--- a/gnu/services/rsync.scm
+++ b/gnu/services/rsync.scm
@@ -45,6 +45,8 @@
45 rsync-configuration? 45 rsync-configuration?
46 (package rsync-configuration-package ; package 46 (package rsync-configuration-package ; package
47 (default rsync)) 47 (default rsync))
48 (address rsync-configuration-address ; string | #f
49 (default #f))
48 (port-number rsync-configuration-port-number ; integer 50 (port-number rsync-configuration-port-number ; integer
49 (default 873)) 51 (default 873))
50 (pid-file rsync-configuration-pid-file ; string 52 (pid-file rsync-configuration-pid-file ; string
@@ -110,7 +112,7 @@
110(define rsync-config-file 112(define rsync-config-file
111 ;; Return the rsync configuration file corresponding to CONFIG. 113 ;; Return the rsync configuration file corresponding to CONFIG.
112 (match-lambda 114 (match-lambda
113 (($ <rsync-configuration> package port-number pid-file lock-file log-file 115 (($ <rsync-configuration> package address port-number pid-file lock-file log-file
114 use-chroot? share-path share-comment read-only? 116 use-chroot? share-path share-comment read-only?
115 timeout user group uid gid) 117 timeout user group uid gid)
116 (if (not (string=? user "root")) 118 (if (not (string=? user "root"))
@@ -132,6 +134,7 @@
132 "pid file = " pid-file "\n" 134 "pid file = " pid-file "\n"
133 "lock file = " lock-file "\n" 135 "lock file = " lock-file "\n"
134 "log file = " log-file "\n" 136 "log file = " log-file "\n"
137 (if address (string-append "address = " address "\n") "")
135 "port = " (number->string port-number) "\n" 138 "port = " (number->string port-number) "\n"
136 "use chroot = " (if use-chroot? "true" "false") "\n" 139 "use chroot = " (if use-chroot? "true" "false") "\n"
137 (if uid (string-append "uid = " uid "\n") "") 140 (if uid (string-append "uid = " uid "\n") "")
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 99a3b45004a..b305133c374 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -180,6 +180,8 @@
180 terminal-window-size 180 terminal-window-size
181 terminal-columns 181 terminal-columns
182 terminal-rows 182 terminal-rows
183 openpty
184 login-tty
183 185
184 utmpx? 186 utmpx?
185 utmpx-login-type 187 utmpx-login-type
@@ -422,15 +424,21 @@ expansion-time error is raised if FIELD does not exist in TYPE."
422 "Evaluate EXPR and restart upon EINTR. Return the value of EXPR." 424 "Evaluate EXPR and restart upon EINTR. Return the value of EXPR."
423 (call-with-restart-on-EINTR (lambda () expr))) 425 (call-with-restart-on-EINTR (lambda () expr)))
424 426
425(define (syscall->procedure return-type name argument-types) 427(define* (syscall->procedure return-type name argument-types
428 #:key library)
426 "Return a procedure that wraps the C function NAME using the dynamic FFI, 429 "Return a procedure that wraps the C function NAME using the dynamic FFI,
427and that returns two values: NAME's return value, and errno. 430and that returns two values: NAME's return value, and errno. When LIBRARY is
431specified, look up NAME in that library rather than in the global symbol name
432space.
428 433
429If an error occurs while creating the binding, defer the error report until 434If an error occurs while creating the binding, defer the error report until
430the returned procedure is called." 435the returned procedure is called."
431 (catch #t 436 (catch #t
432 (lambda () 437 (lambda ()
433 (let ((ptr (dynamic-func name (dynamic-link)))) 438 (let ((ptr (dynamic-func name
439 (if library
440 (dynamic-link library)
441 (dynamic-link)))))
434 ;; The #:return-errno? facility was introduced in Guile 2.0.12. 442 ;; The #:return-errno? facility was introduced in Guile 2.0.12.
435 (pointer->procedure return-type ptr argument-types 443 (pointer->procedure return-type ptr argument-types
436 #:return-errno? #t))) 444 #:return-errno? #t)))
@@ -2286,6 +2294,41 @@ PORT, trying to guess a reasonable value if all else fails. The result is
2286always a positive integer." 2294always a positive integer."
2287 (terminal-dimension window-size-rows port (const 25))) 2295 (terminal-dimension window-size-rows port (const 25)))
2288 2296
2297(define openpty
2298 (let ((proc (syscall->procedure int "openpty" '(* * * * *)
2299 #:library "libutil")))
2300 (lambda ()
2301 "Return two file descriptors: one for the pseudo-terminal control side,
2302and one for the controlled side."
2303 (let ((head (make-bytevector (sizeof int)))
2304 (inferior (make-bytevector (sizeof int))))
2305 (let-values (((ret err)
2306 (proc (bytevector->pointer head)
2307 (bytevector->pointer inferior)
2308 %null-pointer %null-pointer %null-pointer)))
2309 (unless (zero? ret)
2310 (throw 'system-error "openpty" "~A"
2311 (list (strerror err))
2312 (list err))))
2313
2314 (let ((* (lambda (bv)
2315 (bytevector-sint-ref bv 0 (native-endianness)
2316 (sizeof int)))))
2317 (values (* head) (* inferior)))))))
2318
2319(define login-tty
2320 (let* ((proc (syscall->procedure int "login_tty" (list int)
2321 #:library "libutil")))
2322 (lambda (fd)
2323 "Make FD the controlling terminal of the current process (with the
2324TIOCSCTTY ioctl), redirect standard input, standard output and standard error
2325output to this terminal, and close FD."
2326 (let-values (((ret err) (proc fd)))
2327 (unless (zero? ret)
2328 (throw 'system-error "login-pty" "~A"
2329 (list (strerror err))
2330 (list err)))))))
2331
2289 2332
2290;;; 2333;;;
2291;;; utmpx. 2334;;; utmpx.
diff --git a/guix/cache.scm b/guix/cache.scm
index 0401a9d4281..51009809bd3 100644
--- a/guix/cache.scm
+++ b/guix/cache.scm
@@ -101,7 +101,13 @@ CLEANUP-PERIOD denotes the minimum time between two cache cleanups."
101 #:now now 101 #:now now
102 #:entry-expiration entry-expiration 102 #:entry-expiration entry-expiration
103 #:delete-entry delete-entry) 103 #:delete-entry delete-entry)
104 (call-with-output-file expiry-file 104 (catch 'system-error
105 (cute write (time-second now) <>)))) 105 (lambda ()
106 (call-with-output-file expiry-file
107 (cute write (time-second now) <>)))
108 (lambda args
109 ;; ENOENT means CACHE does not exist.
110 (unless (= ENOENT (system-error-errno args))
111 (apply throw args))))))
106 112
107;;; cache.scm ends here 113;;; cache.scm ends here
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 510882bc00e..9387a82065f 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -34,6 +34,8 @@
34 #:use-module (web uri) 34 #:use-module (web uri)
35 #:use-module (guix memoization) 35 #:use-module (guix memoization)
36 #:use-module (guix http-client) 36 #:use-module (guix http-client)
37 #:use-module (guix diagnostics)
38 #:use-module (guix i18n)
37 #:use-module (gcrypt hash) 39 #:use-module (gcrypt hash)
38 #:use-module (guix store) 40 #:use-module (guix store)
39 #:use-module ((guix serialization) #:select (write-file)) 41 #:use-module ((guix serialization) #:select (write-file))
@@ -171,11 +173,11 @@ package definition."
171release." 173release."
172 (let ((url (string->uri (bioconductor-packages-list-url type)))) 174 (let ((url (string->uri (bioconductor-packages-list-url type))))
173 (guard (c ((http-get-error? c) 175 (guard (c ((http-get-error? c)
174 (format (current-error-port) 176 (warning (G_ "failed to retrieve list of packages \
175 "error: failed to retrieve list of packages from ~s: ~a (~s)~%" 177from ~a: ~a (~a)~%")
176 (uri->string (http-get-error-uri c)) 178 (uri->string (http-get-error-uri c))
177 (http-get-error-code c) 179 (http-get-error-code c)
178 (http-get-error-reason c)) 180 (http-get-error-reason c))
179 #f)) 181 #f))
180 ;; Split the big list on empty lines, then turn each chunk into an 182 ;; Split the big list on empty lines, then turn each chunk into an
181 ;; alist of attributes. 183 ;; alist of attributes.
@@ -237,12 +239,11 @@ case-sensitive."
237 ((cran) 239 ((cran)
238 (let ((url (string-append %cran-url name "/DESCRIPTION"))) 240 (let ((url (string-append %cran-url name "/DESCRIPTION")))
239 (guard (c ((http-get-error? c) 241 (guard (c ((http-get-error? c)
240 (format (current-error-port) 242 (warning (G_ "failed to retrieve package information \
241 "error: failed to retrieve package information \ 243from ~a: ~a (~a)~%")
242from ~s: ~a (~s)~%" 244 (uri->string (http-get-error-uri c))
243 (uri->string (http-get-error-uri c)) 245 (http-get-error-code c)
244 (http-get-error-code c) 246 (http-get-error-reason c))
245 (http-get-error-reason c))
246 #f)) 247 #f))
247 (let* ((port (http-fetch url)) 248 (let* ((port (http-fetch url))
248 (result (description->alist (read-string port)))) 249 (result (description->alist (read-string port))))
diff --git a/guix/lint.scm b/guix/lint.scm
index 5edb9dea284..8bbbe210d62 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -322,6 +322,21 @@ markup is valid return a plain-text version of DESCRIPTION, otherwise #f."
322 (G_ "Texinfo markup in description is invalid") 322 (G_ "Texinfo markup in description is invalid")
323 #:field 'description)))) 323 #:field 'description))))
324 324
325 (define (check-description-typo description typo-corrections)
326 "Check that DESCRIPTION does not contain typo, with optional correction"
327 (append-map
328 (match-lambda
329 ((typo . correction)
330 (if (string-contains description typo)
331 (list
332 (make-warning package
333 (G_
334 (format #false
335 "description contains typo '~a'~@[, should be '~a'~]"
336 typo correction))))
337 '())))
338 typo-corrections))
339
325 (define (check-trademarks description) 340 (define (check-trademarks description)
326 "Check that DESCRIPTION does not contain '™' or '®' characters. See 341 "Check that DESCRIPTION does not contain '™' or '®' characters. See
327http://www.gnu.org/prep/standards/html_node/Trademarks.html." 342http://www.gnu.org/prep/standards/html_node/Trademarks.html."
@@ -402,6 +417,10 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
402 (check-not-empty description) 417 (check-not-empty description)
403 (check-quotes description) 418 (check-quotes description)
404 (check-trademarks description) 419 (check-trademarks description)
420 (check-description-typo description '(("This packages" . "This package")
421 ("This modules" . "This module")
422 ("allows to" . #f)
423 ("permits to" . #f)))
405 ;; Use raw description for this because Texinfo rendering 424 ;; Use raw description for this because Texinfo rendering
406 ;; automatically fixes end of sentence space. 425 ;; automatically fixes end of sentence space.
407 (check-end-of-sentence-space description) 426 (check-end-of-sentence-space description)
diff --git a/guix/packages.scm b/guix/packages.scm
index fa23cc39b34..fb7eabdc646 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -52,6 +52,7 @@
52 #:use-module (srfi srfi-35) 52 #:use-module (srfi srfi-35)
53 #:use-module (rnrs bytevectors) 53 #:use-module (rnrs bytevectors)
54 #:use-module (web uri) 54 #:use-module (web uri)
55 #:autoload (texinfo) (texi-fragment->stexi)
55 #:re-export (%current-system 56 #:re-export (%current-system
56 %current-target-system 57 %current-target-system
57 search-path-specification) ;for convenience 58 search-path-specification) ;for convenience
@@ -169,6 +170,7 @@
169 bag-transitive-host-inputs 170 bag-transitive-host-inputs
170 bag-transitive-build-inputs 171 bag-transitive-build-inputs
171 bag-transitive-target-inputs 172 bag-transitive-target-inputs
173 package-development-inputs
172 package-closure 174 package-closure
173 175
174 default-guile 176 default-guile
@@ -465,6 +467,49 @@ lexical scope of its body."
465 (lambda (s) #,location))) 467 (lambda (s) #,location)))
466 body ...)))))) 468 body ...))))))
467 469
470(define-syntax validate-texinfo
471 (let ((validate? (getenv "GUIX_UNINSTALLED")))
472 (define ensure-thread-safe-texinfo-parser!
473 ;; Work around <https://issues.guix.gnu.org/51264> for Guile <= 3.0.7.
474 (let ((patched? (or (> (string->number (major-version)) 3)
475 (> (string->number (minor-version)) 0)
476 (> (string->number (micro-version)) 7)))
477 (next-token-of/thread-safe
478 (lambda (pred port)
479 (let loop ((chars '()))
480 (match (read-char port)
481 ((? eof-object?)
482 (list->string (reverse! chars)))
483 (chr
484 (let ((chr* (pred chr)))
485 (if chr*
486 (loop (cons chr* chars))
487 (begin
488 (unread-char chr port)
489 (list->string (reverse! chars)))))))))))
490 (lambda ()
491 (unless patched?
492 (set! (@@ (texinfo) next-token-of) next-token-of/thread-safe)
493 (set! patched? #t)))))
494
495 (lambda (s)
496 "Raise a syntax error when passed a literal string that is not valid
497Texinfo. Otherwise, return the string."
498 (syntax-case s ()
499 ((_ str)
500 (string? (syntax->datum #'str))
501 (if validate?
502 (catch 'parser-error
503 (lambda ()
504 (ensure-thread-safe-texinfo-parser!)
505 (texi-fragment->stexi (syntax->datum #'str))
506 #'str)
507 (lambda _
508 (syntax-violation 'package "invalid Texinfo markup" #'str)))
509 #'str))
510 ((_ obj)
511 #'obj)))))
512
468;; A package. 513;; A package.
469(define-record-type* <package> 514(define-record-type* <package>
470 package make-package 515 package make-package
@@ -502,9 +547,11 @@ lexical scope of its body."
502 (replacement package-replacement ; package | #f 547 (replacement package-replacement ; package | #f
503 (default #f) (thunked) (innate)) 548 (default #f) (thunked) (innate))
504 549
505 (synopsis package-synopsis) ; one-line description 550 (synopsis package-synopsis
506 (description package-description) ; one or two paragraphs 551 (sanitize validate-texinfo)) ; one-line description
507 (license package-license) 552 (description package-description
553 (sanitize validate-texinfo)) ; one or two paragraphs
554 (license package-license) ; <license> instance or list
508 (home-page package-home-page) 555 (home-page package-home-page)
509 (supported-systems package-supported-systems ; list of strings 556 (supported-systems package-supported-systems ; list of strings
510 (default %supported-systems)) 557 (default %supported-systems))
@@ -1176,23 +1223,36 @@ in INPUTS and their transitive propagated inputs."
1176 1223
1177(define package-transitive-supported-systems 1224(define package-transitive-supported-systems
1178 (let () 1225 (let ()
1179 (define supported-systems 1226 (define (supported-systems-procedure system)
1180 (mlambda (package system) 1227 (define supported-systems
1181 (parameterize ((%current-system system)) 1228 (mlambdaq (package)
1182 (fold (lambda (input systems) 1229 (parameterize ((%current-system system))
1183 (match input 1230 (fold (lambda (input systems)
1184 ((label (? package? package) . _) 1231 (match input
1185 (lset-intersection string=? systems 1232 ((label (? package? package) . _)
1186 (supported-systems package system))) 1233 (lset-intersection string=? systems
1187 (_ 1234 (supported-systems package)))
1188 systems))) 1235 (_
1189 (package-supported-systems package) 1236 systems)))
1190 (bag-direct-inputs (package->bag package)))))) 1237 (package-supported-systems package)
1238 (bag-direct-inputs (package->bag package))))))
1239
1240 supported-systems)
1241
1242 (define procs
1243 ;; Map system strings to one-argument procedures. This allows these
1244 ;; procedures to have fast 'eq?' memoization on their argument.
1245 (make-hash-table))
1191 1246
1192 (lambda* (package #:optional (system (%current-system))) 1247 (lambda* (package #:optional (system (%current-system)))
1193 "Return the intersection of the systems supported by PACKAGE and those 1248 "Return the intersection of the systems supported by PACKAGE and those
1194supported by its dependencies." 1249supported by its dependencies."
1195 (supported-systems package system)))) 1250 (match (hash-ref procs system)
1251 (#f
1252 (hash-set! procs system (supported-systems-procedure system))
1253 (package-transitive-supported-systems package system))
1254 (proc
1255 (proc package))))))
1196 1256
1197(define* (supported-package? package #:optional (system (%current-system))) 1257(define* (supported-package? package #:optional (system (%current-system)))
1198 "Return true if PACKAGE is supported on SYSTEM--i.e., if PACKAGE and all its 1258 "Return true if PACKAGE is supported on SYSTEM--i.e., if PACKAGE and all its
@@ -1229,6 +1289,15 @@ dependencies are known to build on SYSTEM."
1229 (%current-system (bag-system bag))) 1289 (%current-system (bag-system bag)))
1230 (transitive-inputs (bag-target-inputs bag)))) 1290 (transitive-inputs (bag-target-inputs bag))))
1231 1291
1292(define* (package-development-inputs package
1293 #:optional (system (%current-system))
1294 #:key target)
1295 "Return the list of inputs required by PACKAGE for development purposes on
1296SYSTEM. When TARGET is true, return the inputs needed to cross-compile
1297PACKAGE from SYSTEM to TRIPLET, where TRIPLET is a triplet such as
1298\"aarch64-linux-gnu\"."
1299 (bag-transitive-inputs (package->bag package system target)))
1300
1232(define* (package-closure packages #:key (system (%current-system))) 1301(define* (package-closure packages #:key (system (%current-system)))
1233 "Return the closure of PACKAGES on SYSTEM--i.e., PACKAGES and the list of 1302 "Return the closure of PACKAGES on SYSTEM--i.e., PACKAGES and the list of
1234packages they depend on, recursively." 1303packages they depend on, recursively."
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 94946842284..aad23c0c0e9 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -124,6 +124,7 @@
124 124
125 profile-manifest 125 profile-manifest
126 package->manifest-entry 126 package->manifest-entry
127 package->development-manifest
127 packages->manifest 128 packages->manifest
128 ca-certificate-bundle 129 ca-certificate-bundle
129 %default-profile-hooks 130 %default-profile-hooks
@@ -400,6 +401,24 @@ file name."
400 (properties properties)))) 401 (properties properties))))
401 entry)) 402 entry))
402 403
404(define* (package->development-manifest package
405 #:optional
406 (system (%current-system))
407 #:key target)
408 "Return a manifest for the \"development inputs\" of PACKAGE for SYSTEM,
409optionally when cross-compiling to TARGET. Development inputs include both
410explicit and implicit inputs of PACKAGE."
411 (manifest
412 (filter-map (match-lambda
413 ((label (? package? package))
414 (package->manifest-entry package))
415 ((label (? package? package) output)
416 (package->manifest-entry package output))
417 ;; TODO: Support <inferior-package>.
418 (_
419 #f))
420 (package-development-inputs package system #:target target))))
421
403(define (packages->manifest packages) 422(define (packages->manifest packages)
404 "Return a list of manifest entries, one for each item listed in PACKAGES. 423 "Return a list of manifest entries, one for each item listed in PACKAGES.
405Elements of PACKAGES can be either package objects or package/string tuples 424Elements of PACKAGES can be either package objects or package/string tuples
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 6958bd6238b..cca0ad991b8 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -34,23 +34,32 @@
34 #:use-module (guix scripts) 34 #:use-module (guix scripts)
35 #:use-module (guix scripts build) 35 #:use-module (guix scripts build)
36 #:use-module (guix transformations) 36 #:use-module (guix transformations)
37 #:use-module (gnu build linux-container) 37 #:autoload (gnu build linux-container) (call-with-container %namespaces
38 #:use-module (gnu build accounts) 38 user-namespace-supported?
39 #:use-module ((guix build syscalls) #:select (set-network-interface-up)) 39 unprivileged-user-namespace-supported?
40 #:use-module (gnu system linux-container) 40 setgroups-supported?)
41 #:autoload (gnu build accounts) (password-entry group-entry
42 password-entry-name password-entry-directory
43 write-passwd write-group)
44 #:autoload (guix build syscalls) (set-network-interface-up openpty login-tty)
41 #:use-module (gnu system file-systems) 45 #:use-module (gnu system file-systems)
42 #:use-module (gnu packages) 46 #:autoload (gnu packages) (specification->package+output)
43 #:use-module (gnu packages bash) 47 #:autoload (gnu packages bash) (bash)
44 #:use-module ((gnu packages bootstrap) 48 #:autoload (gnu packages bootstrap) (bootstrap-executable %bootstrap-guile)
45 #:select (bootstrap-executable %bootstrap-guile))
46 #:use-module (ice-9 match) 49 #:use-module (ice-9 match)
50 #:autoload (ice-9 rdelim) (read-line)
51 #:use-module (ice-9 vlist)
47 #:use-module (srfi srfi-1) 52 #:use-module (srfi srfi-1)
48 #:use-module (srfi srfi-11) 53 #:use-module (srfi srfi-11)
49 #:use-module (srfi srfi-26) 54 #:use-module (srfi srfi-26)
50 #:use-module (srfi srfi-37) 55 #:use-module (srfi srfi-37)
51 #:use-module (srfi srfi-98) 56 #:use-module (srfi srfi-98)
52 #:export (assert-container-features 57 #:export (assert-container-features
53 guix-environment)) 58 guix-environment
59 guix-environment*
60 show-environment-options-help
61 (%options . %environment-options)
62 (%default-options . %environment-default-options)))
54 63
55(define %default-shell 64(define %default-shell
56 (or (getenv "SHELL") "/bin/sh")) 65 (or (getenv "SHELL") "/bin/sh"))
@@ -66,41 +75,18 @@ do not augment existing environment variables with additional search paths."
66 (newline))) 75 (newline)))
67 (profile-search-paths profile manifest))) 76 (profile-search-paths profile manifest)))
68 77
69(define (input->manifest-entry input) 78(define (show-environment-options-help)
70 "Return a manifest entry for INPUT, or #f if INPUT does not correspond to a 79 "Print help about options shared between 'guix environment' and 'guix
71package." 80shell'."
72 (match input
73 ((_ (? package? package))
74 (package->manifest-entry package))
75 ((_ (? package? package) output)
76 (package->manifest-entry package output))
77 (_
78 #f)))
79
80(define (package-environment-inputs package)
81 "Return a list of manifest entries corresponding to the transitive input
82packages for PACKAGE."
83 ;; Remove non-package inputs such as origin records.
84 (filter-map input->manifest-entry
85 (bag-transitive-inputs (package->bag package))))
86
87(define (show-help)
88 (display (G_ "Usage: guix environment [OPTION]... PACKAGE... [-- COMMAND...]
89Build an environment that includes the dependencies of PACKAGE and execute
90COMMAND or an interactive shell in that environment.\n"))
91 (display (G_ " 81 (display (G_ "
92 -e, --expression=EXPR create environment for the package that EXPR 82 -e, --expression=EXPR create environment for the package that EXPR
93 evaluates to")) 83 evaluates to"))
94 (display (G_ " 84 (display (G_ "
95 -l, --load=FILE create environment for the package that the code within
96 FILE evaluates to"))
97 (display (G_ "
98 -m, --manifest=FILE create environment with the manifest from FILE")) 85 -m, --manifest=FILE create environment with the manifest from FILE"))
99 (display (G_ " 86 (display (G_ "
100 -p, --profile=PATH create environment from profile at PATH")) 87 -p, --profile=PATH create environment from profile at PATH"))
101 (display (G_ " 88 (display (G_ "
102 --ad-hoc include all specified packages in the environment instead 89 --check check if the shell clobbers environment variables"))
103 of only their inputs"))
104 (display (G_ " 90 (display (G_ "
105 --pure unset existing environment variables")) 91 --pure unset existing environment variables"))
106 (display (G_ " 92 (display (G_ "
@@ -136,7 +122,24 @@ COMMAND or an interactive shell in that environment.\n"))
136 (display (G_ " 122 (display (G_ "
137 -v, --verbosity=LEVEL use the given verbosity LEVEL")) 123 -v, --verbosity=LEVEL use the given verbosity LEVEL"))
138 (display (G_ " 124 (display (G_ "
139 --bootstrap use bootstrap binaries to build the environment")) 125 --bootstrap use bootstrap binaries to build the environment")))
126
127(define (show-help)
128 (display (G_ "Usage: guix environment [OPTION]... PACKAGE... [-- COMMAND...]
129Build an environment that includes the dependencies of PACKAGE and execute
130COMMAND or an interactive shell in that environment.\n"))
131 (warning (G_ "This command is deprecated in favor of 'guix shell'.\n"))
132 (newline)
133
134 ;; These two options are left out in 'guix shell'.
135 (display (G_ "
136 -l, --load=FILE create environment for the package that the code within
137 FILE evaluates to"))
138 (display (G_ "
139 --ad-hoc include all specified packages in the environment instead
140 of only their inputs"))
141
142 (show-environment-options-help)
140 (newline) 143 (newline)
141 (show-build-options-help) 144 (show-build-options-help)
142 (newline) 145 (newline)
@@ -179,6 +182,9 @@ COMMAND or an interactive shell in that environment.\n"))
179 (option '(#\V "version") #f #f 182 (option '(#\V "version") #f #f
180 (lambda args 183 (lambda args
181 (show-version-and-exit "guix environment"))) 184 (show-version-and-exit "guix environment")))
185 (option '("check") #f #f
186 (lambda (opt name arg result)
187 (alist-cons 'check? #t result)))
182 (option '("pure") #f #f 188 (option '("pure") #f #f
183 (lambda (opt name arg result) 189 (lambda (opt name arg result)
184 (alist-cons 'pure #t result))) 190 (alist-cons 'pure #t result)))
@@ -297,11 +303,11 @@ for the corresponding packages."
297 ((? package? package) 303 ((? package? package)
298 (if (eq? mode 'ad-hoc-package) 304 (if (eq? mode 'ad-hoc-package)
299 (list (package->manifest-entry* package)) 305 (list (package->manifest-entry* package))
300 (package-environment-inputs package))) 306 (manifest-entries (package->development-manifest package))))
301 (((? package? package) (? string? output)) 307 (((? package? package) (? string? output))
302 (if (eq? mode 'ad-hoc-package) 308 (if (eq? mode 'ad-hoc-package)
303 (list (package->manifest-entry* package output)) 309 (list (package->manifest-entry* package output))
304 (package-environment-inputs package))) 310 (manifest-entries (package->development-manifest package))))
305 ((lst ...) 311 ((lst ...)
306 (append-map (cut packages->outputs <> mode) lst)))) 312 (append-map (cut packages->outputs <> mode) lst))))
307 313
@@ -313,8 +319,9 @@ for the corresponding packages."
313 (specification->package+output spec))) 319 (specification->package+output spec)))
314 (list (package->manifest-entry* package output)))) 320 (list (package->manifest-entry* package output))))
315 (('package 'package (? string? spec)) 321 (('package 'package (? string? spec))
316 (package-environment-inputs 322 (manifest-entries
317 (transform (specification->package+output spec)))) 323 (package->development-manifest
324 (transform (specification->package+output spec)))))
318 (('expression mode str) 325 (('expression mode str)
319 ;; Add all the outputs of the package STR evaluates to. 326 ;; Add all the outputs of the package STR evaluates to.
320 (packages->outputs (read/eval str) mode)) 327 (packages->outputs (read/eval str) mode))
@@ -396,6 +403,155 @@ regexps in WHITE-LIST."
396 ((program . args) 403 ((program . args)
397 (apply execlp program program args)))) 404 (apply execlp program program args))))
398 405
406(define (child-shell-environment shell profile manifest)
407 "Create a child process, load PROFILE and MANIFEST, and then run SHELL in
408interactive mode in it. Return a name/value vhash for all the variables shown
409by running 'set' in the shell."
410 (define-values (controller inferior)
411 (openpty))
412
413 (define script
414 ;; Script to obtain the list of environment variable values. On a POSIX
415 ;; shell we can rely on 'set', but on fish we have to use 'env' (fish's
416 ;; 'set' truncates values and prints them in a different format.)
417 "env || /usr/bin/env || set; echo GUIX-CHECK-DONE; read x; exit\n")
418
419 (define lines
420 (match (primitive-fork)
421 (0
422 (catch #t
423 (lambda ()
424 (load-profile profile manifest #:pure? #t)
425 (setenv "GUIX_ENVIRONMENT" profile)
426 (close-fdes controller)
427 (login-tty inferior)
428 (execl shell shell))
429 (lambda _
430 (primitive-exit 127))))
431 (pid
432 (close-fdes inferior)
433 (let* ((port (fdopen controller "r+l"))
434 (result (begin
435 (display script port)
436 (let loop ((lines '()))
437 (match (read-line port)
438 ((? eof-object?) (reverse lines))
439 ("GUIX-CHECK-DONE\r"
440 (display "done\n" port)
441 (reverse lines))
442 (line
443 ;; Drop the '\r' from LINE.
444 (loop (cons (string-drop-right line 1)
445 lines))))))))
446 (close-port port)
447 (waitpid pid)
448 result))))
449
450 (fold (lambda (line table)
451 ;; Note: 'set' in fish outputs "NAME VALUE" instead of "NAME=VALUE"
452 ;; but it also truncates values anyway, so don't try to support it.
453 (let ((index (string-index line #\=)))
454 (if index
455 (vhash-cons (string-take line index)
456 (string-drop line (+ 1 index))
457 table)
458 table)))
459 vlist-null
460 lines))
461
462(define* (validate-child-shell-environment profile manifest
463 #:optional (shell %default-shell))
464 "Run SHELL in interactive mode in an environment for PROFILE and MANIFEST
465and report clobbered environment variables."
466 (define warned? #f)
467 (define-syntax-rule (warn exp ...)
468 (begin
469 (set! warned? #t)
470 (warning exp ...)))
471
472 (info (G_ "checking the environment variables visible from shell '~a'...~%")
473 shell)
474 (let ((actual (child-shell-environment shell profile manifest)))
475 (when (vlist-null? actual)
476 (leave (G_ "failed to determine environment of shell '~a'~%")
477 shell))
478 (for-each (match-lambda
479 ((spec . expected)
480 (let ((name (search-path-specification-variable spec)))
481 (match (vhash-assoc name actual)
482 (#f
483 (warn (G_ "variable '~a' is missing from shell \
484environment~%")
485 name))
486 ((_ . actual)
487 (cond ((string=? expected actual)
488 #t)
489 ((string-prefix? expected actual)
490 (warn (G_ "variable '~a' has unexpected \
491suffix '~a'~%")
492 name
493 (string-drop actual
494 (string-length expected))))
495 (else
496 (warn (G_ "variable '~a' is clobbered: '~a'~%")
497 name actual))))))))
498 (profile-search-paths profile manifest))
499
500 ;; Special case.
501 (match (vhash-assoc "GUIX_ENVIRONMENT" actual)
502 (#f
503 (warn (G_ "'GUIX_ENVIRONMENT' is missing from the shell \
504environment~%")))
505 ((_ . value)
506 (unless (string=? value profile)
507 (warn (G_ "'GUIX_ENVIRONMENT' is set to '~a' instead of '~a'~%")
508 value profile))))
509
510 ;; Check the prompt unless we have more important warnings.
511 (unless warned?
512 (match (vhash-assoc "PS1" actual)
513 (#f #f)
514 (str
515 (when (and (getenv "PS1") (string=? str (getenv "PS1")))
516 (warning (G_ "'PS1' is the same in sub-shell~%"))
517 (display-hint (G_ "Consider setting a different prompt for
518environment shells to make them distinguishable.
519
520If you are using Bash, you can do that by adding these lines to
521@file{~/.bashrc}:
522
523@example
524if [ -n \"$GUIX_ENVIRONMENT\" ]
525then
526 export PS1=\"\\u@@\\h \\w [env]\\$ \"
527fi
528@end example
529"))))))
530
531 (if warned?
532 (begin
533 (display-hint (G_ "One or more environment variables have a
534different value in the shell than the one we set. This means that you may
535find yourself running code in an environment different from the one you asked
536Guix to prepare.
537
538This usually indicates that your shell startup files are unexpectedly
539modifying those environment variables. For example, if you are using Bash,
540make sure that environment variables are set or modified in
541@file{~/.bash_profile} and @emph{not} in @file{~/.bashrc}. For more
542information on Bash startup files, run:
543
544@example
545info \"(bash) Bash Startup Files\"
546@end example
547
548Alternatively, you can avoid the problem by passing the @option{--container}
549or @option{-C} option. That will give you a fully isolated environment
550running in a \"container\", immune to the issue described above."))
551 (exit 1))
552 (info (G_ "All is good! The shell gets correct environment \
553variables.~%")))))
554
399(define* (launch-environment/fork command profile manifest 555(define* (launch-environment/fork command profile manifest
400 #:key pure? (white-list '())) 556 #:key pure? (white-list '()))
401 "Run COMMAND in a new process with an environment containing PROFILE, with 557 "Run COMMAND in a new process with an environment containing PROFILE, with
@@ -666,11 +822,15 @@ message if any test fails."
666 822
667(define-command (guix-environment . args) 823(define-command (guix-environment . args)
668 (category development) 824 (category development)
669 (synopsis "spawn one-off software environments") 825 (synopsis "spawn one-off software environments (deprecated)")
826
827 (guix-environment* (parse-args args)))
670 828
829(define (guix-environment* opts)
830 "Run the 'guix environment' command on OPTS, an alist resulting for
831command-line option processing with 'parse-command-line'."
671 (with-error-handling 832 (with-error-handling
672 (let* ((opts (parse-args args)) 833 (let* ((pure? (assoc-ref opts 'pure))
673 (pure? (assoc-ref opts 'pure))
674 (container? (assoc-ref opts 'container?)) 834 (container? (assoc-ref opts 'container?))
675 (link-prof? (assoc-ref opts 'link-profile?)) 835 (link-prof? (assoc-ref opts 'link-profile?))
676 (network? (assoc-ref opts 'network?)) 836 (network? (assoc-ref opts 'network?))
@@ -690,6 +850,26 @@ message if any test fails."
690 (mappings (pick-all opts 'file-system-mapping)) 850 (mappings (pick-all opts 'file-system-mapping))
691 (white-list (pick-all opts 'inherit-regexp))) 851 (white-list (pick-all opts 'inherit-regexp)))
692 852
853 (define store-needed?
854 ;; Whether connecting to the daemon is needed.
855 (or container? (not profile)))
856
857 (define-syntax-rule (with-store/maybe store exp ...)
858 ;; Evaluate EXP... with STORE bound to a connection, unless
859 ;; STORE-NEEDED? is false, in which case STORE is bound to #f.
860 (let ((proc (lambda (store) exp ...)))
861 (if store-needed?
862 (with-store s
863 (set-build-options-from-command-line s opts)
864 (with-build-handler (build-notifier #:use-substitutes?
865 (assoc-ref opts 'substitutes?)
866 #:verbosity
867 (assoc-ref opts 'verbosity)
868 #:dry-run?
869 (assoc-ref opts 'dry-run?))
870 (proc s)))
871 (proc #f))))
872
693 (when container? (assert-container-features)) 873 (when container? (assert-container-features))
694 874
695 (when (and (not container?) link-prof?) 875 (when (and (not container?) link-prof?)
@@ -700,85 +880,89 @@ message if any test fails."
700 (leave (G_ "--no-cwd cannot be used without --container~%"))) 880 (leave (G_ "--no-cwd cannot be used without --container~%")))
701 881
702 882
703 (with-store store 883 (with-store/maybe store
704 (with-build-handler (build-notifier #:use-substitutes? 884 (with-status-verbosity (assoc-ref opts 'verbosity)
705 (assoc-ref opts 'substitutes?) 885 (define manifest-from-opts
706 #:verbosity 886 (options/resolve-packages store opts))
707 (assoc-ref opts 'verbosity) 887
708 #:dry-run? 888 (define manifest
709 (assoc-ref opts 'dry-run?)) 889 (if profile
710 (with-status-verbosity (assoc-ref opts 'verbosity) 890 (profile-manifest profile)
711 (define manifest-from-opts 891 manifest-from-opts))
712 (options/resolve-packages store opts)) 892
713 893 (when (and profile
714 (define manifest 894 (> (length (manifest-entries manifest-from-opts)) 0))
715 (if profile 895 (leave (G_ "'--profile' cannot be used with package options~%")))
716 (profile-manifest profile) 896
717 manifest-from-opts)) 897 (when (null? (manifest-entries manifest))
718 898 (warning (G_ "no packages specified; creating an empty environment~%")))
719 (when (and profile 899
720 (> (length (manifest-entries manifest-from-opts)) 0)) 900 ;; Use the bootstrap Guile when requested.
721 (leave (G_ "'--profile' cannot be used with package options~%"))) 901 (parameterize ((%graft? (assoc-ref opts 'graft?))
722 902 (%guile-for-build
723 (when (null? (manifest-entries manifest)) 903 (and store-needed?
724 (warning (G_ "no packages specified; creating an empty environment~%"))) 904 (package-derivation
725 905 store
726 (set-build-options-from-command-line store opts) 906 (if bootstrap?
727 907 %bootstrap-guile
728 ;; Use the bootstrap Guile when requested. 908 (default-guile))))))
729 (parameterize ((%graft? (assoc-ref opts 'graft?)) 909 (run-with-store store
730 (%guile-for-build 910 ;; Containers need a Bourne shell at /bin/sh.
731 (package-derivation 911 (mlet* %store-monad ((bash (environment-bash container?
732 store 912 bootstrap?
733 (if bootstrap? 913 system))
734 %bootstrap-guile 914 (prof-drv (if profile
735 (default-guile))))) 915 (return #f)
736 (run-with-store store 916 (manifest->derivation
737 ;; Containers need a Bourne shell at /bin/sh. 917 manifest system bootstrap?)))
738 (mlet* %store-monad ((bash (environment-bash container? 918 (profile -> (if profile
739 bootstrap?
740 system))
741 (prof-drv (manifest->derivation
742 manifest system bootstrap?))
743 (profile -> (if profile
744 (readlink* profile) 919 (readlink* profile)
745 (derivation->output-path prof-drv))) 920 (derivation->output-path prof-drv)))
746 (gc-root -> (assoc-ref opts 'gc-root))) 921 (gc-root -> (assoc-ref opts 'gc-root)))
747 922
748 ;; First build the inputs. This is necessary even for 923 ;; First build the inputs. This is necessary even for
749 ;; --search-paths. Additionally, we might need to build bash for 924 ;; --search-paths. Additionally, we might need to build bash for
750 ;; a container. 925 ;; a container.
751 (mbegin %store-monad 926 (mbegin %store-monad
752 (built-derivations (if (derivation? bash) 927 (mwhen store-needed?
753 (list prof-drv bash) 928 (built-derivations (append
754 (list prof-drv))) 929 (if prof-drv (list prof-drv) '())
755 (mwhen gc-root 930 (if (derivation? bash) (list bash) '()))))
756 (register-gc-root profile gc-root)) 931 (mwhen gc-root
757 932 (register-gc-root profile gc-root))
758 (cond 933
759 ((assoc-ref opts 'search-paths) 934 (mwhen (assoc-ref opts 'check?)
760 (show-search-paths profile manifest #:pure? pure?) 935 (return
761 (return #t)) 936 (validate-child-shell-environment profile manifest)))
762 (container? 937
763 (let ((bash-binary 938 (cond
764 (if bootstrap? 939 ((assoc-ref opts 'search-paths)
765 (derivation->output-path bash) 940 (show-search-paths profile manifest #:pure? pure?)
766 (string-append (derivation->output-path bash) 941 (return #t))
767 "/bin/sh")))) 942 (container?
768 (launch-environment/container #:command command 943 (let ((bash-binary
769 #:bash bash-binary 944 (if bootstrap?
770 #:user user 945 (derivation->output-path bash)
771 #:user-mappings mappings 946 (string-append (derivation->output-path bash)
772 #:profile profile 947 "/bin/sh"))))
773 #:manifest manifest 948 (launch-environment/container #:command command
774 #:white-list white-list 949 #:bash bash-binary
775 #:link-profile? link-prof? 950 #:user user
776 #:network? network? 951 #:user-mappings mappings
777 #:map-cwd? (not no-cwd?)))) 952 #:profile profile
778 953 #:manifest manifest
779 (else 954 #:white-list white-list
780 (return 955 #:link-profile? link-prof?
781 (exit/status 956 #:network? network?
782 (launch-environment/fork command profile manifest 957 #:map-cwd? (not no-cwd?))))
783 #:white-list white-list 958
784 #:pure? pure?))))))))))))))) 959 (else
960 (return
961 (exit/status
962 (launch-environment/fork command profile manifest
963 #:white-list white-list
964 #:pure? pure?))))))))))))))
965
966;;; Local Variables:
967;;; eval: (put 'with-store/maybe 'scheme-indent-function 1)
968;;; End:
diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
index 55e7b436c17..3f48b98ed44 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -40,6 +40,7 @@
40 #:autoload (guix scripts pull) (channel-commit-hyperlink) 40 #:autoload (guix scripts pull) (channel-commit-hyperlink)
41 #:use-module (guix scripts home import) 41 #:use-module (guix scripts home import)
42 #:use-module ((guix status) #:select (with-status-verbosity)) 42 #:use-module ((guix status) #:select (with-status-verbosity))
43 #:use-module ((guix build utils) #:select (mkdir-p))
43 #:use-module (guix gexp) 44 #:use-module (guix gexp)
44 #:use-module (guix monads) 45 #:use-module (guix monads)
45 #:use-module (srfi srfi-1) 46 #:use-module (srfi srfi-1)
@@ -260,15 +261,20 @@ argument list and OPTS is the option alist."
260 (apply search args)) 261 (apply search args))
261 ((import) 262 ((import)
262 (let* ((profiles (delete-duplicates 263 (let* ((profiles (delete-duplicates
263 (match (filter-map (match-lambda 264 (match (filter-map (match-lambda
264 (('profile . p) p) 265 (('profile . p) p)
265 (_ #f)) 266 (_ #f))
266 opts) 267 opts)
267 (() (list %current-profile)) 268 (() (list %current-profile))
268 (lst (reverse lst))))) 269 (lst (reverse lst)))))
269 (manifest (concatenate-manifests 270 (manifest (concatenate-manifests
270 (map profile-manifest profiles)))) 271 (map profile-manifest profiles)))
271 (import-manifest manifest (current-output-port)))) 272 (destination (match args
273 ((destination) destination)
274 (_ (leave (G_ "wrong number of arguments~%"))))))
275 (unless (file-exists? destination)
276 (mkdir-p destination))
277 (import-manifest manifest destination (current-output-port))))
272 ((describe) 278 ((describe)
273 (match (generation-number %guix-home) 279 (match (generation-number %guix-home)
274 (0 280 (0
diff --git a/guix/scripts/home/import.scm b/guix/scripts/home/import.scm
index 611f580e85f..7a7712dd968 100644
--- a/guix/scripts/home/import.scm
+++ b/guix/scripts/home/import.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> 2;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
3;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> 3;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
4;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -22,12 +23,16 @@
22 #:use-module (guix ui) 23 #:use-module (guix ui)
23 #:use-module (guix utils) 24 #:use-module (guix utils)
24 #:use-module (guix packages) 25 #:use-module (guix packages)
26 #:autoload (guix scripts package) (manifest-entry-version-prefix)
25 #:use-module (gnu packages) 27 #:use-module (gnu packages)
26 #:use-module (ice-9 match) 28 #:use-module (ice-9 match)
27 #:use-module (ice-9 pretty-print) 29 #:use-module (ice-9 pretty-print)
28 #:use-module (srfi srfi-1) 30 #:use-module (srfi srfi-1)
29 #:use-module (srfi srfi-26) 31 #:use-module (srfi srfi-26)
30 #:export (import-manifest)) 32 #:export (import-manifest
33
34 ;; For tests.
35 manifest+configuration-files->code))
31 36
32;;; Commentary: 37;;; Commentary:
33;;; 38;;;
@@ -36,200 +41,114 @@
36;;; 41;;;
37;;; Code: 42;;; Code:
38 43
39 44(define (basename+remove-dots file-name)
40(define (generate-bash-module+configuration) 45 "Remove the dot from the dotfile FILE-NAME; replace the other dots in
41 (let ((rc (string-append (getenv "HOME") "/.bashrc")) 46FILE-NAME with \"-\", and return the basename of it."
42 (profile (string-append (getenv "HOME") "/.bash_profile")) 47 (string-map (match-lambda
43 (logout (string-append (getenv "HOME") "/.bash_logout"))) 48 (#\. #\-)
44 `((gnu home services bash) 49 (c c))
45 (service home-bash-service-type 50 (let ((base (basename file-name)))
46 (home-bash-configuration 51 (if (string-prefix? "." base)
47 ,@(if (file-exists? rc) 52 (string-drop base 1)
48 `((bashrc 53 base))))
49 (list (local-file ,rc)))) 54
50 '()) 55(define (generate-bash-configuration+modules destination-directory)
51 ,@(if (file-exists? profile) 56 (define (destination-append path)
52 `((bash-profile 57 (string-append destination-directory "/" path))
53 (list (local-file ,profile)))) 58
54 '()) 59 (let ((rc (destination-append ".bashrc"))
55 ,@(if (file-exists? logout) 60 (profile (destination-append ".bash_profile"))
56 `((bash-logout 61 (logout (destination-append ".bash_logout")))
57 (list (local-file ,logout)))) 62 `((service home-bash-service-type
58 '())))))) 63 (home-bash-configuration
59 64 ,@(if (file-exists? rc)
60 65 `((bashrc
61(define %files-configurations-alist 66 (list (local-file ,rc
62 `((".bashrc" . ,generate-bash-module+configuration) 67 ,(basename+remove-dots rc)))))
63 (".bash_profile" . ,generate-bash-module+configuration) 68 '())
64 (".bash_logout" . ,generate-bash-module+configuration))) 69 ,@(if (file-exists? profile)
65 70 `((bash-profile
66(define (modules+configurations) 71 (list (local-file ,profile
67 (let ((configurations (delete-duplicates 72 ,(basename+remove-dots profile)))))
68 (filter-map (match-lambda 73 '())
69 ((file . proc) 74 ,@(if (file-exists? logout)
70 (if (file-exists? 75 `((bash-logout
71 (string-append (getenv "HOME") "/" file)) 76 (list (local-file ,logout
72 proc 77 ,(basename+remove-dots logout)))))
73 #f))) 78 '())))
74 %files-configurations-alist) 79 (guix gexp)
75 (lambda (x y) 80 (gnu home services shells))))
76 (equal? (procedure-name x) (procedure-name y)))))) 81
77 (map (lambda (proc) (proc)) configurations))) 82(define %files+configurations-alist
78 83 `((".bashrc" . ,generate-bash-configuration+modules)
79;; Based on `manifest->code' from (guix profiles) 84 (".bash_profile" . ,generate-bash-configuration+modules)
80;; MAYBE: Upstream it? 85 (".bash_logout" . ,generate-bash-configuration+modules)))
81(define* (manifest->code manifest 86
82 #:key 87(define (configurations+modules configuration-directory)
83 (entry-package-version (const "")) 88 "Return a list of procedures which when called, generate code for a home
84 (home-environment? #f)) 89service declaration. Copy configuration files to CONFIGURATION-DIRECTORY; the
85 "Return an sexp representing code to build an approximate version of 90generated service declarations will refer to those files that have been saved
86MANIFEST; the code is wrapped in a top-level 'begin' form. If 91in CONFIGURATION-DIRECTORY."
87HOME-ENVIRONMENT? is #t, return an <home-environment> definition. 92 (define configurations
88Call ENTRY-PACKAGE-VERSION to determine the version number to use in 93 (delete-duplicates
89the spec for a given entry; it can be set to 'manifest-entry-version' 94 (filter-map (match-lambda
90for fully-specified version numbers, or to some other procedure to 95 ((file . proc)
91disambiguate versions for packages for which several versions are 96 (let ((absolute-path (string-append (getenv "HOME")
92available." 97 "/" file)))
93 (define (entry-transformations entry) 98 (and (file-exists? absolute-path)
94 ;; Return the transformations that apply to ENTRY. 99 (begin
95 (assoc-ref (manifest-entry-properties entry) 'transformations)) 100 (copy-file absolute-path
96 101 (string-append
97 (define transformation-procedures 102 configuration-directory "/" file))
98 ;; List of transformation options/procedure name pairs. 103 proc)))))
99 (let loop ((entries (manifest-entries manifest)) 104 %files+configurations-alist)
100 (counter 1) 105 eq?))
101 (result '())) 106
102 (match entries 107 (map (lambda (proc) (proc configuration-directory)) configurations))
103 (() result) 108
104 ((entry . tail) 109(define (manifest+configuration-files->code manifest
105 (match (entry-transformations entry) 110 configuration-directory)
106 (#f 111 "Read MANIFEST and the user's configuration files listed in
107 (loop tail counter result)) 112%FILES+CONFIGURATIONS-ALIST, and return a 'home-environment' sexp. Copy the
108 (options 113user's files to CONFIGURATION-DIRECTORY; the generated sexp refers to them."
109 (if (assoc-ref result options) 114 (match (manifest->code manifest
110 (loop tail counter result) 115 #:entry-package-version
111 (loop tail (+ 1 counter) 116 manifest-entry-version-prefix)
112 (alist-cons options 117 (('begin ('use-modules profile-modules ...)
113 (string->symbol 118 definitions ... ('packages->manifest packages))
114 (format #f "transform~a" counter)) 119 (match (configurations+modules configuration-directory)
115 result))))))))) 120 (((services . modules) ...)
116 121 `(begin
117 (define (qualified-name entry) 122 (use-modules (gnu home)
118 ;; Return the name of ENTRY possibly with "@" followed by a version. 123 (gnu packages)
119 (match (entry-package-version entry) 124 (gnu services)
120 ("" (manifest-entry-name entry)) 125 ,@(delete-duplicates
121 (version (string-append (manifest-entry-name entry) 126 (append profile-modules (concatenate modules))))
122 "@" version)))) 127
123 128 ,@definitions
124 (if (null? transformation-procedures) 129
125 (let ((specs (map (lambda (entry) 130 (home-environment
126 (match (manifest-entry-output entry) 131 (packages ,packages)
127 ("out" (qualified-name entry)) 132 (services (list ,@services)))))))
128 (output (string-append (qualified-name entry) 133 (('begin ('specifications->manifest packages))
129 ":" output)))) 134 (match (configurations+modules configuration-directory)
130 (manifest-entries manifest)))) 135 (((services . modules) ...)
131 (if home-environment? 136 `(begin
132 (let ((modules+configurations (modules+configurations))) 137 (use-modules (gnu home)
133 `(begin 138 (gnu packages)
134 (use-modules (gnu home) 139 (gnu services)
135 (gnu packages) 140 ,@(delete-duplicates (concatenate modules)))
136 ,@(map first modules+configurations)) 141
137 ,(home-environment-template 142 (home-environment
138 #:specs specs 143 (packages (map specification->package ,packages))
139 #:services (map second modules+configurations)))) 144 (services (list ,@services)))))))))
140 `(begin
141 (use-modules (gnu packages))
142
143 (specifications->manifest
144 (list ,@specs)))))
145 (let* ((transform (lambda (options exp)
146 (if (not options)
147 exp
148 (let ((proc (assoc-ref transformation-procedures
149 options)))
150 `(,proc ,exp)))))
151 (packages (map (lambda (entry)
152 (define options
153 (entry-transformations entry))
154
155 (define name
156 (qualified-name entry))
157
158 (match (manifest-entry-output entry)
159 ("out"
160 (transform options
161 `(specification->package ,name)))
162 (output
163 `(list ,(transform
164 options
165 `(specification->package ,name))
166 ,output))))
167 (manifest-entries manifest)))
168 (transformations (map (match-lambda
169 ((options . name)
170 `(define ,name
171 (options->transformation ',options))))
172 transformation-procedures)))
173 (if home-environment?
174 (let ((modules+configurations (modules+configurations)))
175 `(begin
176 (use-modules (guix transformations)
177 (gnu home)
178 (gnu packages)
179 ,@(map first modules+configurations))
180
181 ,@transformations
182
183 ,(home-environment-template
184 #:packages packages
185 #:services (map second modules+configurations))))
186 `(begin
187 (use-modules (guix transformations)
188 (gnu packages))
189
190 ,@transformations
191
192 (packages->manifest
193 (list ,@packages)))))))
194
195(define* (home-environment-template #:key (packages #f) (specs #f) services)
196 "Return an S-exp containing a <home-environment> declaration
197containing PACKAGES, or SPECS (package specifications), and SERVICES."
198 `(home-environment
199 (packages
200 ,@(if packages
201 `((list ,@packages))
202 `((map specification->package
203 (list ,@specs)))))
204 (services (list ,@services))))
205 145
206(define* (import-manifest 146(define* (import-manifest
207 manifest 147 manifest destination-directory
208 #:optional (port (current-output-port))) 148 #:optional (port (current-output-port)))
209 "Write to PORT a <home-environment> corresponding to MANIFEST." 149 "Write to PORT a <home-environment> corresponding to MANIFEST."
210 (define (version-spec entry) 150 (match (manifest+configuration-files->code manifest
211 (let ((name (manifest-entry-name entry))) 151 destination-directory)
212 (match (map package-version (find-packages-by-name name))
213 ((_)
214 ;; A single version of NAME is available, so do not specify the
215 ;; version number, even if the available version doesn't match ENTRY.
216 "")
217 (versions
218 ;; If ENTRY uses the latest version, don't specify any version.
219 ;; Otherwise return the shortest unique version prefix. Note that
220 ;; this is based on the currently available packages, which could
221 ;; differ from the packages available in the revision that was used
222 ;; to build MANIFEST.
223 (let ((current (manifest-entry-version entry)))
224 (if (every (cut version>? current <>)
225 (delete current versions))
226 ""
227 (version-unique-prefix (manifest-entry-version entry)
228 versions)))))))
229
230 (match (manifest->code manifest
231 #:entry-package-version version-spec
232 #:home-environment? #t)
233 (('begin exp ...) 152 (('begin exp ...)
234 (format port (G_ "\ 153 (format port (G_ "\
235;; This \"home-environment\" file can be passed to 'guix home reconfigure' 154;; This \"home-environment\" file can be passed to 'guix home reconfigure'
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index a34ecdcb541..4b9c5f210d4 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -68,6 +68,7 @@
68 guix-package 68 guix-package
69 69
70 search-path-environment-variables 70 search-path-environment-variables
71 manifest-entry-version-prefix
71 72
72 transaction-upgrade-entry ;mostly for testing 73 transaction-upgrade-entry ;mostly for testing
73 74
@@ -327,31 +328,35 @@ Alternately, see @command{guix package --search-paths -p ~s}.")
327;;; Export a manifest. 328;;; Export a manifest.
328;;; 329;;;
329 330
331(define (manifest-entry-version-prefix entry)
332 "Search among all the versions of ENTRY's package that are available, and
333return the shortest unambiguous version prefix for this package. If only one
334version of ENTRY's package is available, return the empty string."
335 (let ((name (manifest-entry-name entry)))
336 (match (map package-version (find-packages-by-name name))
337 ((_)
338 ;; A single version of NAME is available, so do not specify the
339 ;; version number, even if the available version doesn't match ENTRY.
340 "")
341 (versions
342 ;; If ENTRY uses the latest version, don't specify any version.
343 ;; Otherwise return the shortest unique version prefix. Note that
344 ;; this is based on the currently available packages, which could
345 ;; differ from the packages available in the revision that was used
346 ;; to build MANIFEST.
347 (let ((current (manifest-entry-version entry)))
348 (if (every (cut version>? current <>)
349 (delete current versions))
350 ""
351 (version-unique-prefix (manifest-entry-version entry)
352 versions)))))))
353
330(define* (export-manifest manifest 354(define* (export-manifest manifest
331 #:optional (port (current-output-port))) 355 #:optional (port (current-output-port)))
332 "Write to PORT a manifest corresponding to MANIFEST." 356 "Write to PORT a manifest corresponding to MANIFEST."
333 (define (version-spec entry)
334 (let ((name (manifest-entry-name entry)))
335 (match (map package-version (find-packages-by-name name))
336 ((_)
337 ;; A single version of NAME is available, so do not specify the
338 ;; version number, even if the available version doesn't match ENTRY.
339 "")
340 (versions
341 ;; If ENTRY uses the latest version, don't specify any version.
342 ;; Otherwise return the shortest unique version prefix. Note that
343 ;; this is based on the currently available packages, which could
344 ;; differ from the packages available in the revision that was used
345 ;; to build MANIFEST.
346 (let ((current (manifest-entry-version entry)))
347 (if (every (cut version>? current <>)
348 (delete current versions))
349 ""
350 (version-unique-prefix (manifest-entry-version entry)
351 versions)))))))
352
353 (match (manifest->code manifest 357 (match (manifest->code manifest
354 #:entry-package-version version-spec) 358 #:entry-package-version
359 manifest-entry-version-prefix)
355 (('begin exp ...) 360 (('begin exp ...)
356 (format port (G_ "\ 361 (format port (G_ "\
357;; This \"manifest\" file can be passed to 'guix package -m' to reproduce 362;; This \"manifest\" file can be passed to 'guix package -m' to reproduce
diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm
new file mode 100644
index 00000000000..5749485a44f
--- /dev/null
+++ b/guix/scripts/shell.scm
@@ -0,0 +1,394 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (guix scripts shell)
20 #:use-module (guix ui)
21 #:use-module ((guix diagnostics) #:select (location))
22 #:use-module (guix scripts environment)
23 #:autoload (guix scripts build) (show-build-options-help)
24 #:autoload (guix transformations) (show-transformation-options-help)
25 #:use-module (guix scripts)
26 #:use-module (guix packages)
27 #:use-module (guix profiles)
28 #:use-module (srfi srfi-1)
29 #:use-module (srfi srfi-26)
30 #:use-module (srfi srfi-37)
31 #:use-module (srfi srfi-71)
32 #:use-module (ice-9 match)
33 #:autoload (ice-9 rdelim) (read-line)
34 #:autoload (guix base32) (bytevector->base32-string)
35 #:autoload (rnrs bytevectors) (string->utf8)
36 #:autoload (guix utils) (config-directory cache-directory)
37 #:autoload (guix describe) (current-channels)
38 #:autoload (guix channels) (channel-commit)
39 #:autoload (gcrypt hash) (sha256)
40 #:use-module ((guix build utils) #:select (mkdir-p))
41 #:use-module (guix cache)
42 #:use-module ((ice-9 ftw) #:select (scandir))
43 #:export (guix-shell))
44
45(define (show-help)
46 (display (G_ "Usage: guix shell [OPTION] PACKAGES... [-- COMMAND...]
47Build an environment that includes PACKAGES and execute COMMAND or an
48interactive shell in that environment.\n"))
49 (newline)
50
51 ;; These two options differ from 'guix environment'.
52 (display (G_ "
53 -D, --development include the development inputs of the next package"))
54 (display (G_ "
55 -f, --file=FILE create environment for the package that the code within
56 FILE evaluates to"))
57 (display (G_ "
58 -q inhibit loading of 'guix.scm' and 'manifest.scm'"))
59 (display (G_ "
60 --rebuild-cache rebuild cached environment, if any"))
61
62 (show-environment-options-help)
63 (newline)
64 (show-build-options-help)
65 (newline)
66 (show-transformation-options-help)
67 (newline)
68 (display (G_ "
69 -h, --help display this help and exit"))
70 (display (G_ "
71 -V, --version display version information and exit"))
72 (newline)
73 (show-bug-report-information))
74
75(define (tag-package-arg opts arg)
76 "Return a two-element list with the form (TAG ARG) that tags ARG with either
77'ad-hoc' in OPTS has the 'ad-hoc?' key set to #t, or 'inputs' otherwise."
78 (if (assoc-ref opts 'ad-hoc?)
79 `(ad-hoc-package ,arg)
80 `(package ,arg)))
81
82(define (ensure-ad-hoc alist)
83 (if (assq-ref alist 'ad-hoc?)
84 alist
85 `((ad-hoc? . #t) ,@alist)))
86
87(define (wrapped-option opt)
88 "Wrap OPT, a SRFI-37 option, such that its processor always adds the
89'ad-hoc?' flag to the resulting alist."
90 (option (option-names opt)
91 (option-required-arg? opt)
92 (option-optional-arg? opt)
93 (compose ensure-ad-hoc (option-processor opt))))
94
95(define %options
96 ;; Specification of the command-line options.
97 (let ((to-remove '("ad-hoc" "inherit" "load" "help" "version")))
98 (append
99 (list (option '(#\h "help") #f #f
100 (lambda args
101 (show-help)
102 (exit 0)))
103 (option '(#\V "version") #f #f
104 (lambda args
105 (show-version-and-exit "guix shell")))
106
107 (option '(#\D "development") #f #f
108 (lambda (opt name arg result)
109 ;; Temporarily remove the 'ad-hoc?' flag from result.
110 ;; The next option will put it back thanks to
111 ;; 'wrapped-option'.
112 (alist-delete 'ad-hoc? result)))
113
114 ;; For consistency with 'guix package', support '-f' rather than
115 ;; '-l' like 'guix environment' does.
116 (option '(#\f "file") #t #f
117 (lambda (opt name arg result)
118 (alist-cons 'load (tag-package-arg result arg)
119 result)))
120 (option '(#\q) #f #f
121 (lambda (opt name arg result)
122 (alist-cons 'explicit-loading? #t result)))
123 (option '("rebuild-cache") #f #f
124 (lambda (opt name arg result)
125 (alist-cons 'rebuild-cache? #t result))))
126 (filter-map (lambda (opt)
127 (and (not (any (lambda (name)
128 (member name to-remove))
129 (option-names opt)))
130 (wrapped-option opt)))
131 %environment-options))))
132
133(define %default-options
134 `((ad-hoc? . #t) ;always true
135 ,@%environment-default-options))
136
137(define (parse-args args)
138 "Parse the list of command line arguments ARGS."
139 (define (handle-argument arg result)
140 (alist-cons 'package (tag-package-arg result arg)
141 (ensure-ad-hoc result)))
142
143 ;; The '--' token is used to separate the command to run from the rest of
144 ;; the operands.
145 (let ((args command (break (cut string=? "--" <>) args)))
146 (let ((opts (parse-command-line args %options (list %default-options)
147 #:argument-handler handle-argument)))
148 (options-with-caching
149 (auto-detect-manifest
150 (match command
151 (() opts)
152 (("--") opts)
153 (("--" command ...) (alist-cons 'exec command opts))))))))
154
155(define (find-file-in-parent-directories candidates)
156 "Find one of CANDIDATES in the current directory or one of its ancestors."
157 (define start (getcwd))
158 (define device (stat:dev (stat start)))
159
160 (let loop ((directory start))
161 (let ((stat (stat directory)))
162 (and (= (stat:uid stat) (getuid))
163 (= (stat:dev stat) device)
164 (or (any (lambda (candidate)
165 (let ((candidate (string-append directory "/" candidate)))
166 (and (file-exists? candidate) candidate)))
167 candidates)
168 (and (not (string=? directory "/"))
169 (loop (dirname directory)))))))) ;lexical ".." resolution
170
171(define (authorized-directory-file)
172 "Return the name of the file listing directories for which 'guix shell' may
173automatically load 'guix.scm' or 'manifest.scm' files."
174 (string-append (config-directory) "/shell-authorized-directories"))
175
176(define (authorized-shell-directory? directory)
177 "Return true if DIRECTORY is among the authorized directories for automatic
178loading. The list of authorized directories is read from
179'authorized-directory-file'; each line must be either: an absolute file name,
180a hash-prefixed comment, or a blank line."
181 (catch 'system-error
182 (lambda ()
183 (call-with-input-file (authorized-directory-file)
184 (lambda (port)
185 (let loop ()
186 (match (read-line port)
187 ((? eof-object?) #f)
188 ((= string-trim line)
189 (cond ((string-prefix? "#" line) ;comment
190 (loop))
191 ((string-prefix? "/" line) ;absolute file name
192 (or (string=? line directory)
193 (loop)))
194 ((string-null? (string-trim-right line)) ;blank line
195 (loop))
196 (else ;bogus line
197 (let ((loc (location (port-filename port)
198 (port-line port)
199 (port-column port))))
200 (warning loc (G_ "ignoring invalid file name: '~a'~%")
201 line))))))))))
202 (const #f)))
203
204(define (options-with-caching opts)
205 "If OPTS contains exactly one 'load' or one 'manifest' key, automatically
206add a 'profile' key (when a profile for that file is already in cache) or a
207'gc-root' key (to add the profile to cache)."
208 (define (single-file-for-caching opts)
209 (let loop ((opts opts)
210 (file #f))
211 (match opts
212 (() file)
213 ((('package . _) . _) #f)
214 ((('load . ('package candidate)) . rest)
215 (and (not file) (loop rest candidate)))
216 ((('manifest . candidate) . rest)
217 (and (not file) (loop rest candidate)))
218 ((('expression . _) . _) #f)
219 ((_ . rest) (loop rest file)))))
220
221 ;; Check whether there's a single 'load' or 'manifest' option. When that is
222 ;; the case, arrange to automatically cache the resulting profile.
223 (match (single-file-for-caching opts)
224 (#f opts)
225 (file
226 (let* ((root (profile-cached-gc-root file))
227 (stat (and root (false-if-exception (lstat root)))))
228 (if (and (not (assoc-ref opts 'rebuild-cache?))
229 stat
230 (<= (stat:mtime ((@ (guile) stat) file))
231 (stat:mtime stat)))
232 (let ((now (current-time)))
233 ;; Update the atime on ROOT to reflect usage.
234 (utime root
235 now (stat:mtime stat) 0 (stat:mtimensec stat)
236 AT_SYMLINK_NOFOLLOW)
237 (alist-cons 'profile root
238 (remove (match-lambda
239 (('load . _) #t)
240 (('manifest . _) #t)
241 (_ #f))
242 opts))) ;load right away
243 (if (and root (not (assq-ref opts 'gc-root)))
244 (begin
245 (if stat
246 (delete-file root)
247 (mkdir-p (dirname root)))
248 (alist-cons 'gc-root root opts))
249 opts))))))
250
251(define (auto-detect-manifest opts)
252 "If OPTS do not specify packages or a manifest, load a \"guix.scm\" or
253\"manifest.scm\" file from the current directory or one of its ancestors.
254Return the modified OPTS."
255 (define (options-contain-payload? opts)
256 (match opts
257 (() #f)
258 ((('package . _) . _) #t)
259 ((('load . _) . _) #t)
260 ((('manifest . _) . _) #t)
261 ((('expression . _) . _) #t)
262 ((_ . rest) (options-contain-payload? rest))))
263
264 (define interactive?
265 (not (assoc-ref opts 'exec)))
266
267 (define disallow-implicit-load?
268 (assoc-ref opts 'explicit-loading?))
269
270 (if (or (not interactive?)
271 disallow-implicit-load?
272 (options-contain-payload? opts))
273 opts
274 (match (find-file-in-parent-directories '("manifest.scm" "guix.scm"))
275 (#f
276 (warning (G_ "no packages specified; creating an empty environment~%"))
277 opts)
278 (file
279 (if (authorized-shell-directory? (dirname file))
280 (begin
281 (info (G_ "loading environment from '~a'...~%") file)
282 (match (basename file)
283 ("guix.scm" (alist-cons 'load `(package ,file) opts))
284 ("manifest.scm" (alist-cons 'manifest file opts))))
285 (begin
286 (report-error
287 (G_ "not loading '~a' because not authorized to do so~%")
288 file)
289 (display-hint (format #f (G_ "To allow automatic loading of
290@file{~a} when running @command{guix shell}, you must explicitly authorize its
291directory, like so:
292
293@example
294echo ~a >> ~a
295@end example\n")
296 file
297 (dirname file)
298 (authorized-directory-file)))
299 (exit 1)))))))
300
301
302;;;
303;;; Profile cache.
304;;;
305
306(define %profile-cache-directory
307 ;; Directory where profiles created by 'guix shell' alone (without extra
308 ;; options) are cached.
309 (make-parameter (string-append (cache-directory #:ensure? #f)
310 "/profiles")))
311
312(define (profile-cache-key file)
313 "Return the cache key for the profile corresponding to FILE, a 'guix.scm' or
314'manifest.scm' file, or #f if we lack channel information."
315 (match (current-channels)
316 (() #f)
317 (((= channel-commit commits) ...)
318 (let ((stat (stat file)))
319 (bytevector->base32-string
320 ;; Since FILE is not canonicalized, only include the device/inode
321 ;; numbers. XXX: In some rare cases involving Btrfs and NFS, this can
322 ;; be insufficient: <https://lwn.net/Articles/866582/>.
323 (sha256 (string->utf8
324 (string-append (string-join commits) ":"
325 (number->string (stat:dev stat)) ":"
326 (number->string (stat:ino stat))))))))))
327
328(define (profile-cached-gc-root file)
329 "Return the cached GC root for FILE, a 'guix.scm' or 'manifest.scm' file, or
330#f if we lack information to cache it."
331 (match (profile-cache-key file)
332 (#f #f)
333 (key (string-append (%profile-cache-directory) "/" key))))
334
335
336;;;
337;;; One-time hints.
338;;;
339
340(define (hint-directory)
341 "Return the directory name where previously given hints are recorded."
342 (string-append (cache-directory #:ensure? #f) "/hints"))
343
344(define (hint-file hint)
345 "Return the name of the file that marks HINT as already printed."
346 (string-append (hint-directory) "/" (symbol->string hint)))
347
348(define (record-hint hint)
349 "Mark HINT as already given."
350 (let ((file (hint-file hint)))
351 (mkdir-p (dirname file))
352 (close-fdes (open-fdes file (logior O_CREAT O_WRONLY)))))
353
354(define (hint-given? hint)
355 "Return true if HINT was already given."
356 (file-exists? (hint-file hint)))
357
358
359(define-command (guix-shell . args)
360 (category development)
361 (synopsis "spawn one-off software environments")
362
363 (define (cache-entries directory)
364 (filter-map (match-lambda
365 ((or "." "..") #f)
366 (file (string-append directory "/" file)))
367 (or (scandir directory) '())))
368
369 (define* (entry-expiration file)
370 ;; Return the time at which FILE, a cached profile, is considered expired.
371 (match (false-if-exception (lstat file))
372 (#f 0) ;FILE may have been deleted in the meantime
373 (st (+ (stat:atime st) (* 60 60 24 7)))))
374
375 (define opts
376 (parse-args args))
377
378 (define interactive?
379 (not (assoc-ref opts 'exec)))
380
381 (if (assoc-ref opts 'check?)
382 (record-hint 'shell-check)
383 (when (and interactive?
384 (not (hint-given? 'shell-check))
385 (not (assoc-ref opts 'container?))
386 (not (assoc-ref opts 'search-paths)))
387 (display-hint (G_ "Consider passing the @option{--check} option once
388to make sure your shell does not clobber environment variables."))) )
389
390 (let ((result (guix-environment* opts)))
391 (maybe-remove-expired-cache-entries (%profile-cache-directory)
392 cache-entries
393 #:entry-expiration entry-expiration)
394 result))
diff --git a/guix/store.scm b/guix/store.scm
index 89a719bcfc5..7388953d15a 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1349,11 +1349,14 @@ on the build output of a previous derivation."
1349 (things unresolved-things) 1349 (things unresolved-things)
1350 (continuation unresolved-continuation)) 1350 (continuation unresolved-continuation))
1351 1351
1352(define (build-accumulator continue store things mode) 1352(define (build-accumulator expected-store)
1353 "This build handler accumulates THINGS and returns an <unresolved> object." 1353 "Return a build handler that accumulates THINGS and returns an <unresolved>
1354 (if (= mode (build-mode normal)) 1354object, only for build requests on EXPECTED-STORE."
1355 (unresolved things continue) 1355 (lambda (continue store things mode)
1356 (continue #t))) 1356 (if (and (eq? store expected-store)
1357 (= mode (build-mode normal)))
1358 (unresolved things continue)
1359 (continue #t))))
1357 1360
1358(define* (map/accumulate-builds store proc lst 1361(define* (map/accumulate-builds store proc lst
1359 #:key (cutoff 30)) 1362 #:key (cutoff 30))
@@ -1366,13 +1369,16 @@ CUTOFF is the threshold above which we stop accumulating unresolved nodes."
1366 ;; stumbling upon the same .drv build requests with many incoming edges. 1369 ;; stumbling upon the same .drv build requests with many incoming edges.
1367 ;; See <https://bugs.gnu.org/49439>. 1370 ;; See <https://bugs.gnu.org/49439>.
1368 1371
1372 (define accumulator
1373 (build-accumulator store))
1374
1369 (define-values (result rest) 1375 (define-values (result rest)
1370 (let loop ((lst lst) 1376 (let loop ((lst lst)
1371 (result '()) 1377 (result '())
1372 (unresolved 0)) 1378 (unresolved 0))
1373 (match lst 1379 (match lst
1374 ((head . tail) 1380 ((head . tail)
1375 (match (with-build-handler build-accumulator 1381 (match (with-build-handler accumulator
1376 (proc head)) 1382 (proc head))
1377 ((? unresolved? obj) 1383 ((? unresolved? obj)
1378 (if (>= unresolved cutoff) 1384 (if (>= unresolved cutoff)
diff --git a/guix/ui.scm b/guix/ui.scm
index 1428c254b30..b01bb3d587f 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -1431,10 +1431,22 @@ converted to a space; sequences of more than one line break are preserved."
1431 (with-fluids ((%default-port-encoding "UTF-8")) 1431 (with-fluids ((%default-port-encoding "UTF-8"))
1432 (stexi->plain-text (texi-fragment->stexi str)))) 1432 (stexi->plain-text (texi-fragment->stexi str))))
1433 1433
1434(define (texi->plain-text* package str)
1435 "Same as 'texi->plain-text', but gracefully handle Texinfo errors."
1436 (catch 'parser-error
1437 (lambda ()
1438 (texi->plain-text str))
1439 (lambda args
1440 (warning (package-location package)
1441 (G_ "~a: invalid Texinfo markup~%")
1442 (package-full-name package))
1443 str)))
1444
1434(define (package-field-string package field-accessor) 1445(define (package-field-string package field-accessor)
1435 "Return a plain-text representation of PACKAGE field." 1446 "Return a plain-text representation of PACKAGE field."
1436 (and=> (field-accessor package) 1447 (and=> (field-accessor package)
1437 (compose texi->plain-text P_))) 1448 (lambda (str)
1449 (texi->plain-text* package (P_ str)))))
1438 1450
1439(define (package-description-string package) 1451(define (package-description-string package)
1440 "Return a plain-text representation of PACKAGE description field." 1452 "Return a plain-text representation of PACKAGE description field."
@@ -1555,7 +1567,8 @@ HYPERLINKS? is true, emit hyperlink escape sequences when appropriate."
1555 (parameterize ((%text-width width*)) 1567 (parameterize ((%text-width width*))
1556 ;; Call 'texi->plain-text' on the concatenated string to account 1568 ;; Call 'texi->plain-text' on the concatenated string to account
1557 ;; for the width of "description:" in paragraph filling. 1569 ;; for the width of "description:" in paragraph filling.
1558 (texi->plain-text 1570 (texi->plain-text*
1571 p
1559 (string-append "description: " 1572 (string-append "description: "
1560 (or (and=> (package-description p) P_) 1573 (or (and=> (package-description p) P_)
1561 "")))) 1574 ""))))
@@ -2085,10 +2098,17 @@ contain a 'define-command' form."
2085 (lambda (command) 2098 (lambda (command)
2086 (eq? category (command-category command)))) 2099 (eq? category (command-category command))))
2087 2100
2088 (format #t (G_ "Usage: guix COMMAND ARGS... 2101 (display (G_ "Usage: guix OPTION | COMMAND ARGS...
2089Run COMMAND with ARGS.\n")) 2102Run COMMAND with ARGS, if given.\n"))
2103
2104 (display (G_ "
2105 -h, --help display this helpful text again and exit"))
2106 (display (G_ "
2107 -V, --version display version and copyright information and exit"))
2108 (newline)
2109
2090 (newline) 2110 (newline)
2091 (format #t (G_ "COMMAND must be one of the sub-commands listed below:\n")) 2111 (display (G_ "COMMAND must be one of the sub-commands listed below:\n"))
2092 2112
2093 (let ((commands (commands)) 2113 (let ((commands (commands))
2094 (categories (module-ref (resolve-interface '(guix scripts)) 2114 (categories (module-ref (resolve-interface '(guix scripts))
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index d517d1ee0ad..a8ce6c3e8fa 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -140,6 +140,7 @@ guix/scripts/offload.scm
140guix/scripts/perform-download.scm 140guix/scripts/perform-download.scm
141guix/scripts/refresh.scm 141guix/scripts/refresh.scm
142guix/scripts/repl.scm 142guix/scripts/repl.scm
143guix/scripts/shell.scm
143guix/scripts/style.scm 144guix/scripts/style.scm
144guix/scripts/system/reconfigure.scm 145guix/scripts/system/reconfigure.scm
145nix/nix-daemon/guix-daemon.cc 146nix/nix-daemon/guix-daemon.cc
diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh
index f2d15c8d0c7..2e238c501d6 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -44,6 +44,14 @@ else
44 test $? = 42 44 test $? = 42
45fi 45fi
46 46
47# Try '--root' and '--profile'.
48root="$tmpdir/root"
49guix environment -C --ad-hoc --bootstrap guile-bootstrap -r "$root" -- guile --version
50guix environment -C -p "$root" --bootstrap -- guile --version
51path1=$(guix environment -C -p "$root" --bootstrap -- guile -c '(display (getenv "PATH"))')
52path2=$(guix environment -C --ad-hoc --bootstrap guile-bootstrap -- guile -c '(display (getenv "PATH"))')
53test "$path1" = "$path2"
54
47# Make sure "localhost" resolves. 55# Make sure "localhost" resolves.
48guix environment --container --ad-hoc --bootstrap guile-bootstrap \ 56guix environment --container --ad-hoc --bootstrap guile-bootstrap \
49 -- guile -c '(exit (pair? (getaddrinfo "localhost" "80")))' 57 -- guile -c '(exit (pair? (getaddrinfo "localhost" "80")))'
diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh
index fe2430b6589..95fe95b4371 100644
--- a/tests/guix-environment.sh
+++ b/tests/guix-environment.sh
@@ -119,6 +119,13 @@ test `readlink "$gcroot"` = "$expected"
119guix environment --bootstrap -r "$gcroot" --ad-hoc guile-bootstrap \ 119guix environment --bootstrap -r "$gcroot" --ad-hoc guile-bootstrap \
120 -- guile -c 1 120 -- guile -c 1
121test `readlink "$gcroot"` = "$expected" 121test `readlink "$gcroot"` = "$expected"
122
123# Make sure '-p' works as expected.
124test $(guix environment -p "$gcroot" -- "$SHELL" -c 'echo $GUIX_ENVIRONMENT') = "$expected"
125paths1="$(guix environment -p "$gcroot" --search-paths)"
126paths2="$(guix environment --bootstrap --ad-hoc guile-bootstrap --search-paths)"
127test "$paths1" = "$paths2"
128
122rm "$gcroot" 129rm "$gcroot"
123 130
124# Try '-r' with a relative file name. 131# Try '-r' with a relative file name.
diff --git a/tests/guix-shell.sh b/tests/guix-shell.sh
new file mode 100644
index 00000000000..3bdf625189c
--- /dev/null
+++ b/tests/guix-shell.sh
@@ -0,0 +1,102 @@
1# GNU Guix --- Functional package management for GNU
2# Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
3#
4# This file is part of GNU Guix.
5#
6# GNU Guix is free software; you can redistribute it and/or modify it
7# under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 3 of the License, or (at
9# your option) any later version.
10#
11# GNU Guix is distributed in the hope that it will be useful, but
12# WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19#
20# Test the 'guix shell' alias.
21#
22
23guix shell --version
24
25configdir="t-guix-shell-config-$$"
26tmpdir="t-guix-shell-$$"
27trap 'rm -r "$tmpdir" "$configdir"' EXIT
28mkdir "$tmpdir" "$configdir" "$configdir/guix"
29
30XDG_CONFIG_HOME="$(realpath $configdir)"
31export XDG_CONFIG_HOME
32
33guix shell --bootstrap --pure guile-bootstrap -- guile --version
34
35# '--ad-hoc' is a thing of the past.
36! guix shell --ad-hoc guile-bootstrap
37
38# Ignoring unauthorized files.
39cat > "$tmpdir/guix.scm" <<EOF
40This is a broken guix.scm file.
41EOF
42! (cd "$tmpdir"; SHELL="$(type -P true)" guix shell --bootstrap 2> "stderr")
43grep "not authorized" "$tmpdir/stderr"
44rm "$tmpdir/stderr"
45
46# Authorize the directory.
47echo "$(realpath "$tmpdir")" > "$configdir/guix/shell-authorized-directories"
48
49# Ignoring 'manifest.scm' and 'guix.scm' in non-interactive use.
50(cd "$tmpdir"; guix shell --bootstrap -- true)
51mv "$tmpdir/guix.scm" "$tmpdir/manifest.scm"
52(cd "$tmpdir"; guix shell --bootstrap -- true)
53rm "$tmpdir/manifest.scm"
54
55# Honoring the local 'manifest.scm' file.
56cat > "$tmpdir/manifest.scm" <<EOF
57(specifications->manifest '("guile-bootstrap"))
58EOF
59cat > "$tmpdir/fake-shell.sh" <<EOF
60#!$SHELL
61# This fake shell allows us to test interactive use.
62exec echo "\$GUIX_ENVIRONMENT"
63EOF
64chmod +x "$tmpdir/fake-shell.sh"
65profile1="$(cd "$tmpdir"; SHELL="$(realpath fake-shell.sh)" guix shell --bootstrap)"
66profile2="$(guix shell --bootstrap guile-bootstrap -- "$SHELL" -c 'echo $GUIX_ENVIRONMENT')"
67test -n "$profile1"
68test "$profile1" = "$profile2"
69rm "$tmpdir/manifest.scm"
70
71# Do not read manifest when passed '-q'.
72echo "Broken manifest." > "$tmpdir/manifest.scm"
73(cd "$tmpdir"; SHELL="$(realpath fake-shell.sh)" guix shell --bootstrap -q)
74rm "$tmpdir/manifest.scm"
75
76if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
77then
78 # Compute the build environment for the initial GNU Make.
79 guix shell --bootstrap --no-substitutes --search-paths --pure \
80 -D -e '(@ (guix tests) gnu-make-for-tests)' > "$tmpdir/a"
81
82 # Make sure bootstrap binaries are in the profile.
83 profile=`grep "^export PATH" "$tmpdir/a" | sed -r 's|^.*="(.*)/bin"|\1|'`
84
85 # Make sure the bootstrap binaries are all listed where they belong.
86 grep -E "^export PATH=\"$profile/bin\"" "$tmpdir/a"
87 grep -E "^export CPATH=\"$profile/include\"" "$tmpdir/a"
88 grep -E "^export LIBRARY_PATH=\"$profile/lib\"" "$tmpdir/a"
89 for dep in bootstrap-binaries-0 gcc-bootstrap-0 glibc-bootstrap-0
90 do
91 guix gc --references "$profile" | grep "$dep"
92 done
93
94 # 'make-boot0' itself must not be listed.
95 ! guix gc --references "$profile" | grep make-boot0
96
97 # Honoring the local 'guix.scm' file.
98 echo '(@ (guix tests) gnu-make-for-tests)' > "$tmpdir/guix.scm"
99 (cd "$tmpdir"; guix shell --bootstrap --search-paths --pure > "b")
100 cmp "$tmpdir/a" "$tmpdir/b"
101 rm "$tmpdir/guix.scm"
102fi
diff --git a/tests/home-import.scm b/tests/home-import.scm
new file mode 100644
index 00000000000..abd3cec43db
--- /dev/null
+++ b/tests/home-import.scm
@@ -0,0 +1,187 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (test-home-import)
20 #:use-module (guix scripts home import)
21 #:use-module (guix utils)
22 #:use-module (guix build utils)
23 #:use-module (guix packages)
24 #:use-module (ice-9 match)
25 #:use-module ((guix profiles) #:hide (manifest->code))
26 #:use-module ((guix build syscalls) #:select (mkdtemp!))
27 #:use-module ((guix scripts package)
28 #:select (manifest-entry-version-prefix))
29 #:use-module (gnu packages)
30 #:use-module (srfi srfi-1)
31 #:use-module (srfi srfi-26)
32 #:use-module (srfi srfi-64))
33
34;; Test the (guix scripts home import) tools.
35
36(test-begin "home-import")
37
38;; Example manifest entries.
39
40(define guile-2.0.9
41 (manifest-entry
42 (name "guile")
43 (version "2.0.9")
44 (item "/gnu/store/...")))
45
46(define glibc
47 (manifest-entry
48 (name "glibc")
49 (version "2.19")
50 (item "/gnu/store/...")))
51
52(define gcc
53 (manifest-entry
54 (name "gcc")
55 (version "10.3.0")
56 (item "/gnu/store/...")))
57
58;; Helpers for checking and generating home environments.
59
60(define %destination-directory "/tmp/guix-config")
61(mkdir-p %destination-directory)
62
63(define %temporary-home-directory (mkdtemp! "/tmp/guix-home-import.XXXXXX"))
64
65(define-syntax-rule (define-home-environment-matcher name pattern)
66 (define (name obj)
67 (match obj
68 (pattern #t)
69 (x (pk 'fail x #f)))))
70
71(define (create-temporary-home files-alist)
72 "Create a temporary home directory in '%temporary-home-directory'.
73FILES-ALIST is an association list of files and the content of the
74corresponding file."
75 (define (create-file file content)
76 (let ((absolute-path (string-append %temporary-home-directory "/" file)))
77 (unless (file-exists? absolute-path)
78 (mkdir-p (dirname absolute-path)))
79 (call-with-output-file absolute-path
80 (cut display content <>))))
81
82 (for-each (match-lambda
83 ((file . content) (create-file file content)))
84 files-alist))
85
86(define (eval-test-with-home-environment files-alist manifest matcher)
87 (create-temporary-home files-alist)
88 (setenv "HOME" %temporary-home-directory)
89 (mkdir-p %temporary-home-directory)
90 (let* ((home-environment (manifest+configuration-files->code
91 manifest %destination-directory))
92 (result (matcher home-environment)))
93 (delete-file-recursively %temporary-home-directory)
94 result))
95
96(define-home-environment-matcher match-home-environment-no-services
97 ('begin
98 ('use-modules
99 ('gnu 'home)
100 ('gnu 'packages)
101 ('gnu 'services))
102 ('home-environment
103 ('packages
104 ('map 'specification->package
105 ('list "guile@2.0.9" "gcc" "glibc@2.19")))
106 ('services
107 ('list)))))
108
109(define-home-environment-matcher match-home-environment-transformations
110 ('begin
111 ('use-modules
112 ('gnu 'home)
113 ('gnu 'packages)
114 ('gnu 'services)
115 ('guix 'transformations))
116
117 ('define transform ('options->transformation _))
118 ('home-environment
119 ('packages
120 ('list (transform ('specification->package "guile@2.0.9"))
121 ('specification->package "gcc")
122 ('specification->package "glibc@2.19")))
123 ('services ('list)))))
124
125(define-home-environment-matcher match-home-environment-no-services-nor-packages
126 ('begin
127 ('use-modules
128 ('gnu 'home)
129 ('gnu 'packages)
130 ('gnu 'services))
131 ('home-environment
132 ('packages
133 ('map 'specification->package
134 ('list)))
135 ('services
136 ('list)))))
137
138(define-home-environment-matcher match-home-environment-bash-service
139 ('begin
140 ('use-modules
141 ('gnu 'home)
142 ('gnu 'packages)
143 ('gnu 'services)
144 ('guix 'gexp)
145 ('gnu 'home 'services 'shells))
146 ('home-environment
147 ('packages
148 ('map 'specification->package
149 ('list)))
150 ('services
151 ('list ('service
152 'home-bash-service-type
153 ('home-bash-configuration
154 ('bashrc
155 ('list ('local-file "/tmp/guix-config/.bashrc"
156 "bashrc"))))))))))
157
158
159(test-assert "manifest->code: No services"
160 (eval-test-with-home-environment
161 '()
162 (make-manifest (list guile-2.0.9 gcc glibc))
163 match-home-environment-no-services))
164
165(test-assert "manifest->code: No services, package transformations"
166 (eval-test-with-home-environment
167 '()
168 (make-manifest (list (manifest-entry
169 (inherit guile-2.0.9)
170 (properties `((transformations
171 . ((foo . "bar"))))))
172 gcc glibc))
173 match-home-environment-transformations))
174
175(test-assert "manifest->code: No packages nor services"
176 (eval-test-with-home-environment
177 '()
178 (make-manifest '())
179 match-home-environment-no-services-nor-packages))
180
181(test-assert "manifest->code: Bash service"
182 (eval-test-with-home-environment
183 '((".bashrc" . "echo 'hello guix'"))
184 (make-manifest '())
185 match-home-environment-bash-service))
186
187(test-end "home-import")
diff --git a/tests/lint.scm b/tests/lint.scm
index ddef50b98bd..a2e9699d5aa 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -177,6 +177,20 @@
177 (description "Whitespace. ")))) 177 (description "Whitespace. "))))
178 (check-description-style pkg)))) 178 (check-description-style pkg))))
179 179
180(test-equal "description: pluralized 'This package'"
181 "description contains typo 'This packages', should be 'This package'"
182 (single-lint-warning-message
183 (let ((pkg (dummy-package "x"
184 (description "This packages is a typo."))))
185 (check-description-style pkg))))
186
187(test-equal "description: grammar 'allows to'"
188 "description contains typo 'allows to'"
189 (single-lint-warning-message
190 (let ((pkg (dummy-package "x"
191 (description "This package allows to do stuff."))))
192 (check-description-style pkg))))
193
180(test-equal "synopsis: not a string" 194(test-equal "synopsis: not a string"
181 "invalid synopsis: #f" 195 "invalid synopsis: #f"
182 (single-lint-warning-message 196 (single-lint-warning-message
diff --git a/tests/packages.scm b/tests/packages.scm
index a9494b5c0eb..3506f94f918 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -358,6 +358,20 @@
358 (package-transitive-supported-systems d) 358 (package-transitive-supported-systems d)
359 (package-transitive-supported-systems e)))) 359 (package-transitive-supported-systems e))))
360 360
361(test-assert "package-development-inputs"
362 ;; Note: Due to propagated inputs, 'package-development-inputs' returns a
363 ;; couple more inputs, such as 'linux-libre-headers'.
364 (lset<= equal?
365 `(("source" ,(package-source hello)) ,@(standard-packages))
366 (package-development-inputs hello)))
367
368(test-assert "package-development-inputs, cross-compilation"
369 (lset<= equal?
370 `(("source" ,(package-source hello))
371 ,@(standard-cross-packages "mips64el-linux-gnu" 'host)
372 ,@(standard-cross-packages "mips64el-linux-gnu" 'target))
373 (package-development-inputs hello #:target "mips64el-linux-gnu")))
374
361(test-assert "package-closure" 375(test-assert "package-closure"
362 (let-syntax ((dummy-package/no-implicit 376 (let-syntax ((dummy-package/no-implicit
363 (syntax-rules () 377 (syntax-rules ()
diff --git a/tests/profiles.scm b/tests/profiles.scm
index 06a03872213..cac5b733471 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -265,6 +265,13 @@
265 (manifest-transaction-removal-candidate? guile-2.0.9 t) 265 (manifest-transaction-removal-candidate? guile-2.0.9 t)
266 (null? install) (null? downgrade) (null? upgrade))))) 266 (null? install) (null? downgrade) (null? upgrade)))))
267 267
268(test-assert "package->development-manifest"
269 (let ((manifest (package->development-manifest packages:hello)))
270 (every (lambda (name)
271 (manifest-installed? manifest
272 (manifest-pattern (name name))))
273 '("gcc" "binutils" "glibc" "coreutils" "grep" "sed"))))
274
268(test-assertm "profile-derivation" 275(test-assertm "profile-derivation"
269 (mlet* %store-monad 276 (mlet* %store-monad
270 ((entry -> (package->manifest-entry %bootstrap-guile)) 277 ((entry -> (package->manifest-entry %bootstrap-guile))
diff --git a/tests/store.scm b/tests/store.scm
index d895a328a47..7fc29884765 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -490,6 +490,34 @@
490 (equal? (map derivation-file-name (drop d 16)) batch3) 490 (equal? (map derivation-file-name (drop d 16)) batch3)
491 lst))))) 491 lst)))))
492 492
493(test-equal "map/accumulate-builds and different store"
494 '(d2) ;see <https://issues.guix.gnu.org/46756>
495 (let* ((b (add-text-to-store %store "build" "echo $foo > $out" '()))
496 (s (add-to-store %store "bash" #t "sha256"
497 (search-bootstrap-binary "bash"
498 (%current-system))))
499 (d1 (derivation %store "first"
500 s `("-e" ,b)
501 #:env-vars `(("foo" . ,(random-text)))
502 #:sources (list b s)))
503 (d2 (derivation %store "second"
504 s `("-e" ,b)
505 #:env-vars `(("foo" . ,(random-text))
506 ("bar" . "baz"))
507 #:sources (list b s))))
508 (with-store alternate-store
509 (with-build-handler (lambda (continue store things mode)
510 ;; If this handler is called, it means that
511 ;; 'map/accumulate-builds' triggered a build,
512 ;; which it shouldn't since the inner
513 ;; 'build-derivations' call is for another store.
514 'failed)
515 (map/accumulate-builds %store
516 (lambda (drv)
517 (build-derivations alternate-store (list d2))
518 'd2)
519 (list d1))))))
520
493(test-assert "mapm/accumulate-builds" 521(test-assert "mapm/accumulate-builds"
494 (let* ((d1 (run-with-store %store 522 (let* ((d1 (run-with-store %store
495 (gexp->derivation "foo" #~(mkdir #$output)))) 523 (gexp->derivation "foo" #~(mkdir #$output))))
diff --git a/tests/syscalls.scm b/tests/syscalls.scm
index 706dd4177fc..c9e011f4537 100644
--- a/tests/syscalls.scm
+++ b/tests/syscalls.scm
@@ -26,6 +26,7 @@
26 #:use-module (srfi srfi-1) 26 #:use-module (srfi srfi-1)
27 #:use-module (srfi srfi-26) 27 #:use-module (srfi srfi-26)
28 #:use-module (srfi srfi-64) 28 #:use-module (srfi srfi-64)
29 #:use-module (srfi srfi-71)
29 #:use-module (system foreign) 30 #:use-module (system foreign)
30 #:use-module ((ice-9 ftw) #:select (scandir)) 31 #:use-module ((ice-9 ftw) #:select (scandir))
31 #:use-module (ice-9 match)) 32 #:use-module (ice-9 match))
@@ -582,6 +583,40 @@
582(test-assert "terminal-rows" 583(test-assert "terminal-rows"
583 (> (terminal-rows) 0)) 584 (> (terminal-rows) 0))
584 585
586(test-assert "openpty"
587 (let ((head inferior (openpty)))
588 (and (integer? head) (integer? inferior)
589 (let ((port (fdopen inferior "r+0")))
590 (and (isatty? port)
591 (begin
592 (close-port port)
593 (close-fdes head)
594 #t))))))
595
596(test-equal "openpty + login-tty"
597 '(hello world)
598 (let ((head inferior (openpty)))
599 (match (primitive-fork)
600 (0
601 (dynamic-wind
602 (const #t)
603 (lambda ()
604 (setvbuf (current-input-port) 'none)
605 (close-fdes head)
606 (login-tty inferior)
607 (write (read))
608 (read)) ;this gets EIO when HEAD is closed
609 (lambda ()
610 (primitive-_exit 42))))
611 (pid
612 (close-fdes inferior)
613 (let ((head (fdopen head "r+0")))
614 (write '(hello world) head)
615 (let ((result (read head)))
616 (close-port head)
617 (waitpid pid)
618 result))))))
619
585(test-assert "utmpx-entries" 620(test-assert "utmpx-entries"
586 (match (utmpx-entries) 621 (match (utmpx-entries)
587 (((? utmpx? entries) ...) 622 (((? utmpx? entries) ...)