aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2023-06-24 21:39:09 +0200
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2023-06-24 21:39:09 +0200
commitda24d067d0954cc8f8d75fa9099ad6d8a01e1098 (patch)
treef287391c8ebbb15df5890d6b5911128408ff438e
parent909788c0aebd8098084c009afa98d1209c9ec869 (diff)
parentf25529b08e356f89ca7cecc44295085531a8faba (diff)
downloadguix-da24d067d0954cc8f8d75fa9099ad6d8a01e1098.tar
guix-da24d067d0954cc8f8d75fa9099ad6d8a01e1098.tar.gz
Merge branch 'master' into gnome-team
-rw-r--r--.guix-authorizations2
-rw-r--r--Makefile.am2
-rw-r--r--doc/contributing.texi156
-rw-r--r--doc/guix.texi680
-rw-r--r--etc/news.scm49
-rw-r--r--gnu/bootloader/u-boot.scm17
-rw-r--r--gnu/build/image.scm11
-rw-r--r--gnu/home/services/desktop.scm12
-rw-r--r--gnu/home/services/mcron.scm8
-rw-r--r--gnu/home/services/pm.scm8
-rw-r--r--gnu/home/services/shepherd.scm9
-rw-r--r--gnu/home/services/ssh.scm124
-rw-r--r--gnu/home/services/xdg.scm36
-rw-r--r--gnu/local.mk12
-rw-r--r--gnu/packages/acl.scm8
-rw-r--r--gnu/packages/admin.scm25
-rw-r--r--gnu/packages/animation.scm5
-rw-r--r--gnu/packages/astronomy.scm596
-rw-r--r--gnu/packages/attr.scm7
-rw-r--r--gnu/packages/audio.scm12
-rw-r--r--gnu/packages/authentication.scm25
-rw-r--r--gnu/packages/base.scm44
-rw-r--r--gnu/packages/bioinformatics.scm111
-rw-r--r--gnu/packages/build-tools.scm20
-rw-r--r--gnu/packages/c.scm42
-rw-r--r--gnu/packages/calendar.scm21
-rw-r--r--gnu/packages/ci.scm2
-rw-r--r--gnu/packages/cmake.scm3
-rw-r--r--gnu/packages/commencement.scm12
-rw-r--r--gnu/packages/configuration-management.scm2
-rw-r--r--gnu/packages/containers.scm80
-rw-r--r--gnu/packages/cpp.scm9
-rw-r--r--gnu/packages/cran.scm147
-rw-r--r--gnu/packages/crates-io.scm34
-rw-r--r--gnu/packages/crypto.scm69
-rw-r--r--gnu/packages/databases.scm21
-rw-r--r--gnu/packages/disk.scm44
-rw-r--r--gnu/packages/docker.scm29
-rw-r--r--gnu/packages/documentation.scm4
-rw-r--r--gnu/packages/education.scm12
-rw-r--r--gnu/packages/emacs-xyz.scm310
-rw-r--r--gnu/packages/embedded.scm8
-rw-r--r--gnu/packages/emulators.scm8
-rw-r--r--gnu/packages/erlang.scm4
-rw-r--r--gnu/packages/file-systems.scm8
-rw-r--r--gnu/packages/finance.scm41
-rw-r--r--gnu/packages/firmware.scm14
-rw-r--r--gnu/packages/flashing-tools.scm50
-rw-r--r--gnu/packages/fontutils.scm27
-rw-r--r--gnu/packages/freeipmi.scm4
-rw-r--r--gnu/packages/fvwm.scm4
-rw-r--r--gnu/packages/game-development.scm47
-rw-r--r--gnu/packages/games.scm118
-rw-r--r--gnu/packages/gdb.scm4
-rw-r--r--gnu/packages/geo.scm25
-rw-r--r--gnu/packages/gettext.scm7
-rw-r--r--gnu/packages/gnome-xyz.scm7
-rw-r--r--gnu/packages/gnome.scm2
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnuzilla.scm8
-rw-r--r--gnu/packages/golang.scm22
-rw-r--r--gnu/packages/graphics.scm31
-rw-r--r--gnu/packages/gstreamer.scm8
-rw-r--r--gnu/packages/guile-xyz.scm144
-rw-r--r--gnu/packages/guile.scm13
-rw-r--r--gnu/packages/hurd.scm15
-rw-r--r--gnu/packages/ibus.scm38
-rw-r--r--gnu/packages/image-processing.scm33
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/image.scm79
-rw-r--r--gnu/packages/instrumentation.scm40
-rw-r--r--gnu/packages/java.scm9
-rw-r--r--gnu/packages/libreoffice.scm38
-rw-r--r--gnu/packages/linux.scm91
-rw-r--r--gnu/packages/lisp-xyz.scm23
-rw-r--r--gnu/packages/lisp.scm8
-rw-r--r--gnu/packages/machine-learning.scm188
-rw-r--r--gnu/packages/mail.scm25
-rw-r--r--gnu/packages/make-bootstrap.scm4
-rw-r--r--gnu/packages/mastodon.scm50
-rw-r--r--gnu/packages/maths.scm5
-rw-r--r--gnu/packages/maven.scm4
-rw-r--r--gnu/packages/messaging.scm3
-rw-r--r--gnu/packages/monitoring.scm4
-rw-r--r--gnu/packages/music.scm20
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/package-management.scm28
-rw-r--r--gnu/packages/password-utils.scm133
-rw-r--r--gnu/packages/patches/directfb-davinci-glibc-228-compat.patch41
-rw-r--r--gnu/packages/patches/flashrom-fix-building-on-aarch64.patch89
-rw-r--r--gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch57
-rw-r--r--gnu/packages/patches/guile-fibers-libevent-32-bit.patch18
-rw-r--r--gnu/packages/patches/hubbub-maybe-uninitialized.patch40
-rw-r--r--gnu/packages/patches/ibus-anthy-fix-tests.patch49
-rw-r--r--gnu/packages/patches/libtree-fix-check-non-x86.patch50
-rw-r--r--gnu/packages/patches/python-keras-integration-test.patch19
-rw-r--r--gnu/packages/patches/quodlibet-fix-invalid-glob.patch89
-rw-r--r--gnu/packages/patches/quodlibet-fix-mtime-tests.patch39
-rw-r--r--gnu/packages/pciutils.scm5
-rw-r--r--gnu/packages/pdf.scm30
-rw-r--r--gnu/packages/perl.scm6
-rw-r--r--gnu/packages/photo.scm8
-rw-r--r--gnu/packages/purescript.scm7
-rw-r--r--gnu/packages/python-crypto.scm7
-rw-r--r--gnu/packages/python-science.scm10
-rw-r--r--gnu/packages/python-web.scm2
-rw-r--r--gnu/packages/python-xyz.scm238
-rw-r--r--gnu/packages/python.scm9
-rw-r--r--gnu/packages/qt.scm4
-rw-r--r--gnu/packages/rails.scm25
-rw-r--r--gnu/packages/ruby.scm304
-rw-r--r--gnu/packages/shells.scm6
-rw-r--r--gnu/packages/spreadsheet.scm41
-rw-r--r--gnu/packages/ssh.scm7
-rw-r--r--gnu/packages/swig.scm18
-rw-r--r--gnu/packages/sync.scm4
-rw-r--r--gnu/packages/tbb.scm8
-rw-r--r--gnu/packages/terminals.scm43
-rw-r--r--gnu/packages/tex.scm182
-rw-r--r--gnu/packages/texinfo.scm5
-rw-r--r--gnu/packages/text-editors.scm73
-rw-r--r--gnu/packages/textutils.scm87
-rw-r--r--gnu/packages/time.scm2
-rw-r--r--gnu/packages/tls.scm15
-rw-r--r--gnu/packages/tmux.scm41
-rw-r--r--gnu/packages/tree-sitter.scm11
-rw-r--r--gnu/packages/version-control.scm17
-rw-r--r--gnu/packages/video.scm46
-rw-r--r--gnu/packages/web-browsers.scm4
-rw-r--r--gnu/packages/web.scm11
-rw-r--r--gnu/packages/webkit.scm2
-rw-r--r--gnu/packages/wm.scm73
-rw-r--r--gnu/packages/xdisorg.scm4
-rw-r--r--gnu/packages/xorg.scm200
-rw-r--r--gnu/services/base.scm6
-rw-r--r--gnu/services/certbot.scm32
-rw-r--r--gnu/services/virtualization.scm7
-rw-r--r--gnu/system/hurd.scm2
-rw-r--r--gnu/system/image.scm13
-rw-r--r--gnu/system/images/unmatched.scm102
-rw-r--r--gnu/system/linux-container.scm21
-rw-r--r--gnu/system/shadow.scm4
-rw-r--r--gnu/system/uuid.scm2
-rw-r--r--guix/avahi.scm10
-rw-r--r--guix/build-system/texlive.scm4
-rw-r--r--guix/build/node-build-system.scm3
-rw-r--r--guix/build/svn.scm9
-rw-r--r--guix/import/cran.scm3
-rw-r--r--guix/import/elpa.scm6
-rw-r--r--guix/import/stackage.scm7
-rw-r--r--guix/packages.scm41
-rw-r--r--guix/records.scm2
-rw-r--r--guix/scripts/home.scm1
-rw-r--r--guix/scripts/import.scm3
-rw-r--r--guix/scripts/locate.scm659
-rw-r--r--guix/scripts/pull.scm31
-rwxr-xr-xguix/scripts/substitute.scm20
-rw-r--r--guix/store/roots.scm12
-rw-r--r--guix/ui.scm9
-rw-r--r--guix/utils.scm6
-rw-r--r--po/guix/POTFILES.in1
-rw-r--r--tests/cpan.scm25
-rw-r--r--tests/elpa.scm31
-rwxr-xr-xtests/guix-locate.sh72
-rw-r--r--tests/minetest.scm2
-rw-r--r--tests/packages.scm17
-rw-r--r--tests/store-roots.scm18
-rw-r--r--tests/substitute.scm25
168 files changed, 5670 insertions, 1856 deletions
diff --git a/.guix-authorizations b/.guix-authorizations
index 3ed092f948..ce6b79a6fe 100644
--- a/.guix-authorizations
+++ b/.guix-authorizations
@@ -57,8 +57,6 @@
(name "jpoiret"))
("017D 74E2 7F58 5696 3801 781D F663 943E 08D8 092A"
(name "lbraun"))
- ("CA4F 8CF4 37D7 478F DA05 5FD4 4213 7701 1A37 8446"
- (name "lbraun (professional)"))
("ACC2 3BA0 59F7 CCF4 08F0 43AD 442A 84B8 C70E 2F87"
(name "lilyp"))
(;; primary: "4F71 6F9A 8FA2 C80E F1B5 E1BA 5E35 F231 DE1A C5E0"
diff --git a/Makefile.am b/Makefile.am
index ab901df757..a386e6033c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -306,6 +306,7 @@ MODULES = \
guix/scripts/archive.scm \
guix/scripts/import.scm \
guix/scripts/package.scm \
+ guix/scripts/locate.scm \
guix/scripts/install.scm \
guix/scripts/remove.scm \
guix/scripts/upgrade.scm \
@@ -595,6 +596,7 @@ SH_TESTS = \
tests/guix-gc.sh \
tests/guix-git-authenticate.sh \
tests/guix-hash.sh \
+ tests/guix-locate.sh \
tests/guix-pack.sh \
tests/guix-pack-localstatedir.sh \
tests/guix-pack-relocatable.sh \
diff --git a/doc/contributing.texi b/doc/contributing.texi
index f692872c04..3a402c13a9 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -26,7 +26,7 @@ choice.
* Packaging Guidelines:: Growing the distribution.
* Coding Style:: Hygiene of the contributor.
* Submitting Patches:: Share your work.
-* Tracking Bugs and Patches:: Keeping it all organized.
+* Tracking Bugs and Changes:: Keeping it all organized.
* Commit Access:: Pushing to the official repository.
* Updating the Guix Package:: Updating the Guix package definition.
* Writing Documentation:: Improving documentation in GNU Guix.
@@ -617,7 +617,7 @@ A typical package definition may look like this:
)))
@end lisp
-@deffn {Scheme Procedure} git-version @var{VERSION} @var{REVISION} @var{COMMIT}
+@deffn {Procedure} git-version @var{VERSION} @var{REVISION} @var{COMMIT}
Return the version string for packages using @code{git-fetch}.
@lisp
@@ -626,7 +626,7 @@ Return the version string for packages using @code{git-fetch}.
@end lisp
@end deffn
-@deffn {Scheme Procedure} hg-version @var{VERSION} @var{REVISION} @var{CHANGESET}
+@deffn {Procedure} hg-version @var{VERSION} @var{REVISION} @var{CHANGESET}
Return the version string for packages using @code{hg-fetch}. It works
in the same way as @code{git-version}.
@end deffn
@@ -970,7 +970,7 @@ When the @var{author} contains hyphens or uppercase letters, as with
The module @code{(guix build-system elm)} provides the following utilities for
working with names and related conventions:
-@deffn {Scheme procedure} elm-package-origin @var{elm-name} @var{version} @
+@deffn {Procedure} elm-package-origin @var{elm-name} @var{version} @
@var{hash}
Returns a Git origin using the repository naming and tagging regime required
for a published Elm package with the upstream name @var{elm-name} at version
@@ -990,7 +990,7 @@ For example:
@end lisp
@end deffn
-@deffn {Scheme procedure} elm->package-name @var{elm-name}
+@deffn {Procedure} elm->package-name @var{elm-name}
Returns the Guix-style package name for an Elm package with upstream name
@var{elm-name}.
@@ -998,13 +998,13 @@ Note that there is more than one possible @var{elm-name} for which
@code{elm->package-name} will produce a given result.
@end deffn
-@deffn {Scheme procedure} guix-package->elm-name @var{package}
+@deffn {Procedure} guix-package->elm-name @var{package}
Given an Elm @var{package}, returns the possibly-inferred upstream name, or
@code{#f} the upstream name is not specified via the @code{'upstream-name}
property and can not be inferred by @code{infer-elm-package-name}.
@end deffn
-@deffn {Scheme procedure} infer-elm-package-name @var{guix-name}
+@deffn {Procedure} infer-elm-package-name @var{guix-name}
Given the @var{guix-name} of an Elm package, returns the inferred upstream
name, or @code{#f} if the upstream name can't be inferred. If the result is
not @code{#f}, supplying it to @code{elm->package-name} would produce
@@ -1161,11 +1161,11 @@ readability of patches. Seasoned Guix developers may also want to look
at the section on commit access (@pxref{Commit Access}).
This mailing list is backed by a Debbugs instance, which allows us to
-keep track of submissions (@pxref{Tracking Bugs and Patches}). Each
-message sent to that mailing list gets a new tracking number assigned;
-people can then follow up on the submission by sending email to
-@code{@var{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER} is
-the tracking number (@pxref{Sending a Patch Series}).
+keep track of submissions (@pxref{Tracking Bugs and Changes}).
+Each message sent to that mailing list gets a new tracking number
+assigned; people can then follow up on the submission by sending email
+to @code{@var{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER}
+is the tracking number (@pxref{Sending a Patch Series}).
Please write commit logs in the ChangeLog format (@pxref{Change Logs,,,
standards, GNU Coding Standards}); you can check the commit history for
@@ -1257,48 +1257,9 @@ and which optional dependencies should be used. In particular, avoid adding
the @code{texlive-tiny} package or @code{texlive-union} procedure instead.
@item
-For important changes, check that dependent packages (if applicable) are
-not affected by the change; @code{guix refresh --list-dependent
-@var{package}} will help you do that (@pxref{Invoking guix refresh}).
-
-@c See <https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
-@cindex branching strategy
-@cindex rebuild scheduling strategy
-Depending on the number of dependent packages and thus the amount of
-rebuilding induced, commits go to different branches, along these lines:
-
-@table @asis
-@item 300 dependent packages or less
-@code{master} branch (non-disruptive changes).
-
-@item between 300 and 1,800 dependent packages
-@code{staging} branch (non-disruptive changes). This branch is intended
-to be merged in @code{master} every 6 weeks or so. Topical changes
-(e.g., an update of the GNOME stack) can instead go to a specific branch
-(say, @code{gnome-updates}). This branch is not expected to be
-buildable or usable until late in its development process.
-
-@item more than 1,800 dependent packages
-@code{core-updates} branch (may include major and potentially disruptive
-changes). This branch is intended to be merged in @code{master} every
-6 months or so. This branch is not expected to be buildable or usable
-until late in its development process.
-@end table
-
-All these branches are @uref{https://@value{SUBSTITUTE-SERVER-1},
-tracked by our build farm} and merged into @code{master} once
-everything has been successfully built. This allows us to fix issues
-before they hit users, and to reduce the window during which pre-built
-binaries are not available.
-
-When we decide to start building the @code{staging} or
-@code{core-updates} branches, they will be forked and renamed with the
-suffix @code{-frozen}, at which time only bug fixes may be pushed to the
-frozen branches. The @code{core-updates} and @code{staging} branches
-will remain open to accept patches for the next cycle. Please ask on
-the mailing list or IRC if unsure where to place a patch.
-@c TODO: It would be good with badges on the website that tracks these
-@c branches. Or maybe even a status page.
+Check that dependent packages (if applicable) are not affected by the
+change; @code{guix refresh --list-dependent @var{package}} will help you
+do that (@pxref{Invoking guix refresh}).
@item
@cindex determinism, of build processes
@@ -1574,16 +1535,17 @@ $ guix shell -D guix
[env]$ git send-email --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -2
@end example
-@node Tracking Bugs and Patches
-@section Tracking Bugs and Patches
+@node Tracking Bugs and Changes
+@section Tracking Bugs and Changes
-This section describes how the Guix project tracks its bug reports and
-patch submissions.
+This section describes how the Guix project tracks its bug reports,
+patch submissions and topic branches.
@menu
-* The Issue Tracker:: The official bug and patch tracker.
-* Debbugs User Interfaces:: Ways to interact with Debbugs.
-* Debbugs Usertags:: Tag reports with custom labels.
+* The Issue Tracker:: The official bug and patch tracker.
+* Managing Patches and Branches:: How changes to Guix are managed.
+* Debbugs User Interfaces:: Ways to interact with Debbugs.
+* Debbugs Usertags:: Tag reports with custom labels.
@end menu
@node The Issue Tracker
@@ -1600,6 +1562,55 @@ email to @email{bug-guix@@gnu.org}, while patch submissions are filed
against the @code{guix-patches} package by sending email to
@email{guix-patches@@gnu.org} (@pxref{Submitting Patches}).
+@node Managing Patches and Branches
+@subsection Managing Patches and Branches
+@cindex branching strategy
+@cindex rebuild scheduling strategy
+
+Changes should be posted to @email{guix-patches@@gnu.org}. This mailing
+list fills the patch-tracking database (@pxref{The Issue Tracker}). It
+also allows patches to be picked up and tested by the quality assurance
+tooling; the result of that testing eventually shows up on the dashboard
+at @indicateurl{https://qa.guix.gnu.org/issue/@var{ISSUE_NUMBER}}, where
+@var{ISSUE_NUMBER} is the number assigned by the issue tracker. Leave
+time for a review, without committing anything.
+
+As an exception, some changes considered ``trivial'' or ``obvious'' may
+be pushed directly to the @code{master} branch. This includes changes
+to fix typos and reverting commits that caused immediate problems. This
+is subject to being adjusted, allowing individuals to commit directly on
+non-controversial changes on parts they’re familiar with.
+
+Changes which affect more than 300 dependent packages (@pxref{Invoking
+guix refresh}) should first be pushed to a topic branch other than
+@code{master}; the set of changes should be consistent---e.g., ``GNOME
+update'', ``NumPy update'', etc. This allows for testing: the branch
+will automatically show up at
+@indicateurl{https://qa.guix.gnu.org/branch/@var{branch}}, with an
+indication of its build status on various platforms.
+
+To help coordinate the merging of branches, you must create a new
+guix-patches issue each time you wish to merge a branch (@pxref{The
+Issue Tracker}). Normally branches will be merged in a ``first come,
+first merged'' manner, tracked through the guix-patches issues.
+
+If you agree on a different order with those involved, you can track
+this by updating which issues block@footnote{You can mark an issue as
+blocked by another by emailing @email{control@@debbugs.gnu.org} with the
+following line in the body of the email: @code{block XXXXX by YYYYY}.
+Where @code{XXXXX} is the number for the blocked issue, and @code{YYYYY}
+is the number for the issue blocking it.} which other issues.
+Therefore, to know which branch is at the front of the queue, look for
+the oldest issue, or the issue that isn't @dfn{blocked} by any other
+branch merges. An ordered list of branches with the open issues is
+available at @url{https://qa.guix.gnu.org}.
+
+Once a branch is at the front of the queue, wait until sufficient time
+has passed for the build farms to have processed the changes, and for
+the necessary testing to have happened. For example, you can check
+@indicateurl{https://qa.guix.gnu.org/branch/@var{branch}} to see
+information on some builds and substitute availability.
+
@node Debbugs User Interfaces
@subsection Debbugs User Interfaces
@@ -1816,23 +1827,14 @@ If you get commit access, please make sure to follow the policy below
(discussions of the policy can take place on
@email{guix-devel@@gnu.org}).
-Changes should be posted to @email{guix-patches@@gnu.org}. This mailing
-list fills the patch-tracking database (@pxref{Tracking Bugs and
-Patches}). It also allows patches to be picked up and tested by the
-quality assurance tooling; the result of that testing eventually shows
-up on the dashboard at
-@indicateurl{https://qa.guix.gnu.org/issue/@var{ISSUE_NUMBER}}, where
-@var{ISSUE_NUMBER} is the number assigned by the issue tracker. Leave
-time for a review, without committing anything (@pxref{Submitting
-Patches}). If you didn’t receive any reply after one week (two weeks
-for more significant changes), and if you're confident, it's OK to
-commit.
+Ensure you're aware of how the changes should be handled
+(@pxref{Managing Patches and Branches}) prior to being pushed to the
+repository, especially for the @code{master} branch.
-As an exception, some changes considered ``trivial'' or ``obvious'' may
-be pushed directly. This includes changes to fix typos and reverting
-commits that caused immediate problems. This is subject to being
-adjusted, allowing individuals to commit directly on non-controversial
-changes on parts they’re familiar with.
+If you're committing and pushing your own changes, try and wait at least
+one week (two weeks for more significant changes) after you send them
+for review. After this, if no one else is available to review them and
+if you're confident about the changes, it's OK to commit.
When pushing a commit on behalf of somebody else, please add a
@code{Signed-off-by} line at the end of the commit log message---e.g.,
diff --git a/doc/guix.texi b/doc/guix.texi
index 01f4e0105f..c961f706ec 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -33,7 +33,7 @@ Copyright @copyright{} 2015, 2016, 2017, 2019, 2020, 2021, 2023 Leo Famulari@*
Copyright @copyright{} 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Ricardo Wurmus@*
Copyright @copyright{} 2016 Ben Woodcroft@*
Copyright @copyright{} 2016, 2017, 2018, 2021 Chris Marusich@*
-Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner@*
+Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Efraim Flashner@*
Copyright @copyright{} 2016 John Darrington@*
Copyright @copyright{} 2016, 2017 Nikita Gillmann@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Jan Nieuwenhuizen@*
@@ -258,6 +258,7 @@ Package Management
* Invoking guix package:: Package installation, removal, etc.
* Substitutes:: Downloading pre-built binaries.
* Packages with Multiple Outputs:: Single source package, multiple outputs.
+* Invoking guix locate:: Locating packages that provide a file.
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
* Invoking guix time-machine:: Running an older revision of Guix.
@@ -637,18 +638,18 @@ includes POWER9 systems such as the
RYF Talos II mainboard}. This platform is available as a "technology
preview": although it is supported, substitutes are not yet available
from the build farm (@pxref{Substitutes}), and some packages may fail to
-build (@pxref{Tracking Bugs and Patches}). That said, the Guix
+build (@pxref{Tracking Bugs and Changes}). That said, the Guix
community is actively working on improving this support, and now is a
great time to try it and get involved!
@item riscv64-linux
little-endian 64-bit RISC-V processors, specifically RV64GC, and
-Linux-Libre kernel. This platform is available as a "technology preview":
-although it is supported, substitutes are not yet available from the
-build farm (@pxref{Substitutes}), and some packages may fail to build
-(@pxref{Tracking Bugs and Patches}). That said, the Guix community is
-actively working on improving this support, and now is a great time to
-try it and get involved!
+Linux-Libre kernel. This platform is available as a "technology
+preview": although it is supported, substitutes are not yet available
+from the build farm (@pxref{Substitutes}), and some packages may fail to
+build (@pxref{Tracking Bugs and Changes}). That said, the Guix
+community is actively working on improving this support, and now is a
+great time to try it and get involved!
@end table
@@ -3297,6 +3298,7 @@ guix install emacs-guix
* Invoking guix package:: Package installation, removal, etc.
* Substitutes:: Downloading pre-built binaries.
* Packages with Multiple Outputs:: Single source package, multiple outputs.
+* Invoking guix locate:: Locating packages that provide a file.
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
* Invoking guix time-machine:: Running an older revision of Guix.
@@ -4417,6 +4419,134 @@ the output of @command{guix package --list-available} (@pxref{Invoking
guix package}).
+@node Invoking guix locate
+@section Invoking @command{guix locate}
+
+@cindex file, searching in packages
+@cindex file search
+@cindex searching for packages
+There's so much free software out there that sooner or later, you will
+need to search for packages. The @command{guix search} command that
+we've seen before (@pxref{Invoking guix package}) lets you search by
+keywords:
+
+@example
+guix search video editor
+@end example
+
+@cindex searching for packages, by file name
+Sometimes, you instead want to find which package provides a given file,
+and this is where @command{guix locate} comes in. Here is how you can
+find which package provides the @command{ls} command:
+
+@example
+$ guix locate ls
+coreutils@@9.1 /gnu/store/@dots{}-coreutils-9.1/bin/ls
+@end example
+
+Of course the command works for any file, not just commands:
+
+@example
+$ guix locate unistr.h
+icu4c@@71.1 /gnu/store/@dots{}/include/unicode/unistr.h
+libunistring@@1.0 /gnu/store/@dots{}/include/unistr.h
+@end example
+
+You may also specify @dfn{glob patterns} with wildcards. For example,
+here is how you would search for packages providing @file{.service}
+files:
+
+@example
+$ guix locate -g '*.service'
+man-db@@2.11.1 @dots{}/lib/systemd/system/man-db.service
+wpa-supplicant@@2.10 @dots{}/system-services/fi.w1.wpa_supplicant1.service
+@end example
+
+The @command{guix locate} command relies on a database that maps file
+names to package names. By default, it automatically creates that
+database if it does not exist yet by traversing packages available
+@emph{locally}, which can take a few minutes (depending on the size of
+your store and the speed of your storage device).
+
+@quotation Note
+For now, @command{guix locate} builds its database based on purely local
+knowledge---meaning that you will not find packages that never reached
+your store. Eventually it will support downloading a pre-built database
+so you can potentially find more packages.
+@end quotation
+
+By default, @command{guix locate} first tries to look for a system-wide
+database, usually under @file{/var/cache/guix/locate}; if it does not
+exist or is too old, it falls back to the per-user database, by default
+under @file{~/.cache/guix/locate}. On a multi-user system,
+administrators may want to periodically update the system-wide database
+so that all users can benefit from it.
+
+The general syntax is:
+
+@example
+guix locate [@var{options}@dots{}] @var{file}@dots{}
+@end example
+
+@noindent
+... where @var{file} is the name of a file to search for (specifically,
+the ``base name'' of the file: files whose parent directories are called
+@var{file} are not matched).
+
+The available options are as follows:
+
+@table @code
+@item --glob
+@item -g
+Interpret @var{file}@dots{} as @dfn{glob patterns}---patterns that may
+include wildcards, such as @samp{*.scm} to denote all files ending in
+@samp{.scm}.
+
+@item --stats
+Display database statistics.
+
+@item --update
+@itemx -u
+Update the file database.
+
+By default, the database is automatically updated when it is too old.
+
+@item --clear
+Clear the database and re-populate it.
+
+This option lets you start anew, ensuring old data is removed from the
+database, which also avoids having an endlessly growing database. By
+default @command{guix locate} automatically does that periodically,
+though infrequently.
+
+@item --database=@var{file}
+Use @var{file} as the database, creating it if necessary.
+
+By default, @command{guix locate} picks the database under
+@file{~/.cache/guix} or @file{/var/cache/guix}, whichever is the most
+recent one.
+
+@item --method=@var{method}
+@itemx -m @var{method}
+Use @var{method} to select the set of packages to index. Possible
+values are:
+
+@table @code
+@item manifests
+This is the default method: it works by traversing profiles on the
+machine and recording packages it encounters---packages you or other
+users of the machine installed, directly or indirectly. It is fast but
+it can miss other packages available in the store but not referred to by
+any profile.
+
+@item store
+This is a slower but more exhaustive method: it checks among all the
+existing packages those that are available in the store and records
+them.
+@end table
+@end table
+
+
@node Invoking guix gc
@section Invoking @command{guix gc}
@@ -5039,57 +5169,57 @@ be much faster because the Guix revision will be cached.
The @code{(guix inferior)} module provides the following procedures to open an
inferior:
-@defun inferior-for-channels channels [#:cache-directory] [#:ttl]
+@deffn {Procedure} inferior-for-channels channels [#:cache-directory] [#:ttl]
Return an inferior for @var{channels}, a list of channels. Use the cache at
@var{cache-directory}, where entries can be reclaimed after @var{ttl} seconds.
This procedure opens a new connection to the build daemon.
As a side effect, this procedure may build or substitute binaries for
@var{channels}, which can take time.
-@end defun
+@end deffn
-@defun open-inferior directory [#:command "bin/guix"]
+@deffn {Procedure} open-inferior directory [#:command "bin/guix"]
Open the inferior Guix in @var{directory}, running
@code{@var{directory}/@var{command} repl} or equivalent. Return @code{#f} if
the inferior could not be launched.
-@end defun
+@end deffn
@cindex inferior packages
The procedures listed below allow you to obtain and manipulate inferior
packages.
-@defun inferior-packages inferior
+@deffn {Procedure} inferior-packages inferior
Return the list of packages known to @var{inferior}.
-@end defun
+@end deffn
-@defun lookup-inferior-packages inferior name [version]
+@deffn {Procedure} lookup-inferior-packages inferior name [version]
Return the sorted list of inferior packages matching @var{name} in
@var{inferior}, with highest version numbers first. If @var{version} is true,
return only packages with a version number prefixed by @var{version}.
-@end defun
+@end deffn
-@defun inferior-package? obj
+@deffn {Procedure} inferior-package? obj
Return true if @var{obj} is an inferior package.
-@end defun
-
-@defun inferior-package-name package
-@defunx inferior-package-version package
-@defunx inferior-package-synopsis package
-@defunx inferior-package-description package
-@defunx inferior-package-home-page package
-@defunx inferior-package-location package
-@defunx inferior-package-inputs package
-@defunx inferior-package-native-inputs package
-@defunx inferior-package-propagated-inputs package
-@defunx inferior-package-transitive-propagated-inputs package
-@defunx inferior-package-native-search-paths package
-@defunx inferior-package-transitive-native-search-paths package
-@defunx inferior-package-search-paths package
+@end deffn
+
+@deffn {Procedure} inferior-package-name package
+@deffnx {Procedure} inferior-package-version package
+@deffnx {Procedure} inferior-package-synopsis package
+@deffnx {Procedure} inferior-package-description package
+@deffnx {Procedure} inferior-package-home-page package
+@deffnx {Procedure} inferior-package-location package
+@deffnx {Procedure} inferior-package-inputs package
+@deffnx {Procedure} inferior-package-native-inputs package
+@deffnx {Procedure} inferior-package-propagated-inputs package
+@deffnx {Procedure} inferior-package-transitive-propagated-inputs package
+@deffnx {Procedure} inferior-package-native-search-paths package
+@deffnx {Procedure} inferior-package-transitive-native-search-paths package
+@deffnx {Procedure} inferior-package-search-paths package
These procedures are the counterpart of package record accessors
(@pxref{package Reference}). Most of them work by querying the inferior
@var{package} comes from, so the inferior must still be live when you call
these procedures.
-@end defun
+@end deffn
Inferior packages can be used transparently like any other package or
file-like object in G-expressions (@pxref{G-Expressions}). They are also
@@ -6995,7 +7125,7 @@ docker run -ti guile-guile-readline /bin/guile
@end example
@noindent
-where @var{file} is the image returned by @var{guix pack}, and
+where @var{file} is the image returned by @command{guix pack}, and
@code{guile-guile-readline} is its ``image tag''. See the
@uref{https://docs.docker.com/engine/reference/commandline/load/, Docker
documentation} for more information.
@@ -7720,7 +7850,7 @@ That derivation is stored in a @file{.drv} file under @file{/gnu/store}.
The build actions it prescribes may then be realized by using the
@code{build-derivations} procedure (@pxref{The Store}).
-@defun package-derivation store package [system]
+@deffn {Procedure} package-derivation store package [system]
Return the @code{<derivation>} object of @var{package} for @var{system}
(@pxref{Derivations}).
@@ -7729,21 +7859,21 @@ must be a string denoting the target system type---e.g.,
@code{"x86_64-linux"} for an x86_64 Linux-based GNU system. @var{store}
must be a connection to the daemon, which operates on the store
(@pxref{The Store}).
-@end defun
+@end deffn
@noindent
@cindex cross-compilation
Similarly, it is possible to compute a derivation that cross-builds a
package for some other system:
-@defun package-cross-derivation store package target [system]
+@deffn {Procedure} package-cross-derivation store package target [system]
Return the @code{<derivation>} object of @var{package} cross-built from
@var{system} to @var{target}.
@var{target} must be a valid GNU triplet denoting the target hardware
and operating system, such as @code{"aarch64-linux-gnu"}
(@pxref{Specifying Target Triplets,,, autoconf, Autoconf}).
-@end defun
+@end deffn
Once you have package definitions, you can easily define @emph{variants}
of those packages. @xref{Defining Package Variants}, for more on that.
@@ -7972,10 +8102,10 @@ It is an error to refer to @code{this-package} outside a package definition.
The following helper procedures are provided to help deal with package
inputs.
-@defun lookup-package-input package name
-@defunx lookup-package-native-input package name
-@defunx lookup-package-propagated-input package name
-@defunx lookup-package-direct-input package name
+@deffn {Procedure} lookup-package-input package name
+@deffnx {Procedure} lookup-package-native-input package name
+@deffnx {Procedure} lookup-package-propagated-input package name
+@deffnx {Procedure} lookup-package-direct-input package name
Look up @var{name} among @var{package}'s inputs (or native, propagated,
or direct inputs). Return it if found, @code{#f} otherwise.
@@ -7991,7 +8121,7 @@ use it:
In this example we obtain the @code{gmp} package that is among the
direct inputs of @code{coreutils}.
-@end defun
+@end deffn
@cindex development inputs, of a package
@cindex implicit inputs, of a package
@@ -8000,7 +8130,7 @@ Sometimes you will want to obtain the list of inputs needed to
package is compiled. This is what the @code{package-development-inputs}
procedure returns.
-@defun package-development-inputs package [system] [#:target #f]
+@deffn {Procedure} package-development-inputs package [system] [#:target #f]
Return the list of inputs required by @var{package} for development
purposes on @var{system}. When @var{target} is true, return the inputs
needed to cross-compile @var{package} from @var{system} to
@@ -8031,7 +8161,7 @@ because @code{hello} has zero explicit dependencies. Conversely,
gzip, GCC, libc, Bash, and more. To visualize it, @command{guix graph
hello} would show you explicit inputs, whereas @command{guix graph -t
bag hello} would include implicit inputs (@pxref{Invoking guix graph}).
-@end defun
+@end deffn
Because packages are regular Scheme objects that capture a complete
dependency graph and associated build procedures, it is often useful to
@@ -8039,7 +8169,7 @@ write procedures that take a package and return a modified version
thereof according to some parameters. Below are a few examples.
@cindex tool chain, choosing a package's tool chain
-@defun package-with-c-toolchain package toolchain
+@deffn {Procedure} package-with-c-toolchain package toolchain
Return a variant of @var{package} that uses @var{toolchain} instead of
the default GNU C/C++ toolchain. @var{toolchain} must be a list of
inputs (label/package tuples) providing equivalent functionality, such
@@ -8060,7 +8190,7 @@ fields and is instead pulled in by the build system. Consequently, this
procedure works by changing the build system of @var{package} so that it
pulls in @var{toolchain} instead of the defaults. @ref{Build Systems},
for more on build systems.
-@end defun
+@end deffn
@node origin Reference
@subsection @code{origin} Reference
@@ -8177,7 +8307,7 @@ retrieved is determined by its @code{method} field. The @code{(guix
download)} module provides the most common method, @code{url-fetch},
described below.
-@defun url-fetch url hash-algo hash [name] [#:executable? #f]
+@deffn {Procedure} url-fetch url hash-algo hash [name] [#:executable? #f]
Return a fixed-output derivation that fetches data from @var{url} (a
string, or a list of strings denoting alternate URLs), which is expected
to have hash @var{hash} of type @var{hash-algo} (a symbol). By default,
@@ -8190,19 +8320,19 @@ interpreted as the name of a mirror scheme, taken from @file{%mirror-file}.
Alternatively, when URL starts with @code{file://}, return the
corresponding file name in the store.
-@end defun
+@end deffn
Likewise, the @code{(guix git-download)} module defines the
@code{git-fetch} origin method, which fetches data from a Git version
control repository, and the @code{git-reference} data type to describe
the repository and revision to fetch.
-@defun git-fetch ref hash-algo hash
+@deffn {Procedure} git-fetch ref hash-algo hash
Return a fixed-output derivation that fetches @var{ref}, a
@code{<git-reference>} object. The output is expected to have recursive
hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as
the file name, or a generic name if @code{#f}.
-@end defun
+@end deffn
@deftp {Data Type} git-reference
This data type represents a Git reference for @code{git-fetch} to
@@ -8245,12 +8375,12 @@ For Mercurial repositories, the module @code{(guix hg-download)} defines
the @code{hg-fetch} origin method and @code{hg-reference} data type for
support of the Mercurial version control system.
-@defun hg-fetch ref hash-algo hash [name]
+@deffn {Procedure} hg-fetch ref hash-algo hash [name]
Return a fixed-output derivation that fetches @var{ref}, a
@code{<hg-reference>} object. The output is expected to have recursive
hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as
the file name, or a generic name if @code{#false}.
-@end defun
+@end deffn
@node Defining Package Variants
@section Defining Package Variants
@@ -8404,7 +8534,7 @@ These are pretty simple package variants. As a convenience, the
that directly maps to the more sophisticated package transformation
options (@pxref{Package Transformation Options}):
-@defun options->transformation opts
+@deffn {Procedure} options->transformation opts
Return a procedure that, when passed an object to build (package,
derivation, etc.), applies the transformations specified by @var{opts} and returns
the resulting objects. @var{opts} must be a list of symbol/string pairs such as:
@@ -8416,7 +8546,7 @@ the resulting objects. @var{opts} must be a list of symbol/string pairs such as
Each symbol names a transformation and the corresponding string is an argument
to that transformation.
-@end defun
+@end deffn
For instance, a manifest equivalent to this command:
@@ -8455,7 +8585,7 @@ Dependency graph rewriting, for the purposes of swapping packages in the
graph, is what the @code{package-input-rewriting} procedure in
@code{(guix packages)} implements.
-@defun package-input-rewriting replacements [rewrite-name] [#:deep? #t]
+@deffn {Procedure} package-input-rewriting replacements [rewrite-name] [#:deep? #t]
Return a procedure that, when passed a package, replaces its direct and
indirect dependencies, including implicit inputs when @var{deep?} is
true, according to @var{replacements}. @var{replacements} is a list of
@@ -8464,7 +8594,7 @@ and the second one is the replacement.
Optionally, @var{rewrite-name} is a one-argument procedure that takes
the name of a package and returns its new name after rewrite.
-@end defun
+@end deffn
@noindent
Consider this example:
@@ -8489,7 +8619,7 @@ This is exactly what the @option{--with-input} command-line option does
The following variant of @code{package-input-rewriting} can match packages to
be replaced by name rather than by identity.
-@deffn {Scheme Procedure} package-input-rewriting/spec @var{replacements} [#:deep? #t]
+@deffn {Procedure} package-input-rewriting/spec @var{replacements} [#:deep? #t]
Return a procedure that, given a package, applies the given
@var{replacements} to all the package graph, including implicit inputs
unless @var{deep?} is false.
@@ -8517,12 +8647,12 @@ A more generic procedure to rewrite a package dependency graph is
@code{package-mapping}: it supports arbitrary changes to nodes in the
graph.
-@defun package-mapping proc [cut?] [#:deep? #f]
+@deffn {Procedure} package-mapping proc [cut?] [#:deep? #f]
Return a procedure that, given a package, applies @var{proc} to all the packages
depended on and returns the resulting package. The procedure stops recursion
when @var{cut?} returns true for a given package. When @var{deep?} is true, @var{proc} is
applied to implicit inputs as well.
-@end defun
+@end deffn
@node Writing Manifests
@section Writing Manifests
@@ -8727,14 +8857,14 @@ related to a manifest entry coming from a @code{dependencies} field.
@end table
@end deftp
-@defun concatenate-manifests lst
+@deffn {Procedure} concatenate-manifests lst
Concatenate the manifests listed in @var{lst} and return the resulting
manifest.
-@end defun
+@end deffn
@c TODO: <manifest-pattern>, manifest-lookup, manifest-remove, etc.
-@defun package->manifest-entry package [output] [#:properties]
+@deffn {Procedure} package->manifest-entry package [output] [#:properties]
Return a manifest entry for the @var{output} of package @var{package},
where @var{output} defaults to @code{"out"}, and with the given
@var{properties}. By default @var{properties} is the empty list or, if
@@ -8752,9 +8882,9 @@ output and the @code{send-email} output of the @code{git} package:
(manifest (list (package->manifest-entry git)
(package->manifest-entry git "send-email")))
@end lisp
-@end defun
+@end deffn
-@defun packages->manifest packages
+@deffn {Procedure} packages->manifest packages
Return a list of manifest entries, one for each item listed in
@var{packages}. Elements of @var{packages} can be either package
objects or package/string tuples denoting a specific output of a
@@ -8768,10 +8898,10 @@ concisely:
(packages->manifest (list git `(,git "send-email")))
@end lisp
-@end defun
+@end deffn
@anchor{package-development-manifest}
-@defun package->development-manifest package [system] [#:target]
+@deffn {Procedure} package->development-manifest package [system] [#:target]
Return a manifest for the @dfn{development inputs} of @var{package} for
@var{system}, optionally when cross-compiling to @var{target}.
Development inputs include both explicit and implicit inputs of
@@ -8799,7 +8929,7 @@ In this example, the development manifest that
(GCC), the many supporting libraries (Boost, GLib, GTK, etc.), and a
couple of additional development tools---these are the dependencies
@command{guix show inkscape} lists.
-@end defun
+@end deffn
@c TODO: Move (gnu packages) interface to a section of its own.
@@ -8807,7 +8937,7 @@ Last, the @code{(gnu packages)} module provides higher-level facilities
to build manifests. In particular, it lets you look up packages by
name---see below.
-@defun specifications->manifest specs
+@deffn {Procedure} specifications->manifest specs
Given @var{specs}, a list of specifications such as @code{"emacs@@25.2"}
or @code{"guile:debug"}, return a manifest. Specs have the format that
command-line tools such as @command{guix install} and @command{guix
@@ -8824,7 +8954,7 @@ Notice that we do not need to worry about @code{use-modules}, importing
the right set of modules, and referring to the right variables.
Instead, we directly refer to packages in the same way as on the command
line, which can often be more convenient.
-@end defun
+@end deffn
@c TODO: specifications->package, etc.
@@ -10314,54 +10444,54 @@ procedures provided by @code{(guix build utils)}.
This section documents procedures that deal with store file names.
-@defun %store-directory
+@deffn {Procedure} %store-directory
Return the directory name of the store.
-@end defun
+@end deffn
-@defun store-file-name? file
+@deffn {Procedure} store-file-name? file
Return true if @var{file} is in the store.
-@end defun
+@end deffn
-@defun strip-store-file-name file
+@deffn {Procedure} strip-store-file-name file
Strip the @file{/gnu/store} and hash from @var{file}, a store file name.
The result is typically a @code{"@var{package}-@var{version}"} string.
-@end defun
+@end deffn
-@defun package-name->name+version name
+@deffn {Procedure} package-name->name+version name
Given @var{name}, a package name like @code{"foo-0.9.1b"}, return two
values: @code{"foo"} and @code{"0.9.1b"}. When the version part is
unavailable, @var{name} and @code{#f} are returned. The first hyphen
followed by a digit is considered to introduce the version part.
-@end defun
+@end deffn
@subsection File Types
The procedures below deal with files and file types.
-@defun directory-exists? dir
+@deffn {Procedure} directory-exists? dir
Return @code{#t} if @var{dir} exists and is a directory.
-@end defun
+@end deffn
-@defun executable-file? file
+@deffn {Procedure} executable-file? file
Return @code{#t} if @var{file} exists and is executable.
-@end defun
+@end deffn
-@defun symbolic-link? file
+@deffn {Procedure} symbolic-link? file
Return @code{#t} if @var{file} is a symbolic link (aka. a ``symlink'').
-@end defun
+@end deffn
-@defun elf-file? file
-@defunx ar-file? file
-@defunx gzip-file? file
+@deffn {Procedure} elf-file? file
+@deffnx {Procedure} ar-file? file
+@deffnx {Procedure} gzip-file? file
Return @code{#t} if @var{file} is, respectively, an ELF file, an
@code{ar} archive (such as a @file{.a} static library), or a gzip file.
-@end defun
+@end deffn
-@defun reset-gzip-timestamp file [#:keep-mtime? #t]
+@deffn {Procedure} reset-gzip-timestamp file [#:keep-mtime? #t]
If @var{file} is a gzip file, reset its embedded timestamp (as with
@command{gzip --no-name}) and return true. Otherwise return @code{#f}.
When @var{keep-mtime?} is true, preserve @var{file}'s modification time.
-@end defun
+@end deffn
@subsection File Manipulation
@@ -10382,20 +10512,20 @@ normal procedure return or @i{via} a non-local exit such as an
exception.
@end defmac
-@defun mkdir-p dir
+@deffn {Procedure} mkdir-p dir
Create directory @var{dir} and all its ancestors.
-@end defun
+@end deffn
-@defun install-file file directory
+@deffn {Procedure} install-file file directory
Create @var{directory} if it does not exist and copy @var{file} in there
under the same name.
-@end defun
+@end deffn
-@defun make-file-writable file
+@deffn {Procedure} make-file-writable file
Make @var{file} writable for its owner.
-@end defun
+@end deffn
-@defun copy-recursively source destination @
+@deffn {Procedure} copy-recursively source destination @
[#:log (current-output-port)] [#:follow-symlinks? #f] @
[#:copy-file copy-file] [#:keep-mtime? #f] [#:keep-permissions? #t]
Copy @var{source} directory to @var{destination}. Follow symlinks if
@@ -10404,13 +10534,13 @@ Copy @var{source} directory to @var{destination}. Follow symlinks if
keep the modification time of the files in @var{source} on those of
@var{destination}. When @var{keep-permissions?} is true, preserve file
permissions. Write verbose output to the @var{log} port.
-@end defun
+@end deffn
-@defun delete-file-recursively dir [#:follow-mounts? #f]
+@deffn {Procedure} delete-file-recursively dir [#:follow-mounts? #f]
Delete @var{dir} recursively, like @command{rm -rf}, without following
symlinks. Don't follow mount points either, unless @var{follow-mounts?}
is true. Report but ignore errors.
-@end defun
+@end deffn
@defmac substitute* file @
((regexp match-var@dots{}) body@dots{}) @dots{}
@@ -10448,12 +10578,12 @@ whole line ending with a backslash, one needs a regex like
@cindex file, searching
This section documents procedures to search and filter files.
-@defun file-name-predicate regexp
+@deffn {Procedure} file-name-predicate regexp
Return a predicate that returns true when passed a file name whose base
name matches @var{regexp}.
-@end defun
+@end deffn
-@defun find-files dir [pred] @
+@deffn {Procedure} find-files dir [pred] @
[#:stat lstat] [#:directories? #f] [#:fail-on-error? #f]
Return the lexicographically sorted list of files under @var{dir} for
which @var{pred} returns true. @var{pred} is passed two arguments: the
@@ -10464,7 +10594,7 @@ case it is equivalent to @code{(file-name-predicate @var{pred})}.
that symlinks are not followed. If @var{directories?} is true, then
directories will also be included. If @var{fail-on-error?} is true,
raise an exception upon error.
-@end defun
+@end deffn
Here are a few examples where we assume that the current directory is
the root of the Guix source tree:
@@ -10483,13 +10613,13 @@ the root of the Guix source tree:
@result{} ("./libformat.a" "./libstore.a" @dots{})
@end lisp
-@defun which program
+@deffn {Procedure} which program
Return the complete file name for @var{program} as found in
@code{$PATH}, or @code{#f} if @var{program} could not be found.
-@end defun
+@end deffn
-@defun search-input-file inputs name
-@defunx search-input-directory inputs name
+@deffn {Procedure} search-input-file inputs name
+@deffnx {Procedure} search-input-directory inputs name
Return the complete file name for @var{name} as found in @var{inputs};
@code{search-input-file} searches for a regular file and
@code{search-input-directory} searches for a directory. If @var{name}
@@ -10498,7 +10628,7 @@ could not be found, an exception is raised.
Here, @var{inputs} must be an association list like @code{inputs} and
@code{native-inputs} as available to build phases (@pxref{Build
Phases}).
-@end defun
+@end deffn
Here is a (simplified) example of how @code{search-input-file} is used
in a build phase of the @code{wireguard-tools} package:
@@ -10521,7 +10651,7 @@ You'll find handy procedures to spawn processes in this module,
essentially convenient wrappers around Guile's @code{system*}
(@pxref{Processes, @code{system*},, guile, GNU Guile Reference Manual}).
-@defun invoke program args@dots{}
+@deffn {Procedure} invoke program args@dots{}
Invoke @var{program} with the given @var{args}. Raise an
@code{&invoke-error} exception if the exit code is non-zero; otherwise
return @code{#t}.
@@ -10529,21 +10659,21 @@ return @code{#t}.
The advantage compared to @code{system*} is that you do not need to
check the return value. This reduces boilerplate in shell-script-like
snippets for instance in package build phases.
-@end defun
+@end deffn
-@defun invoke-error? c
+@deffn {Procedure} invoke-error? c
Return true if @var{c} is an @code{&invoke-error} condition.
-@end defun
+@end deffn
-@defun invoke-error-program c
-@defunx invoke-error-arguments c
-@defunx invoke-error-exit-status c
-@defunx invoke-error-term-signal c
-@defunx invoke-error-stop-signal c
+@deffn {Procedure} invoke-error-program c
+@deffnx {Procedure} invoke-error-arguments c
+@deffnx {Procedure} invoke-error-exit-status c
+@deffnx {Procedure} invoke-error-term-signal c
+@deffnx {Procedure} invoke-error-stop-signal c
Access specific fields of @var{c}, an @code{&invoke-error} condition.
-@end defun
+@end deffn
-@defun report-invoke-error c [port]
+@deffn {Procedure} report-invoke-error c [port]
Report to @var{port} (by default the current error port) about @var{c},
an @code{&invoke-error} condition, in a human-friendly way.
@@ -10559,9 +10689,9 @@ Typical usage would look like this:
@print{} command "date" "--imaginary-option" failed with status 1
@end lisp
-@end defun
+@end deffn
-@defun invoke/quiet program args@dots{}
+@deffn {Procedure} invoke/quiet program args@dots{}
Invoke @var{program} with @var{args} and capture @var{program}'s
standard output and standard error. If @var{program} succeeds, print
nothing and return the unspecified value; otherwise, raise a
@@ -10585,7 +10715,7 @@ Here's an example:
date: unrecognized option '--imaginary-option'
Try 'date --help' for more information.
@end lisp
-@end defun
+@end deffn
@subsection Build Phases
@@ -10695,7 +10825,7 @@ are always found. The wrapper would be used to set @env{PATH},
To ease that task, the @code{(guix build utils)} module provides a
couple of helpers to wrap commands.
-@defun wrap-program program [#:sh sh] [#:rest variables]
+@deffn {Procedure} wrap-program program [#:sh sh] [#:rest variables]
Make a wrapper for @var{program}. @var{variables} should look like this:
@lisp
@@ -10727,9 +10857,9 @@ exec -a $0 location/of/.foo-real "$@@"
If @var{program} has previously been wrapped by @code{wrap-program}, the
wrapper is extended with definitions for @var{variables}. If it is not,
@var{sh} will be used as the interpreter.
-@end defun
+@end deffn
-@defun wrap-script program [#:guile guile] [#:rest variables]
+@deffn {Procedure} wrap-script program [#:guile guile] [#:rest variables]
Wrap the script @var{program} such that @var{variables} are set first.
The format of @var{variables} is the same as in the @code{wrap-program}
procedure. This procedure differs from @code{wrap-program} in that it
@@ -10742,7 +10872,7 @@ second line.
Note that this procedure can only be used once per file as Guile scripts are
not supported.
-@end defun
+@end deffn
@node Search Paths
@section Search Paths
@@ -10931,12 +11061,12 @@ How do you turn search path specifications on one hand and a bunch of
directories on the other hand in a set of environment variable
definitions? That's the job of @code{evaluate-search-paths}.
-@defun evaluate-search-paths search-paths directories [getenv]
+@deffn {Procedure} evaluate-search-paths search-paths directories [getenv]
Evaluate @var{search-paths}, a list of search-path specifications, for
@var{directories}, a list of directory names, and return a list of
specification/value pairs. Use @var{getenv} to determine the current
settings and report only settings not already effective.
-@end defun
+@end deffn
The @code{(guix profiles)} provides a higher-level helper procedure,
@code{load-profile}, that sets the environment variables of a profile.
@@ -11040,7 +11170,7 @@ share any problems or suggestions you may have (@pxref{Contributing}).
@end quotation
@end defvr
-@defun open-connection [uri] [#:reserve-space? #t]
+@deffn {Procedure} open-connection [uri] [#:reserve-space? #t]
Connect to the daemon over the Unix-domain socket at @var{uri} (a string). When
@var{reserve-space?} is true, instruct it to reserve a little bit of
extra space on the file system so that the garbage collector can still
@@ -11048,11 +11178,11 @@ operate should the disk become full. Return a server object.
@var{file} defaults to @code{%default-socket-path}, which is the normal
location given the options that were passed to @command{configure}.
-@end defun
+@end deffn
-@defun close-connection server
+@deffn {Procedure} close-connection server
Close the connection to @var{server}.
-@end defun
+@end deffn
@defvar current-build-output-port
This variable is bound to a SRFI-39 parameter, which refers to the port
@@ -11063,7 +11193,7 @@ Procedures that make RPCs all take a server object as their first
argument.
@cindex invalid store items
-@defun valid-path? server path
+@deffn {Procedure} valid-path? server path
Return @code{#t} when @var{path} designates a valid store item and
@code{#f} otherwise (an invalid item may exist on disk but still be
invalid, for instance because it is the result of an aborted or failed
@@ -11071,19 +11201,19 @@ build).
A @code{&store-protocol-error} condition is raised if @var{path} is not
prefixed by the store directory (@file{/gnu/store}).
-@end defun
+@end deffn
-@defun add-text-to-store server name text [references]
+@deffn {Procedure} add-text-to-store server name text [references]
Add @var{text} under file @var{name} in the store, and return its store
path. @var{references} is the list of store paths referred to by the
resulting store path.
-@end defun
+@end deffn
-@defun build-derivations store derivations [mode]
+@deffn {Procedure} build-derivations store derivations [mode]
Build @var{derivations}, a list of @code{<derivation>} objects, @file{.drv}
file names, or derivation/output pairs, using the specified
@var{mode}---@code{(build-mode normal)} by default.
-@end defun
+@end deffn
Note that the @code{(guix monads)} module provides a monad as well as
monadic versions of the above procedures, with the goal of making it
@@ -11157,7 +11287,7 @@ derivations as Scheme objects, along with procedures to create and
otherwise manipulate derivations. The lowest-level primitive to create
a derivation is the @code{derivation} procedure:
-@defun derivation store name builder args @
+@deffn {Procedure} derivation store name builder args @
[#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
[#:recursive? #f] [#:inputs '()] [#:env-vars '()] @
[#:system (%current-system)] [#:references-graphs #f] @
@@ -11203,7 +11333,7 @@ host CPU instruction set.
@var{properties} must be an association list describing ``properties'' of the
derivation. It is kept as-is, uninterpreted, in the derivation.
-@end defun
+@end deffn
@noindent
Here's an example with a shell script as its builder, assuming
@@ -11236,7 +11366,7 @@ derivations with build code written in Scheme was achieved with
@code{build-expression->derivation}, documented below. This procedure
is now deprecated in favor of the much nicer @code{gexp->derivation}.
-@defun build-expression->derivation store name exp @
+@deffn {Procedure} build-expression->derivation store name exp @
[#:system (%current-system)] [#:inputs '()] @
[#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
[#:recursive? #f] [#:env-vars '()] [#:modules '()] @
@@ -11268,7 +11398,7 @@ See the @code{derivation} procedure for the meaning of
@var{references-graphs}, @var{allowed-references},
@var{disallowed-references}, @var{local-build?}, and
@var{substitutable?}.
-@end defun
+@end deffn
@noindent
Here's an example of a single-output derivation that creates a directory
@@ -11521,10 +11651,10 @@ Pop a value from the current state and return it as a monadic value.
The state is assumed to be a list.
@end deffn
-@defun run-with-state mval [state]
+@deffn {Procedure} run-with-state mval [state]
Run monadic value @var{mval} starting with @var{state} as the initial
state. Return two values: the resulting value, and the resulting state.
-@end defun
+@end deffn
The main interface to the store monad, provided by the @code{(guix
store)} module, is as follows.
@@ -11537,11 +11667,11 @@ effect is needed, a value of the store monad must be ``evaluated'' by
passing it to the @code{run-with-store} procedure (see below).
@end defvar
-@defun run-with-store store mval @
+@deffn {Procedure} run-with-store store mval @
[#:guile-for-build] [#:system (%current-system)]
Run @var{mval}, a monadic value in the store monad, in @var{store}, an
open store connection.
-@end defun
+@end deffn
@deffn {Monadic Procedure} text-file @var{name} @var{text} [@var{references}]
Return as a monadic value the absolute file name in the store of the file
@@ -11885,9 +12015,9 @@ are also added to the load path of the gexp returned by
@var{body}@dots{}.
@end defmac
-@defun gexp? obj
+@deffn {Procedure} gexp? obj
Return @code{#t} if @var{obj} is a G-expression.
-@end defun
+@end deffn
G-expressions are meant to be written to disk, either as code building
some derivation, or as plain files in the store. The monadic procedures
@@ -11974,7 +12104,7 @@ does not have any effect on what the G-expression does.
@code{plain-file} can be used similarly; it differs in that the file
content is directly passed as a string.
-@defun local-file file [name] [#:recursive? #f] [#:select? (const #t)]
+@deffn {Procedure} local-file file [name] [#:recursive? #f] [#:select? (const #t)]
Return an object representing local file @var{file} to add to the store;
this object can be used in a gexp. If @var{file} is a literal string
denoting a relative file name, it is looked up relative to the source
@@ -11994,23 +12124,23 @@ entries for which @var{select?} does not return true.
This is the declarative counterpart of the @code{interned-file} monadic
procedure (@pxref{The Store Monad, @code{interned-file}}).
-@end defun
+@end deffn
-@defun plain-file name content
+@deffn {Procedure} plain-file name content
Return an object representing a text file called @var{name} with the given
@var{content} (a string or a bytevector) to be added to the store.
This is the declarative counterpart of @code{text-file}.
-@end defun
+@end deffn
-@defun computed-file name gexp [#:local-build? #t] [#:options '()]
+@deffn {Procedure} computed-file name gexp [#:local-build? #t] [#:options '()]
Return an object representing the store item @var{name}, a file or
directory computed by @var{gexp}. When @var{local-build?} is true (the
default), the derivation is built locally. @var{options} is a list of
additional arguments to pass to @code{gexp->derivation}.
This is the declarative counterpart of @code{gexp->derivation}.
-@end defun
+@end deffn
@deffn {Monadic Procedure} gexp->script @var{name} @var{exp} @
[#:guile (default-guile)] [#:module-path %load-path] @
@@ -12041,13 +12171,13 @@ executable file @file{/gnu/store/@dots{}-list-files} along these lines:
@end example
@end deffn
-@defun program-file name exp [#:guile #f] [#:module-path %load-path]
+@deffn {Procedure} program-file name exp [#:guile #f] [#:module-path %load-path]
Return an object representing the executable store item @var{name} that
runs @var{gexp}. @var{guile} is the Guile package used to execute that
script. Imported modules of @var{gexp} are looked up in @var{module-path}.
This is the declarative counterpart of @code{gexp->script}.
-@end defun
+@end deffn
@deffn {Monadic Procedure} gexp->file @var{name} @var{exp} @
[#:set-load-path? #t] [#:module-path %load-path] @
@@ -12066,12 +12196,12 @@ The resulting file holds references to all the dependencies of @var{exp}
or a subset thereof.
@end deffn
-@defun scheme-file name exp [#:splice? #f] [#:set-load-path? #t]
+@deffn {Procedure} scheme-file name exp [#:splice? #f] [#:set-load-path? #t]
Return an object representing the Scheme file @var{name} that contains
@var{exp}.
This is the declarative counterpart of @code{gexp->file}.
-@end defun
+@end deffn
@deffn {Monadic Procedure} text-file* @var{name} @var{text} @dots{}
Return as a monadic value a derivation that builds a text file
@@ -12099,7 +12229,7 @@ will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby
preventing them from being garbage-collected during its lifetime.
@end deffn
-@defun mixed-text-file name text @dots{}
+@deffn {Procedure} mixed-text-file name text @dots{}
Return an object representing store file @var{name} containing
@var{text}. @var{text} is a sequence of strings and file-like objects,
as in:
@@ -12110,9 +12240,9 @@ as in:
@end lisp
This is the declarative counterpart of @code{text-file*}.
-@end defun
+@end deffn
-@defun file-union name files
+@deffn {Procedure} file-union name files
Return a @code{<computed-file>} that builds a directory containing all of @var{files}.
Each item in @var{files} must be a two-element list where the first element is the
file name to use in the new directory, and the second element is a gexp
@@ -12127,9 +12257,9 @@ denoting the target file. Here's an example:
@end lisp
This yields an @code{etc} directory containing these two files.
-@end defun
+@end deffn
-@defun directory-union name things
+@deffn {Procedure} directory-union name things
Return a directory that is the union of @var{things}, where @var{things} is a list of
file-like objects denoting directories. For example:
@@ -12138,9 +12268,9 @@ file-like objects denoting directories. For example:
@end lisp
yields a directory that is the union of the @code{guile} and @code{emacs} packages.
-@end defun
+@end deffn
-@defun file-append obj suffix @dots{}
+@deffn {Procedure} file-append obj suffix @dots{}
Return a file-like object that expands to the concatenation of @var{obj}
and @var{suffix}, where @var{obj} is a lowerable object and each
@var{suffix} is a string.
@@ -12165,7 +12295,7 @@ There is one difference though: in the @code{file-append} case, the
resulting script contains the absolute file name as a string, whereas in
the second case, the resulting script contains a @code{(string-append
@dots{})} expression to construct the file name @emph{at run time}.
-@end defun
+@end deffn
@defmac let-system system body@dots{}
@defmacx let-system (system target) body@dots{}
@@ -12232,7 +12362,7 @@ corresponding to @var{obj} for @var{system}, cross-compiling for
has an associated gexp compiler, such as a @code{<package>}.
@end deffn
-@defun gexp->approximate-sexp gexp
+@deffn {Procedure} gexp->approximate-sexp gexp
Sometimes, it may be useful to convert a G-exp into a S-exp. For
example, some linters (@pxref{Invoking guix lint}) peek into the build
phases of a package to detect potential problems. This conversion can
@@ -12240,7 +12370,7 @@ be achieved with this procedure. However, some information can be lost
in the process. More specifically, lowerable objects will be silently
replaced with some arbitrary object -- currently the list
@code{(*approximate*)}, but this may change.
-@end defun
+@end deffn
@node Invoking guix repl
@section Invoking @command{guix repl}
@@ -17162,7 +17292,7 @@ example for an encrypted partition (@pxref{Mapped Devices}).
@end table
@end deftp
-@defun file-system-label str
+@deffn {Procedure} file-system-label str
This procedure returns an opaque file system label from @var{str}, a
string:
@@ -17173,7 +17303,7 @@ string:
File system labels are used to refer to file systems by label rather
than by device name. See above for examples.
-@end defun
+@end deffn
The @code{(gnu system file-systems)} exports the following useful
variables.
@@ -17224,7 +17354,7 @@ and unmount user-space FUSE file systems. This requires the
The @code{(gnu system uuid)} module provides tools to deal with file
system ``unique identifiers'' (UUIDs).
-@defun uuid str [type]
+@deffn {Procedure} uuid str [type]
Return an opaque UUID (unique identifier) object of the given @var{type}
(a symbol) by parsing @var{str} (a string):
@@ -17241,7 +17371,7 @@ Return an opaque UUID (unique identifier) object of the given @var{type}
UUIDs are another way to unambiguously refer to file systems in
operating system configuration. See the examples above.
-@end defun
+@end deffn
@menu
@@ -17909,13 +18039,13 @@ optional variant name, an optional keyboard model name, and a possibly empty
list of additional options. In most cases the layout name is all you care
about.
-@defun keyboard-layout name [variant] [#:model] [#:options '()]
+@deffn {Procedure} keyboard-layout name [variant] [#:model] [#:options '()]
Return a new keyboard layout with the given @var{name} and @var{variant}.
@var{name} must be a string such as @code{"fr"}; @var{variant} must be a
string such as @code{"bepo"} or @code{"nodeadkeys"}. See the
@code{xkeyboard-config} package for valid options.
-@end defun
+@end deffn
Here are a few examples:
@@ -18307,7 +18437,7 @@ to add a special file is @i{via} the @code{extra-special-file} procedure
(see below).
@end defvar
-@defun extra-special-file file target
+@deffn {Procedure} extra-special-file file target
Use @var{target} as the ``special file'' @var{file}.
For example, adding the following lines to the @code{services} field of
@@ -18318,7 +18448,7 @@ symlink:
(extra-special-file "/usr/bin/env"
(file-append coreutils "/bin/env"))
@end lisp
-@end defun
+@end deffn
@defvar host-name-service-type
Type of the service that sets the system host name, whose value
@@ -18392,14 +18522,14 @@ alias of @code{localhost}.
@end defvar
-@defun host @var{address} @var{canonical-name} [@var{aliases}]
+@deffn {Procedure} host @var{address} @var{canonical-name} [@var{aliases}]
Return a new record for the host at @var{address} with the given
@var{canonical-name} and possibly @var{aliases}.
@var{address} must be a string denoting a valid IPv4 or IPv6 address, and
@var{canonical-name} and the strings listed in @var{aliases} must be valid
host names.
-@end defun
+@end deffn
@defvar login-service-type
Type of the service that provides a console login service, whose value
@@ -19011,7 +19141,7 @@ List of file-like objects denoting udev-rule files.
@end table
@end deftp
-@defun udev-rule @var{file-name} @var{contents}
+@deffn {Procedure} udev-rule @var{file-name} @var{contents}
Return a udev-rule file named @var{file-name} containing the rules
defined by the @var{contents} literal.
@@ -19027,9 +19157,9 @@ upon detecting a USB device with a given product identifier.
"ATTR@{product@}==\"Example\", "
"RUN+=\"/path/to/script\"")))
@end lisp
-@end defun
+@end deffn
-@defun udev-rules-service @var{name} @var{rules} [#:groups '()]
+@deffn {Procedure} udev-rules-service @var{name} @var{rules} [#:groups '()]
Return a service that extends @code{udev-service-type} with @var{rules}
and @code{account-service-type} with @var{groups} as system groups.
This works by creating a singleton service type
@@ -19046,9 +19176,9 @@ with the previously defined rule @code{%example-udev-rule}.
(cons (udev-rules-service 'usb-thing %example-udev-rule)
%desktop-services)))
@end lisp
-@end defun
+@end deffn
-@defun file->udev-rule @var{file-name} @var{file}
+@deffn {Procedure} file->udev-rule @var{file-name} @var{file}
Return a udev-rule file named @var{file-name} containing the rules
defined within @var{file}, a file-like object.
@@ -19070,7 +19200,7 @@ The following example showcases how we can use an existing rule file.
(sha256
(base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))
@end lisp
-@end defun
+@end deffn
Additionally, Guix package definitions can be included in @var{rules} in
order to extend the udev rules with the definitions found under their
@@ -22532,22 +22662,22 @@ default is @code{-nolisten tcp}.
@end table
@end deftp
-@defun set-xorg-configuration config [login-manager-service-type]
+@deffn {Procedure} set-xorg-configuration config [login-manager-service-type]
Tell the log-in manager (of type @var{login-manager-service-type}) to use
@var{config}, an @code{<xorg-configuration>} record.
Since the Xorg configuration is embedded in the log-in manager's
configuration---e.g., @code{gdm-configuration}---this procedure provides a
shorthand to set the Xorg configuration.
-@end defun
+@end deffn
-@defun xorg-start-command [config]
+@deffn {Procedure} xorg-start-command [config]
Return a @code{startx} script in which the modules, fonts, etc. specified
in @var{config}, are available. The result should be used in place of
@code{startx}.
Usually the X server is started by a login manager.
-@end defun
+@end deffn
@defvar screen-locker-service-type
@@ -23981,7 +24111,7 @@ a system which relies on @code{%desktop-services}, you may use
@end lisp
@end defvar
-@defun geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()]
+@deffn {Procedure} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()]
Return a configuration allowing an application to access GeoClue
location data. @var{name} is the Desktop ID of the application, without
the @code{.desktop} part. If @var{allowed?} is true, the application
@@ -23990,7 +24120,7 @@ will have access to location information by default. The boolean
or not. Finally @var{users} is a list of UIDs of all users for which
this application is allowed location info access. An empty users list
means that all users are allowed.
-@end defun
+@end deffn
@defvar %standard-geoclue-applications
The standard list of well-known GeoClue application configurations,
@@ -27952,7 +28082,7 @@ client is already being used. Otherwise, the
procedures provided by this module can be used to obtain a suitable hash
value.
-@defun transmission-password-hash password salt
+@deffn {Procedure} transmission-password-hash password salt
Returns a string containing the result of hashing @var{password}
together with @var{salt}, in the format recognized by Transmission
clients for their @code{rpc-password} configuration setting.
@@ -27960,13 +28090,13 @@ clients for their @code{rpc-password} configuration setting.
@var{salt} must be an eight-character string. The
@code{transmission-random-salt} procedure can be used to generate a
suitable salt value at random.
-@end defun
+@end deffn
-@defun transmission-random-salt
+@deffn {Procedure} transmission-random-salt
Returns a string containing a random, eight-character salt value of the
type generated and used by Transmission clients, suitable for passing to
the @code{transmission-password-hash} procedure.
-@end defun
+@end deffn
These procedures are accessible from within a Guile REPL started with
the @command{guix repl} command (@pxref{Invoking guix repl}). This is
@@ -31105,11 +31235,11 @@ The time in seconds after which a process with no requests is killed.
@end deftp
-@defun nginx-php-location [#:nginx-package nginx] @
+@deffn {Procedure} nginx-php-location [#:nginx-package nginx] @
[socket (string-append "/var/run/php" @
(version-major (package-version php)) "-fpm.sock")]
A helper function to quickly add php to an @code{nginx-server-configuration}.
-@end defun
+@end deffn
A simple services setup for nginx with php can look like this:
@lisp
@@ -31132,7 +31262,7 @@ The cat avatar generator is a simple service to demonstrate the use of php-fpm
in @code{Nginx}. It is used to generate cat avatar from a seed, for instance
the hash of a user's email address.
-@defun cat-avatar-generator-service @
+@deffn {Procedure} cat-avatar-generator-service @
[#:cache-dir "/var/cache/cat-avatar-generator"] @
[#:package cat-avatar-generator] @
[#:configuration (nginx-server-configuration)]
@@ -31140,7 +31270,7 @@ Returns an nginx-server-configuration that inherits @code{configuration}. It
extends the nginx configuration to add a server block that serves @code{package},
a version of cat-avatar-generator. During execution, cat-avatar-generator will
be able to use @code{cache-dir} as its cache directory.
-@end defun
+@end deffn
A simple setup for cat-avatar-generator can look like this:
@lisp
@@ -33165,7 +33295,7 @@ providing substitutes to others (@pxref{Substitutes}).
The @code{(gnu services cuirass)} module provides the following service.
-@defvr {Scheme Procedure} cuirass-service-type
+@defvr {Procedure} cuirass-service-type
The type of the Cuirass service. Its value must be a
@code{cuirass-configuration} object, as described below.
@end defvr
@@ -33392,7 +33522,7 @@ instead uses version-controllable configuration files and scripts.
Laminar encourages the use of existing tools such as bash and cron
instead of reinventing them.
-@defvr {Scheme Procedure} laminar-service-type
+@defvar laminar-service-type
The type of the Laminar service. Its value must be a
@code{laminar-configuration} object, as described below.
@@ -33403,7 +33533,7 @@ available on port 8080.
@lisp
(service laminar-service-type)
@end lisp
-@end defvr
+@end defvar
@deftp {Data Type} laminar-configuration
Data type representing the configuration of Laminar.
@@ -35153,20 +35283,20 @@ The QEMU package to use.
@end table
@end deftp
-@defun lookup-qemu-platforms platforms@dots{}
+@deffn {Procedure} lookup-qemu-platforms platforms@dots{}
Return the list of QEMU platform objects corresponding to
@var{platforms}@dots{}. @var{platforms} must be a list of strings
corresponding to platform names, such as @code{"arm"}, @code{"sparc"},
@code{"mips64el"}, and so on.
-@end defun
+@end deffn
-@defun qemu-platform? obj
+@deffn {Procedure} qemu-platform? obj
Return true if @var{obj} is a platform object.
-@end defun
+@end deffn
-@defun qemu-platform-name platform
+@deffn {Procedure} qemu-platform-name platform
Return the name of @var{platform}---a string such as @code{"arm"}.
-@end defun
+@end deffn
@subsubheading QEMU Guest Agent
@@ -35662,27 +35792,27 @@ Alignment of the partition in sectors.
@end table
@end deftp
-@defun debootstrap-variant name configuration
+@deffn {Procedure} debootstrap-variant name configuration
This is a helper procedure that creates a @code{ganeti-os-variant} record. It
takes two parameters: a name and a @code{debootstrap-configuration} object.
-@end defun
+@end deffn
-@defun debootstrap-os variants@dots{}
+@deffn {Procedure} debootstrap-os variants@dots{}
This is a helper procedure that creates a @code{ganeti-os} record. It takes
a list of variants created with @code{debootstrap-variant}.
-@end defun
+@end deffn
-@defun guix-variant name configuration
+@deffn {Procedure} guix-variant name configuration
This is a helper procedure that creates a @code{ganeti-os-variant} record for
use with the Guix OS provider. It takes a name and a G-expression that returns
a ``file-like'' (@pxref{G-Expressions, file-like objects}) object containing a
Guix System configuration.
-@end defun
+@end deffn
-@defun guix-os variants@dots{}
+@deffn {Procedure} guix-os variants@dots{}
This is a helper procedure that creates a @code{ganeti-os} record. It
takes a list of variants produced by @code{guix-variant}.
-@end defun
+@end deffn
@defvar %default-debootstrap-variants
This is a convenience variable to make the debootstrap provider work
@@ -36180,7 +36310,7 @@ create an @code{nginx-location-configuration} from a
@code{git-http-configuration} and then add that location to a web
server.
-@defun git-http-nginx-location-configuration @
+@deffn {Procedure} git-http-nginx-location-configuration @
[config=(git-http-configuration)]
Compute an @code{nginx-location-configuration} that corresponds to the
given Git http configuration. An example nginx service definition to
@@ -36209,7 +36339,7 @@ certificate. @xref{Certificate Services}. The default @code{certbot}
service will redirect all HTTP traffic on @code{git.my-host.org} to
HTTPS@. You will also need to add an @code{fcgiwrap} proxy to your
system services. @xref{Web Services}.
-@end defun
+@end deffn
@subsubheading Cgit Service
@@ -38890,7 +39020,7 @@ is an example of a basic, explicit configuration:
@end lisp
@end defvar
-@defun fail2ban-jail-service svc-type jail
+@deffn {Procedure} fail2ban-jail-service svc-type jail
Extend @var{svc-type}, a @code{<service-type>} object with @var{jail}, a
@code{fail2ban-jail-configuration} object.
@@ -38910,7 +39040,7 @@ For example:
(enabled? #t)))
(openssh-configuration ...))))
@end lisp
-@end defun
+@end deffn
Below is the reference for the different @code{jail-service-type}
configuration records.
@@ -39518,7 +39648,7 @@ here is how to use it and customize it further.
@cindex initrd
@cindex initial RAM disk
-@defun raw-initrd file-systems @
+@deffn {Procedure} raw-initrd file-systems @
[#:linux-modules '()] [#:pre-mount #t] [#:mapped-devices '()] @
[#:keyboard-layout #f] [#:helper-packages '()] @
[#:qemu-networking? #f] [#:volatile-root? #f]
@@ -39547,9 +39677,9 @@ initrd can be used as a QEMU guest with para-virtualized I/O drivers.
When @var{volatile-root?} is true, the root file system is writable but any changes
to it are lost.
-@end defun
+@end deffn
-@defun base-initrd file-systems @
+@deffn {Procedure} base-initrd file-systems @
[#:mapped-devices '()] [#:keyboard-layout #f] @
[#:qemu-networking? #f] [#:volatile-root? #f] @
[#:linux-modules '()]
@@ -39571,7 +39701,7 @@ The initrd is automatically populated with all the kernel modules necessary
for @var{file-systems} and for the given options. Additional kernel
modules can be listed in @var{linux-modules}. They will be added to the initrd, and
loaded at boot time in the order in which they appear.
-@end defun
+@end deffn
Needless to say, the initrds we produce and use embed a
statically-linked Guile, and the initialization program is a Guile
@@ -39579,13 +39709,13 @@ program. That gives a lot of flexibility. The
@code{expression->initrd} procedure builds such an initrd, given the
program to run in that initrd.
-@defun expression->initrd exp @
+@deffn {Procedure} expression->initrd exp @
[#:guile %guile-static-stripped] [#:name "guile-initrd"]
Return as a file-like object a Linux initrd (a gzipped cpio archive)
containing @var{guile} and that evaluates @var{exp}, a G-expression,
upon booting. All the derivations referenced by @var{exp} are
automatically copied to the initrd.
-@end defun
+@end deffn
@node Bootloader Configuration
@section Bootloader Configuration
@@ -39931,14 +40061,14 @@ The GRUB @code{gfxmode} to set (a list of screen resolution strings,
@end table
@end deftp
-@defun grub-theme
+@deffn {Procedure} grub-theme
Return the default GRUB theme used by the operating system if no
@code{theme} field is specified in @code{bootloader-configuration}
record.
It comes with a fancy background image displaying the GNU and Guix
logos.
-@end defun
+@end deffn
For example, to override the default resolution, you may use something
like
@@ -41147,7 +41277,7 @@ The service type for an @emph{extensible} service looks like this:
@end lisp
This is the service type for the
-@uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device
+@uref{https://github.com/eudev-project/eudev, eudev device
management daemon}. Compared to the previous example, in addition to an
extension of @code{shepherd-root-service-type}, we see two new fields:
@@ -41190,7 +41320,7 @@ Services}). This section provides a reference on how to manipulate
services and service types. This interface is provided by the
@code{(gnu services)} module.
-@defun service type [value]
+@deffn {Procedure} service type [value]
Return a new service of @var{type}, a @code{<service-type>} object (see
below). @var{value} can be any object; it represents the parameters of
this particular service instance.
@@ -41215,20 +41345,20 @@ is equivalent to this:
In both cases the result is an instance of @code{openssh-service-type}
with the default configuration.
-@end defun
+@end deffn
-@defun service? obj
+@deffn {Procedure} service? obj
Return true if @var{obj} is a service.
-@end defun
+@end deffn
-@defun service-kind service
+@deffn {Procedure} service-kind service
Return the type of @var{service}---i.e., a @code{<service-type>} object.
-@end defun
+@end deffn
-@defun service-value service
+@deffn {Procedure} service-value service
Return the value associated with @var{service}. It represents its
parameters.
-@end defun
+@end deffn
Here is an example of how a service is created and manipulated:
@@ -41349,23 +41479,23 @@ The returned service in this case has the default value specified by
@xref{Service Types and Services}, for examples.
@end deftp
-@defun service-extension target-type compute
+@deffn {Procedure} service-extension target-type compute
Return a new extension for services of type @var{target-type}.
@var{compute} must be a one-argument procedure: @code{fold-services}
calls it, passing it the value associated with the service that provides
the extension; it must return a valid value for the target service.
-@end defun
+@end deffn
-@defun service-extension? obj
+@deffn {Procedure} service-extension? obj
Return true if @var{obj} is a service extension.
-@end defun
+@end deffn
Occasionally, you might want to simply extend an existing service. This
involves creating a new service type and specifying the extension of
interest, which can be verbose; the @code{simple-service} procedure
provides a shorthand for this.
-@defun simple-service name target value
+@deffn {Procedure} simple-service name target value
Return a service that extends @var{target} with @var{value}. This works
by creating a singleton service type @var{name}, of which the returned
service is an instance.
@@ -41377,7 +41507,7 @@ an additional job:
(simple-service 'my-mcron-job mcron-service-type
#~(job '(next-hour (3)) "guix gc -F 2G"))
@end lisp
-@end defun
+@end deffn
At the core of the service abstraction lies the @code{fold-services}
procedure, which is responsible for ``compiling'' a list of services
@@ -41387,10 +41517,10 @@ command (@pxref{Invoking guix system}). In essence, it propagates
service extensions down the service graph, updating each node parameters
on the way, until it reaches the root node.
-@defun fold-services services [#:target-type system-service-type]
+@deffn {Procedure} fold-services services [#:target-type system-service-type]
Fold @var{services} by propagating their extensions down to the root of
type @var{target-type}; return the root service adjusted accordingly.
-@end defun
+@end deffn
Lastly, the @code{(gnu services)} module also defines several essential
service types, some of which are listed below.
@@ -41673,7 +41803,7 @@ info on actions.
@end deftp
@cindex configuration file, of Shepherd services
-@defun shepherd-configuration-action
+@deffn {Procedure} shepherd-configuration-action
Return a @code{configuration} action to display @var{file}, which should
be the name of the service's configuration file.
@@ -41703,7 +41833,7 @@ cat $(herd configuration tor)
@end example
This can come in as a handy debugging tool!
-@end defun
+@end deffn
@defvar shepherd-root-service-type
The service type for the Shepherd ``root service''---i.e., PID@tie{}1.
@@ -41958,28 +42088,28 @@ whether its value is set or not.
@end lisp
@end defmac
-@defun maybe-value-set? value
+@deffn {Procedure} maybe-value-set? value
Predicate to check whether a user explicitly specified the value of a
maybe field.
-@end defun
+@end deffn
-@defun serialize-configuration configuration fields
+@deffn {Procedure} serialize-configuration configuration fields
Return a G-expression that contains the values corresponding to the
@var{fields} of @var{configuration}, a record that has been generated by
@code{define-configuration}. The G-expression can then be serialized to
disk by using something like @code{mixed-text-file}.
-@end defun
+@end deffn
-@defun empty-serializer field-name value
+@deffn {Procedure} empty-serializer field-name value
A serializer that just returns an empty string. The
@code{serialize-package} procedure is an alias for this.
-@end defun
+@end deffn
Once you have defined a configuration record, you will most likely also
want to document it so that other people know to use it. To help with
that, there are two procedures, both of which are documented below.
-@defun generate-documentation documentation documentation-name
+@deffn {Procedure} generate-documentation documentation documentation-name
Generate a Texinfo fragment from the docstrings in @var{documentation},
a list of @code{(@var{label} @var{fields} @var{sub-documentation} ...)}.
@var{label} should be a symbol and should be the name of the
@@ -42009,15 +42139,15 @@ record in one of its @code{rcfile} field, therefore documentation for
@var{documentation-name} should be a symbol and should be the name of
the configuration record.
-@end defun
+@end deffn
-@defun configuration->documentation configuration-symbol
+@deffn {Procedure} configuration->documentation configuration-symbol
Take @var{configuration-symbol}, the symbol corresponding to the name
used when defining a configuration record with
@code{define-configuration}, and print the Texinfo documentation of its
fields. This is useful if there aren’t any nested configuration records
since it only prints the documentation for the top-level fields.
-@end defun
+@end deffn
As of right now, there is no automated way to generate documentation for
configuration records and put them in the manual. Instead, every
@@ -43076,6 +43206,20 @@ Concretely, these files are concatenated and made available as
running on this machine, then it @emph{may} take this file into account:
this is what @command{sshd} does by default, but be aware that it can
also be configured to ignore it.
+
+@item @code{add-keys-to-agent} (default: @code{``no''})
+This string specifies whether keys should be automatically added to a
+running ssh-agent. If this option is set to @code{``yes''} and a key is
+loaded from a file, the key and its passphrase are added to the agent
+with the default lifetime, as if by @code{ssh-add}. If this option is
+set to @code{``ask''}, @code{ssh} will require confirmation. If this
+option is set to @code{``confirm''}, each use of the key must be
+confirmed. If this option is set to @code{``no''}, no keys are added to
+the agent. Alternately, this option may be specified as a time interval
+to specify the key's lifetime in @code{ssh-agent}, after which it will
+automatically be removed. The argument must be @code{``no''},
+@code{``yes''}, @code{``confirm''} (optionally followed by a time
+interval), @code{``ask''} or a time interval.
@end table
@end deftp
@@ -43086,11 +43230,21 @@ Available @code{openssh-host} fields are:
@table @asis
@item @code{name} (type: string)
-Name of this host declaration.
+Name of this host declaration. A @code{openssh-host} must define only
+@code{name} or @code{match-criteria}. Use host-name @code{\"*\"} for
+top-level options.
@item @code{host-name} (type: maybe-string)
Host name---e.g., @code{"foo.example.org"} or @code{"192.168.1.2"}.
+@item @code{match-criteria} (type: maybe-match-criteria)
+When specified, this string denotes the set of hosts to which the entry
+applies, superseding the @code{host-name} field. Its first element must be
+all or one of @code{ssh-match-keywords}. The rest of the elements are
+arguments for the keyword, or other criteria. A @code{openssh-host} must
+define only @code{name} or @code{match-criteria}. Other host configuration
+options will apply to all hosts matching @code{match-criteria}.
+
@item @code{address-family} (type: maybe-address-family)
Address family to use when connecting to this host: one of
@code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only).
@@ -43105,19 +43259,19 @@ TCP port number to connect to.
@item @code{user} (type: maybe-string)
User name on the remote host.
-@item @code{forward-x11?} (default: @code{#f}) (type: boolean)
+@item @code{forward-x11?} (type: maybe-boolean)
Whether to forward remote client connections to the local X11 graphical
display.
-@item @code{forward-x11-trusted?} (default: @code{#f}) (type: boolean)
+@item @code{forward-x11-trusted?} (type: maybe-boolean)
Whether remote X11 clients have full access to the original X11
graphical display.
-@item @code{forward-agent?} (default: @code{#f}) (type: boolean)
+@item @code{forward-agent?} (type: maybe-boolean)
Whether the authentication agent (if any) is forwarded to the remote
machine.
-@item @code{compression?} (default: @code{#f}) (type: boolean)
+@item @code{compression?} (type: maybe-boolean)
Whether to compress data in transit.
@item @code{proxy} (type: maybe-proxy-command-or-jump-list)
@@ -43168,7 +43322,7 @@ Extra content appended as-is to this @code{Host} block in
The @uref{https://www.openssh.com, OpenSSH package} includes a daemon,
the @command{ssh-agent} command, that manages keys to connect to remote
machines using the @acronym{SSH, secure shell} protocol. With the
-@code{(gnu home services ssh-agent)} service, you can configure the
+@code{(gnu home services ssh)} service, you can configure the
OpenSSH ssh-agent to run upon login. @xref{GNU Privacy Guard,
@code{home-gpg-agent-service-type}}, for an alternative to OpenSSH's
@command{ssh-agent}.
diff --git a/etc/news.scm b/etc/news.scm
index 314f0ab352..1768d5c5e9 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -26,6 +26,55 @@
(channel-news
(version 0)
+ (entry (commit "1b7aabbc79969a89141aadd3d41d7a5329a3462e")
+ (title
+ (en "New @command{guix locate} command")
+ (de "Neuer Befehl @command{guix locate}")
+ (fr "Nouvelle commande @command{guix locate}"))
+ (body
+ (en "The new @command{guix locate} command lets you search for
+packages containing a given file---at long last! For instance, to find which
+package(s) provide a file named @file{ls}, run:
+
+@example
+guix locate ls
+@end example
+
+Currently the command relies on purely local information. It is thus unable
+to find packages that have not reached your store. This limitation will be
+lifted in a future revision.
+
+Run @command{info \"(guix) Invoking guix locate\"} for more info.")
+ (de "Mit dem neuen Befehl @command{guix locate} können Sie nach
+Paketen suchen, die eine angegebene Datei enthalten — endlich ist es
+soweit! Um zum Beispiel das Paket bzw.@: die Pakete zu finden, die eine
+Datei namens @file{ls} bereitstellen, führen Sie aus:
+
+@example
+guix locate ls
+@end example
+
+Derzeit benutzt der Befehl ausschließlich lokal vorliegende
+Informationen. Daher können Sie damit nur Pakete finden, die sich in
+Ihrem Store-Verzeichnis befinden. Diese Einschränkung werden wir in
+einer zukünftigen Version aufheben.
+
+Führen Sie @command{info \"(guix) Invoking guix locate\"} aus, um mehr zu
+erfahren.")
+ (fr "La nouvelle commande @command{guix locate} permet de chercher le
+ou les paquets contenant un fichier donné---enfin ! Par exemple, pour trouver
+quel paquet fournit un fichier nommé @file{ls}, on lance :
+
+@example
+guix locate ls
+@end example
+
+Pour le moment la commande se base uniquement sur des informations locales.
+Elle ne peut donc pas trouver des paquets absents de votre dépôt. Cette limitation
+sera levée dans une prochaine version.
+
+Lancer @command{info \"(guix) Invoking guix locate\"} pour plus d'informations.")))
+
(entry (commit "ba5da5125a81307500982517e2f458d57b024668")
(title
(en "New @code{arguments} rule for @command{guix style}")
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 65d7923465..712db15b02 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -43,6 +44,7 @@
u-boot-puma-rk3399-bootloader
u-boot-rock64-rk3328-bootloader
u-boot-rockpro64-rk3399-bootloader
+ u-boot-sifive-unmatched-bootloader
u-boot-ts7970-q-2g-1000mhz-c-bootloader
u-boot-wandboard-bootloader))
@@ -135,6 +137,15 @@
(install-dir (string-append mount-point "/boot")))
(install-file u-boot.imx install-dir))))
+(define install-sifive-unmatched-u-boot
+ #~(lambda (bootloader root-index image)
+ (let ((spl (string-append bootloader "/libexec/spl/u-boot-spl.bin"))
+ (u-boot (string-append bootloader "/libexec/u-boot.itb")))
+ (write-file-on-device spl (stat:size (stat spl))
+ image (* 34 512))
+ (write-file-on-device u-boot (stat:size (stat u-boot))
+ image (* 2082 512)))))
+
;;;
@@ -273,3 +284,9 @@
(package u-boot-ts7970-q-2g-1000mhz-c)
(installer install-u-boot-ts7970-q-2g-1000mhz-c-u-boot)
(disk-image-installer #f)))
+
+(define u-boot-sifive-unmatched-bootloader
+ (bootloader
+ (inherit u-boot-bootloader)
+ (package u-boot-sifive-unmatched)
+ (disk-image-installer install-sifive-unmatched-u-boot)))
diff --git a/gnu/build/image.scm b/gnu/build/image.scm
index 65a0373980..49dc01c0d1 100644
--- a/gnu/build/image.scm
+++ b/gnu/build/image.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -122,6 +123,14 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
(string-append "::" file))))
(scandir root))))
+(define* (make-unformatted-image partition target)
+ "Make an unformatted partition of a certain size."
+ (let ((size (partition-size partition)))
+ ;; Create the file and then truncate it to the desired size.
+ (with-output-to-file target
+ (lambda _ (display "")))
+ (truncate-file target size)))
+
(define* (make-partition-image partition-sexp target root)
"Create and return the image of PARTITION-SEXP as TARGET. Use the given
ROOT directory to populate the image."
@@ -134,6 +143,8 @@ ROOT directory to populate the image."
(make-vfat-image partition target root 16))
((string=? type "fat32")
(make-vfat-image partition target root 32))
+ ((string=? type "unformatted")
+ (make-unformatted-image partition target))
(else
(raise (condition
(&message
diff --git a/gnu/home/services/desktop.scm b/gnu/home/services/desktop.scm
index 661fe7d283..626918fd9e 100644
--- a/gnu/home/services/desktop.scm
+++ b/gnu/home/services/desktop.scm
@@ -214,9 +214,9 @@ according to time of day.")))
(cons "DBUS_VERBOSE=1"
(default-environment-variables))
#:log-file
- (format #f "~a/dbus.log"
- (or (getenv "XDG_LOG_HOME")
- (format #f "~a/.local/var/log"
+ (format #f "~a/log/dbus.log"
+ (or (getenv "XDG_STATE_HOME")
+ (format #f "~a/.local/state"
(getenv "HOME"))))))
(stop #~(make-kill-destructor)))))
@@ -264,10 +264,10 @@ according to time of day.")))
(number->string
#$(home-unclutter-configuration-idle-timeout config)))
#:log-file (string-append
- (or (getenv "XDG_LOG_HOME")
- (format #f "~a/.local/var/log"
+ (or (getenv "XDG_STATE_HOME")
+ (format #f "~a/.local/state"
(getenv "HOME")))
- "/unclutter.log"))))))
+ "/log/unclutter.log"))))))
(define home-unclutter-service-type
(service-type
diff --git a/gnu/home/services/mcron.scm b/gnu/home/services/mcron.scm
index 5f35bfe054..f51edd6634 100644
--- a/gnu/home/services/mcron.scm
+++ b/gnu/home/services/mcron.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2021, 2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
@@ -99,10 +99,10 @@ Each message is also prefixed by a timestamp by GNU Shepherd."))
#~())
#$@files)
#:log-file (string-append
- (or (getenv "XDG_LOG_HOME")
- (format #f "~a/.local/var/log"
+ (or (getenv "XDG_STATE_HOME")
+ (format #f "~a/.local/state"
(getenv "HOME")))
- "/mcron.log")))
+ "/log/mcron.log")))
(stop #~(make-kill-destructor))
(actions
(list (shepherd-schedule-action mcron files)))))))))
diff --git a/gnu/home/services/pm.scm b/gnu/home/services/pm.scm
index 5f09941827..d8361fd214 100644
--- a/gnu/home/services/pm.scm
+++ b/gnu/home/services/pm.scm
@@ -128,10 +128,10 @@
(list "-i")
(list)))
#:log-file (string-append
- (or (getenv "XDG_LOG_HOME")
- (format #f "~a/.local/var/log"
- (getenv "HOME")))
- "/batsignal.log")))
+ (or (getenv "XDG_STATE_HOME")
+ (format #f "~a/.local/state"
+ (getenv "HOME")))
+ "/log/batsignal.log")))
(stop #~(make-kill-destructor))))))
(define home-batsignal-service-type
diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm
index ff6d629114..5585ef61b2 100644
--- a/gnu/home/services/shepherd.scm
+++ b/gnu/home/services/shepherd.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2021, 2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
@@ -108,9 +108,10 @@ as shepherd package."
(or (getenv "XDG_RUNTIME_DIR")
(format #f "/run/user/~a" (getuid)))
"/shepherd/socket"))
- (let ((log-dir (or (getenv "XDG_LOG_HOME")
- (format #f "~a/.local/var/log"
- (getenv "HOME")))))
+ (let* ((state-dir (or (getenv "XDG_STATE_HOME")
+ (format #f "~a/.local/state"
+ (getenv "HOME"))))
+ (log-dir (string-append state-dir "/log")))
;; TODO: Remove it, 0.9.2 creates it automatically?
((@ (guix build utils) mkdir-p) log-dir)
(system*
diff --git a/gnu/home/services/ssh.scm b/gnu/home/services/ssh.scm
index 628dc743ae..ac72129b6c 100644
--- a/gnu/home/services/ssh.scm
+++ b/gnu/home/services/ssh.scm
@@ -1,6 +1,8 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,14 +40,23 @@
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (ice-9 match)
+ #:autoload (ice-9 regex) (string-match match:substring)
#:export (home-openssh-configuration
home-openssh-configuration-authorized-keys
home-openssh-configuration-known-hosts
home-openssh-configuration-hosts
+ home-openssh-configuration-add-keys-to-agent
+ home-openssh-configuration?
+
home-ssh-agent-configuration
+ home-ssh-agent-openssh
+ home-ssh-agent-socket-directory
+ home-ssh-agent-extra-options
+ home-ssh-agent-configuration?
openssh-host
openssh-host-host-name
+ openssh-host-match-criteria
openssh-host-identity-file
openssh-host-name
openssh-host-port
@@ -93,7 +104,11 @@
(cond ((= family AF_INET) "inet")
((= family AF_INET6) "inet6")
;; The 'else' branch is unreachable.
- (else (raise (condition (&error)))))
+ (else
+ (raise
+ (formatted-message
+ (G_ "~s: invalid address family value")
+ family))))
"\n")
""))
@@ -104,6 +119,8 @@
(string-append " " (serialize-field-name field) " "
(number->string value) "\n"))
+(define-maybe boolean)
+
(define (serialize-boolean field value)
(string-append " " (serialize-field-name field) " "
(if value "yes" "no") "\n"))
@@ -171,13 +188,40 @@
(configuration-field-error (source-properties->location properties) 'proxy-command value))
value))
+(define ssh-match-keywords
+ '(canonical final exec host originalhost user localuser))
+
+(define (match-criteria? str)
+ ;; Rule out the case of "all" keyword.
+ (if (member str '("all"
+ "canonical all"
+ "final all"))
+ #t
+ (let* ((first (string-take str (string-index str #\ )))
+ (keyword (string->symbol (if (string-prefix? "!" first)
+ (string-drop first 1)
+ first))))
+ (memq keyword ssh-match-keywords))))
+
+(define-maybe match-criteria)
+
(define-configuration openssh-host
(name
- (string)
- "Name of this host declaration.")
+ maybe-string
+ "Name of this host declaration. A @code{openssh-host} must define only
+@code{name} or @code{match-criteria}. Use host-name @code{\"*\"} for
+top-level options.")
(host-name
maybe-string
"Host name---e.g., @code{\"foo.example.org\"} or @code{\"192.168.1.2\"}.")
+ (match-criteria ;TODO implement stricter match-criteria rules
+ maybe-match-criteria
+ "When specified, this string denotes the set of hosts to which the entry
+applies, superseding the @code{host-name} field. Its first element must be
+all or one of @code{ssh-match-keywords}. The rest of the elements are
+arguments for the keyword, or other criteria. A @code{openssh-host} must
+define only @code{name} or @code{match-criteria}. Other host configuration
+options will apply to all hosts matching @code{match-criteria}.")
(address-family
maybe-address-family
"Address family to use when connecting to this host: one of
@@ -194,19 +238,19 @@ Additionally, the field can be left unset to allow any address family.")
maybe-string
"User name on the remote host.")
(forward-x11?
- (boolean #f)
+ maybe-boolean
"Whether to forward remote client connections to the local X11 graphical
display.")
(forward-x11-trusted?
- (boolean #f)
+ maybe-boolean
"Whether remote X11 clients have full access to the original X11 graphical
display.")
(forward-agent?
- (boolean #f)
+ maybe-boolean
"Whether the authentication agent (if any) is forwarded to the remote
machine.")
(compression?
- (boolean #f)
+ maybe-boolean
"Whether to compress data in transit.")
(proxy-command
maybe-string
@@ -232,33 +276,73 @@ through before connecting to the server.")
@file{~/.ssh/config}."))
(define (serialize-openssh-host config)
- (define (openssh-host-name-field? field)
- (eq? (configuration-field-name field) 'name))
+ (define (openssh-host-name-or-match-field? field)
+ (or (eq? (configuration-field-name field) 'name)
+ (eq? (configuration-field-name field) 'match-criteria)))
(string-append
- "Host " (openssh-host-name config) "\n"
+ (if (maybe-value-set? (openssh-host-name config))
+ (if (maybe-value-set? (openssh-host-match-criteria config))
+ (raise
+ (formatted-message
+ (G_ "define either 'name' or 'match-criteria', not both")))
+ (string-append "Host " (openssh-host-name config) "\n"))
+ (if (maybe-value-set? (openssh-host-match-criteria config))
+ (string-append
+ "Match " (string-join (openssh-host-match-criteria config) " ") "\n")
+ (raise
+ (formatted-message
+ (G_ "define either 'name' or 'match-criteria' once")))))
(string-concatenate
(map (lambda (field)
((configuration-field-serializer field)
(configuration-field-name field)
((configuration-field-getter field) config)))
- (remove openssh-host-name-field?
+ (remove openssh-host-name-or-match-field?
openssh-host-fields)))))
(define-record-type* <home-openssh-configuration>
home-openssh-configuration make-home-openssh-configuration
home-openssh-configuration?
- (authorized-keys home-openssh-configuration-authorized-keys ;list of file-like
- (default #f))
- (known-hosts home-openssh-configuration-known-hosts ;unspec | list of file-like
- (default *unspecified*))
- (hosts home-openssh-configuration-hosts ;list of <openssh-host>
- (default '())))
+ (authorized-keys home-openssh-configuration-authorized-keys ;list of file-like
+ (default #f))
+ (known-hosts home-openssh-configuration-known-hosts ;unspec | list of file-like
+ (default *unspecified*))
+ (hosts home-openssh-configuration-hosts ;list of <openssh-host>
+ (default '()))
+ (add-keys-to-agent home-openssh-configuration-add-keys-to-agent ;string with limited values
+ (default "no")))
+
+(define (serialize-add-keys-to-agent value)
+ (define (valid-time-string? str)
+ (and (> (string-length str) 0)
+ (equal?
+ str
+ (match:substring
+ (string-match "\
+[0-9]+|([0-9]+[Ww])?([0-9]+[Dd])?([0-9]+[Hh])?([0-9]+[Mm])?([0-9]+[Ss])?"
+ str)))))
+
+ (string-append "AddKeysToAgent "
+ (cond ((member value '("yes" "no" "confirm" "ask")) value)
+ ((valid-time-string? value) value)
+ ((and (string-prefix? "confirm" value)
+ (valid-time-string?
+ (cdr (string-split value #\ )))) value)
+ ;; The 'else' branch is unreachable.
+ (else
+ (raise
+ (formatted-message
+ (G_ "~s: invalid 'add-keys-to-agent' value")
+ value))))))
(define (openssh-configuration->string config)
- (string-join (map serialize-openssh-host
- (home-openssh-configuration-hosts config))
- "\n"))
+ (string-join
+ (cons* (serialize-add-keys-to-agent
+ (home-openssh-configuration-add-keys-to-agent config))
+ (map serialize-openssh-host
+ (home-openssh-configuration-hosts config)))
+ "\n"))
(define* (file-join name files #:optional (delimiter " "))
"Return a file in the store called @var{name} that is the concatenation
diff --git a/gnu/home/services/xdg.scm b/gnu/home/services/xdg.scm
index ac557b4c3d..958772696b 100644
--- a/gnu/home/services/xdg.scm
+++ b/gnu/home/services/xdg.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021, 2022 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,6 +23,7 @@
#:use-module (gnu home services)
#:use-module (gnu packages freedesktop)
#:use-module (gnu home services utils)
+ #:use-module (guix deprecation)
#:use-module (guix gexp)
#:use-module (guix modules)
#:use-module (guix records)
@@ -39,7 +41,7 @@
home-xdg-base-directories-configuration-config-home
home-xdg-base-directories-configuration-data-home
home-xdg-base-directories-configuration-state-home
- home-xdg-base-directories-configuration-log-home
+ home-xdg-base-directories-configuration-log-home ; deprecated
home-xdg-base-directories-configuration-runtime-dir
home-xdg-user-directories-service-type
@@ -77,6 +79,7 @@
(define (serialize-path field-name val) "")
(define path? string?)
+(define-maybe path)
(define-configuration home-xdg-base-directories-configuration
(cache-home
@@ -97,12 +100,17 @@ read-only shared data, analogus to @file{/usr/share}, but for user.")
(path "${XDG_RUNTIME_DIR:-/run/user/$UID}")
"Base directory for programs to store user-specific runtime files,
like sockets.")
+ ;; TODO: deprecated field, use $XDG_STATE_HOME(/log) instead.
(log-home
- (path "$HOME/.local/var/log")
+ maybe-path
"Base directory for programs to store log files, analogus to
@file{/var/log}, but for user. It is not a part of XDG Base Directory
Specification, but helps to make implementation of home services more
-consistent.")
+consistent."
+ (lambda (field-name val)
+ (when (maybe-value-set? val)
+ (warn-about-deprecation field-name #f #:replacement 'state-home))
+ (serialize-path field-name val)))
(state-home
(path "$HOME/.local/state")
"Base directory for programs to store state data that should persist
@@ -117,7 +125,13 @@ portable enough to the user to warrant storing them in
#f "XDG_~a"
(object->snake-case-string (configuration-field-name field) 'upper))
((configuration-field-getter field) config)))
- home-xdg-base-directories-configuration-fields))
+ ;; XXX: deprecated field, remove later
+ (if (maybe-value-set?
+ (home-xdg-base-directories-configuration-log-home config))
+ home-xdg-base-directories-configuration-fields
+ (filter-configuration-fields
+ home-xdg-base-directories-configuration-fields
+ '(log-home) #t))))
(define (ensure-xdg-base-dirs-on-activation config)
(with-imported-modules '((guix build utils))
@@ -138,7 +152,14 @@ portable enough to the user to warrant storing them in
;; and will be provided by elogind or other service.
(and (not (string=? "XDG_RUNTIME_DIR" variable))
variable)))
- home-xdg-base-directories-configuration-fields)))))
+ ;; XXX: deprecated field, remove later
+ (if (maybe-value-set?
+ (home-xdg-base-directories-configuration-log-home
+ config))
+ home-xdg-base-directories-configuration-fields
+ (filter-configuration-fields
+ home-xdg-base-directories-configuration-fields
+ '(log-home) #t)))))))
(define (last-extension-or-cfg config extensions)
"Picks configuration value from last provided extension. If there
@@ -157,10 +178,7 @@ are no extensions use configuration instead."
(default-value (home-xdg-base-directories-configuration))
(compose identity)
(extend last-extension-or-cfg)
- (description "Configure XDG base directories. This
-service introduces an additional @env{XDG_LOG_HOME} variable. It's not
-a part of XDG specification, at least yet, but are convenient to have,
-it improves the consistency between different home services. The
+ (description "Configure XDG base directories. The
services of this service-type is instantiated by default, to provide
non-default value, extend the service-type (using @code{simple-service}
for example).")))
diff --git a/gnu/local.mk b/gnu/local.mk
index 4d0e34cf09..5dae534ec3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -58,6 +58,7 @@
# Copyright © 2022 jgart <jgart@dismail.de>
# Copyright © 2023 Zheng Junjie <873216071@qq.com>
# Copyright © 2023 Ivana Drazovic <iv.dra@hotmail.com>
+# Copyright © 2023 Andy Tai <atai@atai.org>
#
# This file is part of GNU Guix.
#
@@ -742,6 +743,7 @@ GNU_SYSTEM_MODULES = \
%D%/system/images/pine64.scm \
%D%/system/images/pinebook-pro.scm \
%D%/system/images/rock64.scm \
+ %D%/system/images/unmatched.scm \
%D%/system/images/wsl2.scm \
\
%D%/machine.scm \
@@ -895,6 +897,7 @@ dist_patch_DATA = \
%D%/packages/patches/akonadi-not-relocatable.patch \
%D%/packages/patches/akonadi-timestamps.patch \
%D%/packages/patches/allegro-mesa-18.2.5-and-later.patch \
+ %D%/packages/patches/ibus-anthy-fix-tests.patch \
%D%/packages/patches/anki-mpv-args.patch \
%D%/packages/patches/antiword-CVE-2014-8123.patch \
%D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \
@@ -1055,6 +1058,7 @@ dist_patch_DATA = \
%D%/packages/patches/dezyne-add-missing-shebangs.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
%D%/packages/patches/diffutils-fix-signal-processing.patch \
+ %D%/packages/patches/directfb-davinci-glibc-228-compat.patch \
%D%/packages/patches/dkimproxy-add-ipv6-support.patch \
%D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \
%D%/packages/patches/docbook-xsl-support-old-url.patch \
@@ -1137,7 +1141,6 @@ dist_patch_DATA = \
%D%/packages/patches/firebird-riscv64-support-pt1.patch \
%D%/packages/patches/firebird-riscv64-support-pt2.patch \
%D%/packages/patches/flann-cmake-3.11.patch \
- %D%/packages/patches/flashrom-fix-building-on-aarch64.patch \
%D%/packages/patches/flatpak-fix-path.patch \
%D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch \
%D%/packages/patches/fluxbox-1.3.7-no-dynamic-cursor.patch \
@@ -1238,6 +1241,7 @@ dist_patch_DATA = \
%D%/packages/patches/glib-appinfo-watch.patch \
%D%/packages/patches/glib-networking-gnutls-binding.patch \
%D%/packages/patches/glib-skip-failing-test.patch \
+ %D%/packages/patches/glibc-2.33-riscv64-miscompilation.patch \
%D%/packages/patches/glibc-CVE-2019-7309.patch \
%D%/packages/patches/glibc-CVE-2019-9169.patch \
%D%/packages/patches/glibc-CVE-2019-19126.patch \
@@ -1317,6 +1321,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-fibers-epoll-instance-is-dead.patch \
%D%/packages/patches/guile-fibers-fd-finalizer-leak.patch \
%D%/packages/patches/guile-fibers-wait-for-io-readiness.patch \
+ %D%/packages/patches/guile-fibers-libevent-32-bit.patch \
%D%/packages/patches/guile-fix-invalid-unicode-handling.patch \
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
%D%/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch \
@@ -1354,6 +1359,7 @@ dist_patch_DATA = \
%D%/packages/patches/http-parser-CVE-2020-8287.patch \
%D%/packages/patches/htslib-for-stringtie.patch \
%D%/packages/patches/hubbub-sort-entities.patch \
+ %D%/packages/patches/hubbub-maybe-uninitialized.patch \
%D%/packages/patches/hueplusplus-mbedtls.patch \
%D%/packages/patches/hurd-add-without-rump-configure-option.patch \
%D%/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch \
@@ -1503,6 +1509,7 @@ dist_patch_DATA = \
%D%/packages/patches/libtommath-integer-overflow.patch \
%D%/packages/patches/libtool-grep-compat.patch \
%D%/packages/patches/libtool-skip-tests2.patch \
+ %D%/packages/patches/libtree-fix-check-non-x86.patch \
%D%/packages/patches/libusb-0.1-disable-tests.patch \
%D%/packages/patches/libusb-for-axoloti.patch \
%D%/packages/patches/libutils-add-includes.patch \
@@ -1702,6 +1709,8 @@ dist_patch_DATA = \
%D%/packages/patches/python-typeguard-python3.10.patch \
%D%/packages/patches/python-w3lib-fix-test-failure.patch \
%D%/packages/patches/python-wxwidgets-type-errors.patch \
+ %D%/packages/patches/quodlibet-fix-invalid-glob.patch \
+ %D%/packages/patches/quodlibet-fix-mtime-tests.patch \
%D%/packages/patches/scribus-1.5.8-poppler-22.03.0.patch \
%D%/packages/patches/scribus-1.5.8-poppler-22.04.0.patch \
%D%/packages/patches/scribus-1.5.8-poppler-22.09.0.patch \
@@ -1794,7 +1803,6 @@ dist_patch_DATA = \
%D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \
%D%/packages/patches/python-hiredis-fix-header.patch \
%D%/packages/patches/python-hiredis-use-system-hiredis.patch \
- %D%/packages/patches/python-keras-integration-test.patch \
%D%/packages/patches/python-pdoc3-tests.patch \
%D%/packages/patches/python-peachpy-determinism.patch \
%D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm
index da6dead3c2..eb20fdd549 100644
--- a/gnu/packages/acl.scm
+++ b/gnu/packages/acl.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org>
;;;
;;; This file is part of GNU Guix.
@@ -28,14 +28,14 @@
#:use-module (gnu packages attr)
#:use-module (gnu packages base)
#:use-module (gnu packages check)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages gettext)
#:use-module (gnu packages perl)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages)
#:use-module (guix build-system gnu)
- #:use-module (guix build-system python))
+ #:use-module (guix build-system python)
+ #:use-module (guix utils))
(define-public acl
(package
@@ -55,7 +55,7 @@
,@%gnu-build-system-modules)
#:configure-flags '("--disable-static")
#:tests? ,(not (or (%current-target-system)
- (hurd-target?)))
+ (target-hurd?)))
#:phases
(modify-phases %standard-phases
;; XXX After repacking the sources the timestamps are reset to the
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3193aa1456..529a477ed0 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015, 2016, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015-2018, 2020-2023 Eric Bavier <bavier@posteo.net>
@@ -31,7 +31,7 @@
;;; Copyright © 2019, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
@@ -130,7 +130,6 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages inkscape)
@@ -378,7 +377,11 @@ interface and is based on GNU Guile.")
version ".tar.gz"))
(sha256
(base32
- "1720czfchg4pzw44v0zj3rc3k6jhl3ixwnpw4v4v9bqx98ad49yw"))))))
+ "1720czfchg4pzw44v0zj3rc3k6jhl3ixwnpw4v4v9bqx98ad49yw"))))
+ (native-inputs (modify-inputs (package-native-inputs shepherd-0.9)
+ (replace "guile-fibers" guile-fibers-1.3)))
+ (inputs (modify-inputs (package-inputs shepherd-0.9)
+ (replace "guile-fibers" guile-fibers-1.3)))))
(define-public shepherd shepherd-0.9)
@@ -909,7 +912,7 @@ re-executing them as necessary.")
,@(if (%current-target-system)
'("--with-path-procnet-dev=/proc/net/dev")
'())
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'("--disable-rcp"
"--disable-rexec"
"--disable-rexecd"
@@ -963,7 +966,7 @@ hostname.")
`(;; Assume System V `setpgrp (void)', which is the default on GNU
;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
#:configure-flags
- '(,@(if (hurd-target?)
+ '(,@(if (target-hurd?)
'()
'("--with-libpam"))
"shadow_cv_logdir=/var/log"
@@ -1014,7 +1017,7 @@ hostname.")
(delete-file (string-append bin "/groups"))
(for-each delete-file (find-files man "^groups\\."))))))))
(inputs
- `(,@(if (hurd-target?)
+ `(,@(if (target-hurd?)
'()
`(("linux-pam" ,linux-pam)))
,@(if (%current-target-system)
@@ -1523,7 +1526,7 @@ connection alive.")
(inputs `(("inetutils" ,inetutils)
("bash" ,bash-minimal)
- ,@(if (hurd-target?) '()
+ ,@(if (target-hurd?) '()
`(("net-tools" ,net-tools)
("iproute" ,iproute)))
@@ -2033,7 +2036,7 @@ system administrator.")
(list groff))
(inputs
`(("coreutils" ,coreutils)
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'()
`(("linux-pam" ,linux-pam)))
("zlib" ,zlib)))
@@ -5764,7 +5767,7 @@ file or files to several hosts.")
(define-public doctl
(package
(name "doctl")
- (version "1.93.1")
+ (version "1.94.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -5773,7 +5776,7 @@ file or files to several hosts.")
(file-name (git-file-name name version))
(sha256
(base32
- "18l0avbq1la1wsfwj13kq5prqz6mydhs3ihvf0f3s3vr2y9h71aq"))))
+ "0a221n0x7qrq0dbhhf1saya2g7jyy1798k3rhy9nzyvqzc4vnd0x"))))
(build-system go-build-system)
(arguments
(list #:import-path "github.com/digitalocean/doctl/cmd/doctl"
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index b0bf2c672b..9691dd0d80 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -291,7 +291,7 @@ audio or video backends, ensuring good performance.")
(define-public lightspark
(package
(name "lightspark")
- (version "0.8.6.1")
+ (version "0.8.7")
(source
(origin
(method git-fetch)
@@ -300,7 +300,7 @@ audio or video backends, ensuring good performance.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1a78l9na01pd7a77r9n8lqih893s54rllpjvrx72sh0yyal1q3gz"))))
+ (base32 "156yd79dbs6lzp5jc2zd0knw6bk0g8qdm8icp7pkcn95vfvxyzx9"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;requires Adobe Flex SDK, see README.tests
@@ -340,7 +340,6 @@ audio or video backends, ensuring good performance.")
pcre2
rtmpdump
sdl2
- sdl2-mixer
zlib))
(home-page "https://lightspark.github.io/")
(synopsis "Flash player implementation")
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 964e72642c..cdb6750f09 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -651,7 +651,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
(define-public gnuastro
(package
(name "gnuastro")
- (version "0.19")
+ (version "0.20")
(source
(origin
(method url-fetch)
@@ -659,7 +659,7 @@ astronomical image-processing packages like Drizzle, Swarp or SExtractor.")
version ".tar.lz"))
(sha256
(base32
- "192q3i4zlfmwfcchlf9lnpfgys9dssh7npr5qx0gzn3d2fri0xbz"))))
+ "05bkad0xbax9k0m2g2507mdmjg2109sfg72dsx16f44yj55llh2n"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))
@@ -1355,6 +1355,38 @@ be as fast as possible so some of the readability has been sacrificed,
specifically in the C code.")
(license license:bsd-3)))
+(define-public python-bayesicfitting
+ (package
+ (name "python-bayesicfitting")
+ (version "3.1.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dokester/BayesicFitting")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07y9dr9wxhxrvhk0jjakhbyrgal60i92m7z7q14fp12k8x0gl69l"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "python" "-m" "unittest" "discover"
+ "test")))))))
+ (propagated-inputs (list python-astropy python-future python-matplotlib
+ python-numpy python-scipy))
+ (home-page "https://www.bayesicfitting.nl")
+ (synopsis "Python Toolbox for Astronimical Bayesian fitting")
+ (description
+ "The BayesicFitting package is a python version of the the fitter classes
+in @acronym{HCSS, Herschel Common Science System}. HCSS was the all
+encompassing software system for the operations and analysis of the ESA satelite
+Herschel.")
+ (license license:gpl3+)))
+
(define-public python-ccdproc
(package
(name "python-ccdproc")
@@ -1425,6 +1457,58 @@ attempting to maintain ISTP compliance
@end itemize")
(license license:expat)))
+(define-public python-crds
+ (package
+ (name "python-crds")
+ (version "11.17.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "crds" version))
+ (sha256
+ (base32
+ "0sdz1k4hrgrc2jwihp9ns7lx23kcz7f90c222q7aaqf9g3vvpqlr"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Tests require Internet access to https://hst-crds.stsci.edu and
+ ;; additional test data. See:
+ ;; https://github.com/spacetelescope/crds/blob/master/setup_test_cache
+ #:tests? #f))
+ (propagated-inputs (list python-asdf
+ python-astropy
+ python-boto3
+ python-filelock
+ python-lxml
+ python-numpy
+ python-parsley
+ python-pysynphot
+ python-roman-datamodels
+ python-stsynphot
+ python-requests))
+ (native-inputs (list python-flake8
+ python-ipython
+ python-lockfile
+ python-mock
+ python-nose
+ python-pylint
+ python-pytest
+ python-semantic-version
+ python-setuptools-scm))
+ (home-page "https://hst-crds.stsci.edu")
+ (synopsis "Calibration Reference Data System for HST and JWST")
+ (description
+ "CRDS is a package used for working with astronomical reference files for
+the HST and JWST telescopes. CRDS is useful for performing various operations
+on reference files or reference file assignment rules. CRDS is used to assign,
+check, and compare reference files and rules, and also to predict those datasets
+which should potentially be reprocessed due to changes in reference files or
+assignment rules. CRDS has versioned rules which define the assignment of
+references for each type and instrument configuration. CRDS has web sites
+corresponding to each project (http://hst-crds.stsci.edu or
+https://jwst-crds.stsci.edu/) which record information about reference files and
+provide related services.")
+ (license license:bsd-3)))
+
(define-public python-czml3
(package
(name "python-czml3")
@@ -1493,6 +1577,53 @@ JSOC (@url{http://jsoc.stanford.edu/}) DRMS server by default, but can also be
used with local NetDRMS sites.")
(license license:bsd-2)))
+(define-public python-drizzle
+ (package
+ (name "python-drizzle")
+ (version "1.13.7")
+ (source (origin
+ (method git-fetch) ;PyPi doesn't have the test data sets
+ (uri (git-reference
+ (url "https://github.com/spacetelescope/drizzle")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0x591d9gjasds91fvwcf37bhxp5nra28g0vq5zkykczpc70ywiy8"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: 2 of 26 tests failed with AssertionError, disable them for now.
+ ;; Consider mention it in upstream.
+ #:test-flags #~(list "-k"
+ (string-append "not test_square_with_point"
+ " and not test_square_with_grid"))
+ #:phases #~(modify-phases %standard-phases
+ (add-before 'build 'set-env-version
+ (lambda _
+ (setenv "SETUPTOOLS_SCM_PRETEND_VERSION"
+ #$version)))
+ (add-before 'check 'build-extensions
+ (lambda _
+ ;; Cython extensions have to be built before running
+ ;; the tests.
+ (invoke "python" "setup.py" "build_ext" "--inplace"))))))
+ (propagated-inputs (list python-astropy python-numpy))
+ (native-inputs (list python-coverage python-flake8 python-pytest
+ python-pytest-cov python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/drizzle")
+ (synopsis
+ "Astronomical tool for combining dithered images into a single image")
+ (description
+ "The drizzle library is a Python package for combining dithered images into
+a single image. This library is derived from code used in DrizzlePac. Like
+DrizzlePac, most of the code is implemented in the C language. The biggest
+change from DrizzlePac is that this code passes an array that maps the input to
+output image into the C code, while the DrizzlePac code computes the mapping by
+using a Python callback. Switching to using an array allowed the code to be
+greatly simplified.")
+ (license license:bsd-3)))
+
(define-public python-ephem
(package
(name "python-ephem")
@@ -2045,6 +2176,211 @@ spherical polygons that represent arbitrary regions of the sky.")
;; QD_LIBRARY_LICENSE.rst for bandeled QD source
(license license:bsd-3)))
+(define-public python-stsci-image
+ (package
+ (name "python-stsci-image")
+ (version "2.3.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "stsci.image" version))
+ (sha256
+ (base32
+ "1vnp4256nbdvapa69cmm80sjz11ygxa49abr9nbvssj6nyyp5icb"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-before 'check 'build-extensions
+ (lambda _
+ ;; Cython extensions have to be built before running
+ ;; the tests.
+ (invoke "python" "setup.py" "build_ext"
+ "--inplace"))))))
+ (propagated-inputs (list python-numpy python-scipy))
+ (native-inputs (list python-pytest python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/stsci.image")
+ (synopsis "Image array manipulation functions")
+ (description
+ "This package provides Python modules of @acronym{STScI, Space Telescope
+Science Institute} image array manipulation functions.")
+ (license license:bsd-3)))
+
+(define-public python-stsci-imagestats
+ (package
+ (name "python-stsci-imagestats")
+ (version "1.6.3")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "stsci.imagestats" version))
+ (sha256
+ (base32
+ "14457izlbnks84dyza75ib3nvx2w8nhlqm9vc1zb7hbhknb5gjvw"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:tests? #f)) ;No tests
+ (propagated-inputs (list python-numpy))
+ (native-inputs (list python-setuptools-scm))
+ (home-page "https://stsciimagestats.readthedocs.io/en/latest/")
+ (synopsis "Compute sigma-clipped statistics on data arrays")
+ (description
+ "@code{stsci.imagestats} is a package designed to compute various
+statistics on image data using sigma-clipping iterations. It is designed to
+replicate core behaviour of the IRAF's
+@url{http://stsdas.stsci.edu/cgi-bin/gethelp.cgi?imstatistics, imstatistics
+task}.")
+ (license license:bsd-3)))
+
+(define-public python-stsci-stimage
+ (package
+ (name "python-stsci-stimage")
+ (version "0.2.6")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "stsci.stimage" version))
+ (sha256
+ (base32
+ "0i7xby1gaiplvbqqv8a4f4cw1is8fwj89mix1z3bqrykqi3n24g0"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Fix failing tests. There are errors to load test files.
+ #:tests? #f))
+ (propagated-inputs (list python-numpy))
+ (native-inputs (list python-codecov python-pytest python-pytest-cov
+ python-setuptools-scm))
+ (home-page "https://stscistimage.readthedocs.io/en/latest/")
+ (synopsis "STScI image processing")
+ (description "This package provides an astronomical Python package with
+image processing functions: @code{xyxymatch}, @code{geomap}.")
+ (license license:bsd-3)))
+
+(define-public python-stcal
+ (package
+ (name "python-stcal")
+ (version "1.3.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "stcal" version))
+ (sha256
+ (base32
+ "0yy0pwi3krvhxfby6nzgpgyz5il3sl1j29ihbk81dh9fdh3ys2n9"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ ;; XXX: Can't detect opencv-python version. The input
+ ;; opencv might not set the version correctly.
+ (delete 'sanity-check))))
+ (propagated-inputs (list opencv ;Provides OpenCV-Python
+ python-astropy python-numpy python-scipy))
+ (native-inputs (list python-psutil
+ python-pytest
+ python-pytest-cov
+ python-pytest-doctestplus
+ python-pytest-openfiles
+ python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/stcal")
+ (synopsis "STScI tools and algorithms used in calibration pipelines")
+ (description "STScI tools and algorithms used in calibration pipelines.")
+ (license license:bsd-3)))
+
+(define-public python-stdatamodels
+ (package
+ (name "python-stdatamodels")
+ (version "1.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "stdatamodels" version))
+ (sha256
+ (base32
+ "1lssz5mnkzgraqa9mdg1w39scsikymcp3zpmsjb146r0pqnwnpzw"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; Disable tests requiring access to CRDS servers to download ~500MiB
+ ;; of data.
+ #:test-flags #~(list "-k" "not test_crds_selectors_vs_datamodel")
+ #:phases #~(modify-phases %standard-phases
+ (add-before 'check 'set-home
+ (lambda _
+ (setenv "HOME" "/tmp"))))))
+ (propagated-inputs (list python-asdf
+ python-asdf-astropy
+ python-astropy
+ python-jsonschema
+ python-numpy
+ python-psutil))
+ (native-inputs (list python-crds
+ python-pytest
+ python-pytest-doctestplus
+ python-pytest-openfiles
+ python-scipy
+ python-semantic-version
+ python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/stdatamodels")
+ (synopsis
+ "Core support for DataModel classes used in calibration pipelines")
+ (description
+ "Provides DataModel, which is the base class for data models implemented in
+the @acronym{JWST, James Webb Space Telescope} and @acronym{Roman, Nancy Grace
+Roman Space Telescope} calibration software.")
+ (license license:bsd-3)))
+
+(define-public python-stpipe
+ (package
+ (name "python-stpipe")
+ (version "0.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "stpipe" version))
+ (sha256
+ (base32
+ "17gnwzhl10vbg059lfprdyci19dlh3whkmb9rl7z25wr593rnvcp"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-asdf python-astropy python-crds
+ python-semantic-version python-stdatamodels))
+ (native-inputs (list python-pytest python-pytest-doctestplus
+ python-pytest-openfiles python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/stpipe")
+ (synopsis "Framework for calibration pipeline software")
+ (description
+ "This package provides base classes and command-line tools for
+implementing calibration pipeline software.")
+ ;; LICENSE Association of Universities for Research in Astronomy (AURA)
+ (license license:bsd-3)))
+
+(define-public python-stsynphot
+ (package
+ (name "python-stsynphot")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "stsynphot" version))
+ (sha256
+ (base32
+ "0qkdh47j84v7fzri7bmi1jcmggdqq0a8byamfm73d8mbz86v8sn4"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Tests fails on missing file, it might need to be downloaded,
+ ;; disable them for now. astropy.utils.exceptions.AstropyUserWarning:
+ ;; Failed to load Vega spectrum from
+ ;; /grp/redcat/trds/calspec/alpha_lyr_stis_010.fits;
+ #:tests? #f))
+ (propagated-inputs (list python-astropy
+ python-beautifulsoup4
+ python-matplotlib
+ python-numpy
+ python-scipy
+ python-synphot))
+ (native-inputs (list python-pytest python-pytest-astropy
+ python-pytest-astropy-header python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/stsynphot_refactor")
+ (synopsis "Synthetic photometry using Astropy for HST and JWST")
+ (description
+ "This package provides a replacement for IRAF STSDAS SYNPHOT and ASTROLIB
+PYSYNPHOT, utilizing Astropy covering instrument specific portions of the old
+packages for HST.")
+ (license license:bsd-3)))
+
(define-public libnova
(package
(name "libnova")
@@ -2590,6 +2926,73 @@ Moon position, etc.")
JPL ephemerides use to predict raw (x,y,z) planetary positions.")
(license license:expat)))
+(define-public python-jwst
+ (package
+ (name "python-jwst")
+ (version "1.10.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "jwst" version))
+ (sha256
+ (base32
+ "1lmfyw2y7c84rs9xqavah9aidj478ijiiijlz6fag11xqn1vs98y"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Tests require access to https://jwst-crds-pub.stsci.edu server for
+ ;; getting data sets.
+ #:tests? #f
+ #:phases #~(modify-phases %standard-phases
+ ;; NOTE: (Sharlatan-20230529T113448+0100): opencv-python's
+ ;; version can't be detected, it could the way it's packed in
+ ;; Guix. Review failing sanity check with more efforts,
+ ;; disable for now to make package buildable.
+ (delete 'sanity-check))))
+ ;; opencv provides OpenCV-Python which is Listed as install requirement.
+ (propagated-inputs (list opencv
+ python-asdf
+ python-asdf-astropy
+ python-astropy
+ python-bayesicfitting
+ python-crds
+ python-drizzle
+ python-gwcs
+ python-jsonschema
+ python-numpy
+ python-photutils
+ python-poppy
+ python-psutil
+ python-pyparsing
+ python-requests
+ python-scikit-image
+ python-scipy
+ python-spherical-geometry
+ python-stcal
+ python-stdatamodels
+ python-stpipe
+ python-stsci-image
+ python-stsci-imagestats
+ python-tweakwcs
+ python-wiimatch))
+ (native-inputs (list python-codecov
+ python-colorama
+ python-flake8
+ python-pytest
+ python-pytest-cov
+ python-pytest-doctestplus
+ python-pytest-openfiles
+ python-requests-mock
+ python-setuptools-scm))
+ (home-page "https://jwst-pipeline.readthedocs.io/en/latest/")
+ (synopsis
+ "Python library for science observations from the James Webb Space Telescope")
+ (description
+ "This package provides an access to the JWST Science Calibration Pipeline
+processes data from all JWST instruments and observing modes by applying various
+science corrections sequentially, producing both fully-calibrated individual
+exposures and high-level data products (mosaics, extracted spectra, etc.).")
+ (license license:bsd-3)))
+
(define-public python-pyerfa
(package
(name "python-pyerfa")
@@ -2687,6 +3090,38 @@ astrophysical simulations supporting PKDGRAV/Gasoline, Gadget, Gadget4/Arepo,
N-Chilada and RAMSES AMR outputs.")
(license license:gpl3+)))
+(define-public python-pysynphot
+ (package
+ (name "python-pysynphot")
+ (version "2.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pysynphot" version))
+ (sha256
+ (base32
+ "1rr29m63bnj47f6gvbvg3pm1296x14ad29c6qd0sdj4f4ilrzhj5"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-before 'check 'set-env-data-path
+ (lambda _
+ (setenv "PYSYN_CDBS"
+ (string-append #$output "/crds")))))))
+ (native-inputs (list python-pytest python-pytest-remotedata
+ python-setuptools-scm))
+ (propagated-inputs (list python-astropy python-beautifulsoup4 python-numpy
+ python-pytest-astropy-header python-six))
+ (home-page "https://github.com/spacetelescope/pysynphot")
+ (synopsis "Python Synthetic Photometry Utilities")
+ (description
+ "Astrolib PySynphot (hereafter referred to only as pysynphot) is an
+object-oriented replacement for STSDAS SYNPHOT synthetic photometry package in
+IRAF. @code{pysynphot} simulates photometric data and spectra as they are
+observed with the Hubble Space Telescope (HST). Passbands for standard
+photometric systems are available, and users can incorporate their own filters,
+spectra, and data.")
+ (license license:bsd-3)))
+
(define-public python-sep
(package
(inherit libsep)
@@ -2723,6 +3158,67 @@ Takes a WGS84 (GPS) latitude/longitude as input as well as an UTC or local
datetime object.")
(license license:lgpl3+)))
+(define-public python-synphot
+ (package
+ (name "python-synphot")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "synphot" version))
+ (sha256
+ (base32
+ "02pjp1bnbyq7zi1bxqv56nif4ijd8fscmnn9ldrs8yvgsbmgdvlc"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Test needs more love to pass.
+ ;; ERROR collecting synphot/tests/test_utils.py
+ #:tests? #f))
+ (propagated-inputs (list python-astropy python-numpy python-scipy))
+ (native-inputs (list python-pytest python-pytest-astropy
+ python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/synphot_refactor")
+ (synopsis "Synthetic photometry using Astropy")
+ (description
+ "This package provides a replacement for IRAF STSDAS SYNPHOT and ASTROLIB
+PYSYNPHOT, utilizing Astropy and covering the non-instrument specific portions
+of the old packages.")
+ (license license:bsd-3)))
+
+(define-public python-tweakwcs
+ (package
+ (name "python-tweakwcs")
+ (version "0.8.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "tweakwcs" version))
+ (sha256
+ (base32
+ "1500w737n9vf5hv16xkybk4shl7g4wfzb2ji9mc4vgzj41gkrwl4"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-astropy
+ python-gwcs
+ python-numpy
+ python-packaging
+ python-spherical-geometry
+ python-stsci-imagestats
+ python-stsci-stimage))
+ (native-inputs (list python-codecov
+ python-pytest
+ python-pytest-cov
+ python-scipy
+ python-semantic-version
+ python-setuptools-scm))
+ (home-page "https://tweakwcs.readthedocs.io/en/latest/")
+ (synopsis
+ "Algorithms for matching and aligning catalogs and for tweaking the WCS")
+ (description
+ "@code{tweakwcs} is a package that provides core algorithms for computing
+and applying corrections to @code{WCS} objects such as to minimize mismatch
+between image and reference catalogs. Currently only aligning images with
+@code{FITS WCS} and @code{JWST gWCS} are supported.")
+ (license license:bsd-3)))
+
(define-public python-asdf
(package
(name "python-asdf")
@@ -3050,6 +3546,79 @@ the entire transformation pipeline from input coordinates (detector by
default) to world coordinates.")
(license license:bsd-3)))
+(define-public python-rad
+ (package
+ (name "python-rad")
+ (version "0.15.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "rad" version))
+ (sha256
+ (base32
+ "0j51pkywxdaqrfz162rdsywlvx1mbb2h0gi5framvhf25i1im7mb"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list #:test-flags #~(list "-k" "not remote_data")))
+ (native-inputs (list python-astropy
+ python-pytest
+ python-pytest-doctestplus
+ python-pytest-openfiles
+ python-semantic-version
+ python-setuptools-scm))
+ (propagated-inputs (list python-asdf python-asdf-astropy))
+ (home-page "https://github.com/spacetelescope/rad")
+ (synopsis "Roman Attribute Dictionary")
+ (description
+ "@acronym{RAD, The Roman Attribute Dictionary} is package which defines
+schemas for the Nancy Grace Roman Space Telescope shared attributes for
+processing and archive. These schemas are schemas for the ASDF file file
+format, which are used by ASDF to serialize and deserialize data for the Nancy
+Grace Roman Space Telescope.")
+ (license license:bsd-3)))
+
+(define-public python-roman-datamodels
+ (package
+ (name "python-roman-datamodels")
+ (version "0.15.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "roman_datamodels" version))
+ (sha256
+ (base32
+ "0frhm1cqqd8934yizhm4fy78y38q2w9ncm4rv1n74hfypkyis4ap"))))
+ (build-system pyproject-build-system)
+ (arguments
+ ;; XXX: Check how to make all tests enabled, probably some more inner
+ ;; input chain needs to be upgraded, keep them disabled to make the build
+ ;; green.
+ (list #:test-flags #~(list "-k"
+ (string-append "not test_will_validate"
+ " and not test_will_strict_validate"
+ " and not test_nuke_validation"))))
+ (propagated-inputs (list python-asdf
+ python-asdf-astropy
+ python-asdf-standard
+ python-astropy
+ python-gwcs
+ python-numpy
+ python-psutil
+ python-rad))
+ (native-inputs (list python-pytest python-pytest-doctestplus
+ python-pytest-openfiles python-semantic-version
+ python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/roman_datamodels")
+ (synopsis "Roman Datamodels Support")
+ (description
+ "This package provides a Python package of Roman Datamodels for the
+calibration pipelines started with the @acronym{JWST, James Webb Space
+Telescope} calibration pipelines. The goal for the JWST pipelines was motivated
+primarily by the need to support FITS data files, specifically with isolating
+the details of where metadata and data were located in the FITS file from the
+representation of the same items within the Python code. That is not a concern
+for Roman since FITS format data files will not be used by the Roman calibration
+pipelines.")
+ (license license:bsd-3)))
+
(define-public python-astroalign
(package
(name "python-astroalign")
@@ -3102,3 +3671,26 @@ astronomical images, especially when there is no WCS information available.")
"Skyfield computes positions for the stars, planets, and satellites in
orbit around the Earth.")
(license license:expat)))
+
+(define-public python-wiimatch
+ (package
+ (name "python-wiimatch")
+ (version "0.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "wiimatch" version))
+ (sha256
+ (base32
+ "0x6p5z6a2cqinckwlpinjxagvmswl149s1jn6ihmdxk4k0h8rrz0"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs (list python-numpy python-scipy))
+ (native-inputs (list python-codecov python-pytest python-pytest-cov
+ python-pytest-doctestplus python-setuptools-scm))
+ (home-page "https://github.com/spacetelescope/wiimatch")
+ (synopsis
+ "Optimal matching of weighted N-dimensional image intensity data")
+ (description
+ "@code{wiimatch} is a package that provides core computational algorithms
+for optimal @code{matching} of weighted N-dimensional image intensity data
+using (multivariate) polynomials.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/attr.scm b/gnu/packages/attr.scm
index 8c1a4aca7c..cd0a997474 100644
--- a/gnu/packages/attr.scm
+++ b/gnu/packages/attr.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2012, 2013, 2016, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,10 +24,10 @@
#:use-module (guix licenses)
#:use-module (gnu packages perl)
#:use-module (gnu packages gettext)
- #:use-module (gnu packages hurd)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix utils))
(define-public attr
(package
@@ -43,7 +44,7 @@
(arguments
`(#:phases
(modify-phases %standard-phases
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
`((add-before 'configure 'skip-linux-syscalls
(lambda _
;; Starting from 2.5.1, libattr includes Linux-specific
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 58a981b2fe..88dbbbc7a2 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -738,7 +738,7 @@ purposes developed at Queen Mary, University of London.")
(define-public ardour
(package
(name "ardour")
- (version "7.3")
+ (version "7.4")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -755,7 +755,7 @@ purposes developed at Queen Mary, University of London.")
namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }")))))
(sha256
(base32
- "0bkhrgswhc9y1ly8nfg8hpwad77cgbr663dgj86h3aisljc4cdkw"))
+ "0v66h9fghjyjinldw9yfhhlfi3my235x6n4dpxx432z35lka2h89"))
(file-name (string-append name "-" version))))
(build-system waf-build-system)
(arguments
@@ -799,7 +799,6 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
(list alsa-lib
atkmm
aubio
- boost
cairomm
curl
dbus
@@ -844,7 +843,8 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
taglib
vamp))
(native-inputs
- (list cppunit
+ (list boost
+ cppunit
gettext-minimal
itstool
perl
@@ -860,7 +860,7 @@ engineers, musicians, soundtrack editors and composers.")
(define-public audacity
(package
(name "audacity")
- (version "3.3.0-beta-1") ;for ffmpeg 6 support
+ (version "3.3.3") ;for ffmpeg 6 support
(source
(origin
(method git-fetch)
@@ -869,7 +869,7 @@ engineers, musicians, soundtrack editors and composers.")
(commit (string-append "Audacity-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1j1fy8h3vvf3pbyy2vxahf7admcqfmx7m1mxm7g48n54i2f0n1h9"))
+ (base32 "07jbql4jl2198z0rsa1nsf4p045iv4gz6ym75a60yyznvg0h0zwv"))
(patches (search-patches "audacity-ffmpeg-fallback.patch"))
(modules '((guix build utils)))
(snippet
diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm
index a73f2cbc14..de1769d65f 100644
--- a/gnu/packages/authentication.scm
+++ b/gnu/packages/authentication.scm
@@ -22,11 +22,13 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages gnupg)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages security-token)
#:use-module (gnu packages tls)
#:use-module (gnu packages xml)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix download)
@@ -34,6 +36,29 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
+(define-public libcotp
+ (package
+ (name "libcotp")
+ (version "2.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/paolostivanin/libcotp")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "12ps2msclcbv53gjf936cny10an8sc70b9frp6xxjirfn5jg2h63"))))
+ (build-system cmake-build-system)
+ (inputs (list libgcrypt))
+ (native-inputs (list pkg-config))
+ (home-page "https://github.com/paolostivanin/libcotp")
+ (synopsis "One-Time Passwords")
+ (description "This package provides a library to generate
+@acronym{HOTP, HMAC-base One-Time Password}s as specified in RFC 4226 and
+@acronym{TOTP, Time-based One-Time Password}s as specified in RFC 6238.")
+ (license license:asl2.0)))
+
(define-public oath-toolkit
(package
(name "oath-toolkit")
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index d2f276c447..ada9edf0e6 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2016, 2017, 2019-2023 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -132,7 +132,7 @@ command-line arguments, multiple languages, and so on.")
(string-append bin "/fgrep"))
(("^exec grep")
(string-append "exec " bin "/grep"))))))
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'((add-before 'check 'skip-triple-backref-test
(lambda _
;; This test is marked as malfunctioning on glibc systems
@@ -144,7 +144,7 @@ command-line arguments, multiple languages, and so on.")
(("^warn_" all)
(string-append "exit 77\n" all))))))
'()))
- #:make-flags ,(if (hurd-target?)
+ #:make-flags ,(if (target-hurd?)
''("XFAIL_TESTS=test-perror2 equiv-classes") ;XXX
''())))
(synopsis "Print lines matching a pattern")
@@ -186,7 +186,7 @@ including, for example, recursive directory searching.")
(modules '((guix build utils)))))
(build-system gnu-build-system)
(arguments
- `(#:make-flags ,(if (hurd-target?)
+ `(#:make-flags ,(if (target-hurd?)
''("XFAIL_TESTS=test-perror2")
''())))
(synopsis "Stream editor")
@@ -217,7 +217,7 @@ implementation offers several extensions over the standard utility.")
;; Note: test suite requires ~1GiB of disk space.
(arguments
`(,@(cond
- ((hurd-target?)
+ ((target-hurd?)
'(#:make-flags
(list (string-append
"TESTSUITEFLAGS= -k '"
@@ -309,7 +309,7 @@ differences.")
(patches (search-patches "diffutils-fix-signal-processing.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:make-flags ,(if (hurd-target?)
+ `(#:make-flags ,(if (target-hurd?)
''("XFAIL_TESTS=test-perror2 large-subopt")
''())))
(native-inputs (list perl))
@@ -347,7 +347,7 @@ interactive means to merge two files.")
"tests/find/exec-plus-last-file.sh")
(("#!/bin/sh")
(string-append "#!" (which "sh")))))))
- #:make-flags ,(if (hurd-target?)
+ #:make-flags ,(if (target-hurd?)
''("XFAIL_TESTS=test-strerror_r")
''())))
(synopsis "Operating on files matching given criteria")
@@ -395,7 +395,7 @@ used to apply commands with arbitrarily long arguments.")
(outputs '("out" "debug"))
(arguments
`(#:parallel-build? #f ; help2man may be called too early
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'(#:make-flags ; these tests fail deterministically
(list (string-append "XFAIL_TESTS=tests/misc/env-S.pl"
" tests/misc/kill.sh"
@@ -433,7 +433,7 @@ used to apply commands with arbitrarily long arguments.")
(("#!/bin/sh") (string-append "#!" (which "sh"))))))
(add-after 'unpack 'remove-tests
(lambda _
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'((substitute* "Makefile.in"
;; this test hangs
(("^ *tests/misc/timeout-group.sh.*") ""))
@@ -511,7 +511,7 @@ standard.")
(inputs (list guile-3.0))
(outputs '("out" "debug"))
(arguments
- `(,@(if (hurd-target?)
+ `(,@(if (target-hurd?)
'(#:configure-flags '("CFLAGS=-D__alloca=alloca"
"ac_cv_func_posix_spawn=no"))
'())
@@ -798,7 +798,7 @@ the store.")
;; libc provides <hurd.h>, which includes a bunch of Hurd and Mach headers,
;; so both should be propagated.
(propagated-inputs
- (if (hurd-target?)
+ (if (target-hurd?)
`(("hurd-core-headers" ,hurd-core-headers))
`(("kernel-headers" ,linux-libre-headers))))
@@ -864,7 +864,7 @@ the store.")
;; On GNU/Hurd we get discarded-qualifiers warnings for
;; 'device_write_inband' among other things. Ignore them.
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
`("--disable-werror"
,@%glibc/hurd-configure-flags)
'()))
@@ -992,7 +992,7 @@ the store.")
(map (cut string-append slib "/" <>)
files))))))
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")))
@@ -1012,7 +1012,7 @@ the store.")
("gettext" ,gettext-minimal)
("python" ,python-minimal)
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
`(("mig" ,mig)
("perl" ,perl))
'())))
@@ -1066,12 +1066,13 @@ with the Linux kernel.")
(base32
"1zvp0qdfbdyqrzydz18d9zg3n5ygy8ps7cmny1bvsp8h1q05c99f"))
(patches
- ;; Remove a patch that's become irrelevant and that does not
- ;; apply to this version.
- (remove (lambda (patch)
- (string=? (basename patch)
- "glibc-hurd-clock_gettime_monotonic.patch"))
- (origin-patches (package-source glibc))))))
+ (cons (search-patch "glibc-2.33-riscv64-miscompilation.patch")
+ ;; Remove a patch that's become irrelevant and that does not
+ ;; apply to this version.
+ (remove (lambda (patch)
+ (string=? (basename patch)
+ "glibc-hurd-clock_gettime_monotonic.patch"))
+ (origin-patches (package-source glibc)))))))
(arguments
(substitute-keyword-arguments (package-arguments glibc)
((#:configure-flags flags ''())
@@ -1379,6 +1380,9 @@ test environments.")
(make-glibc-utf8-locales glibc)))
;; Packages provided to ease use of binaries linked against the previous libc.
+(define-public glibc-locales-2.33
+ (package (inherit (make-glibc-locales glibc-2.33))
+ (name "glibc-locales-2.33")))
(define-public glibc-locales-2.32
(package (inherit (make-glibc-locales glibc-2.32))
(name "glibc-locales-2.32")))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 9ce28596c2..87e7c33b90 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -3312,6 +3312,77 @@ off-target reads for a capture method that targets CpG-rich region.")
multiple sequence alignments.")
(license license:expat)))
+(define-public python-mofax
+ ;; This is a recent commit from the "dev" branch, which is much more recent
+ ;; than the latest commit from the "master" branch.
+ (let ((commit "4d96f8f0a5d5251847353656f523684d66c3c47a")
+ (revision "0"))
+ (package
+ (name "python-mofax")
+ (version (git-version "0.4.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bioFAM/mofax")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1lwrw0qyvvnyiqz1l20dhcf7dxidb80cqgvk78czvdgba87yxzqx"))
+ (modules '((guix build utils)))
+ ;; Prevent the pyproject-build-system from guessing that flit
+ ;; should be used as a builder.
+ (snippet '(substitute* "pyproject.toml"
+ (("^#.*") "")))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; This test is failing due to a bug. The bug has been reported to the
+ ;; developers. See https://github.com/bioFAM/mofax/issues/12 for more
+ ;; info.
+ #:test-flags '(list "-k" "not test_get_methods")))
+ (propagated-inputs (list python-h5py
+ python-matplotlib
+ python-pandas
+ python-poetry-core
+ python-scipy
+ python-seaborn))
+ (native-inputs (list python-numpy python-pytest))
+ (home-page "https://github.com/bioFAM/mofax")
+ (synopsis
+ "Motif activity finder for transcription factor motif analysis")
+ (description
+ "MoFax is a Python package for transcription factor motif analysis.
+It provides convenience functions to load and visualize factor models trained
+with MOFA+ in Python.")
+ (license license:expat))))
+
+(define-public python-mudata
+ (package
+ (name "python-mudata")
+ (version "0.2.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/scverse/mudata")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "02h0k1q57589r0hdv8nwg1vk7g2ljvn5g66c47fy5gdilbm3gjws"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs
+ (list python-anndata python-h5py python-pandas))
+ (native-inputs
+ (list python-flit-core python-numpy python-pytest python-zarr))
+ (home-page "https://github.com/scverse/mudata")
+ (synopsis "Python package for multi-omics data analysis")
+ (description
+ "Mudata is a Python package for multi-omics data analysis.
+It is designed to provide functionality to load, process, and store multimodal
+omics data.")
+ (license license:bsd-3)))
+
(define-public python-pyega3
(package
(name "python-pyega3")
@@ -10805,34 +10876,34 @@ generate FASTA, JSON, YAML, RDF, JSON-LD, HTML, CSV, tabular output etc.")
(define-public bioruby
(package
(name "bioruby")
- (version "1.5.2")
+ (version "2.0.4")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "bio" version))
(sha256
(base32
- "1d56amdsjv1mag7m6gv2w0xij8hqx1v5xbdjsix8sp3yp36m7938"))))
+ "08aknxk2ingwscwfqpw5vnax6jpk1sxfaialravladb63hcl8dx9"))))
(build-system ruby-build-system)
(propagated-inputs
(list ruby-libxml))
(native-inputs
(list which)) ; required for test phase
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch-test-command
- (lambda _
- (substitute* '("test/functional/bio/test_command.rb")
- (("/bin/sh") (which "sh")))
- (substitute* '("test/functional/bio/test_command.rb")
- (("/bin/ls") (which "ls")))
- (substitute* '("test/functional/bio/test_command.rb")
- (("which") (which "which")))
- (substitute* '("test/functional/bio/test_command.rb",
- "test/data/command/echoarg2.sh")
- (("/bin/echo") (which "echo")))
- #t)))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'patch-test-command
+ (lambda _
+ (substitute* '("test/functional/bio/test_command.rb")
+ (("/bin/sh") (which "sh")))
+ (substitute* '("test/functional/bio/test_command.rb")
+ (("/bin/ls") (which "ls")))
+ (substitute* '("test/functional/bio/test_command.rb")
+ (("which") (which "which")))
+ (substitute* '("test/functional/bio/test_command.rb"
+ "test/data/command/echoarg2.sh")
+ (("/bin/echo") (which "echo"))))))))
(synopsis "Ruby library, shell and utilities for bioinformatics")
(description "BioRuby comes with a comprehensive set of Ruby development
tools and libraries for bioinformatics and molecular biology. BioRuby has
@@ -11661,13 +11732,7 @@ using high-throughput sc-RNAseq data.")
(copy-file (string-append "bin/sambamba-" ,version)
(string-append bin "/sambamba"))))))))
(native-inputs
- `(("ld-gold-wrapper"
- ;; Importing (gnu packages commencement) would introduce a cycle.
- ,(module-ref (resolve-interface
- '(gnu packages commencement))
- 'ld-gold-wrapper))
- ("binutils-gold" ,binutils-gold)
- ("python" ,python)))
+ (list python))
(inputs
(list ldc lz4 zlib))
(home-page "https://github.com/biod/sambamba")
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index f3bf0857dd..5ed1978c52 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -293,6 +293,7 @@ files and generates build instructions for the Ninja build system.")
(define-public meson
(package
(name "meson")
+ (replacement meson/newer)
(version "1.1.0")
(source (origin
(method url-fetch)
@@ -329,6 +330,19 @@ files}, are written in a custom domain-specific language (@dfn{DSL}) that
resembles Python.")
(license license:asl2.0)))
+(define-public meson/newer
+ (package
+ (inherit meson)
+ (version "1.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mesonbuild/meson/"
+ "releases/download/" version "/meson-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "073vf8059nzs6p5aaqr5wva4pgl81540szdb5yw9yhyajwgm8jyh"))))))
+
(define-public meson-python
(package
(name "meson-python")
@@ -535,14 +549,14 @@ software.")
(define-public tup
(package
(name "tup")
- (version "0.7.9")
+ (version "0.7.11")
(source (origin
(method url-fetch)
(uri (string-append "http://gittup.org/tup/releases/tup-v"
version ".tar.gz"))
(sha256
(base32
- "0gnd2598xqgwihdkfkx7qn0q6p4n7npam1fy83mp7s04zwj99syc"))
+ "1157qfnhjakm3h07y7h38lrjw5650gkif34k30bnrsypmwl5xyzb"))
(patches (search-patches "tup-unbundle-dependencies.patch"))
(modules '((guix build utils)))
(snippet
@@ -591,7 +605,7 @@ software.")
(display "au BufNewFile,BufRead Tupfile,*.tup setf tup")))
#t))))))
(inputs
- (list fuse pcre
+ (list fuse-3 pcre
`(,pcre "bin") ; pcre-config
sqlite))
(native-inputs
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index e8bde0133d..9e5b511b98 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -18,6 +18,7 @@
;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -241,6 +242,47 @@ standard.")
;; (if ever) complete. See the RELICENSING file for more information.
(license license:lgpl2.1+))))
+(define-public tomlc99
+ (let ((revision "0")
+ (commit "52e9c039c5418a100605c2db1282590511fa891b"))
+ (package
+ (name "tomlc99")
+ (version (git-version "1.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cktan/tomlc99")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1zrn5mmd1ysxma96jzrq50xqypbs3rhk6dwlj1wcjpjz1a4h9wgg"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:make-flags #~(list (string-append "CC="
+ #$(cc-for-target))
+ (string-append "prefix="
+ #$output))
+ #:phases #~(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'check
+ (lambda* (#:key tests? make-flags
+ #:allow-other-keys)
+ (when tests?
+ (apply invoke
+ `("make" "-C" "unittest"
+ ,@make-flags))
+ (invoke "./unittest/t1")))))))
+ (home-page "https://github.com/cktan/tomlc99")
+ (synopsis "TOML library for C")
+ (description
+ "This library is a C99 implementation to read
+@acronym{TOML, Tom's Obvious Minimal Language} text documents.
+
+This library is compatible with the @url{https://toml.io/en/v1.0.0,v1.0.0}
+specification of the language.")
+ (license license:expat))))
+
(define-public pcc
(package
(name "pcc")
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index bffc965886..991995daf7 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2016, 2017, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2020, 2022, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
;;; Copyright © 2016, 2021 Stefan Reichoer <stefan@xsteve.at>
;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -177,13 +177,13 @@ data units.")
(define-public khal
(package
(name "khal")
- (version "0.11.1")
+ (version "0.11.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "khal" version))
(sha256
(base32
- "07k0cfbfkx9fhfk4gf73vh34c05i1cb72gc15a1lmx9knxy4h503"))))
+ "1flrz01nsmvphiv673b8ia279qcp3gj6a1rsjlsj4gp5f69xif4g"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; The test suite is unreliable. See <https://bugs.gnu.org/44197>
@@ -202,17 +202,18 @@ data units.")
;; Required to build manpage
python-sphinxcontrib-newsfeed python-sphinx))
(inputs
- (list python-configobj
+ (list python-atomicwrites
+ python-click
+ python-click-log
+ python-configobj
python-dateutil
python-icalendar
+ python-pytz
+ python-pyxdg
python-tzlocal
python-urwid
- python-pytz
- python-setproctitle
- python-atomicwrites
- python-click
- python-click-log
- python-pyxdg))
+ ;; For the extras.
+ python-setproctitle))
(synopsis "Console calendar program")
(description "Khal is a standards based console calendar program,
able to synchronize with CalDAV servers through vdirsyncer. It includes
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index cb55a62334..00be723eec 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -142,7 +142,7 @@
(inputs
(list guile-3.0-latest
guile-avahi
- guile-fibers-1.1
+ guile-fibers-1.3
guile-gcrypt
guile-json-4
guile-simple-zmq
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index bccb035854..821b8808f7 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -46,7 +46,6 @@
#:use-module (gnu packages crypto)
#:use-module (gnu packages curl)
#:use-module (gnu packages file)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages libevent)
#:use-module (gnu packages ncurses)
@@ -214,7 +213,7 @@ using the CMake build system.")
(apply invoke "./configure" configure-flags))))))
(inputs
(append
- (if (hurd-target?)
+ (if (target-hurd?)
'()
(list libuv)) ;not supported on the Hurd
(list bzip2
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 7c7c11c174..669d54099d 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2018, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019, 2020, 2021, 2022, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019-2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020, 2022 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
@@ -2786,7 +2786,7 @@ memoized as a function of '%current-system'."
"/lib/python"
,(version-major+minor version)
"/test"))))
- ,@(if (hurd-system?)
+ ,@(if (system-hurd?)
`((add-before 'build 'fix-regen
(lambda* (#:key inputs #:allow-other-keys)
(let ((libc (assoc-ref inputs "libc")))
@@ -2841,7 +2841,7 @@ memoized as a function of '%current-system'."
`(append (list ,(string-append "--host=" (boot-triplet))
,(string-append "--build="
(nix-system->gnu-triplet))
- ,(if (hurd-system?) "--disable-werror"
+ ,(if (system-hurd?) "--disable-werror"
""))
,flags))
((#:phases phases)
@@ -2853,7 +2853,7 @@ memoized as a function of '%current-system'."
(unsetenv "CPLUS_INCLUDE_PATH")
;; Tell 'libpthread' where to find 'libihash' on Hurd systems.
- ,@(if (hurd-system?)
+ ,@(if (system-hurd?)
'((substitute* '("sysdeps/mach/Makefile"
"sysdeps/mach/hurd/Makefile")
(("LDLIBS-pthread.so =.*")
@@ -2873,7 +2873,7 @@ memoized as a function of '%current-system'."
,@(%boot1-inputs)
;; A native MiG is needed to build Glibc on Hurd.
- ,@(if (hurd-system?)
+ ,@(if (system-hurd?)
`(("mig" ,mig-boot0))
'())
@@ -3024,7 +3024,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(,(gexp-input gcc-boot0 "lib")
,(kernel-headers-boot0)
,static-bash-for-glibc
- ,@(if (hurd-system?)
+ ,@(if (system-hurd?)
`(,gnumach-headers-boot0
,hurd-headers-boot0)
'())
diff --git a/gnu/packages/configuration-management.scm b/gnu/packages/configuration-management.scm
index b66f70545a..95a7e8615f 100644
--- a/gnu/packages/configuration-management.scm
+++ b/gnu/packages/configuration-management.scm
@@ -78,7 +78,7 @@
go-github-com-google-goterm
go-github-com-lucasb-eyer-go-colorful
go-github-com-mattn-go-isatty
- go-github.com-mattn-go-runewidth
+ go-github-com-mattn-go-runewidth
go-github-com-olekukonko-tablewriter
go-github-com-pelletier-go-toml
go-github-com-pkg-diff
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index b402bbde6a..463a834108 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2023 Zongyuan Li <zongyuan.li@c0x0o.me>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -396,3 +397,82 @@ configure network interfaces in Linux containers.")
volumes mounted into those containers, and pods made from groups of
containers.")
(license license:asl2.0)))
+
+(define-public buildah
+ (package
+ (name "buildah")
+ (version "1.29.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/containers/buildah")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1mcqkz68fjccdla1bgxw57w268a586brm6x28fcm6x425ah0w07h"))))
+ (build-system go-build-system)
+ (arguments
+ (list #:import-path "github.com/containers/buildah/cmd/buildah"
+ #:unpack-path "github.com/containers/buildah"
+
+ ;; Some dependencies require go-1.18 to build.
+ #:go go-1.18
+
+ #:tests? #f
+ #:install-source? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'prepare-install-docs
+ (lambda* (#:key unpack-path #:allow-other-keys)
+ (substitute* (string-append "src/"
+ unpack-path
+ "/docs/Makefile")
+ (("../tests/tools/build/go-md2man")
+ (which "go-md2man")))
+ (substitute* (string-append "src/"
+ unpack-path
+ "/docs/Makefile")
+ (("/usr/local") (string-append #$output)))))
+ (add-after 'build 'build-docs
+ (lambda* (#:key unpack-path #:allow-other-keys)
+ (let ((doc (string-append "src/" unpack-path "/docs")))
+ (invoke "make" "-C" doc))))
+ (add-after 'install 'install-docs
+ (lambda* (#:key unpack-path #:allow-other-keys)
+ (let ((doc (string-append "src/" unpack-path "/docs")))
+ (invoke "make" "-C" doc "install")))))))
+ (inputs (list btrfs-progs
+ cni-plugins
+ conmon
+ eudev
+ glib
+ gpgme
+ libassuan
+ libseccomp
+ lvm2
+ runc))
+ (native-inputs
+ (list go-github-com-go-md2man
+ gnu-make
+ pkg-config))
+ (synopsis "Build @acronym{OCI, Open Container Initiative} images")
+ (description
+ "Buildah is a command-line tool to build @acronym{OCI, Open Container
+Initiative} container images. More generally, it can be used to:
+
+@itemize
+@item
+create a working container, either from scratch or using an image as a
+starting point;
+@item
+create an image, either from a working container or via the instructions
+in a @file{Dockerfile};
+@item
+mount a working container's root filesystem for manipulation;
+@item
+use the updated contents of a container's root filesystem as a filesystem
+layer to create a new image.
+@end itemize")
+ (home-page "https://buildah.io")
+ (license license:asl2.0)))
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 365b15a3b9..39a34c20dd 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -30,7 +30,7 @@
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2022 David Elsing <david.elsing@posteo.net>
-;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2022, 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Sughosha <Sughosha@proton.me>
;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom@gmail.com>
@@ -1173,7 +1173,11 @@ parsers according to a Parsing Expression Grammar (PEG).")
"/pSAscan-" version ".tar.bz2"))
(sha256
(base32
- "1cphk4gf202nzkxz6jdjzls4zy27055gwpm0r8cn99gr6c8548cy"))))
+ "1cphk4gf202nzkxz6jdjzls4zy27055gwpm0r8cn99gr6c8548cy"))
+ (modules '((guix build utils)))
+ (snippet '(begin (substitute* '("src/Makefile"
+ "tools/delete-bytes-255/Makefile")
+ (("-march=native") ""))))))
(build-system gnu-build-system)
(arguments
(list
@@ -1187,6 +1191,7 @@ parsers according to a Parsing Expression Grammar (PEG).")
(install-file "psascan"
(string-append #$output "/bin")))))))
(inputs (list libdivsufsort))
+ (properties '((tunable? . #t)))
(home-page "https://www.cs.helsinki.fi/group/pads/pSAscan.html")
(synopsis "Parallel external memory suffix array construction")
(description "This package contains an implementation of the parallel
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 53c49e3ac7..ba81580258 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -2262,16 +2262,37 @@ provides methods for automatically determining breaks and labels for axes and
legends.")
(license license:expat)))
+(define-public r-swagger
+ (package
+ (name "r-swagger")
+ (version "3.33.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "swagger" version))
+ (sha256
+ (base32
+ "1ldgmy5vjzd11z5yl5a518wkw6y0l469b2zf0lp12hk19jq6k0sj"))))
+ (properties `((upstream-name . "swagger")))
+ (build-system r-build-system)
+ (home-page "https://github.com/rstudio/swagger")
+ (synopsis
+ "Dynamically generate documentation from a Swagger-compliant API")
+ (description
+ "This package provides a collection of HTML, JavaScript, and CSS assets
+that dynamically generate beautiful documentation from a Swagger compliant
+API.")
+ (license license:asl2.0)))
+
(define-public r-pacman
(package
(name "r-pacman")
(version "0.5.1")
(source (origin
- (method url-fetch)
- (uri (cran-uri "pacman" version))
- (sha256
- (base32
- "0z7gngd6h83cpjhq1vg75wvzhdjbgjh7gj5d4zvvi9gd2lmagjcy"))))
+ (method url-fetch)
+ (uri (cran-uri "pacman" version))
+ (sha256
+ (base32
+ "0z7gngd6h83cpjhq1vg75wvzhdjbgjh7gj5d4zvvi9gd2lmagjcy"))))
(build-system r-build-system)
(propagated-inputs
(list r-remotes))
@@ -2484,6 +2505,40 @@ does not use formula input or special syntax, but can be used in combination
with default R plot functions.")
(license license:gpl2+)))
+(define-public r-plumber
+ (package
+ (name "r-plumber")
+ (version "1.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "plumber" version))
+ (sha256
+ (base32
+ "1k0y7ylc8bld16imn86g0i0dmxmr3kmh9ax4ys0yrxqzrvji7z3g"))))
+ (properties `((upstream-name . "plumber")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-crayon
+ r-ellipsis
+ r-httpuv
+ r-jsonlite
+ r-lifecycle
+ r-magrittr
+ r-mime
+ r-promises
+ r-r6
+ r-rlang
+ r-sodium
+ r-stringi
+ r-swagger
+ r-webutils))
+ (home-page "https://www.rplumber.io")
+ (synopsis "API generator for R")
+ (description
+ "This package gives you the ability to automatically generate and serve
+an HTTP API from R functions using the annotations in the R documentation
+around your functions.")
+ (license license:expat)))
+
(define-public r-polychrome
(package
(name "r-polychrome")
@@ -10960,6 +11015,33 @@ It is a replacement for the @code{zip} function, that does not require any
additional external tools on any platform.")
(license license:cc0)))
+(define-public r-openai
+ (package
+ (name "r-openai")
+ (version "0.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "openai" version))
+ (sha256
+ (base32
+ "1fi1nc9c7kfnig6b5ifpb1v9r3gxszk984rwyq7i1lb6s5jv0b9z"))))
+ (properties `((upstream-name . "openai")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-assertthat
+ r-glue
+ r-httr
+ r-jsonlite
+ r-lifecycle
+ r-magrittr))
+ (home-page "https://github.com/irudnyts/openai")
+ (synopsis "R Wrapper for OpenAI API")
+ (description
+ "This package provides an R wrapper of OpenAI API endpoints (see
+@url{https://platform.openai.com/docs/introduction} for details). This
+package covers Models, Completions, Chat, Edits, Images, Embeddings, Audio,
+Files, Fine-tunes, Moderations, and legacy Engines endpoints.")
+ (license license:expat)))
+
(define-public r-openxlsx
(package
(name "r-openxlsx")
@@ -17188,6 +17270,29 @@ Kingsbury (1999, 2001) as implemented by Selesnick; and Hilbert wavelet
pairs (Selesnick 2001, 2002).")
(license license:bsd-3)))
+(define-public r-word2vec
+ (package
+ (name "r-word2vec")
+ (version "0.3.4")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "word2vec" version))
+ (sha256
+ (base32
+ "0qj39vms6zgwb8lpmfkppayizdmhakic3pkacglary3ain61vnsk"))))
+ (properties `((upstream-name . "word2vec")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-rcpp r-rcppprogress))
+ (home-page "https://github.com/bnosac/word2vec")
+ (synopsis "Distributed representations of words")
+ (description
+ "Learn vector representations of words by continuous bag of words and
+skip-gram implementations of the word2vec algorithm. The techniques are
+detailed in the paper \"Distributed Representations of Words and Phrases and
+their Compositionality\" by Mikolov et al. (2013), available at
+<arXiv:1310.4546>.")
+ (license license:asl2.0)))
+
(define-public r-wordcloud
(package
(name "r-wordcloud")
@@ -17287,6 +17392,38 @@ manipulate tree data.")
R packages (on CRAN, Bioconductor or Github).")
(license license:artistic2.0)))
+(define-public r-doc2vec
+ (package
+ (name "r-doc2vec")
+ (version "0.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "doc2vec" version))
+ (sha256
+ (base32
+ "0249hm0103kxxsi4gks4h20wf6p00gbrk9jf8c148mbja1l56f6v"))))
+ (properties `((upstream-name . "doc2vec")))
+ (build-system r-build-system)
+ (propagated-inputs (list r-rcpp))
+ (home-page "https://github.com/bnosac/doc2vec")
+ (synopsis "Distributed representations of sentences, documents and topics")
+ (description
+ "Learn vector representations of sentences, paragraphs or documents by
+using the Paragraph Vector algorithms, namely the distributed bag of
+words (PV-DBOW) and the distributed memory (PV-DM) model. Top2vec finds
+clusters in text documents by combining techniques to embed documents and
+words and density-based clustering. It does this by embedding documents in
+the semantic space as defined by the doc2vec algorithm. Next it maps these
+document embeddings to a lower-dimensional space using the Uniform Manifold
+Approximation and Projection (UMAP) clustering algorithm and finds dense areas
+in that space using a Hierarchical Density-Based Clustering
+technique (HDBSCAN). These dense areas are the topic clusters which can be
+represented by the corresponding topic vector which is an aggregate of the
+document embeddings of the documents which are part of that topic cluster. In
+the same semantic space similar words can be found which are representative of
+the topic.")
+ (license license:expat)))
+
(define-public r-docopt
(package
(name "r-docopt")
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index af77a40257..3877f6c977 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -14304,6 +14304,40 @@ to the @code{is_x86_feature_detected!} macro.")
(description "This package provides bindings to Google's cpu profiler.")
(license license:bsd-2)))
+(define-public rust-uom-0.34
+ (package
+ (name "rust-uom")
+ (version "0.34.0")
+ (source (origin
+ (method url-fetch)
+ (uri (crate-uri "uom" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "190n79b5ywa9w0j13ld0q6dphz7vzsjkwrpp8pjnwrczsvfhxxg8"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-num-complex" ,rust-num-complex-0.4)
+ ("rust-num-rational" ,rust-num-rational-0.4)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-typenum" ,rust-typenum-1)
+ ("rust-serde" ,rust-serde-1)
+ ("rust-num-bigint" ,rust-num-bigint-0.4))
+ #:cargo-development-inputs (("rust-approx" ,rust-approx-0.5)
+ ("rust-quickcheck" ,rust-quickcheck-0.8)
+ ("rust-serde-json" ,rust-serde-json-1)
+ ("rust-static-assertions" ,rust-static-assertions-1))))
+ (home-page "https://github.com/iliekturtles/uom")
+ (synopsis "Units of measurement")
+ (description
+ "@code{uom} (Units of measurement) is a crate that does automatic type-safe
+zero-cost dimensional analysis. You can create your own systems or use the pre-built
+International System of Units (SI) which is based on the International System of
+Quantities (ISQ) and includes numerous quantities (length, mass, time, ...) with
+conversion factors for even more numerous measurement units (meter, kilometer, foot,
+mile, ...).")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-crates-index-0.18
(package
(name "rust-crates-index")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index fe1f04d2dd..9b89c7d545 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1099,48 +1099,49 @@ trivial to build for local use. Portability is emphasized over performance.")
(license license:unlicense)))
(define-public libsecp256k1
- (let ((commit "dbd41db16a0e91b2566820898a3ab2d7dad4fe00"))
- (package
- (name "libsecp256k1")
- (version (git-version "20200615" "1" commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/bitcoin-core/secp256k1")
- (commit commit)))
- (sha256
- (base32
- "1fcpnksq5cqwqzshn5f0lq94b73p3frwbp04hgmmbnrndpqg6mpy"))
- (file-name (git-file-name name version))))
- (build-system gnu-build-system)
- (arguments
- '(#:configure-flags '("--enable-module-recovery"
- "--enable-experimental"
- "--enable-module-ecdh"
- "--enable-shared")))
- (native-inputs
- (list autoconf automake libtool))
- ;; WARNING: This package might need additional configure flags to run properly.
- ;; See https://github.com/archlinux/svntogit-community/blob/packages/libsecp256k1/trunk/PKGBUILD.
- (synopsis "C library for EC operations on curve secp256k1")
- (description
- "Optimized C library for EC operations on curve secp256k1.
-
-This library is a work in progress and is being used to research best
-practices. Use at your own risk.
+ (package
+ (name "libsecp256k1")
+ (version "0.3.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bitcoin-core/secp256k1")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "12wksk7bi3yfzmk1zwh5b6846zcaycqz1w4w4p23apjc8da4jwpn"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags '("--enable-module-recovery"
+ "--enable-experimental"
+ "--enable-module-ecdh"
+ "--enable-module-schnorrsig"
+ "--enable-shared"
+ "--disable-static"
+ "--disable-benchmark")))
+ (native-inputs
+ (list autoconf automake libtool))
+ (synopsis "C library for EC operations on curve secp256k1")
+ (description
+ "Optimized C library for EC operations on curve secp256k1.
Features:
@itemize
@item secp256k1 ECDSA signing/verification and key generation.
-@item Adding/multiplying private/public keys.
+@item Additive and multiplicative tweaking of secret/public keys.
@item Serialization/parsing of private keys, public keys, signatures.
-@item Constant time, constant memory access signing and pubkey generation.
-@item Derandomized DSA (via RFC6979 or with a caller provided function.)
+@item Constant time, constant memory access signing and public key generation.
+@item Derandomized ECDSA (via RFC6979 or with a caller provided function.)
@item Very efficient implementation.
+@item Suitable for embedded systems.
+@item No runtime dependencies.
+@item Optional module for public key recovery.
+@item Optional module for ECDH key exchange.
+@item Optional module for Schnorr signatures according to BIP-340.
@end itemize\n")
- (home-page "https://github.com/bitcoin-core/secp256k1")
- (license license:unlicense))))
+ (home-page "https://github.com/bitcoin-core/secp256k1")
+ (license license:expat)))
(define-public libsecp256k1-bitcoin-cash
(package
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 74483d27f7..42b394daf2 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1556,20 +1556,17 @@ organized in a hash table or B+ tree.")
(build-system gnu-build-system)
(arguments
(list #:configure-flags
- '(list "--disable-static"
- (string-append "--with-bash-headers="
- (dirname (search-input-directory
- %build-inputs
- "include/bash"))))))
+ #~(list "--disable-static"
+ (string-append "--with-bash-headers="
+ (search-input-directory %build-inputs
+ "include/bash")))))
(native-inputs
- ;; XXX Without labels, the default 'configure phase picks the wrong "bash".
- `(("bc" ,bc)
- ("bash:include" ,bash "include")
- ("check" ,check)
- ("pkg-config" ,pkg-config)))
+ (list bc check-0.14 pkg-config))
(inputs
;; TODO: Add more optional inputs.
- (list curl
+ (list bash ; /bin/bash for native compilation
+ `(,bash "include")
+ curl
libgcrypt
`(,util-linux "lib")))
(synopsis "Manipulate plain text files as databases")
@@ -5075,7 +5072,7 @@ compatible with SQLite using a graphical user interface.")
go-github-com-pkg-errors
go-github-com-sourcegraph-jsonrpc2
go-golang-org-x-crypto
- go-github.com-mattn-go-runewidth
+ go-github-com-mattn-go-runewidth
go-golang-org-x-xerrors
go-gopkg-in-yaml-v2))
(synopsis "SQL language server written in Go")
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 894a542171..b878614dc2 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -25,6 +25,7 @@
;;; Copyright © 2014, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Disseminate Dissent <disseminatedissent@protonmail.com>
+;;; Copyright © 2023 Timotej Lazar <timotej.lazar@araneo.si>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -43,6 +44,7 @@
(define-module (gnu packages disk)
#:use-module (gnu packages)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
@@ -1159,7 +1161,7 @@ on your file system and offers to remove it. @command{rmlint} can find:
"1piym8za0iw2s8yryh39y072f90mzisv89ffvn1jzb71f71mbfqa"))))
(build-system go-build-system)
(native-inputs
- (list go-github.com-mattn-go-runewidth go-golang-org-x-term
+ (list go-github-com-mattn-go-runewidth go-golang-org-x-term
go-gopkg-in-djherbis-times-v1 go-github-com-gdamore-tcell-v2-2.3))
(arguments
`(#:import-path "github.com/gokcehan/lf"))
@@ -1502,6 +1504,46 @@ gone and to help you to clean it up.")
(home-page "https://github.com/shundhammer/qdirstat")
(license license:gpl2)))
+(define-public nwipe
+ (package
+ (name "nwipe")
+ (version "0.34")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/martijnvanbrummelen/nwipe")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1frwjgz4mpzwr9sigr693crmxsjl08wcikh6ik7dm0x40l1kqqpd"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (search-input-file outputs "bin/nwipe")
+ (list "PATH" ":" 'prefix
+ (map (lambda (p) (dirname (search-input-file inputs p)))
+ '("sbin/dmidecode"
+ "sbin/hdparm"
+ "sbin/smartctl")))))))))
+ (inputs
+ (list bash-minimal dmidecode hdparm ncurses parted smartmontools))
+ (native-inputs
+ (list autoconf automake libtool pkg-config))
+ (home-page "https://github.com/martijnvanbrummelen/nwipe")
+ (synopsis "Secure disk wiping utility")
+ (description
+ "@command{nwipe} securely erases disks using a variety of methods to
+ensure the data cannot be recovered. It can wipe multiple drives in parallel
+and can be used noninteractively or with a text-based user interface.")
+ (license
+ (list license:gpl2
+ license:bsd-3 ; mt19937ar-cok
+ license:public-domain)))) ; {isaac_rand,PDFGen}
+
(define-public wipe
(package
(name "wipe")
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 3445453093..0b2a18d661 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
;;; Copyright © 2020 Jesse Dowell <jessedowell@gmail.com>
@@ -664,7 +664,7 @@ provisioning etc.")
(define-public cqfd
(package
(name "cqfd")
- (version "5.3.0")
+ (version "5.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -673,25 +673,18 @@ provisioning etc.")
(file-name (git-file-name name version))
(sha256
(base32
- "0gy4kjy6v52acfk6ffbg5sp02k6176khhkms7zlwmywq8591bpww"))))
+ "1kilrh4ahza19lka9218s2wkfcbk5r2cq9adczhlnlfggdrqnglg"))))
(build-system gnu-build-system)
(arguments
;; The test suite requires a docker daemon and connectivity.
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'build)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; Fix the directory of the bash completion.
- (substitute* "Makefile"
- (("completionsdir=.*$")
- (string-append "completionsdir=" out
- "/etc/bash_completion.d; \\\n")))
- (invoke "make" "install"
- (string-append "PREFIX=" out))))))))
+ (list
+ #:tests? #f
+ #:make-flags #~(list (string-append "COMPLETIONSDIR="
+ #$output "/etc/bash_completion.d")
+ (string-append "PREFIX=" #$output))
+ #:phases #~(modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build))))
(home-page "https://github.com/savoirfairelinux/cqfd")
(synopsis "Convenience wrapper for Docker")
(description "cqfd is a Bash script that provides a quick and convenient
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index be64bc4f95..ec70ca4d8f 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -370,7 +370,7 @@ the Net to search for documents which are not on the local system.")
(license lgpl2.1+)))
(define-public zeal
- (let ((commit "d3c5521c501d24050f578348ff1b9d68244b992c")
+ (let ((commit "1cfa7c637f745be9d98777f06b4f8dec90892bf2")
(revision "1"))
(package
(name "zeal")
@@ -383,7 +383,7 @@ the Net to search for documents which are not on the local system.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "1ky2qi2cmjckc51lm3i28815ixgqdm36j7smixxr16jxpmbqs6sl"))))
+ (base32 "1m7pp3cwc21x03718vhwfd9j2n8md3hv5dp10s234vcsd755s7a3"))))
(build-system qt-build-system)
(arguments
`(#:tests? #f ;no tests
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 4118c84bbf..54380e7ebb 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -1102,16 +1102,16 @@ mentored learning for programming languages.")
(define-public mazo
(package
(name "mazo")
- (version "1.0.0")
+ (version "1.1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://gitlab.com/luis-felipe/mazo.git")
+ (url "https://codeberg.org/luis-felipe/mazo.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "06246380i5rxycniwg5syn0aldd2zy10cbqk1lgyc0qfqb2lyrwj"))))
+ (base32 "14nk3qsj6lg7wp2ws8lxhb4hyjnczvw1cn9f3m466dkkfimp7ygf"))))
(build-system python-build-system)
(arguments
`(#:use-setuptools? #f
@@ -1155,8 +1155,10 @@ mentored learning for programming languages.")
python-pillow
python-pycairo))
(propagated-inputs
- (list gstreamer
- gtk+
+ (list adwaita-icon-theme
+ dbus
+ gstreamer
+ gtk
python
python-django
python-django-cleanup
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index b77bd0aa83..08d53be8a9 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -1118,6 +1118,31 @@ expression navigating and manipulating. It supports many major modes
out of the box.")
(license license:gpl3+))))
+(define-public emacs-pug-mode
+ (package
+ (name "emacs-pug-mode")
+ (version "1.0.8")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hlissner/emacs-pug-mode")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1f6bhdr1a72x94dlz2i1fwwln8crc2mbpc2iq23hvsbsfmj7xfzp"))))
+ (native-inputs (list emacs-ert-runner))
+ (build-system emacs-build-system)
+ (arguments
+ (list
+ #:tests? #t
+ #:test-command #~(list "ert-runner")))
+ (home-page "https://github.com/hlissner/emacs-pug-mode")
+ (synopsis "Pug support for Emacs")
+ (description "Pug mode offers Emacs support for Pug. Unlike Jade mode, it
+is based off of Slim mode.")
+ (license license:gpl3+)))
+
(define-public emacs-spaceline-all-the-icons
(package
(name "emacs-spaceline-all-the-icons")
@@ -1665,12 +1690,10 @@ Alternatively the menu can be bound globally, for example:
(license license:gpl3+)))
(define-public emacs-nano-modeline
- ;; No tagged release upstream. The commit below matches latest version
- ;; bump.
- (let ((commit "61f62aa4716eae4fa89961955323d146e9791fca"))
+ (let ((commit "cba074e55c847f289085ec35c21fb2ad8df1b483")) ;version bump
(package
(name "emacs-nano-modeline")
- (version "0.7.2")
+ (version "1.0.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1679,7 +1702,7 @@ Alternatively the menu can be bound globally, for example:
(file-name (git-file-name name version))
(sha256
(base32
- "1zwf3mp0z4vc36lg057vspk7dr8chcvhivm1l8q7p3m9b6xw8ask"))))
+ "0fccasr5ydyfwpqj3kmsgxiazifkckybg2rnwm6sg034phavcyln"))))
(build-system emacs-build-system)
(home-page "https://github.com/rougier/nano-modeline")
(synopsis "Emacs minor mode controlling mode line")
@@ -2365,6 +2388,45 @@ different tools. It highlights errors and warnings inline in the buffer, and
provides an optional IDE-like error list.")
(license license:gpl3+))) ;+GFDLv1.3+ for the manual
+(define-public emacs-fb2-reader
+ (let ((commit "9836db284749e0cef4c43c2cb5358c82ae9b8589")) ; version bump
+ (package
+ (name "emacs-fb2-reader")
+ (version "0.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jumper047/fb2-reader")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0vx4b9wnmx1bng8wak5r7yryyvgib4m46l6b877xzkdhsjr3rbsi"))))
+ (build-system emacs-build-system)
+ (arguments
+ (list
+ #:tests? #t
+ #:test-command
+ #~(list "emacs" "-Q" "--batch" "-L" "."
+ "--eval" "(load-file \"tests/test-fb2-reader.el\")")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'qualify-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((unzip (search-input-file inputs "/bin/unzip")))
+ (substitute* "fb2-reader.el"
+ (("unzip") unzip))))))))
+ (inputs (list unzip))
+ (native-inputs
+ (list emacs-async emacs-buttercup emacs-dash emacs-s))
+ (propagated-inputs
+ (list emacs-f emacs-visual-fill-column))
+ (home-page "https://github.com/jumper047/fb2-reader")
+ (synopsis "Emacs plugin to read FictionBook2 ebooks")
+ (description "FB2 Reader provides a major mode for reading
+FictionBook2 (@file{.fb2} and @file{.fb2.zip} files) ebooks.")
+ (license license:gpl3+))))
+
(define-public emacs-flymake-collection
(package
(name "emacs-flymake-collection")
@@ -6080,7 +6142,7 @@ intended to be.")
(define-public emacs-ef-themes
(package
(name "emacs-ef-themes")
- (version "1.0.0")
+ (version "1.1.0")
(source
(origin
(method git-fetch)
@@ -6090,7 +6152,7 @@ intended to be.")
(file-name (git-file-name name version))
(sha256
(base32
- "0rq1cy9hg603wk7pnfj0zfc84h1l87rg8blk4x4b61x7bkc3dd7q"))))
+ "03xmc4657q9p4b5zbssjjpq125bb1vd4fbhmy1f6rk25vxx3pxg7"))))
(build-system emacs-build-system)
(home-page "https://git.sr.ht/~protesilaos/ef-themes")
(synopsis "Colorful and legible themes")
@@ -8275,7 +8337,7 @@ Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
(define-public emacs-piem
(package
(name "emacs-piem")
- (version "0.4.0")
+ (version "0.5.0")
(source
(origin
(method git-fetch)
@@ -8284,7 +8346,7 @@ Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(sha256
- (base32 "0wr6n6wvznngjdp4c0pmdr4xz05dark0kxi5svzhzxsg3rdaql3z"))))
+ (base32 "0smdb1iph2q1xvxix5c93llckcxh7kmhg6pxgyrm88j736m4l16q"))))
(build-system emacs-build-system)
(arguments
(list #:phases
@@ -8295,9 +8357,9 @@ Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
("piem-b4-b4-executable"
(search-input-file inputs "/bin/b4"))))))))
(inputs
- (list b4))
- (propagated-inputs
- (list emacs-elfeed
+ (list b4
+ emacs-debbugs
+ emacs-elfeed
emacs-notmuch))
(home-page "https://docs.kyleam.com/piem")
(synopsis "Glue for working with public-inbox archives")
@@ -12884,7 +12946,7 @@ mode with the package emacs-julia-mode.")
(define-public emacs-julia-snail
(package
(name "emacs-julia-snail")
- (version "1.2.2")
+ (version "1.2.3")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -12893,7 +12955,7 @@ mode with the package emacs-julia-mode.")
(file-name (git-file-name name version))
(sha256
(base32
- "1vbg97h2jvmkpyhdsra51ilimzvrqnpy8rf1bhxnnb54p2cgkpsr"))))
+ "07dj788hdfskn2k400q2fcfh18w7gflfrc5zqg8bqflhv755m30k"))))
(build-system emacs-build-system)
(arguments
(list
@@ -13070,7 +13132,7 @@ indentation and filling of comments and C preprocessor fontification.")
(define-public emacs-tide
(package
(name "emacs-tide")
- (version "4.5.4")
+ (version "5.1.3")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -13079,7 +13141,7 @@ indentation and filling of comments and C preprocessor fontification.")
(file-name (git-file-name name version))
(sha256
(base32
- "0zrapfxdarakp3kwp73c2ymjx51fsnfk6azi2y1wb2kgsdxl2yim"))))
+ "01chyr71b8893jxgf4wncpskfmg9iwfpcaxq0vfc6yaij46yfhky"))))
(build-system emacs-build-system)
(propagated-inputs
(list emacs-dash emacs-flycheck emacs-s emacs-typescript-mode))
@@ -13905,16 +13967,16 @@ restrict the text width to 80 characters.")
(define-public emacs-wucuo
(package
(name "emacs-wucuo")
- (version "0.2.9")
+ (version "0.3.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/redguardtoo/wucuo")
- (commit "89b99166768afb811c48a7db7c93c02d51a32b09")))
+ (commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "03a6jlbv9axrd9yr0xscq3ni7fipm20ppc51kxy0sn241rplv0pg"))))
+ (base32 "0za3mxssx48shdaqwn8akxrshkqn92dd0s06h6abqk9mfzdd67ng"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
@@ -15456,6 +15518,27 @@ can selectively commit files, view the diffs, and other things.")
distribution, primarily targeting Clojure users")
(license license:gpl3+)))
+(define-public emacs-rail
+ (package
+ (name "emacs-rail")
+ (version "0.4.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Sasanidas/Rail")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1i07zv0z6r46jpg22x99a1izyfp6536xf951ibyr9kis5bql5jz9"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/Sasanidas/Rail")
+ (synopsis "Generic nREPL client for Emacs")
+ (description
+ "Rail is a nREPL client based on monroe with similar features, but aims
+to be a more complete implementation.")
+ (license license:gpl3+)))
+
(define-public emacs-orgalist
(package
(name "emacs-orgalist")
@@ -20865,7 +20948,7 @@ the pipeline, featuring the support for running @code{emacsclient}.")
(define-public emacs-jupyter
(package
(name "emacs-jupyter")
- (version "0.8.2")
+ (version "0.8.3")
(source
(origin
(method git-fetch)
@@ -20874,7 +20957,7 @@ the pipeline, featuring the support for running @code{emacsclient}.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1sr007wsl2y6wqpzkmv3inbpwhvgdcb2nmqzgfg7w1awapi2r13p"))))
+ (base32 "0acn964xlpn265vry35lrkkpf9z5y4ml96xg8ifadkxwxymm1sh2"))))
(build-system emacs-build-system)
(propagated-inputs
(list emacs-company ;optional
@@ -20885,9 +20968,9 @@ the pipeline, featuring the support for running @code{emacsclient}.")
(home-page "https://github.com/nnicandro/emacs-jupyter")
(synopsis "Emacs interface to communicate with Jupyter kernels")
(description "This package provides an Emacs interface to communicate with
-Jupyter kernels. It provides REPL and @code{org-mode} source code block
-frontends to Jupyter kernels and kernel interactions integrated with Emacs'
-built-in features.")
+Jupyter kernels. It provides REPL and Org mode source code block frontends to
+Jupyter kernels and kernel interactions integrated with Emacs' built-in
+features.")
(license license:gpl3+)))
(define-public emacs-hcl-mode
@@ -21970,7 +22053,7 @@ according to a parsing expression grammar.")
(define-public emacs-eldev
(package
(name "emacs-eldev")
- (version "1.4")
+ (version "1.4.1")
(source
(origin
(method git-fetch)
@@ -21979,7 +22062,7 @@ according to a parsing expression grammar.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1cziz1a8mh24aj79jfnkjb0llh6a2raqnlcfyaswha80bwzwp4ph"))))
+ (base32 "1vvqs8x2chm2bgwnlsrq7llgql5m9hjbxi1x3xbnzbx5l1yvldbp"))))
(build-system emacs-build-system)
(arguments
(list
@@ -23672,7 +23755,7 @@ powerful Org contents.")
(define-public emacs-org-re-reveal
(package
(name "emacs-org-re-reveal")
- (version "3.18.2")
+ (version "3.18.3")
(source
(origin
(method git-fetch)
@@ -23681,7 +23764,7 @@ powerful Org contents.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0v9403zjxays4c66xq3zq2285h77pn2ha7afx70xffjyynmvnz6i"))))
+ (base32 "124f59yj0w5linph4k38fil42jc6nvkzhx73312farkmn4p9r9zk"))))
(build-system emacs-build-system)
(propagated-inputs
(list emacs-htmlize emacs-org))
@@ -26963,43 +27046,45 @@ can be queued at any time.")
(license license:unlicense))))
(define-public emacs-ytdl
- (package
- (name "emacs-ytdl")
- (version "1.3.6")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.com/tuedachu/ytdl")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "010arhvibyw50lqhsr8bm0vj3pzry1h1vgcvxnmyryirk3dv40jl"))))
- (build-system emacs-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'configure
- (lambda* (#:key inputs #:allow-other-keys)
- ;; .el is read-only in git.
- (make-file-writable "ytdl.el")
- ;; Specify the absolute file names of the various programs so
- ;; that everything works out-of-the-box.
- (emacs-substitute-variables "ytdl.el"
- ("ytdl-command"
- (search-input-file inputs "/bin/youtube-dl"))))))))
- (inputs
- (list youtube-dl))
- (propagated-inputs
- (list emacs-async emacs-dash))
- (home-page "https://gitlab.com/tuedachu/ytdl")
- (synopsis "Emacs interface for youtube-dl")
- (description
- "This package manages a video download queue for @command{youtube-dl},
+ (let ((commit "2ea3daf2f6aa9d18b71fe3e15f05c30a56fca228")
+ (revision "0"))
+ (package
+ (name "emacs-ytdl")
+ (version (git-version "1.3.6" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/tuedachu/ytdl")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0y62lkgsg19j05dpd6sp6zify8vq8xvpc8caqiy4rwi7p4ahacsf"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'configure
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; .el is read-only in git.
+ (make-file-writable "ytdl.el")
+ ;; Specify the absolute file names of the various programs so
+ ;; that everything works out-of-the-box.
+ (emacs-substitute-variables "ytdl.el"
+ ("ytdl-command"
+ (search-input-file inputs "/bin/youtube-dl"))))))))
+ (inputs
+ (list youtube-dl))
+ (propagated-inputs
+ (list emacs-async emacs-dash))
+ (home-page "https://gitlab.com/tuedachu/ytdl")
+ (synopsis "Emacs interface for youtube-dl")
+ (description
+ "This package manages a video download queue for @command{youtube-dl},
which serves as the back end. New videos can be queued at any time. All
youtube-dl backends are supported. It is possible to create download profiles
depending on the downloaded URL.")
- (license license:gpl3+)))
+ (license license:gpl3+))))
(define-public emacs-ytel
;; No tagged releases. Using version from main file.
@@ -29493,7 +29578,7 @@ as Emacs Lisp.")
(define-public emacs-transient
(package
(name "emacs-transient")
- (version "0.4.0")
+ (version "0.4.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -29502,7 +29587,7 @@ as Emacs Lisp.")
(file-name (git-file-name name version))
(sha256
(base32
- "0c9bfn5jwwng98h7i9lx0q3vg00wd8w25cg8d3vyy2vqfbg80qhy"))))
+ "1aq4bb83pdkbkbqh6ba0r7sadaq45qqg2q5jlqyvsn8akcsq65iq"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #f ;no test suite
@@ -30870,14 +30955,14 @@ well as an option for visually flashing evaluated s-expressions.")
(define-public emacs-tramp
(package
(name "emacs-tramp")
- (version "2.6.0.4")
+ (version "2.6.0.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"tramp-" version ".tar"))
(sha256
- (base32 "0s50zgxxhlc2k80mnxyyqcfd1iij9dz95fryb2a65chy1ccibd0m"))))
+ (base32 "0hbrrlcyhxkmjym4wnwipi47lzqpnlxc833p0hmghc6n0s8sx7hf"))))
(build-system emacs-build-system)
(arguments
(list
@@ -31295,20 +31380,18 @@ programming in Emacs Lisp easy and fun.")
(define-public emacs-excorporate
(package
(name "emacs-excorporate")
- (version "1.1.0")
+ (version "1.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"excorporate-" version ".tar"))
(sha256
- (base32 "1il51gfgvkxjj7vdi5kdmzi87hl9853ck8s45p0cxrddlaiqbmwy"))))
+ (base32 "06ilfkrlx6ca0qfqq3w1w07kdwak556i1wgf1875py2d5xkg4r90"))))
(build-system emacs-build-system)
(propagated-inputs
- (list emacs-fsm
- emacs-soap-client
- emacs-url-http-oauth
- emacs-url-http-ntlm))
+ (list emacs-fsm emacs-soap-client emacs-url-http-ntlm
+ emacs-url-http-oauth))
(home-page "https://elpa.gnu.org/packages/excorporate.html")
(synopsis "Exchange integration")
(description "This package provides Exchange integration for Emacs.")
@@ -31758,22 +31841,22 @@ format.")
(define-public emacs-ox-pandoc
(package
(name "emacs-ox-pandoc")
- (version "20180510")
+ (version "2.0")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/kawabata/ox-pandoc")
- (commit "aa37dc7e94213d4ebedb85c384c1ba35007da18e")))
+ (url "https://github.com/emacsorphanage/ox-pandoc")
+ (commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
- "0iibxplgdp34bpq1yll2gmqjd8d8lnqn4mqjvx6cdf0y438yr4jz"))))
+ "0sh8l18lc2hngbmb1vv99xb8cp4sfy90j9cbf7b09l82jmnlqmk1"))))
(build-system emacs-build-system)
(inputs
(list pandoc))
(propagated-inputs
(list emacs-dash emacs-ht))
- (home-page "https://github.com/kawabata/ox-pandoc")
+ (home-page "https://github.com/emacsorphanage/ox-pandoc")
(synopsis "Org exporter for Pandoc")
(description "@code{ox-pandoc} is an exporter for converting Org-mode
files to numerous other formats via Pandoc.")
@@ -32331,7 +32414,7 @@ Emacs that integrate with major modes like Org-mode.")
(define-public emacs-modus-themes
(package
(name "emacs-modus-themes")
- (version "4.1.0")
+ (version "4.2.0")
(source
(origin
(method git-fetch)
@@ -32340,7 +32423,7 @@ Emacs that integrate with major modes like Org-mode.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1rfnn7c6qv3qmzpksdzy7623qijbldnmr7hl9ka2kwnhdarsigkk"))))
+ (base32 "1r6m2jsfn6066155pnlkdgs6dz2fdsampdhdz796z2jy53k7srsg"))))
(native-inputs (list texinfo))
(build-system emacs-build-system)
(arguments
@@ -33604,29 +33687,27 @@ data format @code{edn}. See @url{https://github.com/edn-format/edn}.")
(license license:gpl3+))))
(define-public emacs-ednc
- (let ((commit "940a4adbbeb3b6b1a72270a814d52770dd89a997")
- (revision "1"))
- (package
- (name "emacs-ednc")
- (version (git-version "0.1" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/sinic/ednc")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1gsx2qgv5xm9r0i0axd4hf31g2rq2m4a1hvnif48g4xb0llss73c"))))
- (build-system emacs-build-system)
- (home-page "https://github.com/sinic/ednc")
- (synopsis "Emacs Desktop Notification Center")
- (description
- "The Emacs Desktop Notification Center (EDNC) is an Emacs package written
+ (package
+ (name "emacs-ednc")
+ (version "0.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sinic/ednc")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1jdlwngxipq5pzs3kgmzwc99aqk6mi3cf1wv228hhmb8nsm1dqgd"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/sinic/ednc")
+ (synopsis "Emacs Desktop Notification Center")
+ (description
+ "The Emacs Desktop Notification Center (EDNC) is an Emacs package written
in pure Lisp that implements a Desktop Notifications service according to the
freedesktop.org specification. EDNC aspires to be a small, but flexible
drop-in replacement of standalone daemons like Dunst.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
(define-public emacs-helm-clojuredocs
(let ((commit "5a7f0f2cb401be0b09e73262a1c18265ab9a3cea"))
@@ -34268,6 +34349,33 @@ generate random passwords and insert them into the current buffer. It also
supports generation of phonetic and numeric passwords.")
(license license:artistic2.0)))
+(define-public emacs-qrencode
+ (package
+ (name "emacs-qrencode")
+ (version "1.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruediger/qrencode-el")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0yrshahci319lnjdpsksdy11a69k1n91qk9r2zfyhqmng09s6i0y"))))
+ (build-system emacs-build-system)
+ (arguments
+ (list #:tests? #t
+ #:test-command #~(list "emacs" "-Q" "--batch"
+ "-l" "qrencode.el"
+ "-l" "qrencode-tests.el"
+ "-f" "ert-run-tests-batch-and-exit")))
+ (home-page "https://github.com/ruediger/qrencode-el")
+ (synopsis "QRCode encoder for Emacs in pure elisp")
+ (description
+ "This package provides two user facing interactive functions, that will encode
+text into a QR Code and show it in a separate buffer.")
+ (license license:gpl3+)))
+
(define-public emacs-csv
(package
(name "emacs-csv")
@@ -35091,7 +35199,7 @@ displayed for sharing.")
(define-public emacs-orglink
(package
(name "emacs-orglink")
- (version "1.2.1")
+ (version "1.2.2")
(source
(origin
(method git-fetch)
@@ -35100,7 +35208,7 @@ displayed for sharing.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "05x8alv4a8c1g9l8v8p319vcr0y7w1i2r6ipj0v3dy4n2gh7v822"))))
+ (base32 "0jkk6jiqmsns1pb0almaihyz6c3lim0r6l4x75qp7448p46q2him"))))
(build-system emacs-build-system)
(propagated-inputs
(list emacs-compat))
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 215007dd31..d3bb794269 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -559,7 +560,12 @@ SEGGER J-Link and compatible devices.")
(lambda _
;; XXX All but 1 SSL tests fail (tries connecting to Google
;; servers).
- (delete-file "tests/ssl.test"))))))
+ (delete-file "tests/ssl.test")))
+ #$@(if (not (target-64bit?))
+ #~((add-after 'unpack 'delete-failing-tests/32bit
+ (lambda _
+ (delete-file "tests/file.test"))))
+ #~()))))
(inputs (list openssl))
(native-inputs
;; For tests.
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 13b6022308..be76f81ff4 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -725,7 +725,7 @@ The following systems are supported:
(define-public mgba
(package
(name "mgba")
- (version "0.10.1")
+ (version "0.10.2")
(source
(origin
(method git-fetch)
@@ -734,7 +734,8 @@ The following systems are supported:
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0pqfjsr9q61a3mgmvqxxkalxb838k46q9ilz31frpcvvndif0sm1"))
+ (base32
+ "1wwpjcblp2c1svab4z1if5xb7707wsy6zw590lwdz9za35i0h37q"))
(modules '((guix build utils)))
(snippet
;; Make sure we don't use the bundled software.
@@ -750,8 +751,7 @@ The following systems are supported:
#:configure-flags
(list "-DUSE_LZMA=OFF" ;do not use bundled LZMA
"-DUSE_LIBZIP=OFF"))) ;use "zlib" instead
- (native-inputs
- (list pkg-config qttools-5))
+ (native-inputs (list pkg-config qttools-5))
(inputs
(list ffmpeg
libedit
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 7564c2a560..ccf1caca60 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -45,7 +45,7 @@
(define-public erlang
(package
(name "erlang")
- (version "25.3")
+ (version "25.3.2")
(source (origin
(method git-fetch)
;; The tarball from http://erlang.org/download contains many
@@ -57,7 +57,7 @@
(file-name (git-file-name name version))
(sha256
(base32
- "0jw230fy0z358aj1xi80hg14qyqyj5p4wp0pfifkr0n694j3h2d1"))
+ "092lym5a181gz89nscw7kqhw1wa6qvgcpkj80q4i9p79mxmsr1nj"))
(patches (search-patches "erlang-man-path.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 04f8863807..dd84696316 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -477,7 +477,7 @@ significantly increases the risk of irreversible data loss!")
(define-public gocryptfs
(package
(name "gocryptfs")
- (version "2.3.1")
+ (version "2.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -486,7 +486,7 @@ significantly increases the risk of irreversible data loss!")
(file-name (git-file-name name version))
(sha256
(base32
- "1m0xk5imkx81i1l4wv1j1xh9ckp0gqssq4v46pkkcq2xlv2dvxlr"))))
+ "08pdfx6bs1dc2k7xv54x7i1qbych4a7dlf31qwcm9wlz7lr5lawm"))))
(build-system go-build-system)
(arguments
(list
@@ -1364,7 +1364,7 @@ with the included @command{xfstests-check} helper.")
(define-public zfs
(package
(name "zfs")
- (version "2.1.11")
+ (version "2.1.12")
(outputs '("out" "module" "src"))
(source
(origin
@@ -1373,7 +1373,7 @@ with the included @command{xfstests-check} helper.")
"/download/zfs-" version
"/zfs-" version ".tar.gz"))
(sha256
- (base32 "1cnfv3adk7prl6b8r3nw62y6dbjy2q7ai68p9xc0g8nhaklf8kx5"))))
+ (base32 "0vbf9kfryprb2mbb65jllf6xpsy44xskshglyqqwj4iyxmma5nk4"))))
(build-system linux-module-build-system)
(arguments
(list
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 357b5a3e71..2da4ad4460 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -547,7 +547,7 @@ do so.")
(define-public electrum
(package
(name "electrum")
- (version "4.3.2")
+ (version "4.4.4")
(source
(origin
(method url-fetch)
@@ -555,13 +555,12 @@ do so.")
version "/Electrum-"
version ".tar.gz"))
(sha256
- (base32 "1kbyinm9fnxpx9chkyd11yr9rxvcxvw3ml7kzvxcfa8v7jnl0dmx"))
+ (base32 "05xzafv8ry5k5mzn3i4l71d42q42kjl81q154i97qmqiy3s2fhkb"))
(modules '((guix build utils)))
(snippet
'(begin
;; Delete the bundled dependencies.
- (delete-file-recursively "packages")
- #t))))
+ (delete-file-recursively "packages")))))
(build-system python-build-system)
(inputs
(list libsecp256k1
@@ -585,31 +584,13 @@ do so.")
`(#:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'fix-prefix
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; setup.py installs to ~/.local/share if sys.prefix/share isn't
- ;; writable. sys.prefix points to Python's, not our, --prefix.
- (mkdir-p (string-append out "/share"))
- (substitute* "setup.py"
- (("sys\\.prefix")
- (format #f "\"~a\"" out)))
- #t)))
- (add-after 'unpack 'relax-dnspython-version-requirement
- ;; The version requirement for dnspython>=2.0,<2.1 makes the
- ;; sanity-check phase fail, but the application seems to be working
- ;; fine with dnspython 2.1 (the version we have currently).
- (lambda _
- (substitute* "contrib/requirements/requirements.txt"
- (("dnspython>=.*")
- "dnspython"))))
(add-after 'unpack 'use-libsecp256k1-input
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "electrum/ecc_fast.py"
- (("library_paths = .* 'libsecp256k1.so.0'.")
- (string-append "library_paths = ('"
+ (("library_paths = \\[\\]")
+ (string-append "library_paths = ['"
(assoc-ref inputs "libsecp256k1")
- "/lib/libsecp256k1.so.0'"))))))))
+ "/lib/libsecp256k1.so']"))))))))
(home-page "https://electrum.org/")
(synopsis "Bitcoin wallet")
(description
@@ -622,7 +603,7 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
(define-public electron-cash
(package
(name "electron-cash")
- (version "4.2.14")
+ (version "4.3.1")
(source
(origin
(method git-fetch)
@@ -631,7 +612,7 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "086rqqxxh1dmw1qiwmry6sraai3xg44sb85wdw8zkj30si9780kk"))))
+ (base32 "0slx7hmlw2gpcqg951vwvnyl7j52pfzqyaldphghhfxbfzjs7v64"))))
(build-system python-build-system)
(arguments
(list
@@ -2256,7 +2237,7 @@ mining.")
(define-public p2pool
(package
(name "p2pool")
- (version "3.2")
+ (version "3.4")
(source
(origin
(method git-fetch)
@@ -2265,7 +2246,7 @@ mining.")
(commit (string-append "v" version))
(recursive? #t)))
(file-name (git-file-name name version))
- (sha256 (base32 "0jwddazvp9rv88dd2b67rn2y23grycnl539abl5ax6b8a89wm7i8"))
+ (sha256 (base32 "190dyyscmb71jnz0yb4l2ahsmz9wp7mcnn81yajv01bajgwnbl16"))
(modules '((guix build utils)))
(snippet
#~(for-each delete-file-recursively
@@ -2290,6 +2271,8 @@ mining.")
(chdir "tests")
(invoke "cmake" "../../source/tests")
(invoke "make" "-j" (number->string (parallel-job-count)))
+ (invoke "gzip" "-d" "sidechain_dump.dat.gz")
+ (invoke "gzip" "-d" "sidechain_dump_mini.dat.gz")
(invoke "./p2pool_tests")
(chdir ".."))))
(replace 'install
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 7aeec3468b..c7ca81c35a 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -336,7 +336,7 @@ by the b43-open driver of Linux-libre.")
(define-public eg25-manager
(package
(name "eg25-manager")
- (version "0.4.2")
+ (version "0.4.6")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -345,11 +345,19 @@ by the b43-open driver of Linux-libre.")
(file-name (git-file-name name version))
(sha256
(base32
- "1czq2yi852aqkdnrxdifzcq669bdvlm7j40xivxq77jq04fggpmf"))))
+ "1a591dhr43mhwh09n2vlfpw6aajl6d1vkwniikjvwfjrmp01v6yq"))))
(build-system meson-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "udev/80-modem-eg25.rules"
+ (("/bin/grep") (search-input-file inputs "/bin/grep"))))))))
(native-inputs (list curl
`(,glib "bin") pkg-config))
- (inputs (list libgpiod libgudev libusb))
+ (inputs (list grep libgpiod libgudev libusb))
(synopsis "Manager daemon for the Quectel EG25 mobile broadband modem")
(description
"This package provides a manager daemon for the Quectel EG25 mobile
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 028631cbd2..19219a6d7e 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -29,20 +29,25 @@
(define-module (gnu packages flashing-tools)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system python)
#:use-module (gnu packages autotools)
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages elf)
+ #:use-module (gnu packages embedded)
#:use-module (gnu packages flex)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gnupg)
@@ -58,7 +63,7 @@
(define-public flashrom
(package
(name "flashrom")
- (version "1.2")
+ (version "1.3.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -66,35 +71,22 @@
version ".tar.bz2"))
(sha256
(base32
- "0ax4kqnh7kd3z120ypgp73qy1knz47l6qxsqzrfkd97mh5cdky71"))
- (patches
- (search-patches "flashrom-fix-building-on-aarch64.patch"))))
- (build-system gnu-build-system)
- (inputs (list dmidecode pciutils libusb libftdi))
- (native-inputs (list pkg-config))
+ "08wn2j5vxzzvigflrjypgxxzjp32c76bshrlkzki5l6cad226lx0"))))
+ (build-system meson-build-system)
+ (inputs (list bash-minimal dmidecode pciutils libusb libftdi libjaylink))
+ (native-inputs (list cmocka pkg-config))
(arguments
- '(#:make-flags
- (list "CC=gcc"
- (string-append "PREFIX=" %output)
- "CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no")
- #:tests? #f ; no 'check' target
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ; no configure script
- (add-before 'build 'patch-exec-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "dmi.c"
- (("\"dmidecode\"")
- (format #f "~S"
- (search-input-file inputs "/sbin/dmidecode"))))))
- (add-before 'build 'patch-type-error
- (lambda _
- ;; See https://github.com/flashrom/flashrom/pull/133
- (substitute* "libflashrom.c"
- (("supported_boards\\[i\\].working = binfo\\[i\\].working")
- "supported_boards[i].working = (enum flashrom_test_state)binfo[i].working")
- (("supported_chipsets\\[i\\].status = chipset\\[i\\].status")
- "supported_chipsets[i].status = (enum flashrom_test_state)chipset[i].status")))))))
+ (list #:configure-flags
+ #~'("-Dprogrammer=all")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((flashrom (string-append #$output "/sbin/flashrom")))
+ (wrap-program flashrom
+ `("PATH" ":" prefix
+ (,(dirname (search-input-file
+ inputs "/sbin/dmidecode")))))))))))
(home-page "https://flashrom.org/")
(synopsis "Identify, read, write, erase, and verify ROM/flash chips")
(description
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index ffaaa5caca..1b4e0064f4 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -15,6 +15,7 @@
;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2022 Felipe Balbi <balbi@kernel.org>
+;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1934,3 +1935,29 @@ PostScript Type 1, Type 1 Multiple Master, OpenType, and TrueType fonts.
These tools are cfftot1, mmafm, mmpfb, otfinfo, otftotfm, t1dotlessj, t1lint,
t1rawfm, t1reencode, t1testpage and ttftotype42.")
(license license:gpl2+)))
+
+(define-public bdf2sfd
+ (package
+ (name "bdf2sfd")
+ (version "1.1.8")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fcambus/bdf2sfd")
+ (commit "1.1.8")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0pa92gjiijp9xqnw9dcvz24s6qk11a4lp5q6s5psd6mpkhpd88zq"))))
+ (build-system cmake-build-system)
+ (home-page "https://github.com/fcambus/bdf2sfd")
+ (synopsis "BDF to SFD converter, allowing to vectorize bitmap fonts")
+ (description
+ "bdf2sfd is a
+@uref{https://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format,
+BDF} to @uref{https://fontforge.org/docs/techref/sfdformat.html, SFD}
+converter, allowing to vectorize bitmap fonts. It works by converting
+each pixel of a glyph to a polygon, which produces large and
+unoptimized SFD files that should be post-processed using
+@uref{https://fontforge.org, FontForge}.")
+ (license license:bsd-2)))
diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm
index 18b886ba4e..cc33e821de 100644
--- a/gnu/packages/freeipmi.scm
+++ b/gnu/packages/freeipmi.scm
@@ -28,14 +28,14 @@
(define-public freeipmi
(package
(name "freeipmi")
- (version "1.6.10")
+ (version "1.6.11")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
version ".tar.gz"))
(sha256
(base32
- "0zbszq9nn60vqm2gmwy6hmcz9yqb3lk064ib7l89q65n07ja3r7w"))))
+ "15x861i8r1gk44924d2pszlb8mapgkr18m3991vla4601y8xdyv5"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--disable-static"
diff --git a/gnu/packages/fvwm.scm b/gnu/packages/fvwm.scm
index db4cde0eb1..872810c658 100644
--- a/gnu/packages/fvwm.scm
+++ b/gnu/packages/fvwm.scm
@@ -36,7 +36,7 @@
(define-public fvwm
(package
(name "fvwm")
- (version "2.6.9")
+ (version "2.7.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -44,7 +44,7 @@
version "/fvwm-" version ".tar.gz"))
(sha256
(base32
- "1bliqcnap7vb3m2rn8wvxyfhbf35h9x34s41fl4301yhrkrlrihv"))))
+ "12s1wgkvrvl8m62gpb2918izfx9ysj7hgn9p00blfi3p1gb6v0k6"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 431bd5c5e4..aa99109cca 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2809,29 +2809,26 @@ much more.")
(license license:zlib))))
(define-public recastnavigation
- ;; We follow master since there hasn't been a release since 1.5.1 in 2016.
- (let ((commit "6d1f9711b3b71f28c2c1c0742d76e0ef8766cf91")
- (revision "2"))
- (package
- (name "recastnavigation")
- (version (git-version "1.5.1" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/recastnavigation/recastnavigation")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0cqp0sbm0ixqnxqz6gf2gybh5l4az91mdsd8b5bgxs1wpl2jmnga"))))
- (build-system cmake-build-system)
- (arguments
- `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON"
- "-DRECASTNAVIGATION_DEMO=OFF"
- "-DRECASTNAVIGATION_TESTS=ON"
- "-DRECASTNAVIGATION_EXAMPLES=OFF")))
- (synopsis "Navigation system for games")
- (description "Recast is state of the art navigation mesh
+ (package
+ (name "recastnavigation")
+ (version "1.6.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/recastnavigation/recastnavigation")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0rdz3qmp4b961zjah2ax82h471j14w2rcf576gcyx7vldrg8dmj8"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON"
+ "-DRECASTNAVIGATION_DEMO=OFF"
+ "-DRECASTNAVIGATION_TESTS=ON"
+ "-DRECASTNAVIGATION_EXAMPLES=OFF")))
+ (synopsis "Navigation system for games")
+ (description "Recast is state of the art navigation mesh
construction toolset for games.
@itemize
@@ -2854,8 +2851,8 @@ simple cases, as well as tiled navigation mesh which allows you to plug
in and out pieces of the mesh. The tiled mesh allows you to create
systems where you stream new navigation data in and out as the player
progresses the level, or you may regenerate tiles as the world changes.")
- (home-page "https://github.com/recastnavigation/recastnavigation")
- (license license:zlib))))
+ (home-page "https://github.com/recastnavigation/recastnavigation")
+ (license license:zlib)))
(define-public raylib
(package
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 862aa26805..83704dd720 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -78,6 +78,7 @@
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2023 Ivana Drazovic <iv.dra@hotmail.com>
+;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -415,6 +416,40 @@ Plenty of classic platforming in four nice colors guaranteed!
The game includes a built-in editor so you can design and share your own maps.")
(license license:gpl2+)))
+(define-public anarch
+ (let ((commit "2d78d0c69a3aac14dbd8f8aca62d0cbd9d27c860")
+ (revision "1"))
+ (package
+ (name "anarch")
+ (version (git-version "1.1d" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sr.ht/~drummyfish/Anarch")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1lg9r6q1davn5yj181ccygmvaigvm8fr9q2s1bc77a1vkz68vzdk"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:tests? #f ;no tests
+ #:phases #~(modify-phases %standard-phases
+ (delete 'configure) ;no configure script
+ (replace 'build
+ (lambda _
+ (invoke "./make.sh" "sdl")))
+ (replace 'install
+ (lambda _
+ (let ((bin (string-append #$output "/bin")))
+ (install-file "anarch" bin)))))))
+ (inputs (list alsa-lib libxcursor libxrandr sdl2))
+ (home-page "https://drummyfish.gitlab.io/anarch/")
+ (synopsis "Public domain 90s-style shooter game")
+ (description "Anarch is a small, completely public domain, 90s-style
+Doom clone shooter game.")
+ (license license:cc0))))
+
(define-public armagetronad
(package
(name "armagetronad")
@@ -877,6 +912,31 @@ Quizzes: arithmetic and quiz.")
;; phantasia (all but phantasia/pathnames.h.in, which is bsd-3)
(license:fsf-free "file:///phantasia/COPYRIGHT")))))
+(define-public rogue
+ (package
+ (name "rogue")
+ (version "5.4.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Davidslv/rogue")
+ (commit "cf9bd26d564a72fac4cf56b55c96c2435270d29a")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0mk03l120scas4dcn6xccnhslnwmcx2blshbf925z06yk7rkzias"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f
+ #:make-flags (list "CFLAGS=-DNCURSES_INTERNALS")))
+ (inputs (list ncurses))
+ (synopsis "Original rogue game")
+ (description
+ "This package provides ``Rogue: Exploring the Dungeons of Doom'', the
+original rogue game found on 4.2BSD.")
+ (home-page "https://github.com/Davidslv/rogue")
+ (license license:bsd-3)))
+
(define-public bzflag
(package
@@ -2018,33 +2078,59 @@ scriptable with Guile.")
(package
(name "gnushogi")
(version "1.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
- version ".tar.gz"))
- (sha256
- (base32
- "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
- (arguments `(#:tests? #f)) ;; No check target.
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gnushogi/gnushogi-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))
+ (modules '((guix build utils)))
+ ;; Fix "warning: ISO C90 does not support ‘__func__’ predefined
+ ;; identifier [-Wpedantic]"
+ (snippet '(begin
+ (substitute* "gnushogi/dspwrappers.c"
+ (("__FUNCTION__")
+ "__extension__ __FUNCTION__"))))))
+ (arguments
+ `(#:configure-flags (list (string-append
+ "CFLAGS="
+ (string-join '("-Wno-format"
+ "-Wno-unused-but-set-variable"
+ "-Wno-bool-compare")
+ " ")))
+ #:make-flags '("LDFLAGS=-z muldefs")
+ #:phases (modify-phases %standard-phases
+ ;; Skip --enable-fast-install flag
+ (replace 'configure
+ (lambda* (#:key outputs configure-flags #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "CONFIG_SHELL"
+ (which "sh"))
+ (setenv "SHELL"
+ (which "sh"))
+ (apply invoke "./configure"
+ (string-append "--prefix=" out) configure-flags)))))
+ #:test-target "sizetest"))
(build-system gnu-build-system)
(home-page "https://www.gnu.org/software/gnushogi/")
- (synopsis "The game of Shogi (Japanese chess)")
- (description "GNU Shogi is a program that plays the game Shogi (Japanese
-Chess). It is similar to standard chess but this variant is far more complicated.")
+ (synopsis "Game of Shogi (Japanese chess)")
+ (description
+ "GNU Shogi is a program that plays the game Shogi (Japanese Chess).
+It is similar to standard chess but this variant is far more complicated.")
(license license:gpl3+)))
(define-public ltris
(package
(name "ltris")
- (version "1.2.4")
+ (version "1.2.6")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/lgames/ltris/"
"ltris-" version ".tar.gz"))
(sha256
- (base32 "10wg6v12w3jms8ka2x9a87p06l9gzpr94ai9v428c9r320q7psyn"))))
+ (base32 "1xj65kn815x2hq1ynzjyc90dj178xwa2xvx7jx99qf60ahaf4g62"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -10543,14 +10629,14 @@ ChessX.")
(define-public barrage
(package
(name "barrage")
- (version "1.0.6")
+ (version "1.0.7")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/lgames/barrage/"
"barrage-" version ".tar.gz"))
(sha256
- (base32 "1bhx708s7viv01m6bmpjsdgr33wk5kqw4wf7bvgw73a07v6j8ncw"))))
+ (base32 "0j7j6n5h97xpw0h8zi5a8ziw1vjsbr5gk4dcsiwzh59qn0djnrkh"))))
(build-system gnu-build-system)
(inputs
(list hicolor-icon-theme sdl sdl-mixer))
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index a8d8a86ea8..34d081dc9e 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -114,14 +114,14 @@
("libxml2" ,libxml2)
;; The Hurd needs -lshouldbeinlibc.
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
`(("hurd" ,hurd))
'())))
(native-inputs
`(("texinfo" ,texinfo)
("dejagnu" ,dejagnu)
("pkg-config" ,pkg-config)
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
;; When cross-compiling from x86_64-linux, make sure to use a
;; 32-bit MiG because we assume target i586-pc-gnu.
`(("mig" ,(if (%current-target-system)
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 6ad3c87ff1..65344bcac2 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -2786,17 +2786,20 @@ growing set of geoscientific methods.")
sqlite
(list zstd "lib")))
(native-inputs
- (list bison
- flex
- perl
- perl-yaml-tiny
- pkg-config
- python-mock
- python-nose2
- python-pyqt-builder
- qttools-5
- shellcheck
- xorg-server-for-tests))
+ (append
+ (list bison
+ flex
+ perl
+ perl-yaml-tiny
+ pkg-config
+ python-mock
+ python-nose2
+ python-pyqt-builder
+ qttools-5)
+ (if (supported-package? shellcheck)
+ (list shellcheck)
+ '())
+ (list xorg-server-for-tests)))
(home-page "https://qgis.org")
(synopsis "Geographical information system")
(description "QGIS is an easy to use Geographical Information
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index 9387f4fb8a..114d8cf7af 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Miguel <rosen644835@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 EuAndreh <eu@euandre.org>
;;; Copyright © 2022 gemmaro <gemmaro.dev@gmail.com>
;;; Copyright © 2023 Maxim Cournoyer maxim.cournoyer@gmail.com>
@@ -42,7 +42,6 @@
#:use-module (gnu packages check)
#:use-module (gnu packages docbook)
#:use-module (gnu packages emacs)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages libunistring)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
@@ -124,7 +123,7 @@
"coreutils-gnulib-tests.patch")))))
'())
- #$@(if (hurd-target?)
+ #$@(if (target-hurd?)
#~((substitute*
"gettext-tools/gnulib-tests/Makefile.in"
;; See 'coreutils' for the rationale.
@@ -135,7 +134,7 @@
;; When tests fail, we want to know the details.
#:make-flags #~'("VERBOSE=yes"
- #$@(if (hurd-target?)
+ #$@(if (target-hurd?)
'("XFAIL_TESTS=test-perror2")
'()))))
(home-page "https://www.gnu.org/software/gettext/")
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 4611315e00..4ce102d8ed 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -296,18 +296,17 @@ shadows, highlights, and gradients for some depth.")
(define-public flat-remix-gnome-theme
(package
(name "flat-remix-gnome-theme")
- (version "20221107-1")
+ (version "20230508")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/daniruiz/flat-remix-gnome")
- ;; This commit adds GtkSourceView 5 theme, for GNOME Text Editor.
- (commit "b5616efc515e9f1417436e67d94718db7529a2ba")))
+ (commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "10fgdz8hz8rd7aj4vb3bvl8khzb2fvaia7n00gi0x19yvnnh36pr"))))
+ (base32 "1b31ayb4qvcr5m3dqcidl9ilpp3w4mr56wq6vrp73g4cj558pi9h"))))
(build-system copy-build-system)
(arguments
`(#:install-plan
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 6db2d6569e..17ef8a642c 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4294,7 +4294,7 @@ Hints specification (EWMH).")
gtk+
goffice
libgsf
- librsvg
+ (librsvg-for-system)
libxml2
libxslt
python
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index ff7499263e..f16a223d10 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -409,14 +409,14 @@ services.")
"faketime -m -f '1970-01-01 00:00:00' $(TEXMACS_CONVERT)")))))))
(inputs (list guile-3.0)) ;for pkg-config
(propagated-inputs (list guile-bytestructures guile-gcrypt guile-pfds
- guile-fibers-1.1))
+ guile-fibers-1.3))
(native-inputs (list guile-3.0 ;as a compiler
;; for cross-compilation, the guile inputs need to be
;; native-inputs as well.
guile-bytestructures
guile-gcrypt
guile-pfds
- guile-fibers-1.1
+ guile-fibers-1.3
libfaketime
automake
autoconf
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index e40d2b8922..0ce5917d5d 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -1138,8 +1138,8 @@ standards of the IceCat project.")
"ru" "sco" "si" "sk" "sl" "son" "sq" "sr" "sv-SE" "szl" "ta" "te" "th" "tl"
"tr" "trs" "uk" "ur" "uz" "vi" "xh" "zh-CN" "zh-TW"))
-(define %icedove-build-id "20230527000000") ;must be of the form YYYYMMDDhhmmss
-(define %icedove-version "102.11.2")
+(define %icedove-build-id "20230607000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-version "102.12.0")
;; Provides the "comm" folder which is inserted into the icecat source.
;; Avoids the duplication of Icecat's source tarball.
@@ -1148,11 +1148,11 @@ standards of the IceCat project.")
(method hg-fetch)
(uri (hg-reference
(url "https://hg.mozilla.org/releases/comm-esr102")
- (changeset "c406f857789ca8a8943b895f4cadfc61921860ab")))
+ (changeset "9d42734e12597ccdb59fee178bf369d8c328dcad")))
(file-name (string-append "thunderbird-" %icedove-version "-checkout"))
(sha256
(base32
- "1id7wlj16zbgxyxx672vls7h3sq1153grrfqgw71y2ps6zwzxg67"))))
+ "159jdxcg62fq24hgpp5pd8yb0xmqzjhcmd706yzs8lnydm9kjpcg"))))
(define (comm-source->locales+changeset source)
"Given SOURCE, a checkout of the Thunderbird 'comm' component, return the
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index d51c023808..e4c4cb299b 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -2755,7 +2755,7 @@ jar struct to manage the cookies added to the cookie jar.")
'(#:unpack-path "github.com/gizak/termui"
#:import-path "github.com/gizak/termui/v3"))
(propagated-inputs
- (list go-github.com-mattn-go-runewidth
+ (list go-github-com-mattn-go-runewidth
go-github-com-mitchellh-go-wordwrap go-github.com-nsf-termbox-go))
(home-page "https://github.com/gizak/termui")
(synopsis "Terminal dashboard widget Go library")
@@ -7105,7 +7105,7 @@ encoding in Go.")
(arguments
`(#:import-path "github.com/gdamore/tcell"))
(inputs
- (list go-github.com-mattn-go-runewidth
+ (list go-github-com-mattn-go-runewidth
go-github-com-lucasb-eyer-go-colorful
go-golang-org-x-text
go-github-com-gdamore-encoding))
@@ -7121,7 +7121,7 @@ systems.")
(package
(inherit go-github-com-gdamore-tcell)
(name "go-github-com-gdamore-tcell")
- (version "2.5.3")
+ (version "2.6.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -7130,7 +7130,7 @@ systems.")
(file-name (git-file-name name version))
(sha256
(base32
- "0pvs0gigqxpifc7y7cx82cg95pgqmy8qzxynja3zidplrx2075j3"))))
+ "0126hi8glnfqdx4l9zlh6dhd5f5c8bws7arv9pp4n2kqcnhdc6g2"))))
(arguments
(list #:import-path "github.com/gdamore/tcell/v2"
#:phases
@@ -9128,7 +9128,7 @@ transforms one JSON document into another through a JMESPath expression.")
`(#:import-path "github.com/muesli/reflow/wordwrap"
#:unpack-path "github.com/muesli/reflow"))
(native-inputs
- (list go-github.com-mattn-go-runewidth))
+ (list go-github-com-mattn-go-runewidth))
(home-page "https://github.com/muesli/reflow/")
(synopsis "Collection of methods helping to transform blocks of text")
(description "This package provides a collection of ANSI-aware methods and
@@ -9187,7 +9187,7 @@ io.Writers helping you to transform blocks of text.")
(list go-github-com-google-goterm
go-github-com-lucasb-eyer-go-colorful
go-github-com-mattn-go-isatty
- go-github.com-mattn-go-runewidth))
+ go-github-com-mattn-go-runewidth))
(home-page "https://github.com/muesli/termenv/")
(synopsis "Advanced styling options on the terminal")
(description "termenv lets you safely use advanced styling options on the
@@ -9241,7 +9241,7 @@ which produce colorized output using github.com/fatih/color.")
(arguments
`(#:import-path "github.com/olekukonko/tablewriter"))
(propagated-inputs
- (list go-github.com-mattn-go-runewidth))
+ (list go-github-com-mattn-go-runewidth))
(home-page "https://github.com/olekukonko/tablewriter/")
(synopsis "Generate ASCII table")
(description "This package generates ASCII tables. Features:
@@ -9338,7 +9338,7 @@ size of the terminal.")
go-github-com-muesli-reflow-wordwrap
go-github-com-muesli-reflow-indent
go-github-com-muesli-reflow-padding
- go-github.com-mattn-go-runewidth
+ go-github-com-mattn-go-runewidth
go-github-com-muesli-termenv
go-github-com-google-goterm
go-github-com-lucasb-eyer-go-colorful
@@ -11521,7 +11521,7 @@ averages.")
(define-public go-github-com-mattn-go-runewidth
(package
(name "go-github-com-mattn-go-runewidth")
- (version "0.0.13")
+ (version "0.0.14")
(source
(origin
(method git-fetch)
@@ -11530,7 +11530,7 @@ averages.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1yir0f3wc5z5hnkwhvx5qb6nmpfb05zp2gvfjvna63s8kmla1rrn"))))
+ (base32 "1iaqw5pd7f4f2xz37540kp0828p2820g4vxx3hz089hwl331sx1v"))))
(build-system go-build-system)
(arguments '(#:import-path "github.com/mattn/go-runewidth"))
(propagated-inputs
@@ -11563,7 +11563,7 @@ string.")
(propagated-inputs
`(("github.com/mattn/go-isatty" ,go-github-com-mattn-go-isatty)
("github.com/muesli/termenv" ,go-github-com-muesli-termenv)
- ("github.com/mattn/go-runewidth" ,go-github.com-mattn-go-runewidth)
+ ("github.com/mattn/go-runewidth" ,go-github-com-mattn-go-runewidth)
("go-github-com-muesli-reflow-indent" ,go-github-com-muesli-reflow-indent)
("go-github-com-muesli-reflow-ansi" ,go-github-com-muesli-reflow-ansi)
("go-github-com-lucasb-eyer-go-colorful" ,go-github-com-lucasb-eyer-go-colorful)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 9255e49f3a..88b3b8c631 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -189,13 +189,29 @@ framebuffer graphics, audio output and input event.")
(lambda _
(substitute* "src/core/core.c"
(("..BUILDTIME..") ""))))
+ ;; TODO: Move patch to source.
+ ,@(if (target-arm32?)
+ `((add-after 'unpack 'patch-source
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke "patch" "--force" "-p1" "-i"
+ (assoc-ref inputs "patch-file")))))
+ '())
(add-after 'unpack 'disable-configure-during-bootstrap
(lambda _
(substitute* "autogen.sh"
(("^.*\\$srcdir/configure.*") ""))
#t)))))
(native-inputs
- (list autoconf automake libtool perl pkg-config))
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ,@(if (target-arm32?)
+ `(("patch" ,patch)
+ ("patch-file"
+ ,(search-patch "directfb-davinci-glibc-228-compat.patch")))
+ '())))
(inputs
(list alsa-lib
ffmpeg
@@ -1448,11 +1464,11 @@ in Julia).")
(define-public openmw-openscenegraph
;; OpenMW prefers its own fork of openscenegraph:
;; https://wiki.openmw.org/index.php?title=Development_Environment_Setup#OpenSceneGraph.
- (let ((commit "36a962845a2c87a6671fd822157e0729d164e940"))
+ (let ((commit "69cfecebfb6dc703b42e8de39eed750a84a87489"))
(hidden-package
(package
(inherit openscenegraph)
- (version (git-version "3.6" "1" commit))
+ (version (git-version "3.6" "2" commit))
(outputs (list "out"))
(source
(origin
@@ -1463,7 +1479,7 @@ in Julia).")
(file-name (git-file-name (package-name openscenegraph) version))
(sha256
(base32
- "05yhgq3qm5q277y32n5sf36vx5nv5qd3zlhz4csgd3a6190jrnia"))))
+ "1qayk2gklm8zvss90dcjfxv6717rvcmwmgmgyy1qzkli67a0zbw2"))))
(arguments
(substitute-keyword-arguments (package-arguments openscenegraph)
((#:configure-flags flags)
@@ -1471,14 +1487,14 @@ in Julia).")
#~(append
'("-DBUILD_OSG_PLUGINS_BY_DEFAULT=0"
"-DBUILD_OSG_PLUGIN_OSG=1"
+ "-DBUILD_OSG_PLUGIN_DAE=1"
"-DBUILD_OSG_PLUGIN_DDS=1"
"-DBUILD_OSG_PLUGIN_TGA=1"
"-DBUILD_OSG_PLUGIN_BMP=1"
"-DBUILD_OSG_PLUGIN_JPEG=1"
"-DBUILD_OSG_PLUGIN_PNG=1"
- "-DBUILD_OSG_DEPRECATED_SERIALIZERS=0"
- ;; The jpeg plugin requires conversion between integers and booleans
- "-DCMAKE_CXX_FLAGS=-fpermissive")
+ "-DBUILD_OSG_PLUGIN_FREETYPE=1"
+ "-DBUILD_OSG_DEPRECATED_SERIALIZERS=0")
#$flags))
((#:phases phases)
#~(modify-phases #$phases
@@ -2596,4 +2612,3 @@ environment. It supports drawing freehand as well as basic shapes and text.
It features cut-and-paste for irregular regions or polygons.")
(home-page "https://www.gnu.org/software/gpaint/")
(license license:gpl3+)))
-
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 8021e74265..b883022621 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -799,6 +799,14 @@ model to base your own plug-in on, here it is.")
;; This test is flaky on at least some architectures.
;; https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1244
+ #$@(if (target-riscv64?)
+ `((("'elements/camerabin\\.c'\\].*],")
+ "'elements/camerabin.c'], true, ],")
+ (("'elements/viewfinderbin\\.c'\\].*],")
+ "'elements/viewfinderbin.c'], true, ],"))
+ '())
+
+ ;; This substitution is no longer effective and can be removed.
#$@(if (member (%current-system)
'("i686-linux" "aarch64-linux" "riscv64-linux"))
`((("'elements/camerabin\\.c'\\]\\],")
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 750e11d687..80e0f452c1 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2016, 2017, 2021 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;; Copyright © 2016, 2021 Amirouche <amirouche@hypermove.net>
-;;; Copyright © 2016, 2019, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2019, 2021, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2017 David Thompson <davet@gnu.org>
;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -89,9 +89,9 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages haskell-xyz) ;pandoc
- #:use-module (gnu packages hurd)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libunistring)
#:use-module (gnu packages linux)
@@ -311,11 +311,11 @@ currently does not do much, but it might in the future.")
(license license:gpl3+)))
(define-public guile-openai
- (let ((commit "9265b641dea0246609b7bd5031f3f6780ef6a167")
- (revision "2"))
+ (let ((commit "751cd5db5f8bb7c00e60042a7ec86100930b0f02")
+ (revision "1"))
(package
(name "guile-openai")
- (version (git-version "0.1" revision commit))
+ (version (git-version "0.2" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -324,21 +324,16 @@ currently does not do much, but it might in the future.")
(file-name (git-file-name name version))
(sha256
(base32
- "0sydjsgdr6xxk1w5f8pf14wgimfy4fb1hpi8yml0nv83p7bfr1w3"))))
- (build-system guile-build-system)
- (arguments
- (list
- #:scheme-file-regexp
- #~(lambda (file info)
- (let ((name (basename file)))
- (and (string-suffix? ".scm" name)
- (not (string=? (basename file) "guix.scm")))))))
- (inputs (list guile-3.0-latest))
+ "1rl15wkm682xwzj2fjn4czp1haxnxlcjsk3g69j2a9qlwc4w0g4a"))))
+ (build-system gnu-build-system)
+ (arguments (list #:strip-binaries? #f))
+ (inputs (list guile-3.0-latest imagemagick))
(propagated-inputs
(list guile-colorized
guile-gnutls
guile-json-4
guile-picture-language))
+ (native-inputs (list autoconf automake pkg-config))
(home-page "https://gitlab.com/flatwhatson/guile-openai")
(synopsis "Guile implementation of the OpenAI API")
(description
@@ -788,10 +783,10 @@ Unix-style DSV format and RFC 4180 format.")
(inputs (list guile-2.2))
(propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
-(define-public guile-fibers-1.1
+(define-public guile-fibers-1.3
(package
(name "guile-fibers")
- (version "1.1.1")
+ (version "1.3.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -800,11 +795,9 @@ Unix-style DSV format and RFC 4180 format.")
(file-name (git-file-name name version))
(sha256
(base32
- "0ll63d7202clapg1k4bilbnlmfa4qvpjnsd7chbkka4kxf5klilc"))
+ "0wvdi4l58f9a5c9wi3cdc9l1bniscsixb6w2zj86mch7j7j814lc"))
(patches
- (search-patches "guile-fibers-wait-for-io-readiness.patch"
- "guile-fibers-epoll-instance-is-dead.patch"
- "guile-fibers-fd-finalizer-leak.patch"))))
+ (search-patches "guile-fibers-libevent-32-bit.patch"))))
(build-system gnu-build-system)
(arguments
(list #:make-flags
@@ -822,17 +815,15 @@ Unix-style DSV format and RFC 4180 format.")
(substitute* "Makefile"
(("tests/speedup.scm") ""))))))))
(native-inputs
- (list texinfo pkg-config autoconf automake libtool
+ (list texinfo pkg-config autoconf-2.71 automake libtool
guile-3.0 ;for 'guild compile
;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'
gettext-minimal))
(inputs
- (list guile-3.0)) ;for libguile-3.0.so
- (supported-systems
- ;; This version requires 'epoll' and is thus limited to Linux-based
- ;; systems, but this may change soon:
- ;; <https://github.com/wingo/fibers/pull/53>.
- (filter (cut string-suffix? "-linux" <>) %supported-systems))
+ (append (list guile-3.0) ;for libguile-3.0.so
+ (if (target-hurd?)
+ (list libevent)
+ '())))
(synopsis "Lightweight concurrency facility for Guile")
(description
"Fibers is a Guile library that implements a a lightweight concurrency
@@ -849,22 +840,35 @@ is not available for Guile 2.0.")
(properties '((upstream-name . "fibers")))
(license license:lgpl3+)))
-(define-public guile-fibers-next
- (let ((commit "99fc3e38048f732de67c43fde52e949fa294aa7d")
- (revision "1"))
- (package
- (inherit guile-fibers-1.1)
- (name "guile-fibers-next")
- (version (git-version "1.3.0" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/wingo/fibers")
- (commit commit)))
- (file-name (git-file-name "guile-fibers" version))
- (sha256
- (base32
- "1950nf0qa52m1hhc33z0snci5azbdcv4m6hklk5rpqchc90x9h4p")))))))
+(define-public guile-fibers-1.1
+ (package
+ (inherit guile-fibers-1.3)
+ (version "1.1.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/wingo/fibers")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "guile-fibers" version))
+ (sha256
+ (base32
+ "0ll63d7202clapg1k4bilbnlmfa4qvpjnsd7chbkka4kxf5klilc"))
+ (patches
+ (search-patches "guile-fibers-wait-for-io-readiness.patch"
+ "guile-fibers-epoll-instance-is-dead.patch"
+ "guile-fibers-fd-finalizer-leak.patch"))))
+ (native-inputs
+ (list texinfo pkg-config autoconf automake libtool
+ guile-3.0 ;for 'guild compile
+ ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'
+ gettext-minimal))
+ (inputs
+ (list guile-3.0)) ;for libguile-3.0.so
+ (supported-systems
+ ;; This version requires 'epoll' and is thus limited to Linux-based
+ ;; systems, which is fixed in 1.2.0:
+ ;; <https://github.com/wingo/fibers/pull/53>.
+ (filter (cut string-suffix? "-linux" <>) %supported-systems))))
(define-public guile-fibers
(package
@@ -3843,7 +3847,7 @@ debugging code.")
(define-public guile-png
(package
(name "guile-png")
- (version "0.5.0")
+ (version "0.6.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -3852,7 +3856,7 @@ debugging code.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "0dnahq05mwxzbsqb0qjkyysylc54qr8l5839zyc4sanl2syzhvwk"))))
+ "0i0q2h4kfp1mj5m3wnz2hk6z895001j38s5vkbhkdxf05cjvwkky"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
@@ -4058,6 +4062,50 @@ enriched with pure Guile Scheme algorithms, all accessible through a nice,
clean and easy to use high level API.")
(license license:gpl3+)))
+(define-public guile-ffi-cblas
+ (let ((commit "4458d50f84786d7ace0181c6588345eed7474996")
+ (revision "0"))
+ (package
+ (name "guile-ffi-cblas")
+ (version (git-version "0.0.0" revision commit))
+ (home-page "https://github.com/lloda/guile-ffi-cblas")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "050s0lq64v286hkxqczkfkx3fp1vr3jm5w236hxx67br9najb1cp"))))
+ (build-system guile-build-system)
+ (arguments
+ (list #:source-directory "mod"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-blas-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "mod/ffi/cblas.scm"
+ (("\"libcblas\"")
+ (string-append "\""
+ (search-input-file
+ inputs "/lib/libopenblas.so")
+ "\"")))))
+ (add-after 'build 'check
+ (lambda _
+ (invoke "guile" "-C" "mod" "-L" "mod"
+ "test/test-ffi-cblas.scm"))))))
+ (native-inputs (list guile-3.0))
+ (inputs (list openblas))
+ (synopsis "Guile bindings for CBLAS, the linear algebra library")
+ (description
+ "This package provides Guile FFI bindings for CBLAS, the library of
+linear algebra subprograms.
+
+To use the bindings, import @code{(ffi cblas)}. CBLAS will be loaded from the
+default dynamic library path. There are up to three bindings for each
+function: raw, typed, and functional.")
+ (license license:lgpl3+))))
+
(define-public guile-ffi-fftw
(let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
(revision "2"))
@@ -5205,7 +5253,7 @@ locations.")
(define-public guile-netlink
(package
(name "guile-netlink")
- (version "1.1.2")
+ (version "1.2")
(source
(origin
(method git-fetch)
@@ -5215,7 +5263,7 @@ locations.")
(file-name (git-file-name name version))
(sha256
(base32
- "1s06xbyj0yd49aivfpc9l73c8c12r3zjmskkyislrfwkbpd74hjr"))))
+ "06ls830nrshzi2j532di5vdf03fp8cy1275ll4ms93x1hv2g8dk0"))))
(build-system gnu-build-system)
(inputs
(list guile-3.0))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 322eda1fc8..48bee600a9 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -4,7 +4,7 @@
;;; Copyright © 2014, 2016, 2018 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2017, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
@@ -47,7 +47,6 @@
#:use-module (gnu packages gawk)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gperf)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libunistring)
#:use-module (gnu packages linux)
@@ -202,7 +201,7 @@ without requiring the source code to be rewritten.")
#:phases
(modify-phases %standard-phases
- ,@(if (hurd-system?)
+ ,@(if (system-hurd?)
'((add-after 'unpack 'disable-tests
(lambda _
;; Hangs at: "Running 00-repl-server.test"
@@ -345,7 +344,7 @@ without requiring the source code to be rewritten.")
(not (%current-target-system)))
((#:configure-flags flags #~'())
;; XXX: JIT-enabled Guile crashes in obscure ways on GNU/Hurd.
- #~(cons* #$@(if (hurd-target?)
+ #~(cons* #$@(if (target-hurd?)
#~("--disable-jit")
#~())
;; -fexcess-precision=standard is required when compiling for
@@ -433,9 +432,9 @@ without requiring the source code to be rewritten.")
; when heavily loaded)
(define-public guile-next
- (let ((version "3.0.8")
+ (let ((version "3.0.9")
(revision "0")
- (commit "a1a85581f17dade76a598b48eac7d3d308e3a0a5"))
+ (commit "aa2cfe7cf69327285a17de97682d696f2f6c43ef"))
(package
(inherit guile-3.0)
(name "guile-next")
@@ -449,7 +448,7 @@ without requiring the source code to be rewritten.")
(file-name (git-file-name name version))
(sha256
(base32
- "1l5zkg0wpchyizq8s4615hkj0n0i029l72k3pq2hha89r3bcn8al"))))
+ "03xwy3ni85qy0lrvz0lk0488394nfsfc1004l84lgyzql2qwkynl"))))
(arguments
(substitute-keyword-arguments (package-arguments guile-3.0)
((#:phases phases '%standard-phases)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 34c7c00f2d..c9f77d799a 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -46,20 +46,7 @@
#:use-module (gnu packages texinfo)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages xorg) ; libpciaccess
- #:use-module (guix git-download)
- #:export (hurd-system?
- hurd-target?))
-
-(define (hurd-target?)
- "Return true if the cross-compilation target or the current system is
-GNU/Hurd."
- (or (and=> (%current-target-system) target-hurd?)
- (and (not (%current-target-system))
- (and=> (%current-system) target-hurd?))))
-
-(define (hurd-system?)
- "Return true if the current system is the Hurd."
- (and=> (%current-system) target-hurd?))
+ #:use-module (guix git-download))
(define (hurd-source-url version)
(string-append "mirror://gnu/hurd/hurd-"
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index d880956c56..e9294fab1e 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -59,10 +59,12 @@
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages gtk)
#:use-module (gnu packages iso-codes)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages logging)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-check)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-web)
#:use-module (gnu packages serialization)
@@ -348,18 +350,44 @@ Chinese pinyin input methods.")
version "/ibus-anthy-" version ".tar.gz"))
(sha256
(base32
- "16vd0k8wm13s38869jqs3dnwmjvywgn0snnpyi41m28binhlssf8"))))
+ "16vd0k8wm13s38869jqs3dnwmjvywgn0snnpyi41m28binhlssf8"))
+ (patches (search-patches "ibus-anthy-fix-tests.patch"))))
(build-system gnu-build-system)
(arguments
(list
+ ;; The test suite hangs (see:
+ ;; https://github.com/ibus/ibus-anthy/issues/28).
+ #:tests? #f
#:configure-flags
;; Use absolute exec path in the anthy.xml.
#~(list (string-append "--libexecdir=" #$output "/libexec"))
;; The test suite fails (see:
;; https://github.com/ibus/ibus-anthy/issues/28).
- #:tests? #f
#:phases
#~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-check
+ (lambda _
+ (substitute* "data/Makefile.in"
+ ;; Use a year current at the time the release was made, to
+ ;; avoid the "This year 2023 is not included in era.y"
+ ;; error.
+ (("`date '\\+%Y'`")
+ "2021"))))
+ (add-after 'unpack 'do-not-override-GI_TYPELIB_PATH
+ ;; Do not override the GI_TYPELIB_PATH to avoid the pygobject
+ ;; error: "ValueError: Namespace Gdk not available".
+ (lambda _
+ (substitute* "tests/test-build.sh"
+ (("GI_TYPELIB_PATH=\\$BUILDDIR/../gir" all)
+ (string-append all ":$GI_TYPELIB_PATH")))))
+ (add-before 'check 'prepare-for-tests
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; IBus requires write access to the HOME directory.
+ (setenv "HOME" "/tmp")
+ ;; The single test is skipped if no actual display is found.
+ (system "Xvfb :1 &")
+ (setenv "DISPLAY" ":1"))))
(add-after 'install 'wrap-programs
(lambda* (#:key inputs #:allow-other-keys)
(for-each
@@ -376,7 +404,11 @@ Chinese pinyin input methods.")
`(,glib "bin")
intltool
pkg-config
- python))
+ procps ;for ps
+ python
+ python-pycotap
+ util-linux ;for getopt
+ xorg-server-for-tests))
(inputs
(list anthy
gtk+
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 9a2eae8214..f2ea6534f4 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2018 Lprndn <guix@lprndn.info>
-;;; Copyright © 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2021, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -385,7 +385,10 @@ many popular formats.")
"-DVTK_SMP_ENABLE_OPENNMP=ON"
"-DVTK_SMP_ENABLE_TBB=ON"
"-DVTK_USE_MPI=ON"
- )
+ #$@(if (target-riscv64?)
+ '("-DCMAKE_SHARED_LINKER_FLAGS=-latomic"
+ "-DCMAKE_EXE_LINKER_FLAGS=-latomic")
+ '()))
#:phases
#~(modify-phases %standard-phases
@@ -604,7 +607,31 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
;; opencv-extra/alldata.
(substitute* "modules/dnn/test/test_layers.cpp"
(("\\b(Accum|DataAugmentation|Resample|Correlation|Interp)\\b" all)
- (string-append "DISABLED_" all)))))
+ (string-append "DISABLED_" all)))
+
+ ,@(if (target-aarch64?)
+ `(;; This test fails on aarch64, loosen the bounds.
+ ;; Expected: (max) < (0.131), actual: 0.207148 vs 0.131
+ (substitute* "modules/photo/test/test_hdr.cpp"
+ (("0\\.131") "0.222"))
+ ;; These tests hang forever on aarch64.
+ (delete-file-recursively "modules/videoio/test/"))
+ '())
+
+ ,@(if (target-riscv64?)
+ `(;; This test fails on riscv64, loosen the bounds.
+ ;; Expected: (max) < (0.1), actual: 0.220829 vs 0.1
+ (substitute* "modules/photo/test/test_hdr.cpp"
+ (("0\\.1") "0.240"))
+ ;; Expected equality of these values:
+ ;; ellipses.size()
+ ;; Which is: 668
+ ;; ellipses_size
+ ;; Which is: 2449
+ (substitute* "../opencv-contrib/modules/ximgproc/test/test_fld.cpp"
+ (("\\bManySmallCircles\\b" all)
+ (string-append "DISABLED_" all))))
+ '())))
(add-after 'unpack 'unpack-submodule-sources
(lambda* (#:key inputs #:allow-other-keys)
(mkdir "../opencv-extra")
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 77500bad4f..8be3449c3f 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2013, 2017-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016-2021, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Nikita <nikita@n0.is>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -799,7 +799,7 @@ displayed in a terminal.")
libjpeg-turbo
libinih
libnsgif
- librsvg
+ (librsvg-for-system)
libtiff
libxkbcommon
pango
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 069a214b8c..50af2001ad 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -28,7 +28,7 @@
;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
-;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org>
@@ -37,6 +37,7 @@
;;; Copyright © 2022-2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -322,6 +323,62 @@ APNG patch provides APNG support to libpng.")
images. It can further losslessly compress them by as much as 40%.")
(license license:zlib)))
+(define-public pngcheck
+ (package
+ (name "pngcheck")
+ (version "3.0.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.libpng.org/pub/png/src/pngcheck-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1rny14v57d2zvnqcqbh3m87mkya22qr2394fg7vm3xsacf8l8sn3"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ;no check target
+ #:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (invoke "make" "-f" "Makefile.unx")))
+ (add-after 'build 'compress-man-pages
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (invoke "gzip" "pngcheck.1")
+ (invoke "gzip" "gpl/pngsplit.1")
+ (invoke "gzip" "gpl/png-fix-IDAT-windowsize.1")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin/"))
+ (man (string-append out "/share/man/man1/")))
+ (install-file "pngcheck" bin)
+ (install-file "pngcheck.1.gz" man)
+ (install-file "pngsplit" bin)
+ (install-file "gpl/pngsplit.1.gz" man)
+ (install-file "png-fix-IDAT-windowsize" bin)
+ (install-file "gpl/png-fix-IDAT-windowsize.1.gz" man)))))))
+ (inputs (list zlib))
+ (home-page "http://www.libpng.org/pub/png/apps/pngcheck.html")
+ (synopsis "Print info and check PNG, JNG and MNG files")
+ (description
+ "@code{pngcheck} verifies the integrity of PNG, JNG and MNG files (by
+checking the internal 32-bit CRCs, a.k.a. checksums, and decompressing the image
+data); it can optionally dump almost all of the chunk-level information in the image
+in human-readable form. For example, it can be used to print the basic statistics
+about an image (dimensions, bit depth, etc.); to list the color and transparency info
+in its palette (assuming it has one); or to extract the embedded text annotations.
+This is a command-line program with batch capabilities (e.g. @code{pngcheck
+*.png}.)
+
+Also includes @code{pngsplit} which can split a PNG, MNG or JNG file into individual,
+numbered chunks, and @code{png-fix-IDAT-windowsize} that allow to reset first IDAT's
+zlib window-size bytes and fix up CRC to match.")
+ ;; "pngsplit" and "png-fix-IDAT-windowsize" are licensed under the terms of
+ ;; GNU GPL2+. See "gpl/COPYING" in the repository."
+ (license (list license:x11 license:gpl2+))))
+
(define-public pnglite
(let ((commit "11695c56f7d7db806920bd9229b69f230e6ffb38")
(revision "1"))
@@ -2373,7 +2430,7 @@ Format) file format decoder and encoder.")
(define-public libjxl
(package
(name "libjxl")
- (version "0.7.0")
+ (version "0.8.2")
(source
(origin
(method git-fetch)
@@ -2383,23 +2440,24 @@ Format) file format decoder and encoder.")
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
- (base32 "1ysh7kd30wwnq0gc1l8c0j9b6wzd15k0kkvfaacjvjqcz11lnc7l"))
+ (base32 "1alhnnxkwy5bdwahfsdh87xk9rg1s2fm3r9y2w11ka8p3n1ccwr3"))
(modules '((guix build utils)))
(snippet
- ;; Delete the bundles that will not be used. libjxl bundles LCMS,
- ;; which is in Guix, but a newer version is required.
+ ;; Delete the bundles that will not be used.
'(begin
(for-each (lambda (directory)
(delete-file-recursively
(string-append "third_party/" directory)))
- '("brotli" "googletest" "highway"))))))
+ '("brotli" "googletest" "highway" "lcms" "libpng"
+ "zlib"))))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
(list "-DJPEGXL_FORCE_SYSTEM_GTEST=true"
"-DJPEGXL_FORCE_SYSTEM_BROTLI=true"
- ;; "-DJPEGXL_FORCE_SYSTEM_LCMS2=true" ; requires lcms@2.13
- "-DJPEGXL_FORCE_SYSTEM_HWY=true")))
+ "-DJPEGXL_FORCE_SYSTEM_LCMS2=true"
+ "-DJPEGXL_FORCE_SYSTEM_HWY=true"
+ "-DJPEGXL_BUNDLE_LIBPNG=false")))
(native-inputs
(list asciidoc doxygen googletest pkg-config python))
(inputs
@@ -2407,12 +2465,13 @@ Format) file format decoder and encoder.")
gflags
giflib
imath
- ;; lcms ; requires lcms@2.13
+ lcms
libavif
libjpeg-turbo
libpng
libwebp
- openexr))
+ openexr
+ zlib))
;; These are in Requires.private of libjxl.pc.
(propagated-inputs
(list brotli google-highway))
diff --git a/gnu/packages/instrumentation.scm b/gnu/packages/instrumentation.scm
index de74e6e03d..5d862b5df1 100644
--- a/gnu/packages/instrumentation.scm
+++ b/gnu/packages/instrumentation.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021, 2022 Olivier Dion <olivier.dion@polymtl.ca>
+;;; Copyright © 2023 Andy Tai <atai@atai.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -24,6 +25,7 @@
#:use-module (gnu packages boost)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpio)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages documentation)
#:use-module (gnu packages elf)
@@ -314,14 +316,14 @@ coverage.")
(define-public lttng-modules
(package
(name "lttng-modules")
- (version "2.13.5")
+ (version "2.13.10")
(source (origin
(method url-fetch)
(uri (string-append "https://lttng.org/files/lttng-modules/"
"lttng-modules-" version ".tar.bz2"))
(sha256
(base32
- "0277yfp57psnvn5g40mk09zryp0r4saynns213qak18fv0l39szc"))))
+ "19xh8nm19vx6c2i1adqpa8q2xsvxn59qxa6z186iywbhr0dgpaqk"))))
(build-system linux-module-build-system)
(arguments
`(#:tests? #f ; no tests
@@ -498,6 +500,40 @@ analysis and instrumentation based on Linux perf_events (aka perf) and
ftrace.")
(license (list license:gpl2))))
+(define-public systemtap
+ (package
+ (name "systemtap")
+ (version "4.9")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://sourceware.org/ftp/systemtap/releases/" name "-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "161smpv4ajqfncmgylvs89bbix1id60nf0g7clmga2lxxax3646h"))))
+ (build-system gnu-build-system)
+ (native-inputs (list cpio python))
+ (inputs (list elfutils))
+
+ (home-page "https://sourceware.org/systemtap/")
+ (synopsis "GNU/Linux trace/probe tool")
+ (description
+ "SystemTap provides infrastructure to simplify the
+gathering of information about the running Linux system. This assists
+diagnosis of a performance or functional problem. SystemTap eliminates the
+need for the developer to go through the tedious and disruptive
+instrument, recompile, install, and reboot sequence that may be otherwise
+required to collect data.
+
+SystemTap provides a simple command line interface and scripting language for
+writing instrumentation for a live running kernel plus user-space applications.
+We are publishing samples, as well as enlarging the internal \"tapset\" script
+library to aid reuse and abstraction. SystemTap is a tool for complex
+tasks that may require live analysis, programmable on-line response, and
+whole-system symbolic access, and can also handle simple tracing jobs.")
+ (license license:gpl2+)))
+
(define-public uftrace
(package
(name "uftrace")
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 067284017c..48864c78c2 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1493,7 +1493,8 @@ blacklisted.certs.pem"
"0587px2qbz07g3xi4a3ya6m630p72dvkxcn0bj1813pxnwvcgigz"
(source (origin
(inherit (package-source base))
- (patches (search-patches "openjdk-10-setsignalhandler.patch"))))))
+ (patches (search-patches "openjdk-15-xcursor-no-dynamic.patch"
+ "openjdk-10-setsignalhandler.patch"))))))
(define-public openjdk17
(make-openjdk
@@ -1501,7 +1502,7 @@ blacklisted.certs.pem"
"1asnysg6kxdkrmb88y6qihdr12ljsyxv0mg6hlcs7cwxgsdlqkfs"
(source (origin
(inherit (package-source base))
- (patches '())))
+ (patches (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments openjdk16)
((#:phases phases)
@@ -11240,7 +11241,7 @@ outputting XML data from Java code.")
(file-name (string-append name "-" version))
(sha256
(base32
- "18q3i6jgm6rkw8aysfgihgywrdc5nvijrwnslmi3ww497jvri6ja"))))
+ "0zjqmsad4xk0iar23hdyvx19nxczybd2bh0i35xrafli5cmh720k"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "geronimo-xbean-reflect.jar"
@@ -11291,7 +11292,7 @@ and graphs of objects for dependency injection frameworks")
(file-name (string-append name "-" version "-source"))
(sha256
(base32
- "119yn795jvnjf52si84q192s8wag1k013iabg78b7wnadssnnh31"))))
+ "1mky4zyl2xsqlgrkairaj5971byvhwk2z9bq8snsgvlr11ydc0zf"))))
(build-system ant-build-system)
(arguments
`(#:tests? #f
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 667e93db26..bc8b1d9fcf 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2018, 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2019 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
+;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -913,6 +914,11 @@ commonly called @code{ftoa} or @code{dtoa}.")
(build-system glib-or-gtk-build-system)
(arguments
(list
+ #:imported-modules `((guix build python-build-system)
+ ,@%glib-or-gtk-build-system-modules)
+ #:modules `(((guix build python-build-system) #:select (python-version))
+ (ice-9 textual-ports)
+ ,@%glib-or-gtk-build-system-modules)
#:tests? #f ; Building the tests already fails.
#:phases
#~(modify-phases %standard-phases
@@ -976,7 +982,12 @@ commonly called @code{ftoa} or @code{dtoa}.")
;; Create 'soffice' and 'libreoffice' symlinks to the executable
;; script.
(lambda _
- (let ((out #$output))
+ (let* ((out #$output)
+ (python-libdir
+ (string-append out "/lib/python"
+ (python-version
+ #$(this-package-input "python"))
+ "/site-packages/")))
(define (symlink-output src dst)
(mkdir-p (dirname (string-append out dst)))
(symlink (string-append out src) (string-append out dst)))
@@ -1002,6 +1013,24 @@ commonly called @code{ftoa} or @code{dtoa}.")
"sysui/desktop/appstream-appdata/"
"libreoffice-" app ".appdata.xml")
(string-append out "/share/appdata")))
+ (define (install-python-script name)
+ (with-input-from-file
+ (string-append out "/lib/libreoffice/program/" name ".py")
+ (lambda _
+ (let ((file (get-string-all (current-input-port))))
+ (with-output-to-file
+ (string-append python-libdir name ".py")
+ (lambda _
+ (format (current-output-port) "~a"
+ (string-append
+ "import sys, os\n"
+ "sys.path.append('"
+ out "/lib/libreoffice/program" "')\n"
+ "os.putenv('URE_BOOTSTRAP', 'vnd.sun.star.pathname:"
+ out "/lib/libreoffice/program/fundamentalrc')\n\n"
+ file)))))))
+ (delete-file
+ (string-append out "/lib/libreoffice/program/" name ".py")))
(symlink-output "/lib/libreoffice/program/soffice"
"/bin/soffice")
(symlink-output "/lib/libreoffice/program/soffice"
@@ -1016,7 +1045,12 @@ commonly called @code{ftoa} or @code{dtoa}.")
'("base" "calc" "draw" "impress" "writer"))
(mkdir-p (string-append out "/share/icons/hicolor"))
(copy-recursively "sysui/desktop/icons/hicolor"
- (string-append out "/share/icons/hicolor"))))))
+ (string-append out "/share/icons/hicolor"))
+ (mkdir-p python-libdir)
+ (for-each install-python-script
+ '("access2base" "mailmerge" "msgbox" "officehelper"
+ "pythonloader" "pythonscript" "scriptforge"
+ "unohelper" "uno"))))))
#:configure-flags
#~(list
"--enable-release-build"
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 3bcc34374c..52fb883467 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -73,6 +73,7 @@
;;; Copyright © 2022, 2023 Demis Balbach <db@minikn.xyz>
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
+;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -485,17 +486,17 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The current "stable" kernels. That is, the most recently released major
;; versions that are still supported upstream.
-(define-public linux-libre-6.3-version "6.3.6")
+(define-public linux-libre-6.3-version "6.3.8")
(define-public linux-libre-6.3-gnu-revision "gnu")
(define deblob-scripts-6.3
(linux-libre-deblob-scripts
linux-libre-6.3-version
linux-libre-6.3-gnu-revision
(base32 "01ivgzq18fwas87q84jx9jipcw58kwdnch7ylwg06d98ncga27px")
- (base32 "0la20slh52jm4cg4v2liphhqqx4808gm6pfqcxiawj13a4ps9ygk")))
+ (base32 "1i6vyakvqgmr3lcmr0aj8n7lbcksrp4d0rm1sz7cz64hwbsr67pq")))
(define-public linux-libre-6.3-pristine-source
(let ((version linux-libre-6.3-version)
- (hash (base32 "1vr418rf0zd16fq4vaxda1w2ccng2n9l0ysakmgz9xqbz86iysks")))
+ (hash (base32 "0m89safyzi0rklsqvii5vkg92rdmvnl4lvyk6m648bhf4lhx88s3")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-6.3)))
@@ -503,67 +504,67 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The "longterm" kernels — the older releases with long-term upstream support.
;; Here are the support timelines:
;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-6.1-version "6.1.32")
+(define-public linux-libre-6.1-version "6.1.34")
(define-public linux-libre-6.1-gnu-revision "gnu")
(define deblob-scripts-6.1
(linux-libre-deblob-scripts
linux-libre-6.1-version
linux-libre-6.1-gnu-revision
(base32 "1b96867b46m36l88qnq2d4i9y43ghw97z9jajrh11cvb6kq4xi67")
- (base32 "1yv15mb278wlrn8gb2yjm0mczirzixy668h221vcpbz416ibxx1m")))
+ (base32 "1qq3nsznblz5fkwahxwq26csmrmjbxh8xknm2z4zw6b6k9svzb1b")))
(define-public linux-libre-6.1-pristine-source
(let ((version linux-libre-6.1-version)
- (hash (base32 "0v0saai735jzaj3dbpgp6sbdi95n3lmv78pbg1xy9fd2kfhbg23w")))
+ (hash (base32 "00yniq1smlckp18k3bf6bzys8d7wfbrkdwhikz2fycc0pyy7qvxj")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-6.1)))
-(define-public linux-libre-5.15-version "5.15.115")
+(define-public linux-libre-5.15-version "5.15.117")
(define-public linux-libre-5.15-gnu-revision "gnu")
(define deblob-scripts-5.15
(linux-libre-deblob-scripts
linux-libre-5.15-version
linux-libre-5.15-gnu-revision
(base32 "0w5wyw8zp124nwydjvpnih7q3lp7gadlgsw60syw45nqq0afvlz3")
- (base32 "00n8c7ghfs36bvz0yjw6w9daf5zcgj94kxxn27bfyfm274rkddmz")))
+ (base32 "1zljgvzr8irs3acq436i2iyana9vgx4k1pm3id4rz0fbaqfma602")))
(define-public linux-libre-5.15-pristine-source
(let ((version linux-libre-5.15-version)
- (hash (base32 "050j9z0wg5glgxwbmzfq4l8lv8y7g3nc2rz8342yjdcjfxh6h1qv")))
+ (hash (base32 "17r3yyy4yzxyi4n1ri3sb42m9y1vnn4dcc0zli04n00f7hgk7a59")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.15)))
-(define-public linux-libre-5.10-version "5.10.182")
+(define-public linux-libre-5.10-version "5.10.184")
(define-public linux-libre-5.10-gnu-revision "gnu1")
(define deblob-scripts-5.10
(linux-libre-deblob-scripts
linux-libre-5.10-version
linux-libre-5.10-gnu-revision
(base32 "0mw7qn77y9c6wrnw4rjvf75cpm1w6n1aqqhf8cnghcb97p2yxxrf")
- (base32 "12jhak2bw1jy2jk70vrm66kjvh0cd6c8f2qiy2bk40rq7bf62mr6")))
+ (base32 "1739xvyzi3i7d12mvsvnqa7208pvwfss43kzin71l9svw0405vp5")))
(define-public linux-libre-5.10-pristine-source
(let ((version linux-libre-5.10-version)
- (hash (base32 "1xp9bxk2vyw29bq3z854ly4cj94z8i52yl5hq4a3l3j6564wb3ny")))
+ (hash (base32 "0219qv9rxg4fi7w2s0s9y7ggral40wm2riis58hmg80z3nybxabp")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.10)))
-(define-public linux-libre-5.4-version "5.4.245")
+(define-public linux-libre-5.4-version "5.4.247")
(define-public linux-libre-5.4-gnu-revision "gnu1")
(define deblob-scripts-5.4
(linux-libre-deblob-scripts
linux-libre-5.4-version
linux-libre-5.4-gnu-revision
(base32 "1nlgk8ajb5wl3aa96h9a0pb9j5a5wmrbpk63varn557x1d00r7wj")
- (base32 "070j069sj6spy2wkzfzm1d5jd7pffm0s1m917wblc8d3x8pbgvf8")))
+ (base32 "0ll19zlgx5sbr7gvi93lgavrnzlgv6dpj2yp2x63fj6vdba5iwgc")))
(define-public linux-libre-5.4-pristine-source
(let ((version linux-libre-5.4-version)
- (hash (base32 "195ixy9l18mhwvzj7v63fkyifb9mysq950afxh6ixlpvg0c8h1wn")))
+ (hash (base32 "1mzyzxfsqp085qx17wp9xz7z4w79kks0jpdba7mx8k9i097hs09k")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.4)))
-(define-public linux-libre-4.19-version "4.19.284")
+(define-public linux-libre-4.19-version "4.19.286")
(define-public linux-libre-4.19-gnu-revision "gnu1")
(define deblob-scripts-4.19
(linux-libre-deblob-scripts
@@ -573,12 +574,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "05yqb59gj7mq5ha9xg045bz517sdg6janfa2yjq70qa6ahpc5fac")))
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
- (hash (base32 "0gnhgxcpx9s96wa3dqgxmdjb7x12i94yh0gmv7k9nbz5qwhfxfbz")))
+ (hash (base32 "1788a68fbga03nkgbvai2bi89v826915829727j4zcilyc21b127")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
-(define-public linux-libre-4.14-version "4.14.316")
+(define-public linux-libre-4.14-version "4.14.318")
(define-public linux-libre-4.14-gnu-revision "gnu1")
(define deblob-scripts-4.14
(linux-libre-deblob-scripts
@@ -588,7 +589,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1ccggm19nl7pdcxmsm08fkqy8phz8rqfmww5ypizibdmnrmpn2v9")))
(define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version)
- (hash (base32 "0xlg93va7dbz2w428kiw7vr2sds3542fqq57rwyf51ykq7qii0xc")))
+ (hash (base32 "1g0i68q7xjcjqigwza60i8rqhxsd1l86czqnjv5312lvg5z34fn6")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.14)))
@@ -9175,7 +9176,7 @@ types and interfaces and translates so that the X server can use them.")
(define-public pipewire
(package
(name "pipewire")
- (version "0.3.63")
+ (version "0.3.70")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -9184,18 +9185,20 @@ types and interfaces and translates so that the X server can use them.")
(file-name (git-file-name name version))
(sha256
(base32
- "1pkngynvhxc6iyv75gsyqjy18ky4si9dhvpavb9xwq5xj71nj0hr"))))
+ "1n74rrbwymm89ri4daa4v092f4b81wrak4vg685xfz2wl89p64n6"))))
(build-system meson-build-system)
(arguments
(list
#:configure-flags
#~(list (string-append "-Dudevrulesdir=" #$output "/lib/udev/rules.d")
- "-Dsystemd=disabled"
+ "-Dman=enabled"
+ "-Drlimits-install=false"
"-Dsession-managers=[]"
"-Dsysconfdir=/etc"
- "-Dman=enabled")))
+ "-Dsystemd=disabled")))
(native-inputs
- (list pkg-config
+ (list `(,glib "bin")
+ pkg-config
python-docutils))
(inputs (list alsa-lib
avahi
@@ -9235,7 +9238,7 @@ of Linux application development.")
(define-public wireplumber
(package
(name "wireplumber")
- (version "0.4.13")
+ (version "0.4.14")
(source
(origin
(method git-fetch)
@@ -9245,7 +9248,7 @@ of Linux application development.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "07psjb7rxsigwnwnzmw2y767vhyyha7cn8i8dgq80rzhwgl0sgv7"))))
+ (base32 "0jmnd6000j4wx68lxgz5b4g4hxkf243ivi9swaaf8rnx99cbx91w"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Dsystemd=disabled"
@@ -9734,6 +9737,41 @@ These trace events are logged in @file{/sys/kernel/debug/tracing} and reported
through standard log mechanisms like syslog.")
(license license:gpl2)))
+(define-public renameat2
+ ;; This is a Gist, with no release or tags.
+ (let ((revision "0")
+ (commit "5c5193f20142511a5fc7069a539f4e5aba0ea470"))
+ (package
+ (name "renameat2")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://gist.githubusercontent.com/"
+ "eatnumber1/f97ac7dad7b1f5a9721f/raw/"
+ commit "/renameat2.c"))
+ (sha256
+ (base32
+ "07b4hsxqjm610sdkm4nxhp0gnl2s7gzlh4zdnja5ay40v4x24bb9"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ;no test suite
+ #:phases #~(modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (invoke #$(cc-for-target) "renameat2.c"
+ "-o" "renameat2")))
+ (replace 'install
+ (lambda _
+ (install-file "renameat2"
+ (string-append #$output "/bin")))))))
+ (home-page "https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f")
+ (synopsis "Command to call the renameat2 Linux system call")
+ (description "This package provides a @command{renameat2} command that
+calls the Linux-specific @code{renameat2} system call.")
+ (license license:expat))))
+
(define-public libgpiod
(package
(name "libgpiod")
@@ -9820,6 +9858,7 @@ formats.")
(url "https://github.com/haampie/libtree")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
+ (patches (search-patches "libtree-fix-check-non-x86.patch"))
(sha256
(base32 "1jbc60cslzcfxk9jwva51ncr1zl1nz0fkgfjdckgv81is11nswmb"))))
(arguments
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 16deb85e5e..d578c46b90 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -11717,20 +11717,20 @@ be used with @code{cl-yacc}.")
(sbcl-package->ecl-package sbcl-cl-lex))
(define-public sbcl-cl-colors2
- (let ((commit "d620e7fb504bbec3ed48cc7cd03f60ce2bb3735d")
- (revision "2"))
+ (let ((commit "cc03badf5f69be65ae7e13c2f9a7c16838ab8241")
+ (revision "3"))
(package
(name "sbcl-cl-colors2")
- (version (git-version "0.5.0" revision commit))
+ (version (git-version "0.5.4" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://notabug.org/cage/cl-colors2.git")
(commit commit)))
- (file-name (git-file-name name version))
+ (file-name (git-file-name "cl-colors2" version))
(sha256
- (base32 "14wx006lv4bhf86z68484kphm5jsh86ns60pb4i1bi8kl8lp03r0"))))
+ (base32 "1l7sl7nnvq13xmss9wwkhcq123bsylskxjrijwfkqp6sm02gbd15"))))
(build-system asdf-build-system/sbcl)
(native-inputs
(list sbcl-clunit2))
@@ -11741,11 +11741,10 @@ be used with @code{cl-yacc}.")
"This is a very simple color library for Common Lisp, providing:
@itemize
-@item Types for representing colors in HSV and RGB spaces.
-@item Simple conversion functions between the above types (and also
-hexadecimal representation for RGB).
-@item Some predefined colors (currently X11 color names -- of course
-the library does not depend on X11).
+@item Types for representing colors in HSV, HSL, and RGB spaces.
+@item Simple conversion functions between the above types.
+@item Function printing colors to HEX, RGB, RGBA, and HSL.
+@item Predefined colors from X11, SVG, and GDK.
@end itemize\n")
(home-page "https://notabug.org/cage/cl-colors2")
(license license:boost1.0))))
@@ -25684,7 +25683,7 @@ desktop files to the right directories.
(define-public sbcl-nclasses
(package
(name "sbcl-nclasses")
- (version "0.5.0")
+ (version "0.6.0")
(source
(origin
(method git-fetch)
@@ -25694,7 +25693,7 @@ desktop files to the right directories.
(file-name (git-file-name "cl-nclasses" version))
(sha256
(base32
- "0aym0m12s5px139ragna0pr8jan8bx3akhjgamj6h0y28xksziji"))
+ "0kp5wim5frr4l52rgchaz1cj74daqngagrz3r0lgasii6bwlzsi6"))
(modules '((guix build utils)))
(snippet
`(begin
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index a7e06dd34c..175617ad70 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -993,7 +993,7 @@ the HTML documentation of TXR.")
(define-public txr
(package
(name "txr")
- (version "287")
+ (version "288")
(source
(origin
(method git-fetch)
@@ -1002,7 +1002,7 @@ the HTML documentation of TXR.")
(commit (string-append "txr-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0bwa40l5c0dnpcpfbysqbv8ch58sycbb31dnskmhr387jlv938dl"))))
+ (base32 "0an26zffdaw9m673i077r2bw061mhzv4lz4z127sgda5gvg999mf"))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags
@@ -1433,7 +1433,7 @@ executable Common Lisp image. It is similar to cl-launch and hu.dwim.build.")
(define-public eisl
(package
(name "eisl")
- (version "2.72")
+ (version "3.00")
(source
(origin
(method git-fetch)
@@ -1442,7 +1442,7 @@ executable Common Lisp image. It is similar to cl-launch and hu.dwim.build.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "12dc6b70dcfalyq3h5i7lmz39xh310k5p83x5q6j18knd6ql9ik9"))))
+ (base32 "0nppbzfdx4cjy72b4n0yk177i7063a0nhsrs9b1y45y4avbrbl00"))))
(build-system gnu-build-system)
(inputs
(list bash-minimal freeglut gdbm libiconv ncurses tcl tk))
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 827bcd597b..8fbb0274d4 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015-2023 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2020-2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -239,7 +239,7 @@ classification.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "0qbq1rqp94l530f043qzp8aw5lj7dng9wq0miffd7spd1ff638wq"))))
+ "07kdsngvr4n1qxpqzv1nlay7g41d6jzjppa8vzmrg220s8ing87z"))))
(build-system gnu-build-system)
(arguments
`(#:imported-modules (,@%gnu-build-system-modules
@@ -708,6 +708,51 @@ SentencePiece allows us to make a purely end-to-end system that does not
depend on language-specific pre- or post-processing.")
(license license:asl2.0)))
+(define-public python-sacrebleu
+ (package
+ (name "python-sacrebleu")
+ (version "2.3.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mjpost/sacrebleu")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1al4qf9wsq5l453qqb6clims62ns0s07wb9rfbf4hbpr1f2iv7zv"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ ;; These all need internet access.
+ '(list "-k" "not test_api_get_source \
+and not test_api_get_reference \
+and not test_maybe_download \
+and not test_process_to_text \
+and not test_get_files_and_fieldnames \
+and not test_source_and_references \
+and not test_wmt22_references")
+ #:phases
+ '(modify-phases %standard-phases
+ ;; Needed for tests.
+ (add-before 'check 'set-HOME
+ (lambda _ (setenv "HOME" "/tmp"))))))
+ (propagated-inputs (list python-colorama
+ python-lxml
+ python-numpy
+ python-portalocker
+ python-regex
+ python-tabulate))
+ (native-inputs (list python-pytest))
+ (home-page "https://github.com/mjpost/sacrebleu")
+ (synopsis
+ "Compute shareable, comparable, and reproducible BLEU, chrF, and TER scores")
+ (description
+ "This is a package for hassle-free computation of shareable, comparable,
+and reproducible BLEU, chrF, and TER scores for natural language processing.")
+ (license license:asl2.0)))
+
(define-public python-sentencepiece
(package
(name "python-sentencepiece")
@@ -2349,7 +2394,7 @@ Python.")
;; "ZIP does not support timestamps before 1980". Luckily,
;; SOURCE_DATE_EPOCH is respected, which we set to some time in
;; 1980.
- (lambda _ (setenv "SOURCE_DATE_EPOCH" "315532800") #t))
+ (lambda _ (setenv "SOURCE_DATE_EPOCH" "315532800")))
(add-after 'unpack 'python3.10-compatibility
(lambda _
;; See https://github.com/tensorflow/tensorflow/issues/20517#issuecomment-406373913
@@ -2390,6 +2435,8 @@ Python.")
(substitute* "tensorflow/python/keras/callbacks.py"
(("from collections import Iterable")
"from collections.abc import Iterable"))
+ (substitute* "tensorflow/python/ops/variable_scope.py"
+ (("collections_lib.Sequence") "collections_lib.abc.Sequence"))
;; XXX: it is not clear if this is a good idea, but the build
;; system tries to overwrite the __or__ and __ror__ methods of
@@ -2405,7 +2452,20 @@ Python.")
(("void BinaryUFunc\\(char\\*\\* args, npy_intp\\* dimensions, npy_intp\\* steps,")
"void BinaryUFunc(char** args, npy_intp const* dimensions, npy_intp const* steps,")
(("void CompareUFunc\\(char\\*\\* args, npy_intp\\* dimensions, npy_intp\\* steps,")
- "void CompareUFunc(char** args, npy_intp const* dimensions, npy_intp const* steps,"))))
+ "void CompareUFunc(char** args, npy_intp const* dimensions, npy_intp const* steps,"))
+
+ ;; ...and for numpy >= 1.23
+ (substitute* "tensorflow/python/framework/tensor_util.py"
+ (("np.asscalar\\(x\\[0\\]\\)") "x[0].item()")
+ (("np.asscalar\\(x\\)") "x.item()")
+ (("np.asscalar\\(v\\)") "np.ndarray.item(v)")
+ (("return np.asscalar") "return np.ndarray.item"))
+ (substitute* "tensorflow/python/kernel_tests/cwise_ops_test.py"
+ (("np.asscalar\\(np.random.rand\\(1\\) \\* 100.\\)")
+ "(np.random.rand(1) * 100.).item()"))
+ (substitute* '("tensorflow/python/framework/fast_tensor_util.pyx"
+ "tensorflow/python/estimator/canned/linear_testing_utils.py")
+ (("np.asscalar") "np.ndarray.item"))))
(add-after 'python3.10-compatibility 'chdir
(lambda _ (chdir "tensorflow/contrib/cmake")))
(add-after 'chdir 'disable-downloads
@@ -2749,15 +2809,15 @@ DESTINATION include/tensorflow/c FILES_MATCHING PATTERN \"*.h\")\n" m)))))
("swig" ,swig)
("unzip" ,unzip)))
(propagated-inputs
- `(("python-absl-py" ,python-absl-py)
- ("python-astor" ,python-astor)
- ("python-gast" ,python-gast)
- ("python-grpcio" ,python-grpcio)
- ("python-numpy" ,python-numpy)
- ("python-protobuf" ,python-protobuf-3.6)
- ("python-six" ,python-six)
- ("python-termcolo" ,python-termcolor)
- ("python-wheel" ,python-wheel)))
+ (list python-absl-py
+ python-astor
+ python-gast
+ python-grpcio
+ python-numpy
+ python-protobuf-3.6
+ python-six
+ python-termcolor
+ python-wheel))
(inputs
`(("c-ares" ,c-ares)
("eigen" ,eigen-for-tensorflow)
@@ -3161,46 +3221,115 @@ with image data, text data, and sequence data.")
(define-public python-keras
(package
(name "python-keras")
- (version "2.2.4")
+ (version "2.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Keras" version))
- (patches (search-patches "python-keras-integration-test.patch"))
(sha256
(base32
- "1j8bsqzh49vjdxy6l1k4iwax5vpjzniynyd041xjavdzvfii1dlh"))))
+ "1k68xd8n2y9ldijggjc8nn4d6d1axw0p98gfb0fmm8h641vl679j"))
+ (modules '((guix build utils)))
+ (snippet
+ '(substitute* '("keras/callbacks/callbacks.py"
+ "keras/engine/training_utils.py"
+ "keras/engine/training.py"
+ "keras/engine/training_generator.py"
+ "keras/utils/generic_utils.py")
+ (("from collections import Iterable")
+ "from collections.abc import Iterable")
+ (("collections.Container")
+ "collections.abc.Container")
+ (("collections.Mapping")
+ "collections.abc.Mapping")
+ (("collections.Sequence")
+ "collections.abc.Sequence")))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'remove-tests-for-unavailable-features
+ (add-after 'unpack 'tf-compatibility
+ (lambda _
+ (substitute* "keras/backend/tensorflow_backend.py"
+ (("^get_graph = .*")
+ "get_graph = tf.get_default_graph")
+ (("tf.compat.v1.nn.fused_batch_norm")
+ "tf.nn.fused_batch_norm")
+ ;; categorical_crossentropy does not support axis
+ (("from_logits=from_logits, axis=axis")
+ "from_logits=from_logits")
+ ;; dropout accepts a level number, not a named rate argument.
+ (("dropout\\(x, rate=level,")
+ "dropout(x, level,")
+ (("return x.shape.rank")
+ "return len(x.shape)"))))
+ (add-after 'unpack 'hdf5-compatibility
+ (lambda _
+ ;; The truth value of an array with more than one element is ambiguous.
+ (substitute* "tests/keras/utils/io_utils_test.py"
+ ((" *assert .* == \\[b'(asd|efg).*") ""))
+ (substitute* "tests/test_model_saving.py"
+ (("h5py.File\\('does not matter',")
+ "h5py.File('does not matter', 'w',"))
+ (substitute* "keras/utils/io_utils.py"
+ (("h5py.File\\('in-memory-h5py', driver='core', backing_store=False\\)")
+ "h5py.File('in-memory-h5py', 'w', driver='core', backing_store=False)")
+ (("h5file.fid.get_file_image")
+ "h5file.id.get_file_image"))
+ (substitute* "keras/engine/saving.py"
+ (("\\.decode\\('utf-?8'\\)") ""))))
+ (add-after 'unpack 'delete-unavailable-backends
(lambda _
(delete-file "keras/backend/theano_backend.py")
- (delete-file "keras/backend/cntk_backend.py")
- (delete-file "tests/keras/backend/backend_test.py")
- ;; FIXME: This doesn't work because Tensorflow is missing the
- ;; coder ops library.
- (delete-file "tests/keras/test_callbacks.py")))
+ (delete-file "keras/backend/cntk_backend.py")))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; These tests attempt to download data files from the internet.
(delete-file "tests/integration_tests/test_datasets.py")
(delete-file "tests/integration_tests/imagenet_utils_test.py")
- ;; Backport https://github.com/keras-team/keras/pull/12479.
- (substitute* "tests/keras/engine/test_topology.py"
- (("np.ones\\(\\(3, 2\\)\\)")
- "1."))
(invoke "python" "-m" "pytest" "tests"
"-p" "no:pep8"
;; FIXME: python-build-system lacks PARALLEL-TESTS?
"-n" (number->string (parallel-job-count))
+ ;; This one uses the theano backend that we don't have.
+ "--ignore=tests/test_api.py"
+ "--ignore=tests/keras/backend/backend_test.py"
+ ;; Our Tensorflow version does not have the coder ops library.
+ "--ignore=tests/keras/callbacks/callbacks_test.py"
+ ;; ...nor do we have tensorboard
+ "--ignore=tests/keras/callbacks/tensorboard_test.py"
"-k"
(string-append
+ ;; See https://github.com/keras-team/keras/pull/7033
+ "not test_TimeDistributed_learning_phase "
+ ;; XXX fails because no closure is provided
+ "and not test_func_dump_and_load_backwards_compat "
+ ;; XXX real bug? These are all tests that fail due to
+ ;; shape mismatch, e.g. "got logits shape [12,3] and
+ ;; labels shape [9]"
+ "and not test_model_with_crossentropy_losses_channels_first "
+ "and not test_masking_correctness_output_size_not_equal_to_first_state_size "
+ "and not test_convolutional_recurrent "
+ "and not test_axis "
+
+ ;; XXX fails because of 3/15 values have unexpected differences.
+ "and not test_masking_correctness_output_not_equal_to_first_state "
+ ;; XXX fails because of a difference of about 0.1
+ "and not test_sample_weighted "
+ ;; XXX fails because of a difference of about 0.3
+ "and not test_scalar_weighted "
+ ;; XXX fails because of a difference of about 0.2
+ "and not test_unweighted "
+
+ ;; XXX I cannot reproduce this in an interactive
+ ;; Python session, because l2_norm works just fine.
+ "and not test_weighted " ;TestCosineSimilarity
+ "and not test_config " ;TestCosineSimilarity
+
;; The following test fails only in the build
;; container; skip it.
- "not test_selu "
+ "and not test_selu "
;; The following test was found flaky and removed in
;; recent versions.
"and not test_stateful_metrics"))))))))
@@ -3216,12 +3345,15 @@ with image data, text data, and sequence data.")
tensorflow
graphviz))
(native-inputs
- (list python-pandas
+ (list python-flaky
+ python-markdown
+ python-pandas
python-pytest
python-pytest-cov
python-pytest-pep8
python-pytest-timeout
python-pytest-xdist
+ python-pyux
python-sphinx
python-requests))
(home-page "https://github.com/keras-team/keras")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index ee6e19fcfe..801555803a 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -275,14 +275,14 @@ example, modify the message headers or body, or encrypt or sign the message.")
(define-public mailutils
(package
(name "mailutils")
- (version "3.15")
+ (version "3.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/mailutils/mailutils-"
version ".tar.xz"))
(sha256
(base32
- "1nrd9wsidxami3wa86l9z8hnnwv6rhbxdkvqg7dcgz2jqf3c5l5p"))
+ "1h02l0zilxsak1sxpm15vhfaahd8rwvcksc88cc7c0wc626ia784"))
(patches
(search-patches "mailutils-variable-lookup.patch"))))
(build-system gnu-build-system)
@@ -1208,7 +1208,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
(define-public mu
(package
(name "mu")
- (version "1.10.2")
+ (version "1.10.3")
(source
(origin
(method url-fetch)
@@ -1216,7 +1216,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
version "/mu-" version ".tar.xz"))
(sha256
(base32
- "0mj43lnxr11wg354q8svcqjc403b36igb7ia406yavw6xfk46w9f"))))
+ "0pr4w2afhansi151lx3145rsaf3gxfjx21y26p8jfg0nnvy70ff8"))))
(build-system meson-build-system)
(native-inputs
(list pkg-config
@@ -3175,14 +3175,14 @@ from the Cyrus IMAP project.")
(define-public opensmtpd
(package
(name "opensmtpd")
- (version "6.8.0p2")
+ (version "7.3.0p0")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.opensmtpd.org/archives/"
"opensmtpd-" version ".tar.gz"))
(sha256
- (base32 "05sd7bmq29ibnqbl2z53hiyprfxzf0qydfdaixs68rz55wqhbgsi"))))
+ (base32 "1rnaa022pkdc15vkvlisv42dvcxchib40h0m97myfyqjralabmrd"))))
(build-system gnu-build-system)
(inputs
(list bdb
@@ -3205,13 +3205,6 @@ from the Cyrus IMAP project.")
"--with-table-db")
#:phases
(modify-phases %standard-phases
- ;; See: https://github.com/OpenSMTPD/OpenSMTPD/issues/1069.
- (add-after 'unpack 'fix-smtpctl-encrypt-bug
- (lambda _
- (substitute* "usr.sbin/smtpd/smtpctl.c"
- (("\"encrypt\", \"--\",")
- "\"encrypt\","))
- #t))
;; Fix some incorrectly hard-coded external tool file names.
(add-after 'unpack 'patch-FHS-file-names
(lambda _
@@ -3219,8 +3212,7 @@ from the Cyrus IMAP project.")
;; ‘gzcat’ is auto-detected at compile time, but ‘cat’ isn't.
(("/bin/cat") (which "cat")))
(substitute* "usr.sbin/smtpd/mda_unpriv.c"
- (("/bin/sh") (which "sh")))
- #t))
+ (("/bin/sh") (which "sh")))))
;; OpenSMTPD provides a single smtpctl utility to control both the
;; daemon and the local submission subsystem. To accomodate systems
;; that require historical interfaces such as sendmail, newaliases or
@@ -3233,8 +3225,7 @@ from the Cyrus IMAP project.")
(for-each (lambda (command)
(symlink "smtpctl" (string-append sbin command)))
(list "mailq" "makemap" "newaliases"
- "send-mail" "sendmail")))
- #t)))))
+ "send-mail" "sendmail"))))))))
(synopsis "Lightweight SMTP daemon")
(description
"OpenSMTPD is an implementation of server-side @acronym{SMTP, Simple Mail
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 6bafc5697c..7b40f395f3 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2018, 2019, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2019, 2021, 2022, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
@@ -626,7 +626,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
#~("AR=gcc-ar" "RANLIB=gcc-ranlib")
#~())
- #$@(if (hurd-target?)
+ #$@(if (target-hurd?)
#~("--disable-jit")
#~())))
((#:phases phases '%standard-phases)
diff --git a/gnu/packages/mastodon.scm b/gnu/packages/mastodon.scm
index 9c1d3cd26f..6510d96e2d 100644
--- a/gnu/packages/mastodon.scm
+++ b/gnu/packages/mastodon.scm
@@ -32,12 +32,14 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages image)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
- #:use-module (gnu packages time))
+ #:use-module (gnu packages time)
+ #:use-module (gnu packages xml))
(define-public toot
(package
@@ -81,6 +83,52 @@ Features include:
@end itemize")
(license license:gpl3)))
+(define-public tuba
+ (package
+ (name "tuba")
+ (version "0.3.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/GeopJr/Tuba")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1xhyz6wi17g4m76lr6qc75q4xnnw7c3dh3d04dg8m5gzk6j0y89x"))))
+ (build-system meson-build-system)
+ (arguments
+ `(#:glib-or-gtk? #t
+ #:configure-flags (list "-Ddistro=true")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'glib-or-gtk-wrap 'symlink-package
+ (lambda* (#:key outputs #:allow-other-keys)
+ (with-directory-excursion
+ (string-append (assoc-ref outputs "out") "/bin")
+ (symlink "dev.geopjr.Tuba" "tuba")))))))
+ (native-inputs
+ (list gettext-minimal
+ `(,glib "bin") ; for glib-compile-resources
+ pkg-config))
+ (inputs
+ (list gtk
+ gtksourceview
+ json-glib
+ libadwaita
+ libgee
+ libsoup-minimal
+ libsecret
+ libwebp
+ libxml2
+ vala))
+ (home-page "https://tuba.geopjr.dev/")
+ (synopsis "GTK client for Mastodon")
+ (description "Tuba is a GTK client for Mastodon. It provides a clean,
+native interface that allows you to integrate Mastodon's social experience
+seamlessly with your desktop environment.")
+ (license license:gpl3)))
+
(define-public tootle
(package
(name "tootle")
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index f89e70c0bb..f5a2181905 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1029,6 +1029,7 @@ large scale eigenvalue problems.")
(arguments
`(#:configure-flags (list
"-DBUILD_SHARED_LIBS:BOOL=YES"
+ "-DCBLAS=ON"
"-DLAPACKE=ON"
;; Build the 'LAPACKE_clatms' functions.
"-DLAPACKE_WITH_TMG=ON"
@@ -2785,7 +2786,7 @@ can solve two kinds of problems:
(define-public octave-cli
(package
(name "octave-cli")
- (version "8.1.0")
+ (version "8.2.0")
(source
(origin
(method url-fetch)
@@ -2793,7 +2794,7 @@ can solve two kinds of problems:
version ".tar.xz"))
(sha256
(base32
- "00lis18dsb13v9nvz0z4cs7v4y634jc0vb04lxfw9pshwriikglv"))))
+ "1pkh4vmq4hcrmyl2gybd54i3qamyvmcjmpgy1i2kkw2g03jxdfdp"))))
(build-system gnu-build-system)
(inputs
(list alsa-lib
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index a805bda8e5..dc25f7640e 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -2424,6 +2424,10 @@ reporting or the build process.")))
(substitute-keyword-arguments (package-arguments maven-model-builder)
((#:phases phases)
`(modify-phases ,phases
+ (add-after 'unpack 'add-components-shebang
+ (lambda _
+ (substitute* "components.sh"
+ (("^## T") "#!/bin/sh\n## T"))))
(add-before 'build 'generate-components.xml
(lambda _
(mkdir-p "build/classes/META-INF/plexus")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 00897ea451..3629d9a6d5 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -436,7 +436,8 @@ TCP sessions from existing clients.")
python-pygments
python-pyinotify
python-qrcode
- python-slixmpp))
+ python-slixmpp
+ python-typing-extensions))
(synopsis "Console Jabber/XMPP Client")
(description "Poezio is a free console XMPP client (the protocol on which
the Jabber IM network is built).
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index d36ba707c7..ce41791672 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -791,7 +791,7 @@ provides a simple Python client for the StatsD daemon.")
(define-public batsignal
(package
(name "batsignal")
- (version "1.6.0")
+ (version "1.6.4")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -800,7 +800,7 @@ provides a simple Python client for the StatsD daemon.")
(file-name (git-file-name name version))
(sha256
(base32
- "0b1j6mljnqgxwr3id3r9shzhsjk5r0qdh9cxkvy1dm4kzbyc4dxq"))))
+ "0f8jabql70nxkslgxd8pcfllqy4bnbf1c19rcri0dp054aszk637"))))
(build-system gnu-build-system)
(arguments
(list #:make-flags
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index b7369391db..2e7eddafb0 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -159,6 +159,7 @@
#:use-module (gnu packages mpd)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages netpbm)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
@@ -7095,7 +7096,7 @@ choice.")
(define-public musikcube
(package
(name "musikcube")
- (version "0.96.10")
+ (version "3.0.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -7104,13 +7105,12 @@ choice.")
(file-name (git-file-name name version))
(sha256
(base32
- "06myr83x8jvzlzchg3jsw1163n2lcsbmb176zgnx7xxa26jpdbh1"))))
+ "09q15xlssgg67zg5m0q574k3al2pdjdnm1580mlf0wzr6a021fnd"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; No test suite
#:configure-flags
'("-DCMAKE_BUILD_TYPE=Release"
- "-DENABLE_BUNDLED_TAGLIB=false"
;; Use the "wide" ncurses headers but don't look for them in an
;; ncursesw directory. For more info:
;; https://github.com/clangen/musikcube/wiki/building#compiler-cannot-find-ncurseswcursesh
@@ -7118,7 +7118,7 @@ choice.")
;; We will strip the binaries ourselves in the 'strip' phase.
"-DDISABLE_STRIP=true")))
(native-inputs
- (list pkg-config))
+ (list asio pkg-config))
(inputs
(list alsa-lib
boost
@@ -7126,10 +7126,14 @@ choice.")
ffmpeg-4
lame
libev
+ libgme
libmicrohttpd
+ libogg
libopenmpt
- ncurses
+ libvorbis
+ ncurses/tinfo
openssl
+ pipewire
pulseaudio
taglib
zlib))
@@ -7150,6 +7154,8 @@ streaming audio server.")
(url "https://github.com/quodlibet/quodlibet")
(commit (string-append "release-" version))))
(file-name (git-file-name name version))
+ (patches (search-patches "quodlibet-fix-invalid-glob.patch"
+ "quodlibet-fix-mtime-tests.patch"))
(sha256
(base32 "1i5k93k3bfp7hpcwkbr865mbj9jam3jv2a5k1bazcyp4f5vdrb0v"))))
(build-system python-build-system)
@@ -7173,9 +7179,7 @@ streaming audio server.")
"--ignore=tests/test_browsers_iradio.py"
;; broken upstream
"--disable-warnings"
- "--ignore=tests/quality"
- ;; missing legacy icons in adwaita-icon-theme
- "--ignore=tests/plugin/test_trayicon.py")
+ "--ignore=tests/quality/test_flake8.py")
(format #t "test suite not run~%"))))
(add-after 'install 'glib-or-gtk-wrap ; ensure icons loaded
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 2055ed93c7..b0cdcdf6a3 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -4505,7 +4505,7 @@ on hub/switched networks. It is based on @acronym{ARP} packets, it will send
(define-public phantomsocks
(package
(name "phantomsocks")
- (version "0.0.0-20230223180716-34d21f24a9eb")
+ (version "0.0.0-20230405135900-a54ae9f3611e")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -4514,7 +4514,7 @@ on hub/switched networks. It is based on @acronym{ARP} packets, it will send
(file-name (git-file-name name version))
(sha256
(base32
- "0zfkqiimqwg89njqm9qbwki3fgy0rqx8wr95hq813zk0rf3bj1ka"))))
+ "1qgv8dcrsyzjzppvdk0n5kkyaypcjm1hcn9lb29ahvbhm70cpm6a"))))
(build-system go-build-system)
(arguments
(list #:install-source? #f
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 9532fd7187..e3dba508f0 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2019-2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
@@ -171,8 +171,8 @@
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "1.4.0")
- (commit "dc5430c9dc20ee53441995d9a89a90b0a86aeed3")
- (revision 6))
+ (commit "44bbfc24e4bcc48d0e3343cd3d83452721af8c36")
+ (revision 7))
(package
(name "guix")
@@ -188,7 +188,7 @@
(commit commit)))
(sha256
(base32
- "192jxca7gdf8451kac58fq1f2rxn3624krmhz04bh7ln2sp5q0yd"))
+ "08gq04pphapr3i0gzdilp8l87rpxlh2p768qrn1fw92fmw727xf7"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@@ -216,7 +216,7 @@
;; choose a fixed-width and short directory name
;; for tests.
"ac_cv_guix_test_root=/tmp/guix-tests"
- ,@(if (hurd-target?) '("--with-courage") '()))
+ ,@(if (target-hurd?) '("--with-courage") '()))
#:parallel-tests? #f ;work around <http://bugs.gnu.org/21097>
#:modules ((guix build gnu-build-system)
@@ -416,7 +416,7 @@ $(prefix)/etc/openrc\n")))
;; cross-compilation.
("guile" ,guile-3.0-latest) ;for faster builds
("guile-gnutls" ,guile-gnutls)
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'()
`(("guile-avahi" ,guile-avahi)))
("guile-gcrypt" ,guile-gcrypt)
@@ -476,7 +476,7 @@ $(prefix)/etc/openrc\n")))
(propagated-inputs
`(("guile-gnutls" ,guile-gnutls)
;; Avahi requires "glib" which doesn't cross-compile yet.
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'()
`(("guile-avahi" ,guile-avahi)))
("guile-gcrypt" ,guile-gcrypt)
@@ -1442,9 +1442,9 @@ environments.")
"guile-zlib"
"guile-sqlite3"
"guile-gnutls"
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'()
- '("guile-fibers-next")))))
+ '("guile-fibers")))))
(wrap-program file
`("PATH" ":" prefix
(,bin
@@ -1485,7 +1485,7 @@ environments.")
guile-gcrypt
guix
guile-prometheus
- guile-fibers-next
+ guile-fibers-1.3
guile-lib
(first (assoc-ref (package-native-inputs guix) "guile"))))
(inputs
@@ -1503,7 +1503,7 @@ environments.")
guile-sqlite3
guix
guile-gnutls
- guile-fibers-next))
+ guile-fibers-1.3))
(home-page "https://git.cbaines.net/guix/build-coordinator/")
(synopsis "Tool to help build derivations")
(description
@@ -1686,7 +1686,7 @@ in an isolated environment, in separate namespaces.")
"guile-prometheus"
"guile-sqlite3"
"guile-gnutls"
- "guile-fibers-next")))
+ "guile-fibers")))
(wrap-program file
`("GUILE_LOAD_PATH" ":" prefix
(,scm ,(string-join
@@ -1719,7 +1719,7 @@ in an isolated environment, in separate namespaces.")
guile-json-4
guile-gcrypt
guix
- guile-fibers-next
+ guile-fibers-1.3
guile-prometheus
guile-lib
guile-lzlib
@@ -1732,7 +1732,7 @@ in an isolated environment, in separate namespaces.")
(list guile-json-4
guile-gcrypt
guix
- guile-fibers-next
+ guile-fibers-1.3
guile-prometheus
guile-lib
guile-lzlib
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 74e465d21e..db22f257f1 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -75,6 +75,7 @@
#:use-module (gnu packages authentication)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
@@ -102,6 +103,7 @@
#:use-module (gnu packages opencl)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
@@ -114,6 +116,7 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages qt)
#:use-module (gnu packages version-control)
+ #:use-module (gnu packages web)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
@@ -304,6 +307,58 @@ platforms.")
Counterpane's Passwordsafe.")
(license license:gpl2+))))
+(define-public otpclient
+ (package
+ (name "otpclient")
+ (version "3.1.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/paolostivanin/OTPClient")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0cwn4spddhg099hcqcvzgbws3xpmnd29g1vayk36118x94wmajaf"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:modules `(((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+ (guix build cmake-build-system)
+ (guix build utils))
+ #:imported-modules `((guix build glib-or-gtk-build-system)
+ ,@%cmake-build-system-modules)
+ #:tests? #f ; No tests
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
+ (assoc-ref glib-or-gtk:%standard-phases
+ 'generate-gdk-pixbuf-loaders-cache-file))
+ (add-after 'wrap 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases
+ 'glib-or-gtk-compile-schemas))
+ (add-after 'wrap 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (inputs (list adwaita-icon-theme
+ libcotp
+ libgcrypt
+ libsecret
+ libzip
+ hicolor-icon-theme
+ gtk+
+ jansson
+ protobuf
+ protobuf-c
+ qrencode
+ zbar))
+ (native-inputs (list pkg-config protobuf))
+ (home-page "https://github.com/paolostivanin/OTPClient")
+ (synopsis "Two-factor authentication client")
+ (description "OTPClient is a GTK+-based @acronym{OTP, One Time Password}
+client, supporting @acronym{TOTP, Time-based one time passwords} and
+@acronym{HOTP,HMAC-based one time passwords}.")
+ (license license:gpl3)))
+
(define-public shroud
(package
(name "shroud")
@@ -898,7 +953,7 @@ from password-store and gopass files.")
(define-public browserpass-native
(package
(name "browserpass-native")
- (version "3.0.7")
+ (version "3.1.0")
(source
(origin
(method git-fetch)
@@ -907,54 +962,44 @@ from password-store and gopass files.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "1jkjslbbac49xjyjkc2b07phdm3i64z40kh6h55cl22dxjmpp1nb"))))
+ (base32 "1if72k526sqqxnw250qwxvzwvh1w0k8ag4p4xq3442b22hywx72i"))))
(build-system go-build-system)
(arguments
- `(#:import-path "github.com/browserpass/browserpass-native"
- #:install-source? #f
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch-makefile
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; This doesn't go in #:make-flags because the Makefile itself
- ;; gets installed.
- (substitute*
- "src/github.com/browserpass/browserpass-native/Makefile"
- (("PREFIX \\?= /usr")
- (string-append "PREFIX ?= " out)))
- #t)))
- (add-before 'build 'configure
- (lambda _
- (with-directory-excursion
- "src/github.com/browserpass/browserpass-native"
- (invoke "make" "configure"))
- #t))
- (replace 'build
- (lambda _
- (with-directory-excursion
- "src/github.com/browserpass/browserpass-native"
- (invoke "make"))
- #t))
- (replace 'install
- (lambda _
- (with-directory-excursion
- "src/github.com/browserpass/browserpass-native"
- (invoke "make" "install"))
- #t))
- (add-after 'install 'wrap-executable
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (gnupg (assoc-ref inputs "gnupg")))
- (wrap-program (string-append out "/bin/browserpass")
- `("PATH" ":" prefix
- (,(string-append gnupg "/bin"))))
- #t))))))
+ (list #:import-path "github.com/browserpass/browserpass-native"
+ #:install-source? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'patch-makefile
+ (lambda _
+ ;; This doesn't go in #:make-flags because the Makefile
+ ;; itself gets installed.
+ (substitute* "src/github.com/browserpass/browserpass-native/Makefile"
+ (("PREFIX \\?= /usr")
+ (string-append "PREFIX ?= " #$output)))))
+ (add-before 'build 'configure
+ (lambda _
+ (with-directory-excursion
+ "src/github.com/browserpass/browserpass-native"
+ (invoke "make" "configure"))))
+ (replace 'build
+ (lambda _
+ (with-directory-excursion
+ "src/github.com/browserpass/browserpass-native"
+ (invoke "make"))))
+ (replace 'install
+ (lambda _
+ (with-directory-excursion
+ "src/github.com/browserpass/browserpass-native"
+ (invoke "make" "install"))))
+ (add-after 'install 'wrap-executable
+ (lambda _
+ (wrap-program (string-append #$output "/bin/browserpass")
+ `("PATH" ":" prefix
+ (,(string-append #$(this-package-input "gnupg") "/bin")))))))))
(native-inputs
(list which))
(inputs
- (list gnupg go-github-com-mattn-go-zglob
+ (list bash-minimal gnupg go-github-com-mattn-go-zglob
go-github-com-rifflock-lfshook go-github-com-sirupsen-logrus
go-golang-org-x-sys))
(home-page "https://github.com/browserpass/browserpass-native")
diff --git a/gnu/packages/patches/directfb-davinci-glibc-228-compat.patch b/gnu/packages/patches/directfb-davinci-glibc-228-compat.patch
new file mode 100644
index 0000000000..eeee337f57
--- /dev/null
+++ b/gnu/packages/patches/directfb-davinci-glibc-228-compat.patch
@@ -0,0 +1,41 @@
+This patch is from upstream
+
+From 3a236241bbec3f15b012b6f0dbe94353d8094557 Mon Sep 17 00:00:00 2001
+From: Andrew Childs <lorne@cons.org.nz>
+Date: Sat, 2 May 2020 12:36:46 +0900
+Subject: [PATCH] davinci: fix build with glibc >= 2.28
+
+From glibc 2.28 release notes:
+
+* The macros 'major', 'minor', and 'makedev' are now only available from
+ the header <sys/sysmacros.h>; not from <sys/types.h> or various other
+ headers that happen to include <sys/types.h>. These macros are rarely
+ used, not part of POSIX nor XSI, and their names frequently collide with
+ user code; see https://sourceware.org/bugzilla/show_bug.cgi?id=19239 for
+ further explanation.
+
+ <sys/sysmacros.h> is a GNU extension. Portable programs that require
+ these macros should first include <sys/types.h>, and then include
+ <sys/sysmacros.h> if __GNU_LIBRARY__ is defined.
+
+https://lists.gnu.org/archive/html/info-gnu/2018-08/msg00000.html
+---
+ gfxdrivers/davinci/davinci_c64x.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/gfxdrivers/davinci/davinci_c64x.c b/gfxdrivers/davinci/davinci_c64x.c
+index 431ffdd99..351250a03 100644
+--- a/gfxdrivers/davinci/davinci_c64x.c
++++ b/gfxdrivers/davinci/davinci_c64x.c
+@@ -39,6 +39,11 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
++// Required for `makedev` in glibc >= 2.28
++#if defined(__GNU_LIBRARY__)
++#include <sys/sysmacros.h>
++#endif
++
+ #include <directfb_util.h>
+
+ #include <direct/clock.h>
diff --git a/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch b/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
deleted file mode 100644
index 9f54305b47..0000000000
--- a/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-commit da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d
-Author: Pyry Kontio <pyry.kontio@drasa.eu>
-Date: Mon Jul 6 12:57:35 2020 +0900
-
- Makefile: Fix building on AArch64 NixOS
-
- The parsing of the output of archtest.c produced an unexpected
- value on AArch64 NixOS. For example, the make variable ARCH was set to:
-
- ```
- bit outside of fd_set selected
- arm
- ```
-
- This made the arch and OS checks fail.
-
- This commit simplifies the parsing, making it more robust.
-
- The C files archtest.c, endiantest.c and os.h used to set the
- TARGET_OS, ARCH and ENDIAN variables, respectively, output
- the result of the test as the final line, so just extracting
- the final line and removing double quoting is enough.
-
- This commit also fixes a bug with debug_shell lacking escaping
- single quotes, which prevented using the single quote in the
- debug_shell calls. It used to work by accident before this fix;
- the line in the call happened to contain a balanced pair of double
- quotes and lacked other characters that needed escaping, which
- didn't break the debug_shell, but this was accidental and very
- brittle.
-
- Signed-off-by: Pyry Kontio <pyry.kontio@drasa.eu>
- Change-Id: Iaa4477a71e758cf9ecad2c22f3b77bc6508a3510
- Reviewed-on: https://review.coreboot.org/c/flashrom/+/43140
- Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
- Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-
-diff --git a/Makefile b/Makefile
-index f3f7717e..e475cbdb 100644
---- a/Makefile
-+++ b/Makefile
-@@ -83,7 +83,8 @@ dummy_for_make_3_80:=$(shell printf "Build started on %s\n\n" "$$(date)" >$(BUIL
-
- # Provide an easy way to execute a command, print its output to stdout and capture any error message on stderr
- # in the build details file together with the original stdout output.
--debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(1) ; }' >&2; { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
-+debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(subst ','\'',$(1)) ; }' >&2; \
-+ { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
-
- ###############################################################################
- # General OS-specific settings.
-@@ -106,7 +107,8 @@ endif
- # IMPORTANT: The following line must be placed before TARGET_OS is ever used
- # (of course), but should come after any lines setting CC because the line
- # below uses CC itself.
--override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
-+override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null \
-+ | tail -1 | cut -f 2 -d'"'))
-
- ifeq ($(TARGET_OS), Darwin)
- override CPPFLAGS += -I/opt/local/include -I/usr/local/include
-@@ -490,8 +492,10 @@ endif
- # IMPORTANT: The following line must be placed before ARCH is ever used
- # (of course), but should come after any lines setting CC because the line
- # below uses CC itself.
--override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
--override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null | grep -v '^\#'))
-+override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null \
-+ | tail -1 | cut -f 2 -d'"'))
-+override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \
-+ | tail -1))
-
- # Disable the internal programmer on unsupported architectures (everything but x86 and mipsel)
- ifneq ($(ARCH)-little, $(filter $(ARCH),x86 mips)-$(ENDIAN))
-@@ -1299,12 +1303,12 @@ compiler: featuresavailable
- @printf "Target arch is "
- @# FreeBSD wc will output extraneous whitespace.
- @echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' || \
-- ( echo "unknown. Aborting."; exit 1)
-+ ( echo "unknown (\"$(ARCH)\"). Aborting."; exit 1)
- @printf "%s\n" '$(ARCH)'
- @printf "Target OS is "
- @# FreeBSD wc will output extraneous whitespace.
- @echo $(TARGET_OS)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' || \
-- ( echo "unknown. Aborting."; exit 1)
-+ ( echo "unknown (\"$(TARGET_OS)\"). Aborting."; exit 1)
- @printf "%s\n" '$(TARGET_OS)'
- ifeq ($(TARGET_OS), libpayload)
- @$(CC) --version 2>&1 | grep -q coreboot || \
diff --git a/gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch b/gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch
new file mode 100644
index 0000000000..bcf297be94
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch
@@ -0,0 +1,57 @@
+This patch is from upstream glibc after 2.33 and is needed in Guix to
+fix glibc-2.33 compilation for riscv64-linux.
+
+From 044e603b698093cf48f6e6229e0b66acf05227e4 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 19 Feb 2021 13:29:00 +0100
+Subject: [PATCH] string: Work around GCC PR 98512 in rawmemchr
+
+---
+ string/rawmemchr.c | 26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/string/rawmemchr.c b/string/rawmemchr.c
+index 59bbeeaa42..b8523118e5 100644
+--- a/string/rawmemchr.c
++++ b/string/rawmemchr.c
+@@ -22,24 +22,28 @@
+ # define RAWMEMCHR __rawmemchr
+ #endif
+
++/* The pragmata should be nested inside RAWMEMCHR below, but that
++ triggers GCC PR 98512. */
++DIAG_PUSH_NEEDS_COMMENT;
++#if __GNUC_PREREQ (7, 0)
++/* GCC 8 warns about the size passed to memchr being larger than
++ PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */
++DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow=");
++#endif
++#if __GNUC_PREREQ (11, 0)
++/* Likewise GCC 11, with a different warning option. */
++DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread");
++#endif
++
+ /* Find the first occurrence of C in S. */
+ void *
+ RAWMEMCHR (const void *s, int c)
+ {
+- DIAG_PUSH_NEEDS_COMMENT;
+-#if __GNUC_PREREQ (7, 0)
+- /* GCC 8 warns about the size passed to memchr being larger than
+- PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */
+- DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow=");
+-#endif
+-#if __GNUC_PREREQ (11, 0)
+- /* Likewise GCC 11, with a different warning option. */
+- DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread");
+-#endif
+ if (c != '\0')
+ return memchr (s, c, (size_t)-1);
+- DIAG_POP_NEEDS_COMMENT;
+ return (char *)s + strlen (s);
+ }
+ libc_hidden_def (__rawmemchr)
+ weak_alias (__rawmemchr, rawmemchr)
++
++DIAG_POP_NEEDS_COMMENT;
+--
diff --git a/gnu/packages/patches/guile-fibers-libevent-32-bit.patch b/gnu/packages/patches/guile-fibers-libevent-32-bit.patch
new file mode 100644
index 0000000000..a1cc99fdbe
--- /dev/null
+++ b/gnu/packages/patches/guile-fibers-libevent-32-bit.patch
@@ -0,0 +1,18 @@
+This fixes a bug with the libevent backend on 32-bit platforms:
+
+ https://github.com/wingo/fibers/issues/86
+
+diff --git a/extensions/libevent.c b/extensions/libevent.c
+index 4f44de9..52c9d73 100644
+--- a/extensions/libevent.c
++++ b/extensions/libevent.c
+@@ -215,7 +215,8 @@ run_event_loop (void *p)
+ microsec = -1;
+ else if (data->timeout >= 0)
+ {
+- microsec = data->timeout / time_units_per_microsec;
++ microsec = (time_units_per_microsec == 0)
++ ? 0 : data->timeout / time_units_per_microsec;
+ tv.tv_sec = 0;
+ tv.tv_usec = microsec;
+ }
diff --git a/gnu/packages/patches/hubbub-maybe-uninitialized.patch b/gnu/packages/patches/hubbub-maybe-uninitialized.patch
new file mode 100644
index 0000000000..6f289a770e
--- /dev/null
+++ b/gnu/packages/patches/hubbub-maybe-uninitialized.patch
@@ -0,0 +1,40 @@
+From 69d81a8a4d4c223aad67cde0fdf64d64351b9802 Mon Sep 17 00:00:00 2001
+From: Andy Tai <atai@atai.org>
+Date: Sat, 27 May 2023 00:01:34 -0700
+Subject: [PATCH] prevent -Werror=maybe-uninitialized build failure with gcc 11
+ when building tests tokeniser2 and tokeniser3
+
+---
+ test/tokeniser2.c | 2 +-
+ test/tokeniser3.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/tokeniser2.c b/test/tokeniser2.c
+index c8ab9c0..4caae38 100644
+--- a/test/tokeniser2.c
++++ b/test/tokeniser2.c
+@@ -438,7 +438,7 @@ hubbub_error token_handler(const hubbub_token *token, void *pw)
+ /* Expected token only contained part of the data
+ * Calculate how much is left, then try again with
+ * the next expected token */
+- hubbub_token t;
++ hubbub_token t = { 0 };
+
+ t.type = HUBBUB_TOKEN_CHARACTER;
+ t.data.character.ptr += len;
+diff --git a/test/tokeniser3.c b/test/tokeniser3.c
+index e33d018..b3be901 100644
+--- a/test/tokeniser3.c
++++ b/test/tokeniser3.c
+@@ -447,7 +447,7 @@ hubbub_error token_handler(const hubbub_token *token, void *pw)
+ /* Expected token only contained part of the data
+ * Calculate how much is left, then try again with
+ * the next expected token */
+- hubbub_token t;
++ hubbub_token t = { 0 };
+
+ t.type = HUBBUB_TOKEN_CHARACTER;
+ t.data.character.ptr += len;
+--
+2.40.1
+
diff --git a/gnu/packages/patches/ibus-anthy-fix-tests.patch b/gnu/packages/patches/ibus-anthy-fix-tests.patch
new file mode 100644
index 0000000000..6934358980
--- /dev/null
+++ b/gnu/packages/patches/ibus-anthy-fix-tests.patch
@@ -0,0 +1,49 @@
+Submitted upstream: https://github.com/ibus/ibus-anthy/pull/35
+
+diff --git a/tests/test-build.sh b/tests/test-build.sh
+index e83b78f..a0efe32 100755
+--- a/tests/test-build.sh
++++ b/tests/test-build.sh
+@@ -63,26 +63,27 @@ parse_args()
+ done;
+ }
+
++maybe_install_pycotap() {
++ # Check if pycotap is already available.
++ python3 -m pycotap >/dev/null && return 0
++
++ # Red Hat specific hint.
++ if test -f /etc/redhat-release ; then
++ if ! rpm -q --quiet python3-pycotap; then
++ echo "Please install python3-pycotap"
++ exit -1
++ fi
++ fi;
++}
++
+ init_environment()
+ {
+ if test x$FORCE_TEST != x ; then
+ RUN_ARGS="$RUN_ARGS --force";
+ fi;
+- HAS_TAP=0;
+- if test -f /etc/redhat-release ; then
+- rpm -q --quiet python3-pycotap
+- if test $? -ne 0 ; then
+- echo "Not found python3-pycotap";
+- exit -1;
+- fi;
+- HAS_TAP=1;
+- fi;
+- TAP_DIR=`python -m site --user-site`/pycotap;
+- if test $HAS_TAP -ne 1 && \
+- test x"$TAP_DIR" != x && test ! -d "$TAP_DIR" ; then
+- echo "pip install pycotap --user";
+- pip install pycotap --user;
+- fi;
++
++ maybe_install_pycotap
++
+ if test ! -f $BUILDDIR/../data/$ANTHY_SCHEMA_FILE ; then
+ echo "Not found $BUILDDIR/../data/$ANTHY_SCHEMA_FILE";
+ exit -1;
diff --git a/gnu/packages/patches/libtree-fix-check-non-x86.patch b/gnu/packages/patches/libtree-fix-check-non-x86.patch
new file mode 100644
index 0000000000..51f020c5d3
--- /dev/null
+++ b/gnu/packages/patches/libtree-fix-check-non-x86.patch
@@ -0,0 +1,50 @@
+From 061d3ec62707a526a83482e57d202a66f9d776cd Mon Sep 17 00:00:00 2001
+From: Ismael Luceno <ismael@iodev.co.uk>
+Date: Tue, 23 Aug 2022 19:34:39 +0200
+Subject: [PATCH] Test the -m32 and -m64 compiler flags before use
+
+Fixes: https://github.com/haampie/libtree/issues/78
+Signed-off-by: Ismael Luceno <ismael@iodev.co.uk>
+---
+ tests/05_32_bits/Makefile | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/tests/05_32_bits/Makefile b/tests/05_32_bits/Makefile
+index 2c0bece..5628f42 100644
+--- a/tests/05_32_bits/Makefile
++++ b/tests/05_32_bits/Makefile
+@@ -3,7 +3,7 @@
+
+ LD_LIBRARY_PATH=
+
+-.PHONY: clean
++.PHONY: clean check
+
+ all: check
+
+@@ -21,11 +21,21 @@ exe64: lib64/libx.so
+ exe32: lib32/libx.so
+ echo 'extern int a(); int _start(){return a();}' | $(CC) -m32 "-Wl,-rpath,$(CURDIR)/lib64" "-Wl,-rpath,$(CURDIR)/lib32" -o $@ -nostdlib -x c - -Llib32 -lx
+
+-check: exe32 exe64
+- ../../libtree exe32
+- ../../libtree exe64
+-
+ clean:
+ rm -rf lib32 lib64 exe*
+
+ CURDIR ?= $(.CURDIR)
++
++test-flag = 2>/dev/null ${CC} -E /dev/null
++test-end = && echo y || echo n
++support-m32 != ${test-flag} -m32 ${test-end}
++support-m64 != ${test-flag} -m64 ${test-end}
++
++check${support-m32:y=}:: exe32
++ ../../libtree exe32
++
++check${support-m64:y=}:: exe64
++ ../../libtree exe64
++
++check${support-m32:n=} check${support-m64:n=}::
++ @echo WARNING: test skipped at ${CURDIR}
diff --git a/gnu/packages/patches/python-keras-integration-test.patch b/gnu/packages/patches/python-keras-integration-test.patch
deleted file mode 100644
index aa2b1a273d..0000000000
--- a/gnu/packages/patches/python-keras-integration-test.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Fix a test failure with recent versions of ... Pytest? Python?
-
-Taken from upstream:
-https://github.com/keras-team/keras/commit/fe35050a8f18dc52304aa8da4e463eececa25240
-
-diff --git a/tests/integration_tests/applications_test.py b/tests/integration_tests/applications_test.py
-index 979f2f2abd6..6e3b57fa8e2 100644
---- a/tests/integration_tests/applications_test.py
-+++ b/tests/integration_tests/applications_test.py
-@@ -58,7 +58,8 @@ def _test_application_basic(app, last_dim=1000):
- def _test_application_notop(app, last_dim):
- output_shape = _get_output_shape(
- lambda: app(weights=None, include_top=False))
-- assert output_shape == (None, None, None, last_dim)
-+ assert len(output_shape) == 4
-+ assert output_shape[-1] == last_dim
-
-
- def test_mobilenet_v2_legacy_import():
diff --git a/gnu/packages/patches/quodlibet-fix-invalid-glob.patch b/gnu/packages/patches/quodlibet-fix-invalid-glob.patch
new file mode 100644
index 0000000000..95f95d8aab
--- /dev/null
+++ b/gnu/packages/patches/quodlibet-fix-invalid-glob.patch
@@ -0,0 +1,89 @@
+From 5f55431a28509fd4f4f7b40dc246f3d34fa8549e Mon Sep 17 00:00:00 2001
+From: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Sun, 26 Jun 2022 23:14:28 +0200
+Subject: [PATCH] builtin cover: fix handling of invalid glob ranges with
+ Python 3.10.5+ (#4027)
+
+Previously Python would raise if an invalid range was given
+to glob, but with 3.10.5 they fixed it to not match anything.
+https://github.com/python/cpython/issues/89973
+
+Our tests depended on the previous logic and treating the glob pattern
+as a literal file name in that case.
+
+One could argue that this is wrong since a range that doesn't contain anything
+should also not match anything, so wrap glob() to make it not match for all
+Python versions in that case and adjust the tests accordingly.
+
+This should fix the Windows CI, which is currently the only job using 3.10.5
+---
+ quodlibet/util/cover/built_in.py | 22 +++++++++++-----------
+ tests/test_util_cover.py | 12 +++---------
+ 2 files changed, 14 insertions(+), 20 deletions(-)
+
+diff --git a/quodlibet/util/cover/built_in.py b/quodlibet/util/cover/built_in.py
+index f2a8791a2..01474c9b6 100644
+--- a/quodlibet/util/cover/built_in.py
++++ b/quodlibet/util/cover/built_in.py
+@@ -100,6 +100,15 @@ class FilesystemCover(CoverSourcePlugin):
+ base = self.song('~dirname')
+ images = []
+
++ def safe_glob(*args, **kwargs):
++ try:
++ return glob.glob(*args, **kwargs)
++ except sre_constants.error:
++ # https://github.com/python/cpython/issues/89973
++ # old glob would fail with invalid ranges, newer one
++ # handles it correctly.
++ return []
++
+ if config.getboolean("albumart", "force_filename"):
+ score = 100
+ for filename in config.get("albumart", "filename").split(","):
+@@ -107,17 +116,8 @@ class FilesystemCover(CoverSourcePlugin):
+ filename = filename.strip()
+
+ escaped_path = os.path.join(glob.escape(base), filename)
+- try:
+- for path in glob.glob(escaped_path):
+- images.append((score, path))
+- except sre_constants.error:
+- # Use literal filename if globbing causes errors
+- path = os.path.join(base, filename)
+-
+- # We check this here, so we can search for alternative
+- # files in case no preferred file was found.
+- if os.path.isfile(path):
+- images.append((score, path))
++ for path in safe_glob(escaped_path):
++ images.append((score, path))
+
+ # So names and patterns at the start are preferred
+ score -= 1
+diff --git a/tests/test_util_cover.py b/tests/test_util_cover.py
+index db81e4d1f..71a48ad9a 100644
+--- a/tests/test_util_cover.py
++++ b/tests/test_util_cover.py
+@@ -105,15 +105,9 @@ class TCoverManager(TestCase):
+ config.set("albumart", "force_filename", str(True))
+ config.set("albumart", "filename", "[a-2].jpg")
+
+- # Should match
+- f = self.add_file("[a-2].jpg")
+- assert path_equal(
+- os.path.abspath(self._find_cover(self.song).name), f)
+-
+- # Should not crash
+- f = self.add_file("test.jpg")
+- assert not path_equal(
+- os.path.abspath(self._find_cover(self.song).name), f)
++ # Invalid glob range, should not match anything
++ self.add_file("a.jpg")
++ assert self._find_cover(self.song) is None
+
+ def test_invalid_glob_path(self):
+ config.set("albumart", "force_filename", str(True))
+--
+2.39.2
+
diff --git a/gnu/packages/patches/quodlibet-fix-mtime-tests.patch b/gnu/packages/patches/quodlibet-fix-mtime-tests.patch
new file mode 100644
index 0000000000..037f77d868
--- /dev/null
+++ b/gnu/packages/patches/quodlibet-fix-mtime-tests.patch
@@ -0,0 +1,39 @@
+From 06a32b319f065550efe0d2a9ff10ca6bdc32b893 Mon Sep 17 00:00:00 2001
+From: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Sat, 23 Jul 2022 20:15:18 +0200
+Subject: [PATCH] operon: hopefully better fix for flaky mtime tests
+
+copy the mtime after we write everything, so there is no chance of
+it changing before we note the initial value.
+---
+ quodlibet/operon/commands.py | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/quodlibet/operon/commands.py b/quodlibet/operon/commands.py
+index e0a5ef33a..af2dcfa8b 100644
+--- a/quodlibet/operon/commands.py
++++ b/quodlibet/operon/commands.py
+@@ -227,16 +227,16 @@ class EditCommand(Command):
+ # write to tmp file
+ fd, path = tempfile.mkstemp(suffix=".txt")
+
+- # XXX: copy mtime here so we can test for changes in tests by
+- # setting a out of date mtime on the source song file
+- copy_mtime(args[0], path)
+-
+ try:
+ try:
+ os.write(fd, dump)
+ finally:
+ os.close(fd)
+
++ # XXX: copy mtime here so we can test for changes in tests by
++ # setting a out of date mtime on the source song file
++ copy_mtime(args[0], path)
++
+ # only parse the result if the editor returns 0 and the mtime has
+ # changed
+ old_mtime = mtime(path)
+--
+2.39.2
+
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index 741dcdf787..140bbd0e90 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2022 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
;;;
@@ -33,7 +33,6 @@
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages linux)
#:use-module (gnu packages base))
@@ -162,7 +161,7 @@ Each database is contained in a specific package output, such as the
(native-inputs
(list `(,hwdata "pci") pkg-config which))
(inputs
- `(,@(if (not (hurd-target?))
+ `(,@(if (not (target-hurd?))
`(("kmod" ,kmod))
'())
("zlib" ,zlib)))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 1f3cc4ba46..96d4484bf2 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -68,6 +68,7 @@
#:use-module (gnu packages fonts)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages game-development)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
@@ -113,21 +114,23 @@
#:use-module (gnu packages xorg)
#:use-module (srfi srfi-1))
-(define-public a4pdf
+(define-public capypdf
(package
- (name "a4pdf")
- (version "0.1.0")
+ (name "capypdf")
+ (version "0.3.0")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/jpakkane/a4pdf")
+ (url "https://github.com/jpakkane/capypdf")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "18062cm1qsbaymmjar0whbd7kaggy4x7wzp7xw94kcd1pwx2jp1p"))))
+ (base32 "193izn2jw55w2dxy6l0vz5zrlar9lm7a6z443nw0vs4mlj4jnasi"))))
(build-system meson-build-system)
(arguments
- (list #:phases
+ (list #:meson meson/newer
+ #:test-options '(list "plainc")
+ #:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'add-missing-header
(lambda _
@@ -139,14 +142,7 @@
;; XXX: remove when bumping glib
(substitute* "src/pdfviewer.cpp"
(("G_APPLICATION_DEFAULT_FLAGS")
- "G_APPLICATION_FLAGS_NONE"))))
- (add-after 'unpack 'fix-broken-tests
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- (substitute* "test/a4pdftests.py"
- (("'Ghostscript not found, test suite can not be run.'")
- ;; Sucks, but there's no point in repairing a certain test
- ;; at the moment.
- "0")))))))
+ "G_APPLICATION_FLAGS_NONE")))))))
(inputs (list fmt
freetype
gtk
@@ -155,7 +151,8 @@
libpng
zlib))
(native-inputs (list font-google-noto
- ;; ghostscript
+ gcc-12
+ ghostscript
pkg-config
python
python-pillow))
@@ -167,6 +164,9 @@ directly. It uses LittleCMS for color management but otherwise does not
convert data in any way.")
(license license:asl2.0)))
+(define-public a4pdf
+ (deprecated-package "a4pdf" capypdf))
+
(define-public diffpdf
(let ((commit "ba68231d3d05e0cb3a2d4a4fca8b70d4044f4303")
(revision "1"))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index d7312372de..15d4f3a9bc 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -32,7 +32,7 @@
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
-;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
+;;; Copyright © 2022, 2023 Evgeny Pisemsky <evgeny@pisemsky.com>
;;; Copyright © 2022 gemmaro <gemmaro.dev@gmail.com>
;;; Copyright © 2023 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
;;; Copyright © 2023 Andreas Enge <andreas@enge.fr>
@@ -6333,7 +6333,7 @@ expression and a list of abbreviations (built in and given).")
(define-public perl-lingua-translit
(package
(name "perl-lingua-translit")
- (version "0.28")
+ (version "0.29")
(source
(origin
(method url-fetch)
@@ -6341,7 +6341,7 @@ expression and a list of abbreviations (built in and given).")
"Lingua-Translit-" version ".tar.gz"))
(sha256
(base32
- "1qgap0j0ixmif309dvbqca7sy8xha9xgnj9s2lvh8qrczkc92gqi"))))
+ "0lkpb698p1a5b7r0m5mz23k95cgbr4vm9mfrnw4dgnkr02ygmlhs"))))
(build-system perl-build-system)
(arguments
(list
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index c498703205..0a954c0e6f 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -459,7 +459,7 @@ photographic equipment.")
(define-public darktable
(package
(name "darktable")
- (version "4.2.1")
+ (version "4.4.0")
(source
(origin
(method url-fetch)
@@ -467,7 +467,7 @@ photographic equipment.")
"https://github.com/darktable-org/darktable/releases/"
"download/release-" version "/darktable-" version ".tar.xz"))
(sha256
- (base32 "1b3vr6njwqfvnrx3qpbg5aqcbl1z8nxnxcgyyw0sd4a20z33jfk0"))))
+ (base32 "105hyc8rhc8md683h8mbvqxxc2f5w2bk3348n2c4jz6rmcsgr1w8"))))
(build-system cmake-build-system)
(arguments
(list
@@ -514,13 +514,13 @@ photographic equipment.")
(,(string-append #$(this-package-input "gtk+")
"/share/glib-2.0/schemas")))))))))
(native-inputs
- (list clang-11
+ (list clang
cmocka
desktop-file-utils
`(,glib "bin")
gobject-introspection
intltool
- llvm-11 ;should match the Clang version
+ llvm ;should match the Clang version
opencl-headers
perl
pkg-config
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 3ae078db75..df9267692a 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -34,13 +34,13 @@
(define-public purescript
(package
(name "purescript")
- (version "0.15.8")
+ (version "0.15.9")
(source
(origin
(method url-fetch)
(uri (hackage-uri "purescript" version))
(sha256
- (base32 "1h5d5hjc9hrlk718lf62qzaq1l6ppr0l2b3fl78csyh86cihh750"))))
+ (base32 "1i9wszs5kwwq0l8l4if05y8xc8fih10assrdj8q1ipr0hx3zjawm"))))
(build-system haskell-build-system)
(properties '((upstream-name . "purescript")))
(inputs (list ghc-aeson
@@ -109,7 +109,8 @@
dep))))
(add-after 'register 'remove-libraries
(lambda* (#:key outputs #:allow-other-keys)
- (delete-file-recursively (string-append (assoc-ref outputs "out") "/lib")))))))
+ (delete-file-recursively
+ (string-append (assoc-ref outputs "out") "/lib")))))))
(home-page "https://www.purescript.org/")
(synopsis "Haskell inspired programming language compiling to JavaScript")
(description
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 528bfe604a..44babe5c8c 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
;;; Copyright © 2023 Juliana Sims <juli@incana.org>
+;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1024,14 +1025,14 @@ provides drop-in compatibility with PyCrypto.")))
(define-public python-m2crypto
(package
(name "python-m2crypto")
- (version "0.35.2")
+ (version "0.38.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "M2Crypto" version))
(sha256
- (base32 "09yirf3w77w6f49q6nxhrjm9c3a4y9s30s1k09chqrw8zdgx8sjc"))))
- (build-system python-build-system)
+ (base32 "1jyynaybncgjp8rndrwjpj5gnbrislngimf6ind9874h6052dwlr"))))
+ (build-system pyproject-build-system)
(arguments
`(;; FIXME: Tests start failing with time due to date checks in TLS
;; certificates.
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 7d3319e367..a8e43d96cf 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -1341,7 +1341,7 @@ aggregated sum and more.")
(define-public python-pyvista
(package
(name "python-pyvista")
- (version "0.36.1")
+ (version "0.39.1")
(source
;; The PyPI tarball does not contain the tests.
;; (However, we don't yet actually run the tests.)
@@ -1352,15 +1352,15 @@ aggregated sum and more.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1kjilcrz2cyh67n79r8dpxrans99mlviz2whc6g7j8hgn7v14z2n"))))
+ (base32 "00nij00z5r35f6dx7mwndsrpmiw43adjk8x35mk308c369ylbv9p"))))
(build-system python-build-system)
(propagated-inputs
- (list python-appdirs
- python-imageio
+ (list python-imageio
python-matplotlib
python-meshio
python-numpy
python-pillow
+ python-pooch
python-scooby
vtk))
(arguments
@@ -1371,7 +1371,7 @@ aggregated sum and more.")
(delete 'check)
;; Disable the sanity check, which fails with the following error:
;;
- ;; ...checking requirements: ERROR: pyvista==0.34.0 DistributionNotFound(Requirement.parse('vtk'), {'pyvista'})
+ ;; ...checking requirements: ERROR: pyvista==0.39.1 DistributionNotFound(Requirement.parse('vtk'), {'pyvista'})
(delete 'sanity-check))))
(home-page "https://docs.pyvista.org/")
(synopsis "3D plotting and mesh analysis through VTK")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 8cf03d3737..6869eb0a8b 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -8101,7 +8101,7 @@ characters in a smarter, more visually pleasing style.")
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "pytest" "-vv" "test")))))))
- (native-inputs (list python-pytest))
+ (native-inputs (list python-mock python-pytest))
(propagated-inputs
(list python-beautifulsoup4 python-html5lib python-requests))
(home-page "https://github.com/microformats/mf2py")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 98abf038a5..b650b71f3b 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -137,6 +137,8 @@
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Kaelyn Takata <kaelyn.alexi@protonmail.com>
;;; Copyright © 2023 Dominik Delgado Steuter <d@delgado.nrw>
+;;; Copyright © 2023 Ivan Vilata-i-Balaguer <ivan@selidor.net>
+;;; Copyright © 2023 Ontje Lünsdorf <ontje.luensdorf@dlr.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1064,6 +1066,38 @@ MySQL databases, using an API that is compliant with the Python Database API
Specification v2.0 (PEP 249).")
(license license:gpl2)))
+(define-public python-pdoc
+ (package
+ (name "python-pdoc")
+ (version "13.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mitmproxy/pdoc")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0gxkw607nrd67ck4w8jri9vfrm5g60qvp8b134m8zkiphbxjnx0l"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-pytest python-jinja2 python-pygments))
+ (arguments
+ (list
+ ;; Some tests fail, presumably because of slight version mismatches of
+ ;; the dependencies.
+ #:test-flags
+ '(list "-k" (string-append "not test_var_with_raising_repr and "
+ "not test_smoke[mock] and "
+ "not test_snapshots[html"))))
+ (home-page "https://pdoc.dev/")
+ (synopsis "API documentation for Python projects")
+ (description "pdoc auto-generates API documentation that follows your
+project's Python module hierarchy. It requires no configuration, has
+first-class support for type annotations, cross-links between identifiers,
+comes with an integrated live-reloading web server, uses customizable HTML
+templates, understands numpydoc and Google-style docstrings.")
+ (license license:unlicense)))
+
(define-public python-py4j
(package
(name "python-py4j")
@@ -1715,14 +1749,22 @@ attacks or network discovery.")
(define-public python-shapely
(package
(name "python-shapely")
- (version "1.8.4")
+ (version "2.0.1")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "Shapely" version))
+ (uri (pypi-uri "shapely" version))
(sha256
- (base32 "130rqd0czi128wm5pdn47v4m6czxd7pkzanbya8q48gsm8ffb5d1"))))
- (build-system python-build-system)
+ (base32 "14v88k0y7qhp8n5clip6w96pkdzrfqa2hsjkhpy9gkifwyiv39k6"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:phases
+ '(modify-phases %standard-phases
+ (add-before 'check 'build-extensions
+ (lambda _
+ ;; Cython extensions have to be built before running the tests.
+ (invoke "python" "setup.py" "build_ext" "--inplace"))))))
(native-inputs
(list python-cython python-matplotlib python-pytest
python-pytest-cov))
@@ -1730,25 +1772,6 @@ attacks or network discovery.")
(list geos))
(propagated-inputs
(list python-numpy))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-geos-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((geos (assoc-ref inputs "geos"))
- (glibc (assoc-ref inputs ,(if (%current-target-system)
- "cross-libc" "libc"))))
- (substitute* '("shapely/geos.py" "shapely/_buildcfg.py")
- (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
- (string-append "_lgeos = load_dll('geos_c', fallbacks=['"
- geos "/lib/libgeos_c.so'])"))
- (("free = load_dll\\('c'\\)\\.free")
- (string-append "free = load_dll('c', fallbacks=['"
- glibc "/lib/libc.so.6']).free"))
- (("free = load_dll\\('c', fallbacks=.*\\)\\.free")
- (string-append "free = load_dll('c', fallbacks=['"
- glibc "/lib/libc.so.6']).free"))))
- #t)))))
(home-page "https://github.com/Toblerity/Shapely")
(synopsis "Library for the manipulation and analysis of geometric objects")
(description "Shapely is a Python package for manipulation and analysis of
@@ -3828,6 +3851,39 @@ matplotlib plots or supply colors for a web application.")
syntax.")
(license license:x11)))
+(define-public python-parsley
+ (package
+ (name "python-parsley")
+ (version "1.3")
+ (source (origin
+ ;; The source distributed on PyPI is outdated.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pyga/parsley")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0550rw65ygqzbjc8a66hs355pzbx727kbn20dssdb6ls846gw2qs"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ ;; XXX: Check why these 3 tests fail.
+ #:test-flags #~(list "-k"
+ (string-append "not test_sending_empty_netstring"
+ " and not test_sending_one_netstring"
+ " and not test_sending_two_netstrings"))))
+ (native-inputs (list python-pytest python-twisted))
+ (home-page "https://launchpad.net/parsley")
+ (synopsis "Parsing and pattern matching Python library")
+ (description
+ "Parsley is a parsing library using PEG algorithm, so each expression in
+the grammar rules works like a Python expression. In particular, alternatives
+are evaluated in order, unlike table-driven parsers such as yacc, bison or PLY.
+Parsley is an implementation of OMeta, an object-oriented pattern-matching
+language.")
+ (license license:expat)))
+
(define-public python-polib
(package
(name "python-polib")
@@ -3906,6 +3962,28 @@ a certain expected condition.")
Cython for speed.")
(license license:expat)))
+(define-public python-portalocker
+ (package
+ (name "python-portalocker")
+ (version "2.7.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "portalocker" version))
+ (sha256
+ (base32
+ "0lawjm736vs86wlnxc3qqh37l11z0yx81xq3dmrw33m86kaq2bh3"))))
+ (build-system pyproject-build-system)
+ (native-inputs (list python-pytest
+ python-pytest-cov
+ python-pytest-mypy
+ python-pytest-timeout
+ python-redis))
+ (home-page "https://github.com/WoLpH/portalocker")
+ (synopsis "Python library for file locking")
+ (description "Portalocker is a library to provide an easy API to file
+locking..")
+ (license license:bsd-3)))
+
(define-public python-poyo
(package
(name "python-poyo")
@@ -4086,6 +4164,33 @@ accuracy scores for various music/audio information retrieval/signal
processing tasks.")
(license license:expat)))
+(define-public python-mizani
+ (package
+ (name "python-mizani")
+ (version "0.9.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/has2k1/mizani")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "13aisfc98nvypb4mglpdphp2r627cjzpdriw4dhlx55f3b2m0dza"))))
+ (build-system pyproject-build-system)
+ (propagated-inputs
+ (list python-matplotlib python-numpy python-pandas python-scipy))
+ (native-inputs
+ (list python-setuptools python-pytest python-pytest-cov tzdata))
+ (home-page "https://github.com/has2k1/mizani")
+ (synopsis "Create data visualizations in Python")
+ (description
+ "Mizani is a Python package for creating data visualizations. It
+provides functions and tools to help with the creation of visually appealing
+and informative visualizations, including scales, transformations and color
+palettes.")
+ (license license:bsd-3)))
+
(define-public python-pafy
(package
(name "python-pafy")
@@ -6811,13 +6916,13 @@ writing C extensions for Python as easy as Python itself.")
;; Cython 3 is not officially released yet, so distinguish the name
;; for now.
(name "python-cython-next")
- (version "3.0.0a10")
+ (version "3.0.0b2")
(source (origin
(method url-fetch)
(uri (pypi-uri "Cython" version))
(sha256
(base32
- "17fqacrpis05w1rpi7d7sbimrk20xf8h6d3vrz5nf6ix3899abil"))))
+ "0mb7gpavs87am29sbk6yqznsybxj9dk4fwj4370j9sbrcmjq0hkc"))))
(properties '())))
;; NOTE: when upgrading numpy please make sure that python-numba,
@@ -11740,13 +11845,13 @@ applications.")
(define-public python-pyzmq
(package
(name "python-pyzmq")
- (version "25.0.2")
+ (version "25.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyzmq" version))
(sha256
- (base32 "0jai5sbd4ypihsvr4ikq6d93nkmxwv53598sh24dqs78f2xip33b"))
+ (base32 "0mw9zf0h9sgn2cchw24vyxgyi2nfpyfacr0mh072hdjx8qii1i40"))
(snippet
#~(begin
(use-modules (guix build utils))
@@ -11774,17 +11879,16 @@ applications.")
(lambda _
;; FIXME: The test_draft.TestDraftSockets test fails with:
;; zmq.error.Again: Resource temporarily unavailable
- (delete-file "zmq/tests/test_draft.py")
- ;; These tests fail for unknown reasons (see:
- ;; https://github.com/zeromq/pyzmq/issues/1853).
- (delete-file "zmq/tests/test_auth.py")
- (delete-file "zmq/tests/test_zmqstream.py")))
+ (delete-file "zmq/tests/test_draft.py")))
(add-before 'check 'build-extensions
(lambda _
;; Cython extensions have to be built before running the tests.
- (invoke "python" "setup.py" "build_ext" "--inplace"))))))
- (inputs
- (list zeromq))
+ (invoke "python" "setup.py" "build_ext" "--inplace")))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-vv")))))))
+ (inputs (list zeromq))
(native-inputs
(list pkg-config
python-cython
@@ -17925,13 +18029,13 @@ to occurrences in strings and comments.")
(define-public python-py3status
(package
(name "python-py3status")
- (version "3.21")
+ (version "3.50")
(source
(origin
(method url-fetch)
(uri (pypi-uri "py3status" version))
(sha256
- (base32 "16z8zq83hxy48g6hh4xczbdz50qvxv9k1aahr4fqq7jis60cc262"))))
+ (base32 "0j2dx9lzpic15r8p0r0s3jmcskxpacahxl640b4864ldn5rlnh9d"))))
(build-system python-build-system)
(inputs
(list file))
@@ -25147,20 +25251,33 @@ they use the same path.")
(define-public python-blosc
(package
(name "python-blosc")
- (version "1.5.1")
+ (version "1.11.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "blosc" version))
(sha256
(base32
- "1cm91c6r431yla2mbs4895bgiianjf30dfz14vvv99dslygd65jw"))))
+ "0xmjs28sgpnb940zrhw010dq2m9d8a5h4fgnjyk6645fgfr1j8f2"))
+ (snippet
+ #~(begin (use-modules (guix build utils))
+ (delete-file-recursively "blosc/c-blosc")))))
(build-system python-build-system)
- ;; FIXME: all tests pass, but then this error is printed:
- ;; TypeError: calling <function run at 0x7ffff2568d90> returned None, not a test
- (arguments '(#:tests? #f))
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'find-blosc
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "USE_SYSTEM_BLOSC" "1")
+ (setenv "Blosc_ROOT" #$(this-package-input "c-blosc"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "python" "-m" "blosc.test")))))))
(propagated-inputs
- (list python-numpy))
+ (list python-scikit-build python-numpy))
+ (inputs (list c-blosc))
+ (native-inputs (list cmake-minimal))
(home-page "https://github.com/blosc/python-blosc")
(synopsis "Python wrapper for the Blosc data compressor library")
(description "Blosc is a high performance compressor optimized for binary
@@ -25306,6 +25423,7 @@ parentdir_prefix = dask-
(propagated-inputs
(list python-cloudpickle
python-fsspec
+ python-importlib-metadata ;needed at runtime for dask/_compatibility.py
python-numpy
python-packaging
python-pandas
@@ -25450,26 +25568,15 @@ RFC 8265 and RFC 8266.")
(define-public python-absl-py
(package
(name "python-absl-py")
- (version "0.6.1")
+ (version "1.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "absl-py" version))
(sha256
(base32
- "1mp9lk0b2qa37b7y6ak4lvf6ifw2ylyy6bkf9ik77md3j4xrwlc7"))))
+ "0ga3b0m8lfsv1m3260p83lhis52yvz3d42q8gip4gfj823849hnj"))))
(build-system pyproject-build-system)
- (arguments
- (list
- #:phases
- '(modify-phases %standard-phases
- (add-after 'unpack 'patch-version-check
- (lambda _
- ;; Python 3.10 is indeed more recent than Python 3.4.
- (substitute* "setup.py"
- ((" or py_version\\[0\\] == '3'.*") ":")))))))
- (propagated-inputs
- (list python-six))
(home-page "https://github.com/abseil/abseil-py")
(synopsis "Abseil Python common libraries")
(description
@@ -27285,17 +27392,15 @@ an upload option to send your work back to the platform.")
(define-public python-titlecase
(package
(name "python-titlecase")
- (version "0.12.0")
+ (version "2.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "titlecase" version))
(sha256
(base32
- "0486i99wf8ssa7sgn81fn6fv6i4rhhq6n751bc740b3hzfbpmpl4"))))
+ "00h92jdpj108z4sb6dpayfblpax20698290jnbyi5z5iwk5974i6"))))
(build-system python-build-system)
- (native-inputs
- (list python-nose))
(home-page "https://github.com/ppannuto/python-titlecase")
(synopsis "Capitalize strings similar to book titles")
(description
@@ -29722,13 +29827,13 @@ and frame grabber interface.")
(define-public python-scikit-build
(package
(name "python-scikit-build")
- (version "0.17.1")
+ (version "0.17.6")
(source
(origin
(method url-fetch)
(uri (pypi-uri "scikit_build" version))
(sha256
- (base32 "0v1qcn3nsjxqdl6fa07b7acq6xndqbvvic5dvsgbjgldkjr1drqp"))))
+ (base32 "17awdvpzj4bn50gk4gmj20r2xcjr5y8lfl2bk582di1pdfim26mm"))))
(build-system pyproject-build-system)
(arguments
(list
@@ -29767,11 +29872,7 @@ and frame grabber interface.")
;; nondeterministically (see:
;; https://github.com/scikit-build/scikit-build/issues/711).
"and not test_generator_cleanup "
- "and not test_generator_selection "
- ;; The compiler test fails with a
- ;; SKBuildGeneratorNotFoundError error (see:
- ;; https://github.com/scikit-build/scikit-build/issues/945).
- "and not test_cxx_compiler "))))))))
+ "and not test_generator_selection "))))))))
(native-inputs
(list cmake-minimal
gfortran
@@ -29791,7 +29892,8 @@ and frame grabber interface.")
python-pytest-virtualenv
python-pytest-xdist
python-requests
- python-setuptools-scm))
+ python-setuptools-scm
+ python-virtualenv))
(propagated-inputs
(list python-distro python-packaging python-tomli python-wheel))
(home-page "https://github.com/scikit-build/scikit-build")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index bfe8a68352..302f995b0f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -56,7 +56,7 @@
;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com>
;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
@@ -85,7 +85,6 @@
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages dbm)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages libffi)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python-build)
@@ -245,7 +244,7 @@
"Lib/test/support/__init__.py"
"Lib/test/test_subprocess.py"))
(("/bin/sh") (which "sh")))))
- ,@(if (hurd-system?)
+ ,@(if (system-hurd?)
`((add-before 'build 'patch-regen-for-hurd
(lambda* (#:key inputs #:allow-other-keys)
(let ((libc (assoc-ref inputs "libc")))
@@ -458,7 +457,7 @@ data types.")
(format #f "TESTOPTS=-j~d" (parallel-job-count))
;; test_mmap fails on low-memory systems
" --exclude test_mmap test_socket"
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'(" test_posix" ;multiple errors
" test_time"
" test_pty"
@@ -492,7 +491,7 @@ data types.")
'()))))
((#:phases phases)
`(modify-phases ,phases
- ,@(if (hurd-system?)
+ ,@(if (system-hurd?)
`((delete 'patch-regen-for-hurd)) ;regen was removed after 3.5.9
'())
(add-after 'unpack 'remove-windows-binaries
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 1e5d29d9cf..de070ecaf3 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -419,7 +419,7 @@ system, and the core design of Django is reused in Grantlee.")
pkg-config
python
vulkan-headers
- ruby))
+ ruby-2.7))
(arguments
`(#:configure-flags
(let ((out (assoc-ref %outputs "out")))
@@ -2643,7 +2643,7 @@ linux/libcurl_wrapper.h")
pkg-config
python2-six
python-2
- ruby))
+ ruby-2.7))
(inputs
(list alsa-lib
at-spi2-core
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index b1abb65a6d..9709121a19 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -207,25 +207,28 @@ Rails.")
(define-public ruby-debug-inspector
(package
(name "ruby-debug-inspector")
- (version "0.0.3")
+ (version "1.1.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "debug_inspector" version))
(sha256
(base32
- "0vxr0xa1mfbkfcrn71n7c4f2dj7la5hvphn904vh20j3x4j5lrx0"))))
+ "01l678ng12rby6660pmwagmyg8nccvjfgs3487xna7ay378a59ga"))))
(build-system ruby-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "rake" "compile")
- (invoke "ruby" "-Ilib" "-e"
- (string-append
- "require 'debug_inspector'; RubyVM::DebugInspector."
- "open{|dc| p dc.backtrace_locations}")))))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "rake" "compile")
+ (invoke "ruby" "-Ilib" "-e"
+ (string-append
+ "require 'debug_inspector'; RubyVM::DebugInspector."
+ "open{|dc| p dc.backtrace_locations}")))))))
+ (native-inputs
+ (list ruby-rake-compiler))
(synopsis "Ruby wrapper for the MRI 2.0 debug_inspector API")
(description
"This package provides a Ruby wrapper for the MRI 2.0 debug_inspector
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index eb84367d15..8c0e19d015 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -32,6 +32,7 @@
;;; Copyright © 2022, 2023 Remco van 't Veer <remco@remworks.net>
;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
+;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -320,27 +321,27 @@ matching. mruby can be linked and embedded within your application.")
(define-public ruby-commander
(package
(name "ruby-commander")
- (version "4.4.7")
+ (version "4.6.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "commander" version))
(sha256
(base32
- "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
+ "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx"))))
(build-system ruby-build-system)
(arguments
- `(#:test-target "spec"
- #:phases
- (modify-phases %standard-phases
- ;; Don't run or require rubocop, the code linting tool, as this is a
- ;; bit unnecessary.
- (add-after 'unpack 'dont-run-rubocop
- (lambda _
- (substitute* "Rakefile"
- ((".*rubocop.*") "")
- ((".*RuboCop.*") ""))
- #t)))))
+ (list
+ #:test-target "spec"
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Don't run or require rubocop, the code linting tool, as this is a
+ ;; bit unnecessary.
+ (add-after 'unpack 'dont-run-rubocop
+ (lambda _
+ (substitute* "Rakefile"
+ ((".*rubocop.*") "")
+ ((".*RuboCop.*") "")))))))
(propagated-inputs
(list ruby-highline))
(native-inputs
@@ -1211,22 +1212,22 @@ next patch version for example.")
(define-public ruby-rjb
(package
(name "ruby-rjb")
- (version "1.5.5")
+ (version "1.6.7")
(source (origin
(method url-fetch)
(uri (rubygems-uri "rjb" version))
(sha256
(base32
- "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
+ "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9"))))
(build-system ruby-build-system)
(arguments
- `(#:tests? #f ; no rakefile
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'set-java-home
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
- #t)))))
+ (list
+ #:tests? #f ; no rakefile
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'set-java-home
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "JAVA_HOME" (assoc-ref inputs "jdk")))))))
(native-inputs
`(("jdk" ,icedtea "jdk")))
(synopsis "Ruby-to-Java bridge using the Java Native Interface")
@@ -3239,29 +3240,35 @@ and inspect the environment.")
(define-public ruby-ptools
(package
(name "ruby-ptools")
- (version "1.3.5")
+ (version "1.5.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "ptools" version))
(sha256
(base32
- "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
+ "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d"))))
(build-system ruby-build-system)
(arguments
- '(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'patch-/bin/ls
- (lambda _
- (substitute* "test/test_binary.rb"
- (("/bin/ls")
- (which "ls")))
- #t))
- (add-before 'install 'create-gem
- (lambda _
- ;; Do not attempt to sign the gem.
- (substitute* "Rakefile"
- (("spec\\.signing_key = .*")
- ""))
- (invoke "rake" "gem:create"))))))
+ (list
+ #:test-target "spec:all"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda _
+ (substitute* "Rakefile"
+ ;; Don't require rubocop
+ (("require 'rubocop/rake_task'") "")
+ (("RuboCop::RakeTask.new") "")
+ ;; Do not attempt to sign the gem.
+ (("spec\\.signing_key = .*") ""))
+
+ (substitute* "spec/binary_spec.rb"
+ (("/bin/ls") (which "ls"))
+ (("/bin/cat") (which "cat"))
+ (("/bin/chmod") (which "chmod"))
+ (("/bin/df") (which "df"))))))))
+ (native-inputs
+ (list ruby-rspec))
(synopsis "Extra methods for Ruby's @code{File} class")
(description
"The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
@@ -3596,6 +3603,15 @@ two hashes.")
It is a low-dependency variant of ruby-hydra.")
(license license:expat))))
+;; Pinned variant for use by texlive
+(define-public ruby-hydra-minimal/pinned
+ (hidden-package
+ (package
+ (inherit ruby-hydra-minimal)
+ (arguments
+ (cons* #:ruby ruby-2.7
+ (package-arguments ruby-hydra-minimal))))))
+
(define-public ruby-hydra
(package
(inherit ruby-hydra-minimal)
@@ -3619,28 +3635,28 @@ It is a low-dependency variant of ruby-hydra.")
(define-public ruby-shindo
(package
(name "ruby-shindo")
- (version "0.3.8")
+ (version "0.3.10")
(source (origin
(method url-fetch)
(uri (rubygems-uri "shindo" version))
(sha256
(base32
- "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
+ "0qnqixhi0g8v44v13f3gynpbvvw6xqi1wajsxdjsx5rhzizfsj91"))))
(build-system ruby-build-system)
(arguments
- `(#:test-target "shindo_tests"
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-tests
- (lambda _
- (substitute* "tests/tests_helper.rb"
- (("-rubygems") ""))
- (substitute* "Rakefile"
- (("system \"shindo") "system \"./bin/shindo")
- ;; This test doesn't work, so we disable it.
- (("fail \"The build_error test should fail") "#")
- ((" -rubygems") ""))
- #t)))))
+ (list
+ #:test-target "shindo_tests"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ (substitute* "tests/tests_helper.rb"
+ (("-rubygems") ""))
+ (substitute* "Rakefile"
+ (("system \"shindo") "system \"./bin/shindo")
+ ;; This test doesn't work, so we disable it.
+ (("fail \"The build_error test should fail") "#")
+ ((" -rubygems") "")))))))
(propagated-inputs
(list ruby-formatador))
(synopsis "Simple depth first Ruby testing")
@@ -4367,17 +4383,17 @@ assertion messages for tests.")
(define-public ruby-powerpack
(package
(name "ruby-powerpack")
- (version "0.1.2")
+ (version "0.1.3")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "powerpack" version))
(sha256
(base32
- "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
+ "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg"))))
(build-system ruby-build-system)
(arguments
- '(#:test-target "spec"))
+ (list #:test-target "spec"))
(native-inputs
(list bundler ruby-rspec ruby-yard))
(synopsis "Useful extensions to core Ruby classes")
@@ -4543,13 +4559,16 @@ temporary files and directories during tests.")
(define-public ruby-test-unit
(package
(name "ruby-test-unit")
- (version "3.4.4")
+ (version "3.6.0")
(source (origin
- (method url-fetch)
- (uri (rubygems-uri "test-unit" version))
+ (method git-fetch) ;for tests
+ (uri (git-reference
+ (url "https://github.com/test-unit/test-unit")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "15isy7vhppbfd0032klirj9gxp65ygkzjdwrmm28xpirlcsk6qpd"))))
+ "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2"))))
(build-system ruby-build-system)
(propagated-inputs
(list ruby-power-assert))
@@ -4691,16 +4710,27 @@ objects.")
(define-public ruby-mkmf-lite
(package
(name "ruby-mkmf-lite")
- (version "0.3.2")
+ (version "0.5.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "mkmf-lite" version))
(sha256
(base32
- "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
+ "0rqa5kzswhqkj7r9mqrqz4mjd2vdxsblgybb52gj3mwr1gwvl4c5"))))
(build-system ruby-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Avoid rubocop dependency
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "rspec")))))))
(propagated-inputs
(list ruby-ptools))
+ (native-inputs
+ (list ruby-rspec))
(synopsis "Lightweight alternative to @code{mkmf}")
(description
"@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
@@ -5258,6 +5288,36 @@ client protocol.")
(home-page "https://github.com/net-ssh/net-scp")
(license license:expat)))
+(define-public ruby-minima
+ (package
+ (name "ruby-minima")
+ (version "2.5.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minima" version))
+ (sha256
+ (base32
+ "1gk7jmriiswda1ykjzpsw9cpiya4m9n0yrh0h6xnrc8zcfy543jj"))))
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "jekyll" "build"))
+ ;; Without the following, an attempt to remove
+ ;; minima-<version>.gem is made during installation,
+ ;; which will fail.
+ (delete-file #$(string-append "_site/minima-"
+ version ".gem")))))))
+ (build-system ruby-build-system)
+ (propagated-inputs (list jekyll ruby-jekyll-feed ruby-jekyll-seo-tag))
+ (synopsis "Beautiful, minimal theme for Jekyll")
+ (description
+ "Minima is a one-size-fits-all Jekyll theme for writers. It's Jekyll's
+default (and first) theme. It's what you get when you run @code{jekyll new}.")
+ (home-page "https://github.com/jekyll/minima")
+ (license license:expat)))
+
(define-public ruby-minitest
(package
(name "ruby-minitest")
@@ -5923,7 +5983,7 @@ and manipulate Git repositories by wrapping system calls to the git binary.")
(define-public ruby-hocon
(package
(name "ruby-hocon")
- (version "1.3.1")
+ (version "1.4.0")
(home-page "https://github.com/puppetlabs/ruby-hocon")
(source (origin
(method git-fetch)
@@ -5931,16 +5991,17 @@ and manipulate Git repositories by wrapping system calls to the git binary.")
(file-name (git-file-name name version))
(sha256
(base32
- "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
+ "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk"))))
(build-system ruby-build-system)
(arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "rspec")
- (format #t "test suite not run~%"))
- #t)))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "rspec")
+ (format #t "test suite not run~%")))))))
(native-inputs
(list bundler ruby-rspec))
(synopsis "HOCON config library")
@@ -6689,13 +6750,13 @@ invocation, and source and documentation browsing.")
(define-public ruby-pry-doc
(package
(name "ruby-pry-doc")
- (version "1.3.0")
+ (version "1.4.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "pry-doc" version))
(sha256
(base32
- "0wyvql6pb6m8jl8bsamabxhxhd86bnqblspaxzz05sl0fm2ynj0r"))))
+ "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx"))))
(build-system ruby-build-system)
(propagated-inputs (list ruby-pry ruby-yard))
(native-inputs (list ruby-latest-ruby ruby-rspec ruby-rake)) ;for tests
@@ -6971,7 +7032,7 @@ utilities for Ruby.")
(define-public ruby-tzinfo
(package
(name "ruby-tzinfo")
- (version "2.0.4")
+ (version "2.0.6")
(source
(origin
(method git-fetch)
@@ -6982,31 +7043,29 @@ utilities for Ruby.")
(file-name (git-file-name name version))
(sha256
(base32
- "0jaq1givdaz5jxz47xngyj3j315n872rk97mnpm5njwm48wy45yh"))))
+ "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm"))))
(build-system ruby-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'skip-safe-tests
- (lambda _
- (substitute* "test/test_utils.rb"
- (("def safe_test\\(options = \\{\\}\\)")
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'skip-safe-tests
+ (lambda _
+ (substitute* "test/test_utils.rb"
+ (("def safe_test\\(options = \\{\\}\\)")
"def safe_test(options = {})
- skip('The Guix build environment has an unsafe load path')"))
- #t))
- (add-before 'check 'pre-check
- (lambda _
- (setenv "HOME" (getcwd))
- (substitute* "Gemfile"
- (("simplecov.*") "simplecov'\n"))
- #t))
- (replace 'check
- (lambda* (#:key tests? test-target #:allow-other-keys)
- (when tests?
- (invoke "bundler" "exec" "rake" test-target))
- #t)))))
+ skip('The Guix build environment has an unsafe load path')"))))
+ (add-before 'check 'pre-check
+ (lambda _
+ (setenv "HOME" (getcwd))
+ (substitute* "Gemfile"
+ (("simplecov.*") "simplecov'\n"))))
+ (replace 'check
+ (lambda* (#:key tests? test-target #:allow-other-keys)
+ (when tests?
+ (invoke "bundler" "exec" "rake" test-target)))))))
(propagated-inputs
- `(("ruby-concurrent-ruby" ,ruby-concurrent)))
+ (list ruby-concurrent))
(native-inputs
(list ruby-simplecov))
(synopsis "Time zone library for Ruby")
@@ -7565,7 +7624,7 @@ you about the changes.")
(define-public ruby-loofah
(package
(name "ruby-loofah")
- (version "2.13.0")
+ (version "2.21.3")
(home-page "https://github.com/flavorjones/loofah")
(source
(origin
@@ -7576,7 +7635,7 @@ you about the changes.")
(file-name (git-file-name name version))
(sha256
(base32
- "0rmsm7mckiq0gslfqdl02yvn500n42v84gq28qjqn4yq9jwfs9ga"))))
+ "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0"))))
(build-system ruby-build-system)
(native-inputs
(list ruby-hoe ruby-hoe-markdown ruby-rr))
@@ -8430,7 +8489,7 @@ better performance than @code{Regexp} and @code{String} methods from the
(define-public ruby-range-compressor
(package
(name "ruby-range-compressor")
- (version "1.0.0")
+ (version "1.2.0")
(source
(origin
(method git-fetch)
@@ -8440,17 +8499,18 @@ better performance than @code{Regexp} and @code{String} methods from the
(file-name (git-file-name name version))
(sha256
(base32
- "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
+ "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga"))))
(build-system ruby-build-system)
(arguments
- `(#:test-target "spec"
- #:phases (modify-phases %standard-phases
- (add-after 'extract-gemspec 'strip-version-requirements
- (lambda _
- (substitute* "range_compressor.gemspec"
- (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
- (string-append stripped "\n")))
- #t)))))
+ (list
+ #:test-target "spec"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'extract-gemspec 'strip-version-requirements
+ (lambda _
+ (substitute* "range_compressor.gemspec"
+ (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
+ (string-append stripped "\n"))))))))
(native-inputs
(list ruby-rspec))
(synopsis "Simple arrays of objects to arrays of ranges compressor")
@@ -9162,7 +9222,7 @@ during shutdown.")
(define-public ruby-memory-profiler
(package
(name "ruby-memory-profiler")
- (version "1.0.0")
+ (version "1.0.1")
(source
(origin
(method git-fetch)
@@ -9172,7 +9232,7 @@ during shutdown.")
(file-name (git-file-name name version))
(sha256
(base32
- "07yqv11q68xg2fqkrhs6ysngryk8b9zq6qzh24rgx9xqv6qfnj0w"))))
+ "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84"))))
(build-system ruby-build-system)
(synopsis "Memory profiling routines for Ruby")
(description
@@ -9802,25 +9862,25 @@ features such as filtering and fine grained logging.")
(define-public ruby-yajl-ruby
(package
(name "ruby-yajl-ruby")
- (version "1.4.1")
+ (version "1.4.3")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "yajl-ruby" version))
(sha256
(base32
- "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
+ "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc"))))
(build-system ruby-build-system)
(arguments
- '(#:test-target "spec"
- #:phases
- (modify-phases %standard-phases
- (add-before 'check 'patch-test-to-update-load-path
- (lambda _
- (substitute* "spec/parsing/large_number_spec.rb"
- (("require \"yajl\"")
- "$LOAD_PATH << 'lib'; require 'yajl'"))
- #t)))))
+ (list
+ #:test-target "spec"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'check 'patch-test-to-update-load-path
+ (lambda _
+ (substitute* "spec/parsing/large_number_spec.rb"
+ (("require \"yajl\"")
+ "$LOAD_PATH << 'lib'; require 'yajl'")))))))
(native-inputs
(list ruby-rake-compiler ruby-rspec))
(synopsis "Streaming JSON parsing and encoding library for Ruby")
@@ -15056,13 +15116,13 @@ floating-point numbers or complex numbers as arguments.")
(define-public ruby-sucker-punch
(package
(name "ruby-sucker-punch")
- (version "3.0.1")
+ (version "3.1.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "sucker_punch" version))
(sha256
- (base32 "0yams24wndpj7dzdysvm4z1w6ggg4xvj4snxba66prahhxvik4xl"))))
+ (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p"))))
(build-system ruby-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index a3b16aaae8..16a4bba92f 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -644,8 +644,8 @@ operating system.")
(license license:bsd-3))))
(define-public linenoise
- (let ((commit "2105ce445821381cf1bca87b6d386d4ea88ee20d")
- (revision "1"))
+ (let ((commit "93b2db9bd4968f76148dd62cdadf050ed50b84b3")
+ (revision "2"))
(package
(name "linenoise")
(version (string-append "1.0-" revision "." (string-take commit 7)))
@@ -658,7 +658,7 @@ operating system.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1z16qwix8z6a40fskdgxsibkqgdrp4q6ncp4n6hnv4r9iihy2d8r"))))
+ "102gwq6bzjq2b1lf55wrpgym58yfhry56hkajbj339m0bs1xijhs"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no tests are included
diff --git a/gnu/packages/spreadsheet.scm b/gnu/packages/spreadsheet.scm
index 0016f38aff..363d0ae16f 100644
--- a/gnu/packages/spreadsheet.scm
+++ b/gnu/packages/spreadsheet.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Ryan Prior <rprior@protonmail.com>
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
-;;; Copyright © 2021 Jorge Gomez <jgart@dismail.de>
+;;; Copyright © 2021, 2023 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,6 +20,7 @@
(define-module (gnu packages spreadsheet)
#:use-module (guix packages)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix download)
#:use-module (guix utils)
@@ -27,6 +28,7 @@
#:use-module (guix build-system python)
#:use-module (guix licenses)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -37,12 +39,13 @@
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages statistics)
+ #:use-module (gnu packages valgrind)
#:use-module (gnu packages xml))
(define-public sc-im
(package
(name "sc-im")
- (version "0.8.2")
+ (version "0.8.3")
(home-page "https://github.com/andmarti1424/sc-im")
(source (origin
(method git-fetch)
@@ -53,20 +56,26 @@
(file-name (git-file-name name version))
(sha256
(base32
- "1nrjnw8sg75i0hkcbvjv7gydjddxjm27d5m1qczpg29fk9991q8z"))))
+ "10x50smn0xl9k6m0bgfcvpwgvivmjkysawvc4zyibc8nxlqz2na2"))))
(build-system gnu-build-system)
(arguments
- ;; There are no tests at the moment.
- ;; https://github.com/andmarti1424/sc-im/issues/537
- ;; https://github.com/andmarti1424/sc-im/pull/385
- `(#:tests? #f
- #:make-flags (list "-C" "src"
- (string-append "CC=" ,(cc-for-target))
- (string-append "prefix=" %output))
+ (list
+ #:make-flags
+ #~(list "-C" "src"
+ (string-append "CC=" #$(cc-for-target))
+ (string-append "prefix=" #$output))
#:phases
- (modify-phases
- %standard-phases
- (delete 'configure))))
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'fix-bash-path-declaration-in-script
+ (lambda _
+ (substitute* "tests/run_all_tests.sh"
+ (("/bin/bash") (string-append "#!" (which "bash"))))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (with-directory-excursion "tests"
+ (when tests?
+ (invoke "bash" "run_all_tests.sh"))))))))
(inputs
(list gnuplot
libxls
@@ -75,7 +84,11 @@
libzip
ncurses))
(native-inputs
- (list pkg-config which bison))
+ (list bash-minimal
+ bison
+ pkg-config
+ valgrind
+ which))
(synopsis "Spreadsheet program with vim-like keybindings")
(description
"@code{sc-im} is a highly configurable spreadsheet program
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 71926c6795..b973efc291 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -13,7 +13,7 @@
;;; Copyright © 2018 Manuel Graf <graf@init.at>
;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
@@ -49,7 +49,6 @@
#:use-module (gnu packages gperf)
#:use-module (gnu packages groff)
#:use-module (gnu packages guile)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages libedit)
#:use-module (gnu packages linux)
#:use-module (gnu packages logging)
@@ -213,7 +212,7 @@ a server that supports the SSH-2 protocol.")
(native-inputs (list groff pkg-config))
(inputs `(("libedit" ,libedit)
("openssl" ,openssl)
- ,@(if (hurd-target?)
+ ,@(if (target-hurd?)
'()
`(("pam" ,linux-pam)
("libfido2" ,libfido2))) ;fails to build on GNU/Hurd
@@ -239,7 +238,7 @@ a server that supports the SSH-2 protocol.")
"--with-libedit"
;; Enable PAM support in sshd.
- ,,@(if (hurd-target?)
+ ,,@(if (target-hurd?)
'()
'("--with-pam"
diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm
index 51024ef487..6e2fb8b4e9 100644
--- a/gnu/packages/swig.scm
+++ b/gnu/packages/swig.scm
@@ -67,3 +67,21 @@ you tailor the wrapping process to suit your application.")
;; See http://www.swig.org/Release/LICENSE for details.
(license gpl3+)))
+
+(define-public swig-next
+ ;; a number of packages using swig do not build with this version
+ ;; so we need to keep swig 4.0.2 above and place the current release
+ ;; as swig-next
+ (package
+ (inherit swig)
+ (name "swig")
+ (version "4.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/" name "/" name "/"
+ name "-" version "/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16xc767gf5ip40jh698wbdrxrghli5v2c966bkdmrmpwv378mw1a"))))
+ (inputs (list pcre2))))
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 75cd67fd2d..bd9fbab386 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -392,10 +392,6 @@ silently and reliably flow across to every other.")
#~(list (string-append "CC=" #$(cc-for-target)))
#:phases
#~(modify-phases %standard-phases
- (add-after 'unpack 'link-to-external-libraries
- (lambda _
- ;; Only link necessary libraries.
- (setenv "DCFLAGS" "-L--as-needed")))
(add-after 'configure 'adjust-makefile
(lambda _
(substitute* "Makefile"
diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm
index f22282264c..b2d276ac8b 100644
--- a/gnu/packages/tbb.scm
+++ b/gnu/packages/tbb.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2022, 2023 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -48,7 +48,11 @@
(patches (search-patches "tbb-other-arches.patch"))))
(build-system cmake-build-system)
(arguments
- `(#:configure-flags '("-DTBB_STRICT=OFF"))) ;; Don't fail on warnings
+ `(#:configure-flags
+ '(,@(if (target-riscv64?)
+ '("-DTBB_TEST_LINK_FLAGS=-latomic")
+ `())
+ "-DTBB_STRICT=OFF"))) ;; Don't fail on warnings
(home-page "https://www.threadingbuildingblocks.org")
(synopsis "C++ library for parallel programming")
(description
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index e3d0937ecc..a3fa39e5da 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -938,6 +938,41 @@ It's a terminal emulator with few dependencies, so you don't need a full GNOME
desktop installed to have a decent terminal emulator.")
(license license:gpl2)))
+(define-public xiate
+ (let ((commit "ae3cf30b345c64f097a747ac848e23ef5bae8b57")
+ (revision "0"))
+ (package
+ (name "xiate")
+ (version (git-version "22.12" revision commit))
+ (source (origin
+ (method git-fetch)
+ (file-name (git-file-name name version))
+ (uri (git-reference
+ (url "https://www.uninformativ.de/git/xiate.git")
+ (commit commit)))
+ (sha256
+ (base32
+ "0bc205b1gs1jvp1a2cr814l32hmlm0sgv1drfw7ykbavslfpmg2d"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:tests? #f ;no tests
+ #:make-flags #~(list (string-append "CC="
+ #$(cc-for-target))
+ (string-append "prefix="
+ #$output))
+ #:phases #~(modify-phases %standard-phases
+ (delete 'configure))))
+ (inputs (list gtk+ glib vte))
+ (native-inputs (list pkg-config))
+ (synopsis "Minimalist terminal emulator based on GTK+")
+ (description
+ "Xiate is a terminal emulator which tries to keep a balance
+between features and simplicity. This is achieved by using VTE as a powerful
+backend, while UI, configuration, and code try to remain much more
+minimalistic.")
+ (home-page "https://www.uninformativ.de/git/xiate/file/README.html")
+ (license license:expat))))
+
(define-public go-github.com-nsf-termbox-go
(let ((commit "288510b9734e30e7966ec2f22b87c5f8e67345e3")
(revision "1"))
@@ -957,7 +992,7 @@ desktop installed to have a decent terminal emulator.")
(arguments
'(#:import-path "github.com/nsf/termbox-go"))
(propagated-inputs
- (list go-github.com-mattn-go-runewidth))
+ (list go-github-com-mattn-go-runewidth))
(synopsis "@code{termbox} provides a minimal API for text-based user
interfaces")
(description
@@ -969,7 +1004,7 @@ programmer to write text-based user interfaces.")
(define-public go-github-com-junegunn-fzf
(package
(name "go-github-com-junegunn-fzf")
- (version "0.34.0")
+ (version "0.41.0")
(source
(origin
(method git-fetch)
@@ -979,12 +1014,12 @@ programmer to write text-based user interfaces.")
(file-name (git-file-name name version))
(sha256
(base32
- "023ksrmjg99svmkpnlh4k7gssv1sz2nl0v5b6bsr2iragvwrgkf4"))))
+ "1l9nsvziip3azyvg8wi4g3x606fh6w9vpfcbcgjdzdnp2ywqciim"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/junegunn/fzf"))
(inputs
- (list go-github.com-mattn-go-runewidth
+ (list go-github-com-mattn-go-runewidth
go-github-com-mattn-go-shellwords
go-github-com-mattn-go-isatty
go-github-com-gdamore-tcell
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 3ec2b7bbf7..65f8d901d7 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -27,6 +27,7 @@
;;; Copyright © 2023 Thomas Albers Raviola <thomas@thomaslabs.org>
;;; Copyright © 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023 Dominik Delgado Steuter <d@delgado.nrw>
+;;; Copyright © 2023 Timothy Sample <samplet@ngyro.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -235,7 +236,7 @@ files from LOCATIONS with expected checksum HASH. CODE is not currently in use.
(string-append "File.join(\"" ptex "\"")))
(invoke "ruby" "generate-ptex-patterns.rb")))))))))
(native-inputs
- (list ruby ruby-hydra-minimal hyph-utf8-scripts))
+ (list ruby-2.7 ruby-hydra-minimal/pinned hyph-utf8-scripts))
(home-page "https://ctan.org/pkg/hyph-utf8"))))
(define texlive-extra-src
@@ -295,7 +296,7 @@ files from LOCATIONS with expected checksum HASH. CODE is not currently in use.
"-checkout"))
(sha256
(base32
- "10xpa4nnz1biap7qfv7fb0zk6132ki5g1j8w0bqwkggfncdfl07d"))))
+ "1jrphfjhmw17rp1yqsl70shmvka3vg0g8841q6zx2lfn48p7vqf3"))))
("cairo" ,cairo)
("fontconfig" ,fontconfig)
("fontforge" ,fontforge)
@@ -315,7 +316,7 @@ files from LOCATIONS with expected checksum HASH. CODE is not currently in use.
("pixman" ,pixman)
("potrace" ,potrace)
("python" ,python)
- ("ruby" ,ruby)
+ ("ruby" ,ruby-2.7)
("tcsh" ,tcsh)
("teckit" ,teckit)
("zlib" ,zlib)
@@ -423,7 +424,32 @@ files from LOCATIONS with expected checksum HASH. CODE is not currently in use.
(mkdir "texlive-scripts")
(with-directory-excursion "texlive-scripts"
(apply (assoc-ref %standard-phases 'unpack)
- (list #:source (assoc-ref inputs "texlive-scripts"))))))
+ (list #:source (assoc-ref inputs "texlive-scripts")))
+ ;; Configure the version string for some scripts.
+ ;; Normally this would be done by Subversion.
+ ;; See <https://issues.guix.gnu.org/43442#15>.
+ (for-each (lambda (file)
+ (substitute* file
+ (("\\$Id\\$")
+ (format #f "$Id: ~a ~a ~a nobody $"
+ file
+ ,%texlive-revision
+ ,%texlive-date))
+ (("\\$Revision\\$")
+ (format #f "$Revision: ~a $"
+ ,%texlive-revision))
+ (("\\$Date\\$")
+ (format #f "$Date: ~a $"
+ ,%texlive-date))))
+ '("fmtutil.pl"
+ "mktexlsr"
+ "mktexlsr.pl"
+ "mktexmf"
+ "mktexpk"
+ "mktextfm"
+ "tlmgr.pl"
+ "tlmgrgui.pl"
+ "updmap.pl")))))
(add-after 'unpack-texlive-scripts 'patch-scripts
(lambda _
(let* ((scripts (append (find-files "texk/kpathsea" "^mktex")
@@ -784,7 +810,7 @@ out to date by @code{unicode-letters.tex}.")
"/tex/generic/hyphen/hypht1.tex"
"/tex/generic/hyphen/zerohyph.tex")
(base32
- "1sagn9aybs34m1s6m3zwya5g5kbiwfnw8ifcgxssygmzzs88dgjp")
+ "1nad1bqpjsywm49hlv7d75mqvgha3j5vayvkvfhv8wwzgdb3mk84")
#:trivial? #t))
(home-page "https://tug.org/texlive/")
(synopsis "Core hyphenation support files")
@@ -804,7 +830,7 @@ default versions of those), etc.")
"fonts/cmap/dvipdfmx/"
"fonts/map/dvipdfmx/")
(base32
- "04x93w777l9qzdzglwanb14k8cmq74kjcsgyanvp3bsmnn5zfrgz")
+ "08i81hciksh0sm9pw6lw8v8s2rj92p58wd5j2mq1mzqbp171wjmr")
#:trivial? #t)))
(package
(inherit template)
@@ -836,7 +862,7 @@ features as does pdfTeX.")
"/fonts/enc/dvips/base/"
"/tex/generic/dvips/")
(base32
- "0rns1hpjy4fmsskmkwx197j8qbgdmyj0j9214sq9vhpa6nv7czm3")
+ "1fb73mfw9mp4ylp6sfc0465rbdb7k830aq0qf3c085c3n0zyrin8")
#:trivial? #t))
(home-page "https://www.ctan.org/pkg/dvips")
(synopsis "DVI to PostScript drivers")
@@ -1094,7 +1120,7 @@ cite bundle of the author's citation-related packages.")
"/fonts/map/dvips/cm/cmtext-bsr-interpolated.map"
"/doc/fonts/cm/")
(base32
- "1ky4gvcn8qn3d61bvb39512b8r92igv6il7vh02hw04223yj6q8i")
+ "0mfslqs9saqkb3z3xdhsqnklxk858nmipgj1y93by2791jzkma1d")
#:trivial? #t)))
(package
(inherit template)
@@ -1698,7 +1724,7 @@ incorporates the e-TeX extensions.")
"texlive-tex-plain"
(list "/tex/plain/")
(base32
- "0gwygkm8i2jmpf7bfg6fb6824rl7fq4a2s0wni73v0fz6s4chr1n")
+ "1hafbphx1486069cky87hyksx6ia5gd83m4wp2xmgc09z87faf0h")
#:trivial? #t))
(home-page "https://www.ctan.org/pkg/plain")
(synopsis "Plain TeX format and supporting files")
@@ -2737,7 +2763,7 @@ T1/EC and UTF-8 encodings.")
(string-append out "/share/texmf-dist/tex/luatex/hyph-utf8/")))
#t)))))
(native-inputs
- (list ruby
+ (list ruby-2.7
texlive-bin
;; The following packages are needed for build "tex.fmt", which we need
;; for a working "tex".
@@ -2904,7 +2930,7 @@ package.")
"/web2c/tcvn-t5.tcx"
"/web2c/viscii-t5.tcx")
(base32
- "00q2nny7lw7jxyln6ch4h0alygbrzk8yynliyc291m53kds1h0mr")
+ "08nfk5hicqbvnz73rjbxi97lcakd9i1k2cy4qi2cwghan92650jq")
#:trivial? #t)))
(package
(inherit template)
@@ -2967,7 +2993,7 @@ default and narrow versions of multiple integrals.")
"texlive-latexconfig"
(list "/tex/latex/latexconfig/")
(base32
- "10ynmd8b9b9l1wl1mva23yz4zir53p6r5z31s39wmxz19pj12qvx")
+ "1x5fyr2185nx3qlyariykdz44hcy5azimrk9db2p707dg08bjhsd")
#:trivial? #t))
(home-page "https://www.tug.org/")
(synopsis "Configuration files for LaTeX-related formats")
@@ -3121,7 +3147,7 @@ formats.")
"/tex/generic/config/luatexiniconfig.tex"
"/web2c/texmfcnf.lua")
(base32
- "0yjx7nw9mgfgnq1givkzbxh7z7ncw1liaddjgm7n2nwn0aw6xfdg")))))
+ "065j47i2785nbj2507pzxlscyrwr4ghv6nksc3a01rp62bq8kkjp")))))
(propagated-inputs
(list texlive-dehyph-exptl
texlive-etex
@@ -3294,48 +3320,82 @@ the @file{.aux} file.")
(define-deprecated-package texlive-latex-auxhook texlive-auxhook)
-(define-public texlive-latex-epstopdf-pkg
- (package
- (inherit (simple-texlive-package
- "texlive-latex-epstopdf-pkg"
- '("/doc/latex/epstopdf-pkg/"
- "/tex/latex/epstopdf-pkg/")
- (base32
- "0zl6jiyp2cvvyqx3lwxdkcvvnkqgbwj4issq07cagf61gljq6fns")
- #:trivial? #t))
- (home-page "https://www.ctan.org/pkg/epstopdf-pkg")
- (synopsis "Call @command{epstopdf} \"on the fly\"")
- (description
- "The package adds support for EPS files in the @code{graphicx} package
-when running under pdfTeX. If an EPS graphic is detected, the package
-spawns a process to convert the EPS to PDF, using the script
-@command{epstopdf}.")
- (license license:lppl1.3c+)))
-
-(define-public texlive-latex-filecontents
- (package
- (name "texlive-latex-filecontents")
- (version (number->string %texlive-revision))
- (source (origin
- (method svn-fetch)
- (uri (texlive-ref "latex" "filecontents"))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "1cmfigg5jx3hmdyh4gv8kwxi7dg076ldkxmr46s05xvhzjig1z9x"))))
- (build-system texlive-build-system)
- (arguments '(#:tex-directory "latex/filecontents"))
- (home-page "https://www.ctan.org/pkg/filecontents")
- (synopsis "Extended filecontents and filecontents* environments")
- (description
- "LaTeX2e's @code{filecontents} and @code{filecontents*} environments
+(define-public texlive-epstopdf-pkg
+ (let ((template (simple-texlive-package
+ "texlive-epstopdf-pkg"
+ (list "doc/latex/epstopdf-pkg/"
+ "source/latex/epstopdf-pkg/"
+ "tex/latex/epstopdf-pkg/")
+ (base32
+ "1ajyc5pkn1niifz5asyf09vbdqvmy05xwl0vxcdl7ik0ll0jcaxp"))))
+ (package
+ (inherit template)
+ (arguments
+ (substitute-keyword-arguments (package-arguments template)
+ ((#:tex-directory _ '())
+ "latex/epstopdf-pkg")
+ ((#:build-targets _ '())
+ #~(list "epstopdf.ins"))
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ (chdir "source/latex/epstopdf-pkg")))
+ (replace 'copy-files
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((origin (assoc-ref inputs "source"))
+ (source (string-append #$output
+ "/share/texmf-dist/source"))
+ (doc (string-append #$output:doc
+ "/share/texmf-dist/doc")))
+ (copy-recursively (string-append origin "/source") source)
+ (copy-recursively (string-append origin "/doc") doc))))))))
+ (propagated-inputs
+ (list texlive-grfext
+ texlive-infwarerr
+ texlive-kvoptions
+ texlive-pdftexcmds))
+ (home-page "https://www.ctan.org/pkg/epstopdf-pkg")
+ (synopsis "Call @command{epstopdf} on the fly")
+ (description
+ "The package adds support for EPS files in the @code{graphicx} package
+when running under pdfTeX. If an EPS graphic is detected, the package spawns
+a process to convert the EPS to PDF, using the script @command{epstopdf}.")
+ (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-epstopdf-pkg texlive-epstopdf-pkg)
+
+(define-public texlive-filecontents
+ (let ((template (simple-texlive-package
+ "texlive-filecontents"
+ (list "doc/latex/filecontents/"
+ "source/latex/filecontents/"
+ "tex/latex/filecontents/")
+ (base32
+ "0ifhqfdzx91hrmndhg5441rpmv9k4lxrql02kd5yx75xpplxryzw"))))
+ (package
+ (inherit template)
+ (arguments
+ (substitute-keyword-arguments (package-arguments template)
+ ((#:tex-directory _ '()) "latex/filecontents")
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ (chdir "source/latex/filecontents")))))))
+ (home-page "https://ctan.org/pkg/filecontents")
+ (synopsis "Create an external file from within a LaTeX document")
+ (description
+ "LaTeX2e's @code{filecontents} and @code{filecontents*} environments
enable a LaTeX source file to generate external files as it runs through
LaTeX. However, there are two limitations of these environments: they refuse
-to overwrite existing files, and they can only be used in the preamble of a
-document. The filecontents package removes these limitations, letting you
-overwrite existing files and letting you use @code{filecontents} /
+to overwrite existing files, and they can only be used in the preamble of
+a document. The filecontents package removes these limitations, letting you
+overwrite existing files and letting you use @code{filecontents}
@code{filecontents*} anywhere.")
- (license license:lppl1.3c+)))
+ (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-filecontents texlive-filecontents)
(define-public texlive-epsf
(package
@@ -3407,7 +3467,7 @@ Unicode points; it is maintained by Adobe. The additional
"0b66fy06safyrd717rfr476g1gz6nqfv1vqvam7ac2yy0g0djb17")
#:trivial? #t))
(propagated-inputs
- (list texlive-latex-epstopdf-pkg))
+ (list texlive-epstopdf-pkg))
(home-page "https://www.ctan.org/pkg/latex-graphics")
(synopsis "Color and graphics option files")
(description
@@ -3985,7 +4045,7 @@ of file names.")
"/fonts/enc/dvips/tetex/"
"/fonts/map/dvips/tetex/")
(base32
- "1si3as8mwi8837965djlw6jhwwzsp3r1hkflvdxv2avx9vb45hjb")
+ "05mf8yqdj2wrc1zm3al2j4aam2wx0ky6a7slxw17pkd1c7rmvjrq")
#:trivial? #t))
(home-page "https://www.ctan.org/pkg/tetex")
(synopsis "Font maps originally from teTeX")
@@ -4386,6 +4446,8 @@ loading fonts by their proper names instead of file names.")
(delete-file-recursively
(string-append (assoc-ref outputs "out")
"/share/texmf-dist/source/latex/amsmath/build"))))))))
+ (propagated-inputs
+ (list texlive-amsfonts))
(home-page "https://www.ctan.org/pkg/amsmath")
(synopsis "AMS mathematical facilities for LaTeX")
(description
@@ -5802,7 +5864,7 @@ be changed.")
(("pstool.tex") "trimspaces.tex"))
#t)))))
(inputs
- (list texlive-latex-filecontents))
+ (list texlive-filecontents))
(home-page "https://www.ctan.org/pkg/trimspaces")
(synopsis "Trim spaces around an argument or within a macro")
(description
@@ -8653,7 +8715,7 @@ e-TeX.")
"/tex/generic/pdftex/glyphtounicode.tex"
"/tex/generic/pdftex/pdfcolor.tex")
(base32
- "1wx928rqsv0x1a8vc7aq49w3nglr4bmlhl822slqglymfxrmb91b")
+ "0w4ar5g7x4w8zw8z6hdwqxwcbglfzzq7pcznz8rawllwy6dssr8g")
#:trivial? #t))
;; TODO: add this missing package:
;; dehyph
@@ -9478,7 +9540,7 @@ and after the formatted number.")
'(#:tex-directory "latex/needspace"
#:tex-format "latex"))
(inputs
- (list texlive-latex-filecontents))
+ (list texlive-filecontents))
(home-page "https://www.ctan.org/pkg/needspace")
(synopsis "Insert pagebreak if not enough space")
(description
@@ -9504,7 +9566,7 @@ page, a new page will be started.")
'(#:tex-directory "latex/changepage"
#:tex-format "latex"))
(inputs
- (list texlive-latex-filecontents))
+ (list texlive-filecontents))
(home-page "https://www.ctan.org/pkg/changepage")
(synopsis "Margin adjustment and detection of odd/even pages")
(description
@@ -11684,7 +11746,7 @@ floats merely delays the arrival of the inevitable error message.")
(add-after 'unpack 'chdir
(lambda _ (chdir "source/latex/ifmtarg")))))))
(inputs
- (list texlive-latex-filecontents))
+ (list texlive-filecontents))
(home-page "https://www.ctan.org/pkg/ifmtarg")
(synopsis "If-then-else command for processing potentially empty arguments")
(description "This package provides a command for the LaTeX programmer for
@@ -13512,7 +13574,7 @@ itself may be shipped out to the DVI file.")
"/fonts/misc/xetex/fontmapping/base/"
"/tex/xelatex/xetexconfig/")
(base32
- "1gmgagvsv2qknrjzjk840ca3wging8wfc20rgq7bnhphm9n87m6q")
+ "0j396anlhk5pqrnwxr8bpq55sp3qfyb6n9g08x4nmaa6p9b9y8ab")
#:trivial? #t))
(propagated-inputs
(list texlive-atbegshi
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index 3296c468c1..f45ae06810 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 ( <paren@disroot.org>
;;;
@@ -40,7 +40,6 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
#:use-module (gnu packages gettext)
- #:use-module ((gnu packages hurd) #:select (hurd-target?))
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-compression)
@@ -77,7 +76,7 @@
%standard-phases)
;; XXX: Work around <https://issues.guix.gnu.org/59616>.
- #:tests? ,(and (not (hurd-target?))
+ #:tests? ,(and (not (target-hurd?))
(not (%current-target-system)))))
(inputs (list ncurses perl))
;; When cross-compiling, texinfo will build some of its own binaries with
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index b23c5ba2be..1781e75af2 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -23,6 +23,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2022 Andy Tai <atai@atai.org>
;;; Copyright © 2023 Eidvilas Markevičius <markeviciuseidvilas@gmail.com>
+;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1006,8 +1007,8 @@ The basic features of Text Pieces are:
(source
(origin
(method url-fetch)
- (uri (let ((v (apply string-append (string-split version #\.))))
- (string-append "https://www.scintilla.org/scintilla" v ".tgz")))
+ (uri (string-append "https://www.scintilla.org/scintilla"
+ (string-delete #\. version) ".tgz"))
(sha256
(base32 "0inbhzqdikisvnbdzn8153p1apbghxjzkkzji9i8zsdpyapb209z"))))
(build-system gnu-build-system)
@@ -1029,11 +1030,9 @@ The basic features of Text Pieces are:
(for-each (lambda (f) (install-file f lib))
(find-files "bin/" "\\.so$"))
(for-each (lambda (f) (install-file f inc))
- (find-files "include/" "."))))))))
- (native-inputs
- (list pkg-config python-wrapper))
- (inputs
- (list gtk+))
+ (find-files "include/" "\\.h$"))))))))
+ (native-inputs (list pkg-config python-wrapper))
+ (inputs (list gtk+))
(home-page "https://www.scintilla.org/")
(synopsis "Code editor for GTK+")
(description "Scintilla is a source code editing component for
@@ -1046,6 +1045,66 @@ fonts, bold and italics, multiple foreground and background colours,
and multiple fonts.")
(license license:hpnd)))
+(define-public lexilla
+ (package
+ (name "lexilla")
+ (version "5.2.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.scintilla.org/lexilla"
+ (string-delete #\. version) ".tgz"))
+ (sha256
+ (base32
+ "0sc3z6y82h1vq8aaydp119kymzvrv0p1xvy56r5j996jl6zxikk4"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:make-flags #~(list (string-append "CXX=" #$(cxx-for-target))
+ (string-append "SCINTILLA_INCLUDE="
+ #$(this-package-input "scintilla")
+ "/include"))
+ #:test-target "test"
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'build
+ (lambda args
+ (with-directory-excursion "src"
+ (apply (assoc-ref %standard-phases 'build) args))))
+ (add-after 'build 'patch-more-shebangs
+ (lambda _
+ ;; Patch these bash shebangs to avoid them failing the tests.
+ (substitute* '("test/examples/bash/x.bsh.folded"
+ "test/examples/bash/x.bsh.styled")
+ (("/usr/bin/env bash")
+ (which "bash")))))
+ (replace 'check
+ (lambda args
+ (with-directory-excursion "test"
+ (apply (assoc-ref %standard-phases 'check) args))))
+ (add-after 'unpack 'fix-deps.mak
+ (lambda _
+ (substitute* "src/deps.mak"
+ (("../../scintilla")
+ #$(this-package-input "scintilla")))))
+ (delete 'configure) ;no configure script
+ (replace 'install
+ ;; Upstream provides no install script.
+ (lambda _
+ (let ((lib (string-append #$output "/lib"))
+ (inc (string-append #$output "/include")))
+ (for-each (lambda (f) (install-file f lib))
+ (find-files "bin/" "\\.so$"))
+ (for-each (lambda (f) (install-file f inc))
+ (find-files "include/" "\\.h$"))))))))
+ (native-inputs (list python))
+ (inputs (list scintilla))
+ (home-page "https://www.scintilla.org/Lexilla.html")
+ (synopsis "Language lexers for Scintilla")
+ (description "Lexilla is a library of language lexers that can be
+used with the Scintilla editing component.")
+ (license license:hpnd)))
+
(define-public geany
(package
(name "geany")
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 24fc689a0a..51df3748cd 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -57,6 +57,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages gcc)
#:use-module (gnu packages golang)
@@ -69,6 +70,7 @@
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-check)
+ #:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
@@ -247,7 +249,7 @@ encoding, supporting Unicode version 9.0.0.")
(sha256
(base32 "1g77s8g9443dd92f82pbkim7rk51s7xdwa3mxpzb1lcw8ryxvvg3"))))
;; For tests
- ("ruby" ,ruby)))))))
+ ("ruby" ,ruby-2.7)))))))
(define-public libconfuse
(package
@@ -1006,34 +1008,6 @@ and Cython.")
markup and converts it to multiple formats.")
(license license:gpl2)))
-(define-public go-github.com-mattn-go-runewidth
- (let ((commit "703b5e6b11ae25aeb2af9ebb5d5fdf8fa2575211")
- (version "0.0.4")
- (revision "1"))
- (package
- (name "go-github.com-mattn-go-runewidth")
- (version (git-version version revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/mattn/runewidth")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0znpyz71gajx3g0j2zp63nhjj2c07g16885vxv4ykwnrfmzbgk4w"))))
- (build-system go-build-system)
- (arguments
- '(#:import-path "github.com/mattn/go-runewidth"))
- (synopsis "@code{runewidth} provides Go functions to work with string widths")
- (description
- "The @code{runewidth} library provides Go functions for padding,
-measuring and checking the width of strings, with support for East Asian
-text.")
- (home-page "https://github.com/mattn/runewidth")
- (license license:expat))))
-
(define-public docx2txt
(package
(name "docx2txt")
@@ -1536,3 +1510,58 @@ hackers and programmers by being fast, ignoring VCS directories, letting a user
easily specify file types, match highlighting, Perl-Compatible Regular
Expressions, and being faster to type than grep.")
(license license:artistic2.0)))
+
+(define-public python-panflute
+ (package
+ (name "python-panflute")
+ (version "2.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "panflute" version))
+ (sha256
+ (base32
+ "1jk5b2sp1h4drkjrg2ks77d0ca6j043n2myvacm77nfc93y9vzff"))))
+ (build-system python-build-system)
+ (propagated-inputs (list python-click python-pyyaml))
+ (native-inputs (list python-configparser
+ python-coverage
+ python-flake8
+ python-pandocfilters
+ python-pytest
+ python-pytest-cov
+ python-requests))
+ (home-page "http://scorreia.com/software/panflute/")
+ (synopsis "Pythonic Pandoc filters")
+ (description
+ "Panflute is a Python package that makes Pandoc filters fun to
+write. It is a pythonic alternative to John MacFarlane's pandocfilters, from
+which it is heavily inspired.")
+ (license license:bsd-3)))
+
+(define-public pandoc-include
+ (package
+ (name "pandoc-include")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "pandoc-include" version))
+ (sha256
+ (base32
+ "01nrbzs85mrd7jcflicsz0bmfnzi6wsy0ii262xl01zsabqd7n91"))))
+ (build-system python-build-system)
+ (propagated-inputs (list python-natsort python-panflute))
+ (home-page "https://github.com/DCsunset/pandoc-include")
+ (synopsis "Pandoc filter to allow file and header includes")
+ (description "@code{pandoc-include} extends Pandoc to support:
+
+@enumerate
+@item include as raw blocks
+@item indent and dedent included contents
+@item partial include
+@item code include
+@item Unix style pathname
+@item recursive include
+@item Yaml header merging
+@item header include
+@end enumerate")
+ (license license:expat)))
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index 38b51583da..5c8f65a1e6 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -623,7 +623,7 @@ TUI program that displays time across a few time zones of your choosing.")
(arguments
'(#:import-path "github.com/antonmedv/countdown"))
(native-inputs
- `(("runewidth" ,go-github.com-mattn-go-runewidth)
+ `(("runewidth" ,go-github-com-mattn-go-runewidth)
("termbox" ,go-github.com-nsf-termbox-go)))
(home-page "https://github.com/antonmedv/countdown")
(synopsis "Counts to zero with a text user interface")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index d162094ed4..140932a809 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -14,7 +14,7 @@
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
@@ -65,7 +65,6 @@
#:use-module (gnu packages gawk)
#:use-module (gnu packages gettext)
#:use-module (gnu packages guile)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libidn)
@@ -153,12 +152,12 @@ in intelligent transportation networks.")
(build-system gnu-build-system)
(native-inputs
(append (list pkg-config)
- (if (hurd-target?)
+ (if (target-hurd?)
(list autoconf automake gettext-minimal libtool)
'())))
(inputs
(append (list libffi libtasn1)
- (if (hurd-target?)
+ (if (target-hurd?)
(list libbsd)
'())))
(arguments
@@ -167,7 +166,7 @@ in intelligent transportation networks.")
;; find them. See <https://issues.guix.gnu.org/49957>.
#~'("--with-trust-paths=/etc/ssl/certs/ca-certificates.crt")
#:phases #~(modify-phases %standard-phases
- #$@(if (hurd-target?)
+ #$@(if (target-hurd?)
#~((add-after 'unpack 'apply-hurd-patch
(lambda* (#:key inputs #:allow-other-keys)
(define patch
@@ -216,9 +215,9 @@ living in the same process.")
(build-system gnu-build-system)
(arguments
(list #:tests? (not (or (%current-target-system)
- (hurd-target?)))
+ (target-hurd?)))
;; Ensure we don't keep a reference to the tools used for testing.
- #:disallowed-references (if (hurd-target?)
+ #:disallowed-references (if (target-hurd?)
'()
(list net-tools iproute socat))
#:configure-flags
@@ -276,7 +275,7 @@ living in the same process.")
(native-inputs
(append (list pkg-config texinfo which
util-linux) ;one test needs 'setsid'
- (if (hurd-target?)
+ (if (target-hurd?)
'()
(list net-tools
iproute ;for 'ss'
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index 55b7c7a498..4d9dea2396 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -319,6 +319,47 @@ Optional:
(home-page "https://github.com/tmux-plugins/tmux-resurrect/")
(license license:expat))))
+(define-public tmux-plugin-continuum
+ (let ((commit "3e4bc35da41f956c873aea716c97555bf1afce5d")
+ (revision "0"))
+ (package
+ (name "tmux-plugin-continuum")
+ (version (git-version "0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tmux-plugins/tmux-continuum/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1py8qfs2f93hkxhk039m813bjgcs5k54si662gx05g3czqy06pb7"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
+ (let ((out (string-append %output
+ "/share/tmux-plugins/continuum/")))
+ (mkdir-p out)
+ (copy-recursively (assoc-ref %build-inputs "source")
+ out)))))
+ (synopsis "Continuous saving of tmux environment")
+ (description
+ "Features:
+
+@itemize
+@item continuous saving of tmux environment
+@item automatic tmux start when computer/server is turned on
+@item automatic restore when tmux is started
+@end itemize
+
+Together, these features enable uninterrupted tmux usage. No matter the
+computer or server restarts, if the machine is on, tmux will be there how you
+left it off the last time it was used.")
+ (home-page "https://github.com/tmux-plugins/tmux-continuum/")
+ (license license:expat))))
+
(define-public tmux-plugin-mem-cpu-load
(package
(name "tmux-plugin-mem-cpu-load")
diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 8951c2ff57..3e17d47a7a 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -266,6 +266,17 @@ will be used in description and synopsis."
#:inputs (list tree-sitter-javascript)
#:grammar-directories '("typescript" "tsx")))
+(define-public tree-sitter-bibtex
+ (let ((commit "ccfd77db0ed799b6c22c214fe9d2937f47bc8b34")
+ (revision "0"))
+ (tree-sitter-grammar
+ "bibtex" "Bibtex"
+ "0m7f3dkqbmy8x1bhl11m8f4p6n76wfvh99rp46zrqv39355nw1y2"
+ (git-version "0.1.0" revision commit)
+ #:repository-url "https://github.com/latex-lsp/tree-sitter-bibtex"
+ #:commit commit
+ #:license license:expat)))
+
(define-public tree-sitter-css
(tree-sitter-grammar
"css" "CSS"
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 1db0931ac3..40b9e124d2 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -846,6 +846,12 @@ to GitHub contributions calendar.")
'()))
#:phases
(modify-phases %standard-phases
+ ,@(if (target-arm32?)
+ ;; Some tests are flaky on armhf.
+ '((add-before 'check 'pre-check
+ (lambda _
+ (setenv "GITTEST_FLAKY_STAT" "true"))))
+ '())
;; Run checks more verbosely, unless we are cross-compiling.
(replace 'check
(lambda* (#:key (tests? #t) #:allow-other-keys)
@@ -2611,13 +2617,13 @@ email header.")
(define-public b4
(package
(name "b4")
- (version "0.8.0")
+ (version "0.12.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "b4" version))
(sha256
- (base32 "115ysciq15sxc8fd9hf7p0f4wnd5xapcfkmq8g33y1c8nbdxclbx"))))
+ (base32 "0qwi2f729mflrv8dazb3xbs23hzprbchjrhjcc8fjvpn7yvnrd7f"))))
(build-system python-build-system)
(arguments
(list #:tests? #f ;no tests
@@ -3114,7 +3120,7 @@ file contents on a remote server.")
(define-public lfs-s3
(package
(name "lfs-s3")
- (version "0.1")
+ (version "0.1.2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -3123,7 +3129,7 @@ file contents on a remote server.")
(file-name (git-file-name name version))
(sha256
(base32
- "0nkxivb356f1zjlj34px601zy86w4398db9s2ivd178jp4v69raw"))))
+ "0ncfy3lgc7dik9k71xk9l5f2llsh2jk33aaqb8dkslschc1mx4g6"))))
(build-system go-build-system)
(arguments
(list
@@ -3133,8 +3139,7 @@ file contents on a remote server.")
(list go-github-com-aws-aws-sdk-go-v2
go-github-com-aws-aws-sdk-go-v2-config
go-github-com-aws-aws-sdk-go-v2-feature-s3-manager
- go-github-com-aws-aws-sdk-go-v2-service-s3
- go-github-com-spf13-cobra))
+ go-github-com-aws-aws-sdk-go-v2-service-s3))
(home-page "https://git.sr.ht/~ngraves/lfs-s3/")
(synopsis "Git extension for versioning large files in S3")
(description
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 3b6af31b76..55eab972b9 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -780,7 +780,7 @@ old-fashioned output methods with powerful ascii-art renderer.")
(define-public celluloid
(package
(name "celluloid")
- (version "0.24")
+ (version "0.25")
(source
(origin
(method url-fetch)
@@ -788,7 +788,7 @@ old-fashioned output methods with powerful ascii-art renderer.")
"/releases/download/v" version
"/celluloid-" version ".tar.xz"))
(sha256
- (base32 "0ns9xh582c8kajw4v2x5ap5jfiba3gxywqc2klc0v6fc3id1gqii"))))
+ (base32 "0an98lz90s4hhvrvqd1ja814mav9md9n843vhknjgcv4zmrwn0sg"))))
(build-system meson-build-system)
(arguments
(list
@@ -1035,7 +1035,7 @@ H.264 (MPEG-4 AVC) video streams.")
("pkg-config" ,pkg-config)
("po4a" ,po4a)
("qttools-5" ,qttools-5)
- ("ruby" ,ruby)))
+ ("ruby" ,ruby-2.7)))
(arguments
`(#:configure-flags
(list (string-append "--with-boost="
@@ -3476,40 +3476,8 @@ and JACK.")
(license license:gpl2+)))
(define-public obs-websocket
- (package
- (name "obs-websocket")
- (version "4.9.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Palakis/obs-websocket")
- (commit version)
- (recursive? #t)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0giwhm0rbc578qng4invqqma935zzjlf05msz1gx986aqk654s7k"))))
- (build-system cmake-build-system)
- (arguments
- `(#:tests? #f ;no tests
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-permission-change
- (lambda* _
- (substitute* "CMakeLists.txt"
- ;; Remove lines that set writeable permissions on outputs.
- (("PERMISSIONS [^)]*") "")
- (("set\\(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS") "")
- ;; Ug^WClever hack to comment out the next line, which is ‘)’.
- (("(OWNER|GROUP|WORLD)_READ .*") "#")))))))
- (inputs
- (list obs qtbase-5))
- (home-page "https://github.com/Palakis/obs-websocket")
- (synopsis "OBS plugin for remote control via WebSockets")
- (description "This OBS plugin allows you to establish a WebSocket channel
-from within your running OBS instance so that you can control it remotely from
-programs on your current machine or on other machines.")
- (license license:gpl2+)))
+ ;; Functionality was merged into OBS.
+ (deprecated-package "obs-websocket" obs))
(define-public obs-wlrobs
(package
@@ -3750,7 +3718,7 @@ Other features include a live preview and live streaming.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
+ "1srzyjks9s0g4k7ms8vc0hjby2g6shndnr552hl63pn90sgmwxs9"))))
(build-system gnu-build-system)
(arguments
;; libsmpeg fails to build with -std=c++11, which is the default with
@@ -3786,7 +3754,7 @@ and MPEG system streams.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "0jfi085rf3fa5xsn0vd3nqf32my8ph9c6a9445y7a8lrlz4dms64"))))
+ "1jy9xqykhwfg8in0fxjcqcvwazii1ckzs39wp749b926q7ny5bwy"))))
(inputs
(list sdl))))
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 7d1f61be53..a7031b46b2 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -587,7 +587,7 @@ driven and does not detract you from your daily work.")
(define-public nyxt
(package
(name "nyxt")
- (version "3.1.0")
+ (version "3.2.0")
(source
(origin
(method git-fetch)
@@ -596,7 +596,7 @@ driven and does not detract you from your daily work.")
(commit version)))
(sha256
(base32
- "01h2430z43bh8mxb5xyvz4kqcdim1dlh1crf41pzavq2a6r2aw0z"))
+ "0igvj5v2k96kmbybx4lm3v26iylw114lvp0h5wx7kjfq03m50ffp"))
(file-name (git-file-name "nyxt" version))
(modules '((guix build utils)))
(snippet
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 3af4aa0b8d..f5b6c8cd2f 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -40,7 +40,7 @@
;;; Copyright © 2019, 2020 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2020, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2021, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
@@ -142,7 +142,6 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
- #:use-module (gnu packages hurd)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages java)
@@ -4849,7 +4848,7 @@ CDF, Atom 0.3, and Atom 1.0 feeds.")
bash-minimal))
(propagated-inputs
(list guix
- guile-fibers-next
+ guile-fibers-1.3
guile-json-4
guile-email
guile-prometheus
@@ -5242,7 +5241,9 @@ C. It is developed as part of the NetSurf project.")
(sha256
(base32
"1dimfyblmym98qa1b80c5jslv2zk8r44xbdrgrsrw1n9wr9y4yly"))
- (patches (search-patches "hubbub-sort-entities.patch"))))
+ (patches (search-patches
+ "hubbub-sort-entities.patch"
+ "hubbub-maybe-uninitialized.patch"))))
(build-system gnu-build-system)
(native-inputs
(list netsurf-buildsystem
@@ -7783,7 +7784,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
(inputs
;; Required to build the tools (i.e. without ‘--enable-lib-only’).
(append
- (if (hurd-target?)
+ (if (target-hurd?)
`((,openssl "static"))
(list jemalloc)) ; fight nghttpd{,x} heap fragmentation
(list c-ares
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index f1b810adbd..5ab93ad9eb 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -222,7 +222,7 @@ engine that uses Wayland for graphics output.")
pkg-config
python-wrapper
gi-docgen
- ruby
+ ruby-2.7
unifdef))
(propagated-inputs
(list gtk+ libsoup))
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 7f5e10b60d..860e804452 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -331,20 +331,33 @@ commands would.")
"0jrya4rhh46sivlmqaqc4n9abpp1yn1ajhi616gn75cxwl8rjqr8"))))
(build-system meson-build-system)
(arguments
- `(;; The test suite requires the unpackaged Xephyr X server.
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'install 'patch-session-file
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (i3 (string-append out "/bin/i3"))
- (i3-with-shmlog (string-append out "/bin/i3-with-shmlog")))
- (substitute* (string-append out "/share/xsessions/i3.desktop")
- (("Exec=i3") (string-append "Exec=" i3)))
- (substitute* (string-append out "/share/xsessions/i3-with-shmlog.desktop")
- (("Exec=i3-with-shmlog") (string-append "Exec=" i3-with-shmlog)))
- #t))))))
+ (list
+ ;; The test suite requires the unpackaged Xephyr X server.
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'patch-session-file
+ (lambda _
+ (let ((i3 (string-append #$output "/bin/i3"))
+ (i3-with-shmlog (string-append #$output "/bin/i3-with-shmlog")))
+ (substitute* (string-append #$output "/share/xsessions/i3.desktop")
+ (("Exec=i3") (string-append "Exec=" i3)))
+ (substitute* (string-append #$output "/share/xsessions/i3-with-shmlog.desktop")
+ (("Exec=i3-with-shmlog") (string-append "Exec=" i3-with-shmlog))))))
+ (add-after 'patch-session-file 'wrap-perl-bin
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((i3-save-tree (string-append #$output "/bin/i3-save-tree"))
+ (perl-lib-names '("perl-anyevent"
+ "perl-anyevent-i3"
+ "perl-json-xs"
+ "perl-common-sense"
+ "perl-types-serialiser"))
+ (perl-lib-paths
+ (map (lambda (name)
+ (string-append (assoc-ref inputs name) "/lib/perl5/site_perl"))
+ perl-lib-names)))
+ (wrap-program i3-save-tree
+ `("PERL5LIB" ":" prefix ,perl-lib-paths))))))))
(inputs
(list libxcb
xcb-util
@@ -356,6 +369,11 @@ commands would.")
libev
yajl
xmlto
+ perl
+ perl-anyevent-i3
+ perl-json-xs
+ perl-common-sense
+ perl-types-serialiser
perl-pod-simple
libx11
pcre2
@@ -1090,7 +1108,7 @@ the XDG Autostart specification.")
(define-public fnott
(package
(name "fnott")
- (version "1.3.0")
+ (version "1.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1099,7 +1117,7 @@ the XDG Autostart specification.")
(file-name (git-file-name name version))
(sha256
(base32
- "00zg03nz79kqcsnwmm22friawhvl05f93yxpvqmy5wvggx9hrlz8"))))
+ "0l0brayvcifrc5rxxkqfrskd6523vs3allg2cxhwkixqf2ddg7kh"))))
(build-system meson-build-system)
(arguments `(#:build-type "release"))
(native-inputs
@@ -1566,7 +1584,7 @@ functionality to display information about the most commonly used services.")
(define-public wlroots
(package
(name "wlroots")
- (version "0.16.1")
+ (version "0.16.2")
(source
(origin
(method git-fetch)
@@ -1575,7 +1593,7 @@ functionality to display information about the most commonly used services.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "11kcica9waj1a1xgbi12gif9z5z0b4xzycbcgawbgdmj77pws8sk"))))
+ (base32 "1m12nv6avgnz626h3giqp6gcx44w1wq6z0jy780mx8z255ic7q15"))))
(build-system meson-build-system)
(arguments
`(#:phases
@@ -1610,7 +1628,7 @@ functionality to display information about the most commonly used services.")
(list
`(,hwdata "pnp")
pkg-config))
- (home-page "https://github.com/swaywm/wlroots")
+ (home-page "https://gitlab.freedesktop.org/wlroots/wlroots/")
(synopsis "Pluggable, composable, unopinionated modules for building a
Wayland compositor")
(description "wlroots is a set of pluggable, composable, unopinionated
@@ -1620,7 +1638,7 @@ modules for building a Wayland compositor.")
(define-public sway
(package
(name "sway")
- (version "1.8")
+ (version "1.8.1")
(source
(origin
(method git-fetch)
@@ -1629,7 +1647,7 @@ modules for building a Wayland compositor.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "17dqr2lkmcv2ssp7vky27zw599i77whpb1aqh1s6kl8a8vkrz6mg"))))
+ (base32 "1y7brfrsjnm9gksijgnr6zxqiqvn06mdiwsk5j87ggmxazxd66av"))))
(build-system meson-build-system)
(arguments
`(;; elogind is propagated by wlroots -> libseat
@@ -1761,7 +1779,7 @@ display a clock or apply image manipulation techniques to the background image."
(define-public swaynotificationcenter
(package
(name "swaynotificationcenter")
- (version "0.7.3")
+ (version "0.8.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1769,7 +1787,7 @@ display a clock or apply image manipulation techniques to the background image."
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1xvr5m5sqznr3dd512i5pk0d56v7n0ywdcy6rnz85vbf2k7b6kj5"))))
+ (base32 "1c3gd6mlr209jzzrh5jmws2lawnn3gr6smvzcw74kkpi3wvs7l0k"))))
(build-system meson-build-system)
(arguments (list #:configure-flags #~(list "-Dsystemd-service=false")))
(native-inputs
@@ -1785,6 +1803,8 @@ display a clock or apply image manipulation techniques to the background image."
gtk+
gtk-layer-shell
libhandy
+ libgee
+ pulseaudio
wayland-protocols))
(synopsis "Notification daemon with a graphical interface")
(description
@@ -2026,7 +2046,11 @@ Wayland compositors supporting the wlr-output-management protocol.")
(invoke "./autogen.sh")
(invoke "sh" "./configure" "SHELL=sh")
(apply invoke "make" "stumpwm.info" make-flags)
- (install-file "stumpwm.info" info)))))))
+ (install-file "stumpwm.info" info))))
+ (add-after 'install-manual 'remove-temporary-cache
+ (lambda* (#:key outputs #:allow-other-keys)
+ (delete-file-recursively (string-append (assoc-ref outputs "lib")
+ "/.cache")))))))
(synopsis "Window manager written in Common Lisp")
(description
"Stumpwm is a window manager written entirely in Common Lisp.
@@ -2069,6 +2093,7 @@ productive, customizable lisp based systems.")
(delete 'copy-source)
(delete 'build)
(delete 'check)
+ (delete 'remove-temporary-cache)
(delete 'cleanup)))))))
(define stumpwm-contrib
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index b8671d1cf6..cdd5a48259 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -3380,7 +3380,7 @@ MouseKeys-acceleration management.")
(define-public wlsunset
(package
(name "wlsunset")
- (version "0.2.0")
+ (version "0.3.0")
(source
(origin
(method git-fetch)
@@ -3390,7 +3390,7 @@ MouseKeys-acceleration management.")
(file-name (git-file-name name version))
(sha256
(base32
- "0hhsddh3rs066rbsjksr8kcwg8lvglbvs67dq0r5wx5c1xcwb51w"))))
+ "1wbz6m7p0czhyv7axg2gn0ffh1q1887khh6phvw35a2llichyrlc"))))
(build-system meson-build-system)
(inputs
(list wayland wayland-protocols))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e1a7cf96f9..e41ddea28f 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -468,33 +468,15 @@ Resources file.")
(description "Xorg font encoding files.")
(license license:public-domain)))
-(define (%xorg-font-origin font version hash)
- (origin
- (method url-fetch)
- (uri (string-append "mirror://xorg/individual/font/" font "-"
- version ".tar.bz2"))
- (sha256 hash)
- (modules '((guix build utils)))
- (snippet
- ;; Do not include timestamps in '.pcf.gz' files.
- '(begin
- (substitute* "Makefile.in"
- (("^COMPRESS = (.*)$" _ rest)
- (string-append "COMPRESS = " (string-trim-right rest)
- " --no-name\n")))
- #t))))
-
-(define-syntax-rule (xorg-font-origin font version hash)
- "Expand to the 'origin' form for the given Xorg font package."
- (%xorg-font-origin font version (base32 hash)))
-
(define-public font-adobe100dpi
(package
(name "font-adobe100dpi")
- (version "1.0.3")
- (source (xorg-font-origin
- "font-adobe-100dpi" version
- "0m60f5bd0caambrk8ksknb5dks7wzsg7g7xaf0j21jxmx8rq9h5j"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-adobe-100dpi-" version ".tar.xz"))
+ (sha256 "1kwwbaiqnfm3pcysy9gw0g9xhpgmhjcd6clp7zajhqq5br2gyymn")))
(build-system gnu-build-system)
(inputs
(list bdftopcf font-util mkfontdir))
@@ -513,10 +495,12 @@ Resources file.")
(define-public font-adobe75dpi
(package
(name "font-adobe75dpi")
- (version "1.0.3")
- (source (xorg-font-origin
- "font-adobe-75dpi" version
- "02advcv9lyxpvrjv8bjh1b797lzg6jvhipclz49z8r8y98g4l0n6"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-adobe-75dpi-" version ".tar.xz"))
+ (sha256 "04drk4wi176524lxjwfrnkr3dwz1hysabqfajpj6klfypqnsd08j")))
(build-system gnu-build-system)
(inputs
(list bdftopcf font-util mkfontdir))
@@ -538,10 +522,12 @@ Resources file.")
(define-public font-alias
(package
(name "font-alias")
- (version "1.0.4")
- (source (xorg-font-origin
- name version
- "0xjjjindczv3g7m1597l0x19zz75xy70wh5garghz61fpzl1l4gk"))
+ (version "1.0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-alias-" version ".tar.xz"))
+ (sha256 "0vkb5mybc0fjfq29lgf5w1b536bwifzkyj8ad9iy7q3kpcby52cz")))
(build-system gnu-build-system)
(native-inputs (list pkg-config))
(arguments
@@ -571,10 +557,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-arabic-misc
(package
(name "font-arabic-misc")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "1x246dfnxnmflzf0qzy62k8jdpkb6jkgspcjgbk8jcq9lw99npah"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-arabic-misc-" version ".tar.xz"))
+ (sha256 "0rrlcqbyx9y7hnhbkjir8rs6jkfqyalj1zvhr8niv2n7a8dydzs6")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -598,10 +586,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-cronyx-cyrillic
(package
(name "font-cronyx-cyrillic")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "0ai1v4n61k8j9x2a1knvfbl2xjxk3xxmqaq3p9vpqrspc69k31kf"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-cronyx-cyrillic-" version ".tar.xz"))
+ (sha256 "12dpsvif85z1m6jvq9g91lmzj0rll5rh3871mbvdpzyb1p7821yw")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -621,10 +611,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-dec-misc
(package
(name "font-dec-misc")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "0yzza0l4zwyy7accr1s8ab7fjqkpwggqydbm2vc19scdby5xz7g1"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-dec-misc-" version ".tar.xz"))
+ (sha256 "1xqs2qg21h5xg519810hw4bvykjdpf0xgk0xwp0bxy4g3lh6inc2")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -641,10 +633,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-isas-misc
(package
(name "font-isas-misc")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "0rx8q02rkx673a7skkpnvfkg28i8gmqzgf25s9yi0lar915sn92q"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-isas-misc-" version ".tar.xz"))
+ (sha256 "1z1qqi64hbp297f6ryiswa4ikfn7mcwnb8nadyglni6swsxrbra7")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -661,10 +655,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-micro-misc
(package
(name "font-micro-misc")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "1dldxlh54zq1yzfnrh83j5vm0k4ijprrs5yl18gm3n9j1z0q2cws"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-micro-misc-" version ".tar.xz"))
+ (sha256 "0hzryqyml0bzzw91vqdmzdlb7dm18jmyz0mxy6plks3sppbbkq1f")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -678,10 +674,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-misc-cyrillic
(package
(name "font-misc-cyrillic")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "0q2ybxs8wvylvw95j6x9i800rismsmx4b587alwbfqiw6biy63z4"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-misc-cyrillic-" version ".tar.xz"))
+ (sha256 "14z9x174fidjn65clkd2y1l6pxspmvphizap9a8h2h06adzil0kn")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -695,10 +693,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-misc-ethiopic
(package
(name "font-misc-ethiopic")
- (version "1.0.4")
- (source (xorg-font-origin
- name version
- "1q2azkdwc4x3kh53xclwpf9q654k70lhiyns1cjq594wvxnhz339"))
+ (version "1.0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-misc-ethiopic-" version ".tar.xz"))
+ (sha256 "04mnd620s9wkdid9wnf181yh5vf0n7l096nc3z4zdvm1w7kafja7")))
(build-system gnu-build-system)
(inputs
(list mkfontdir mkfontscale))
@@ -715,10 +715,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-misc-misc
(package
(name "font-misc-misc")
- (version "1.1.2")
- (source (xorg-font-origin
- name version
- "150pq6n8n984fah34n3k133kggn9v0c5k07igv29sxp1wi07krxq"))
+ (version "1.1.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-misc-misc-" version ".tar.xz"))
+ (sha256 "1vcgc6lbc53fqaz8alhxcb6f231hhvj9hn2nkzg1mclbymhy7avr")))
(build-system gnu-build-system)
(inputs
(list mkfontdir font-util bdftopcf))
@@ -735,10 +737,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-mutt-misc
(package
(name "font-mutt-misc")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "13qghgr1zzpv64m0p42195k1kc77pksiv059fdvijz1n6kdplpxx"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-mutt-misc-" version ".tar.xz"))
+ (sha256 "095vd33kqd157j6xi4sjxwdsjpwpgqliifa8nkybq8rcw7s5j8xi")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -752,10 +756,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-schumacher-misc
(package
(name "font-schumacher-misc")
- (version "1.1.2")
- (source (xorg-font-origin
- name version
- "0nkym3n48b4v36y4s927bbkjnsmicajarnf6vlp7wxp0as304i74"))
+ (version "1.1.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-schumacher-misc-" version ".tar.xz"))
+ (sha256 "0w40lr214n39al449fnm4k1bpyj3fjrhz2yxqd6a6m8yvc69z14b")))
(build-system gnu-build-system)
(inputs
(list mkfontdir font-util bdftopcf))
@@ -772,10 +778,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-screen-cyrillic
(package
(name "font-screen-cyrillic")
- (version "1.0.4")
- (source (xorg-font-origin
- name version
- "0yayf1qlv7irf58nngddz2f1q04qkpr5jwp4aja2j5gyvzl32hl2"))
+ (version "1.0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-screen-cyrillic-" version ".tar.xz"))
+ (sha256 "1h75zn1rp7bdv6av4cnrajpaq6fkd7dx1lc7aijpw32qrnw8nxcg")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -789,10 +797,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-sony-misc
(package
(name "font-sony-misc")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "1xfgcx4gsgik5mkgkca31fj3w72jw9iw76qyrajrsz1lp8ka6hr0"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-sony-misc-" version ".tar.xz"))
+ (sha256 "0swlhjmmagrfkip4i9yq7cr56hains1j41mjs05nxc6c7y19zc76")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -806,10 +816,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-sun-misc
(package
(name "font-sun-misc")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "1q6jcqrffg9q5f5raivzwx9ffvf7r11g6g0b125na1bhpz5ly7s8"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-sun-misc-" version ".tar.xz"))
+ (sha256 "17yvhk1hlajm3q57r09q8830zz7cnckrg8hgzajgyyljdl8xv16x")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -842,10 +854,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-winitzki-cyrillic
(package
(name "font-winitzki-cyrillic")
- (version "1.0.3")
- (source (xorg-font-origin
- name version
- "181n1bgq8vxfxqicmy1jpm1hnr6gwn1kdhl6hr4frjigs1ikpldb"))
+ (version "1.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-winitzki-cyrillic-" version ".tar.xz"))
+ (sha256 "1a4pz8f7hz6nn9xirz2k1j81ykl3lwrpi1ydmzipciy15l984v9v")))
(build-system gnu-build-system)
(inputs
(list mkfontdir bdftopcf))
@@ -859,10 +873,12 @@ For example: @code{6x10}, @code{9x15bold}, etc.")
(define-public font-xfree86-type1
(package
(name "font-xfree86-type1")
- (version "1.0.4")
- (source (xorg-font-origin
- name version
- "0jp3zc0qfdaqfkgzrb44vi9vi0a8ygb35wp082yz7rvvxhmg9sya"))
+ (version "1.0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://xorg/individual/font/"
+ "font-xfree86-type1-" version ".tar.xz"))
+ (sha256 "0ds8xbgxy9h0bqn2p38vylfzn8cqkp7n51kwmw1c18ayi9w2qg59")))
(build-system gnu-build-system)
(inputs
(list mkfontdir mkfontscale))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index c5b06b57e8..bbc2ac2c79 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -2799,6 +2799,12 @@ to CONFIG."
#$@(map (lambda (address)
#~(begin
+ ;; Before going any further, wait for the
+ ;; device to show up.
+ (wait-for-link
+ #$(network-address-device address)
+ #:blocking? #f)
+
(addr-add #$(network-address-device address)
#$(network-address-value address)
#:ipv6?
diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm
index 8e6784df2b..0c45471659 100644
--- a/gnu/services/certbot.scm
+++ b/gnu/services/certbot.scm
@@ -173,20 +173,24 @@
(match-lambda
(($ <certbot-configuration> package webroot certificates email
server rsa-key-size default-location)
- (list
- (nginx-server-configuration
- (listen '("80" "[::]:80"))
- (ssl-certificate #f)
- (ssl-certificate-key #f)
- (server-name
- (apply append (map certificate-configuration-domains certificates)))
- (locations
- (filter identity
- (list
- (nginx-location-configuration
- (uri "/.well-known")
- (body (list (list "root " webroot ";"))))
- default-location))))))))
+ (define (certificate->nginx-server certificate-configuration)
+ (match-record certificate-configuration <certificate-configuration>
+ (domains challenge)
+ (nginx-server-configuration
+ (listen '("80" "[::]:80"))
+ (ssl-certificate #f)
+ (ssl-certificate-key #f)
+ (server-name domains)
+ (locations
+ (filter identity
+ (append
+ (if challenge
+ '()
+ (list (nginx-location-configuration
+ (uri "/.well-known")
+ (body (list (list "root " webroot ";"))))))
+ (list default-location)))))))
+ (map certificate->nginx-server certificates))))
(define certbot-service-type
(service-type (name 'certbot)
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 2e311e3813..880557915c 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ryan Moe <ryan.moe@gmail.com>
-;;; Copyright © 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2020-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
@@ -962,6 +962,11 @@ specified, the QEMU default path is used."))
(list
(shepherd-service
(provision '(qemu-guest-agent))
+
+ ;; The service needs to depend on udev, which brings up devices like
+ ;; those under /dev/virtio-ports.
+ (requirement '(user-processes udev))
+
(documentation "Run the QEMU guest agent.")
(start #~(make-forkexec-constructor
`(,(string-append #$qemu "/bin/qemu-ga")
diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
index 558d1ee9e3..387605ec4f 100644
--- a/gnu/system/hurd.scm
+++ b/gnu/system/hurd.scm
@@ -57,7 +57,7 @@
;;; Code:
(define %hurd-default-operating-system-kernel
- (if (hurd-system?)
+ (if (system-hurd?)
gnumach
;; A cross-built GNUmach does not work
(with-parameters ((%current-system "i686-linux")
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index afef79185f..81346495c2 100644
--- a/gnu/system/image.scm
+++ b/gnu/system/image.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2022 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -390,6 +391,9 @@ used in the image."
((or (string=? file-system "vfat")
(string=? file-system "fat16")
(string=? file-system "fat32")) "F")
+ ((and (string=? file-system "unformatted")
+ (partition-uuid partition))
+ (uuid->string (partition-uuid partition)))
(else
(raise (condition
(&message
@@ -414,7 +418,14 @@ used in the image."
(with-imported-modules*
(let ((initializer (or #$(partition-initializer partition)
initialize-root-partition))
- (inputs '#+(list e2fsprogs fakeroot dosfstools mtools))
+ (inputs '#+(cond
+ ((string-prefix? "ext" type)
+ (list e2fsprogs fakeroot))
+ ((or (string=? type "vfat")
+ (string-prefix? "fat" type))
+ (list dosfstools fakeroot mtools))
+ (else
+ '())))
(image-root "tmp-root"))
(sql-schema #$schema)
diff --git a/gnu/system/images/unmatched.scm b/gnu/system/images/unmatched.scm
new file mode 100644
index 0000000000..d40a32f184
--- /dev/null
+++ b/gnu/system/images/unmatched.scm
@@ -0,0 +1,102 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system images unmatched)
+ #:use-module (gnu bootloader)
+ #:use-module (gnu bootloader u-boot)
+ #:use-module (gnu image)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu services)
+ #:use-module (gnu services base)
+ #:use-module (gnu services networking)
+ #:use-module (gnu system)
+ #:use-module (gnu system file-systems)
+ #:use-module (gnu system image)
+ #:use-module (guix platforms riscv)
+ #:use-module (srfi srfi-26)
+ #:export (unmatched-barebones-os
+ unmatched-image-type
+ unmatched-barebones-raw-image))
+
+(define unmatched-barebones-os
+ (operating-system
+ (host-name "unmatched")
+ (timezone "Asia/Jerusalem")
+ (locale "en_US.utf8")
+ (bootloader (bootloader-configuration
+ (bootloader u-boot-sifive-unmatched-bootloader)
+ (targets '("/dev/vda"))))
+ (initrd-modules '())
+ (kernel linux-libre-riscv64-generic)
+ (file-systems (cons (file-system
+ (device (file-system-label "my-root"))
+ (mount-point "/")
+ (type "ext4"))
+ %base-file-systems))
+ (services
+ (append (list (service agetty-service-type
+ (agetty-configuration
+ (extra-options '("-L")) ; no carrier detect
+ (baud-rate "115200")
+ (term "vt100")
+ (tty "ttySIF0")))
+ (service dhcp-client-service-type))
+ %base-services))))
+
+(define unmatched-disk-image
+ (image-without-os
+ (format 'disk-image)
+ (partition-table-type 'gpt)
+ ;; https://source.denx.de/u-boot/u-boot/-/blob/master/doc/board/sifive/unmatched.rst
+ ;; The boot process goes:
+ ;; * zero-stage bootloader (ZSBL) in ROM and first-stage bootloader (FSBL)
+ ;; together perform the SoC initialization and hand off to the next stage.
+ ;; * BBL (Berkeley bootloader) takes the device-tree and brings up the rest
+ ;; of the board, then boots the desired operating system.
+ (partitions (list
+ (partition
+ ;; Special UUID for HiFive first-stage bootloader (FSBL).
+ (size (* 1 (expt 2 20)))
+ (label "spl")
+ (offset (* 34 512))
+ (file-system "unformatted")
+ (uuid (uuid "5b193300-fc78-40cd-8002-e86c45580b47")))
+ (partition
+ ;; Specific offset for compatibility with the defaults for
+ ;; u-boot SPL. Special UUID for HiFive BBL (Berkeley bootloader).
+ (size (* 4 (expt 2 20)))
+ (label "uboot")
+ (offset (* 2082 512))
+ (file-system "unformatted")
+ (uuid (uuid "2e54b353-1271-4842-806f-e436d6af6985")))
+ root-partition))))
+
+(define unmatched-image-type
+ (image-type
+ (name 'unmatched-raw)
+ (constructor (cut image-with-os unmatched-disk-image <>))))
+
+(define unmatched-barebones-raw-image
+ (image
+ (inherit
+ (os+platform->image unmatched-barebones-os riscv64-linux
+ #:type unmatched-image-type))
+ (name 'unmatched-barebones-raw-image)))
+
+;; Return the default image.
+unmatched-barebones-raw-image
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 409386a84f..7c45dbccaf 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -150,15 +150,18 @@ containerized OS. EXTRA-FILE-SYSTEMS is a list of file systems to add to OS."
(essential-services (container-essential-services
this-operating-system
#:shared-network? shared-network?))
- (services (append (remove (lambda (service)
- (memq (service-kind service)
- services-to-drop))
- (modify-services (operating-system-user-services os)
- (nscd-service-type
- config => (nscd-configuration
- (inherit config)
- (caches %nscd-container-caches)))))
- services-to-add))
+ (services
+ (append services-to-add
+ (filter-map (lambda (s)
+ (cond ((memq (service-kind s) services-to-drop)
+ #f)
+ ((eq? nscd-service-type (service-kind s))
+ (service nscd-service-type
+ (nscd-configuration
+ (inherit (service-value s))
+ (caches %nscd-container-caches))))
+ (else s)))
+ (operating-system-user-services os))))
(file-systems (append (map mapping->fs
(if shared-network?
(append %network-file-mappings mappings)
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 4a8cc87f0f..9ca1895ded 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013-2020, 2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2020, 2022, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2023 Efraim Flashner <efraim@flashner.co.il>
@@ -458,7 +458,7 @@ the /etc/skel directory for those."
(const '(user-homes)))
(service-extension etc-service-type
etc-files)))
- (default-value #f)
+ (default-value '())
(description
"Ensure the specified user accounts and groups exist, as well
as each account home directory.")))
diff --git a/gnu/system/uuid.scm b/gnu/system/uuid.scm
index a95dc1b7d1..8f967387ad 100644
--- a/gnu/system/uuid.scm
+++ b/gnu/system/uuid.scm
@@ -209,7 +209,7 @@ ISO9660 UUID representation."
(define (ntfs-uuid->string uuid)
"Convert NTFS UUID, a 8-byte bytevector, to its string representation."
- (format #f "~{~:@(~x~)~}" (reverse (bytevector->u8-list uuid))))
+ (format #f "~{~:@(~2,'0x~)~}" (reverse (bytevector->u8-list uuid))))
(define %ntfs-uuid-rx
(make-regexp "^([[:xdigit:]]{16})$"))
diff --git a/guix/avahi.scm b/guix/avahi.scm
index 132e42f268..cb0c85f9f4 100644
--- a/guix/avahi.scm
+++ b/guix/avahi.scm
@@ -137,7 +137,15 @@ when STOP-LOOP? procedure returns true."
(port port)
(txt txt))))
(hash-set! %known-hosts service-name service*)
- (proc 'new-service service*)))))
+ (proc 'new-service service*))))
+ ((eq? event resolver-event/failure)
+ ;; Failure to resolve the host associated with a service. This
+ ;; usually means that the mDNS record hasn't expired yet but that
+ ;; the host went off-line.
+ (let ((service (hash-ref %known-hosts service-name)))
+ (when service
+ (proc 'remove-service service)
+ (hash-remove! %known-hosts service-name)))))
(free-service-resolver! resolver))
(define (service-browser-callback browser interface protocol event
diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm
index d970c1beb9..aefd573d11 100644
--- a/guix/build-system/texlive.scm
+++ b/guix/build-system/texlive.scm
@@ -34,7 +34,8 @@
texlive-ref
texlive-origin
%texlive-tag
- %texlive-revision))
+ %texlive-revision
+ %texlive-date))
;; Commentary:
;;
@@ -46,6 +47,7 @@
;; are taken from https://www.tug.org/svn/texlive/tags/
(define %texlive-tag "texlive-2021.3")
(define %texlive-revision 59745)
+(define %texlive-date "2021-06-28 21:59:21Z")
(define (texlive-origin name version locations hash)
"Return an <origin> object for a TeX Live package consisting of multiple
diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-system.scm
index 93f7efbb2b..fb23894bc1 100644
--- a/guix/build/node-build-system.scm
+++ b/guix/build/node-build-system.scm
@@ -208,7 +208,8 @@ only after the 'patch-dependencies' phase."
(jsobject-update*
pkg-meta
`("devDependencies" ,delete-from-jsobject (@))
- `("dependencies" ,delete-from-jsobject (@))))))
+ `("dependencies" ,delete-from-jsobject (@))
+ `("peerDependencies" ,delete-from-jsobject (@))))))
(define* (delete-lockfiles #:key inputs #:allow-other-keys)
"Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if they
diff --git a/guix/build/svn.scm b/guix/build/svn.scm
index 2d960cb364..875d3c50ca 100644
--- a/guix/build/svn.scm
+++ b/guix/build/svn.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2020, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
@@ -47,6 +47,13 @@ valid Subversion revision. Return #t on success, #f otherwise."
;; verify the checksum later. This can be removed when
;; ca-certificates package is added.
"--trust-server-cert" "-r" (number->string revision)
+
+ ;; Disable keyword substitutions (keywords are CVS-like strings
+ ;; like "$Date$", "$Id$", and so on) for two reasons: (1) some
+ ;; expansions depend on the local time zone, and (2) SWH disables
+ ;; it in its archive for this very reason.
+ "--ignore-keywords"
+
`(,@(if (and user-name password)
(list (string-append "--username=" user-name)
(string-append "--password=" password))
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 59ed65d929..18a1396cf5 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -95,7 +95,8 @@
("AGPL (>= 3)" (prefix 'agpl3+))
("Artistic-2.0" (prefix 'artistic2.0))
((or "Apache License 2.0"
- "Apache License (== 2.0)")
+ "Apache License (== 2.0)"
+ "Apache License (>= 2.0)")
(prefix 'asl2.0))
("BSD_2_clause" (prefix 'bsd-2))
("BSD_2_clause + file LICENSE" (prefix 'bsd-2))
diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm
index e65cf6683b..d1855b3698 100644
--- a/guix/import/elpa.scm
+++ b/guix/import/elpa.scm
@@ -461,13 +461,15 @@ type '<elpa-package>'."
(and uri
(cond
((string=? (uri-host uri) "elpa.gnu.org")
- 'gnu)
+ (if (eq? (uri-scheme uri) 'http)
+ 'gnu/http ;for testing
+ 'gnu))
((string=? (uri-host uri) "elpa.nongnu.org")
'nongnu)
(else #f))))))))
(define (package-from-elpa-repository? package)
- (member (elpa-repository package) '(gnu nongnu)))
+ (member (elpa-repository package) '(gnu gnu/http nongnu)))
(define %elpa-updater
;; The ELPA updater. We restrict it to packages hosted on elpa.gnu.org
diff --git a/guix/import/stackage.scm b/guix/import/stackage.scm
index f8b2726591..00814c7d46 100644
--- a/guix/import/stackage.scm
+++ b/guix/import/stackage.scm
@@ -158,13 +158,14 @@ PACKAGE or #f if the package is not included in the Stackage LTS release."
(warning (G_ "failed to parse ~a~%")
(hackage-cabal-url hackage-name))
#f)
- (_ (let ((url (hackage-source-url hackage-name version))
- (cabal (eval-cabal (hackage-fetch hackage-name) '())))
+ (_ (let ((url (hackage-source-url hackage-name version)))
(upstream-source
(package (package-name pkg))
(version version)
(urls (list url))
- (inputs (cabal-package-inputs cabal))))))))))
+ (inputs
+ (let ((cabal (eval-cabal (hackage-fetch name-version) '())))
+ (cabal-package-inputs cabal)))))))))))
(define (stackage-lts-package? package)
"Return whether PACKAGE is available on the default Stackage LTS release."
diff --git a/guix/packages.scm b/guix/packages.scm
index e26602d589..ba98bb0fb4 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -168,6 +168,9 @@
package-error-invalid-license
&package-input-error
package-input-error?
+ &package-cyclic-dependency-error
+ package-cyclic-dependency-error?
+ package-error-dependency-cycle
package-error-invalid-input
&package-cross-build-system-error
package-cross-build-system-error?
@@ -806,6 +809,10 @@ exist, return #f instead."
package-input-error?
(input package-error-invalid-input))
+(define-condition-type &package-cyclic-dependency-error &package-error
+ package-cyclic-dependency-error?
+ (cycle package-error-dependency-cycle))
+
(define-condition-type &package-cross-build-system-error &package-error
package-cross-build-system-error?)
@@ -1317,17 +1324,29 @@ in INPUTS and their transitive propagated inputs."
(let ()
(define (supported-systems-procedure system)
(define supported-systems
- (mlambdaq (package)
- (parameterize ((%current-system system))
- (fold (lambda (input systems)
- (match input
- ((label (? package? package) . _)
- (lset-intersection string=? systems
- (supported-systems package)))
- (_
- systems)))
- (package-supported-systems package)
- (bag-direct-inputs (package->bag package system #f))))))
+ ;; The VISITED parameter allows for cycle detection. This is a pretty
+ ;; strategic place to do that: most commands call it upfront, yet it's
+ ;; not on the hot path of 'package->derivation'. The downside is that
+ ;; only package-level cycles are detected.
+ (let ((visited (make-parameter (setq))))
+ (mlambdaq (package)
+ (when (set-contains? (visited) package)
+ (raise (condition
+ (&package-cyclic-dependency-error
+ (package package)
+ (cycle (set->list (visited)))))))
+
+ (parameterize ((visited (set-insert package (visited)))
+ (%current-system system))
+ (fold (lambda (input systems)
+ (match input
+ ((label (? package? package) . _)
+ (lset-intersection string=? systems
+ (supported-systems package)))
+ (_
+ systems)))
+ (package-supported-systems package)
+ (bag-direct-inputs (package->bag package system #f)))))))
supported-systems)
diff --git a/guix/records.scm b/guix/records.scm
index 5af3e780a0..f4d12a861d 100644
--- a/guix/records.scm
+++ b/guix/records.scm
@@ -110,7 +110,7 @@ error-reporting purposes."
(syntax-case x ()
((_ type within)
(syntax-violation (syntax->datum #'within)
- "undefined guix record-type"
+ "undefined record type"
#'type))
(_ (syntax-violation 'map-fields "bad use of syntactic keyword" x x)))))
diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
index 7b2c3ff6f0..fbd5689be8 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -67,6 +67,7 @@
#:use-module (guix monads)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-71)
diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm
index f84a964a53..4ddd8d46a1 100644
--- a/guix/scripts/import.scm
+++ b/guix/scripts/import.scm
@@ -85,7 +85,8 @@ Run IMPORTER with ARGS.\n"))
((importer args ...)
(if (member importer importers)
(let ((print (lambda (expr)
- (pretty-print-with-comments (current-output-port) expr))))
+ (leave-on-EPIPE
+ (pretty-print-with-comments (current-output-port) expr)))))
(match (apply (resolve-importer importer) args)
((and expr (or ('package _ ...)
('let _ ...)
diff --git a/guix/scripts/locate.scm b/guix/scripts/locate.scm
new file mode 100644
index 0000000000..aeaffa3d34
--- /dev/null
+++ b/guix/scripts/locate.scm
@@ -0,0 +1,659 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022, 2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2023 Antoine R. Dumont <antoine.romain.dumont@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix scripts locate)
+ #:use-module ((guix config) #:select (%localstatedir))
+ #:use-module (guix i18n)
+ #:use-module ((guix ui)
+ #:select (show-version-and-exit
+ show-bug-report-information
+ with-error-handling
+ string->number*
+ display-hint
+ leave-on-EPIPE))
+ #:use-module (guix diagnostics)
+ #:use-module (guix scripts)
+ #:use-module (sqlite3)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 format)
+ #:use-module (guix store)
+ #:use-module (guix monads)
+ #:autoload (guix combinators) (fold2)
+ #:autoload (guix grafts) (%graft?)
+ #:autoload (guix store roots) (gc-roots)
+ #:use-module (guix derivations)
+ #:use-module (guix packages)
+ #:use-module (guix profiles)
+ #:autoload (guix progress) (progress-reporter/bar
+ call-with-progress-reporter)
+ #:use-module (guix sets)
+ #:use-module ((guix utils) #:select (cache-directory))
+ #:autoload (guix build utils) (find-files mkdir-p)
+ #:autoload (gnu packages) (fold-packages)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-37)
+ #:use-module (srfi srfi-71)
+ #:export (guix-locate))
+
+(define %db-schema-version
+ ;; Current database schema version.
+ 3)
+
+;; The following schema is the full schema at the `%db-schema-version`. It
+;; should be modified according to the development required and
+;; `%db-schema-version` should be bumped. If the schema needs modification
+;; across time, those should be changed directly in the full-schema and the
+;; incremental changes should be referenced as migration step below for the
+;; new `%db-schema-version` (for the existing dbs to know what to migrate).
+(define %db-schema
+ "
+create table if not exists SchemaVersion (
+ version integer primary key not null,
+ date integer,
+ store text not null, -- value of (%store-prefix)
+ unique (version)
+);
+
+create table if not exists Packages (
+ id integer primary key autoincrement not null,
+ name text not null,
+ version text not null,
+ output text,
+ unique (name, version) -- add uniqueness constraint
+);
+
+create table if not exists Directories (
+ id integer primary key autoincrement not null,
+ name text not null,
+ package integer not null,
+ foreign key (package) references Packages(id) on delete cascade,
+ unique (name, package) -- add uniqueness constraint
+);
+
+create table if not exists Files (
+ name text not null,
+ basename text not null,
+ directory integer not null,
+ foreign key (directory) references Directories(id) on delete cascade
+ unique (name, basename, directory) -- add uniqueness constraint
+);
+
+create index if not exists IndexFiles on Files(basename);")
+
+;; List of tuple ((version . sqlite schema migration script)). There should be
+;; as much version increments as step needed to migrate the db.
+(define schema-to-migrate '((1 . "
+create table if not exists SchemaVersion (
+ version integer primary key not null,
+ unique (version)
+);
+")
+ (2 . "
+alter table SchemaVersion
+add column date date;
+")
+ (3 . "
+alter table Packages
+add column output text;
+")))
+
+(define (call-with-database file proc)
+ (let ((db (sqlite-open file)))
+ (dynamic-wind
+ (lambda () #t)
+ (lambda ()
+ (ensure-latest-database-schema db)
+ (proc db))
+ (lambda () (sqlite-close db)))))
+
+(define (ensure-latest-database-schema db)
+ "Ensure DB follows the latest known version of the schema."
+ (define (initialize)
+ (sqlite-exec db %db-schema)
+ (insert-version db %db-schema-version))
+
+ (let ((version (false-if-exception (read-version db))))
+ (cond ((not version)
+ (initialize))
+ ((> version %db-schema-version)
+ (initialize))
+ (else
+ (catch #t
+ (lambda ()
+ ;; Migrate from the current version to the full migrated schema.
+ ;; This can raise sqlite-error if the db is not properly configured yet
+ (let loop ((current version))
+ (when (< current %db-schema-version)
+ ;; when the current db version is older than the current application
+ (let* ((next (+ current 1))
+ (migration (assoc-ref schema-to-migrate next)))
+ (when migration
+ (sqlite-exec db migration)
+ (insert-version db next))
+ (loop next)))))
+ (lambda _
+ ;; Exception handler in case failure to read an inexisting db:
+ ;; fallback to bootstrap the schema.
+ (initialize)))))))
+
+(define (last-insert-row-id db) ;XXX: copied from (guix store database)
+ ;; XXX: (sqlite3) currently lacks bindings for 'sqlite3_last_insert_rowid'.
+ ;; Work around that.
+ (define stmt
+ (sqlite-prepare db "SELECT last_insert_rowid();"
+ #:cache? #t))
+ (match (sqlite-fold cons '() stmt)
+ ((#(id)) id)
+ (_ #f)))
+
+(define (insert-version db version)
+ "Insert application VERSION into the DB."
+ (define stmt-insert-version
+ (sqlite-prepare db "\
+INSERT OR IGNORE INTO SchemaVersion(version, date, store)
+VALUES (:version, CURRENT_TIMESTAMP, :store);"
+ #:cache? #t))
+ (sqlite-exec db "begin immediate;")
+ (sqlite-bind-arguments stmt-insert-version
+ #:version version
+ #:store (%store-prefix))
+ (sqlite-fold (const #t) #t stmt-insert-version)
+ (sqlite-exec db "commit;"))
+
+(define (read-version db)
+ "Read the current application version from the DB."
+
+ (define stmt-select-version (sqlite-prepare db "\
+SELECT version FROM SchemaVersion ORDER BY version DESC LIMIT 1;"
+ #:cache? #f))
+ (match (sqlite-fold cons '() stmt-select-version)
+ ((#(version))
+ version)))
+
+(define user-database-file
+ ;; Default user database file name.
+ (string-append (cache-directory #:ensure? #f)
+ "/locate/db.sqlite"))
+
+(define system-database-file
+ ;; System-wide database file name.
+ (string-append %localstatedir "/cache/guix/locate/db.sqlite"))
+
+(define (suitable-database create?)
+ "Return a suitable database file. When CREATE? is true, the returned
+database will be opened for writing; otherwise, return the most recent one,
+user or system."
+ (if (zero? (getuid))
+ system-database-file
+ (if create?
+ user-database-file
+ (let ((system (stat system-database-file #f))
+ (user (stat user-database-file #f)))
+ (if user
+ (if (and system (> (stat:mtime system) (stat:mtime user)))
+ system-database-file
+ user-database-file)
+ (if system
+ system-database-file
+ user-database-file))))))
+
+(define (clear-database db)
+ "Drop packages and files from DB."
+ (sqlite-exec db "BEGIN IMMEDIATE;")
+ (sqlite-exec db "DELETE FROM Files;")
+ (sqlite-exec db "DELETE FROM Directories;")
+ (sqlite-exec db "DELETE FROM Packages;")
+ (sqlite-exec db "COMMIT;")
+ (sqlite-exec db "VACUUM;"))
+
+(define (print-statistics file)
+ "Print statistics about the database in FILE."
+ (define (count db table)
+ (define stmt
+ (sqlite-prepare
+ db (string-append "SELECT COUNT(*) FROM " table ";")))
+
+ (match (sqlite-fold cons '() stmt)
+ ((#(number)) number)))
+
+ (call-with-database file
+ (lambda (db)
+ (format #t (G_ "schema version:\t~a~%")
+ (read-version db))
+ (format #t (G_ "number of packages:\t~9h~%")
+ (count db "Packages"))
+ (format #t (G_ "number of files:\t~9h~%")
+ (count db "Files"))
+ (format #t (G_ "database size:\t~9h MiB~%")
+ (inexact->exact
+ (round (/ (stat:size (stat file))
+ (expt 2 20))))))))
+
+
+;;;
+;;; Indexing from local packages.
+;;;
+
+(define (insert-files db package version outputs directories)
+ "Insert DIRECTORIES files belonging to VERSION PACKAGE (with OUTPUTS)."
+ (define stmt-select-package
+ (sqlite-prepare db "\
+SELECT id FROM Packages WHERE name = :name AND version = :version LIMIT 1;"
+ #:cache? #t))
+
+ (define stmt-insert-package
+ (sqlite-prepare db "\
+INSERT OR IGNORE INTO Packages(name, version, output)
+VALUES (:name, :version, :output);"
+ #:cache? #t))
+
+ (define stmt-select-directory
+ (sqlite-prepare db "\
+SELECT id FROM Directories WHERE package = :package;"
+ #:cache? #t))
+
+ (define stmt-insert-directory
+ (sqlite-prepare db "\
+INSERT OR IGNORE INTO Directories(name, package) -- to avoid spurious writes
+VALUES (:name, :package);"
+ #:cache? #t))
+
+ (define stmt-insert-file
+ (sqlite-prepare db "\
+INSERT OR IGNORE INTO Files(name, basename, directory)
+VALUES (:name, :basename, :directory);"
+ #:cache? #t))
+
+ (sqlite-exec db "begin immediate;")
+ ;; 1 record per output
+ (for-each (lambda (output)
+ (sqlite-reset stmt-insert-package)
+ (sqlite-bind-arguments stmt-insert-package
+ #:name package
+ #:version version
+ #:output output)
+ (sqlite-fold (const #t) #t stmt-insert-package))
+ outputs)
+ (sqlite-bind-arguments stmt-select-package
+ #:name package
+ #:version version)
+ (match (sqlite-fold cons '() stmt-select-package)
+ ((#(package-id))
+ (for-each (lambda (directory)
+ (define (strip file)
+ (string-drop file (+ (string-length directory) 1)))
+
+ ;; If there's already a directory associated with PACKAGE-ID,
+ ;; not necessarily the same directory, skip it. That keeps
+ ;; the database slimmer at the expense of not recording
+ ;; variants of the same package; it also makes indexing
+ ;; faster.
+ (sqlite-reset stmt-select-directory)
+ (sqlite-bind-arguments stmt-select-directory
+ #:package package-id)
+ (when (null? (sqlite-fold cons '() stmt-select-directory))
+ ;; DIRECTORY is missing so insert it and traverse it.
+ (sqlite-reset stmt-insert-directory)
+ (sqlite-bind-arguments stmt-insert-directory
+ #:name (store-path-base directory)
+ #:package package-id)
+ (sqlite-fold (const #t) #t stmt-insert-directory)
+
+ (let ((directory-id (last-insert-row-id db)))
+ (for-each (lambda (file)
+ ;; If DIRECTORY is a symlink, (find-files
+ ;; DIRECTORY) returns the DIRECTORY singleton.
+ (unless (string=? file directory)
+ (sqlite-reset stmt-insert-file)
+ (sqlite-bind-arguments stmt-insert-file
+ #:name (strip file)
+ #:basename
+ (basename file)
+ #:directory
+ directory-id)
+ (sqlite-fold (const #t) #t stmt-insert-file)))
+ (find-files directory)))))
+ directories)))
+ (sqlite-exec db "commit;"))
+
+(define (insert-package db package)
+ "Insert all the files of PACKAGE into DB."
+ (define stmt-select-package-output
+ (sqlite-prepare db "\
+SELECT output FROM Packages WHERE name = :name AND version = :version"
+ #:cache? #t))
+
+ (define (known-outputs package)
+ ;; Return the list of outputs of PACKAGE already in DB.
+ (sqlite-bind-arguments stmt-select-package-output
+ #:name (package-name package)
+ #:version (package-version package))
+ (match (sqlite-fold cons '() stmt-select-package-output)
+ ((#(outputs ...)) outputs)
+ (() '())))
+
+ (with-monad %store-monad
+ ;; Since calling 'package->derivation' is expensive, do not call it if the
+ ;; outputs of PACKAGE at VERSION are already in DB.
+ (munless (lset= string=?
+ (known-outputs package)
+ (package-outputs package))
+ (mlet %store-monad ((drv (package->derivation package #:graft? #f)))
+ (match (derivation->output-paths drv)
+ (((labels . directories) ...)
+ (when (every file-exists? directories)
+ (insert-files
+ db (package-name package) (package-version package) (package-outputs package)
+ directories))
+ (return #t)))))))
+
+(define (insert-packages-with-progress db packages insert-package)
+ "Insert PACKAGES into DB with progress bar reporting, calling INSERT-PACKAGE
+for each package to insert."
+ (let* ((count (length packages))
+ (prefix (format #f (G_ "indexing ~h packages") count))
+ (progress (progress-reporter/bar count prefix)))
+ (call-with-progress-reporter progress
+ (lambda (report)
+ (for-each (lambda (package)
+ (insert-package db package)
+ (report))
+ packages)))))
+
+(define (index-packages-from-store-with-db db)
+ "Index local store packages using DB."
+ (with-store store
+ (parameterize ((%graft? #f))
+ (define (insert-package-from-store db package)
+ (run-with-store store (insert-package db package)))
+ (let ((packages (fold-packages
+ cons
+ '()
+ #:select? (lambda (package)
+ (and (not (hidden-package? package))
+ (not (package-superseded package))
+ (supported-package? package))))))
+ (insert-packages-with-progress
+ db packages insert-package-from-store)))))
+
+
+;;;
+;;; Indexing from local profiles.
+;;;
+
+(define (all-profiles)
+ "Return the list of system profiles."
+ (delete-duplicates
+ (filter-map (lambda (root)
+ (if (file-exists? (string-append root "/manifest"))
+ root
+ (let ((root (string-append root "/profile")))
+ (and (file-exists? (string-append root "/manifest"))
+ root))))
+ (gc-roots))))
+
+(define (profiles->manifest-entries profiles)
+ "Return deduplicated manifest entries across all PROFILES."
+ (let loop ((visited (set))
+ (profiles profiles)
+ (entries '()))
+ (match profiles
+ (()
+ entries)
+ ((profile . rest)
+ (let* ((manifest (profile-manifest profile))
+ (entries visited
+ (fold2 (lambda (entry lst visited)
+ (let ((item (manifest-entry-item entry)))
+ (if (set-contains? visited item)
+ (values lst visited)
+ (values (cons entry lst)
+ (set-insert item
+ visited)))))
+ entries
+ visited
+ (manifest-transitive-entries manifest))))
+ (loop visited rest entries))))))
+
+(define (insert-manifest-entry db entry)
+ "Insert a manifest ENTRY into DB."
+ (insert-files db (manifest-entry-name entry)
+ (manifest-entry-version entry)
+ (list (manifest-entry-output entry))
+ (list (manifest-entry-item entry)))) ;FIXME: outputs?
+
+(define (index-packages-from-manifests-with-db db)
+ "Index packages entries into DB from the system manifests."
+ (info (G_ "traversing local profile manifests...~%"))
+ (let ((entries (profiles->manifest-entries (all-profiles))))
+ (insert-packages-with-progress db entries insert-manifest-entry)))
+
+
+
+;;;
+;;; Search.
+;;;
+
+(define-record-type <package-match>
+ (package-match name version output file)
+ package-match?
+ (name package-match-name)
+ (version package-match-version)
+ (output package-match-output)
+ (file package-match-file))
+
+(define* (matching-packages db file #:key glob?)
+ "Return a list of <package-match> records, one for each package containing
+FILE. When GLOB? is true, interpret FILE as a glob pattern."
+ (define match-stmt
+ (if glob?
+ "f.basename GLOB :file"
+ "f.basename = :file"))
+
+ (define lookup-stmt
+ (sqlite-prepare db (string-append "\
+SELECT p.name, p.version, p.output, d.name, f.name
+FROM Packages p
+INNER JOIN Files f, Directories d
+ON " match-stmt "
+ AND d.id = f.directory
+ AND p.id = d.package;")))
+
+ (define prefix
+ (match (sqlite-fold (lambda (value _) value)
+ #f
+ (sqlite-prepare db "SELECT store FROM SchemaVersion;"))
+ (#(prefix) prefix)))
+
+ (sqlite-bind-arguments lookup-stmt #:file file)
+ (sqlite-fold (lambda (result lst)
+ (match result
+ (#(package version output directory file)
+ (cons (package-match package version output
+ (string-append prefix "/"
+ directory "/" file))
+ lst))))
+ '() lookup-stmt))
+
+(define (print-matching-results matches)
+ "Print the MATCHES matching results."
+ (for-each (lambda (result)
+ (let ((name (package-match-name result))
+ (version (package-match-version result))
+ (output (package-match-output result))
+ (file (package-match-file result)))
+ (format #t "~20a ~a~%"
+ (string-append name "@" version
+ (match output
+ ("out" "")
+ (_ (string-append ":" output))))
+ file)))
+ matches))
+
+
+;;;
+;;; Options.
+;;;
+
+(define (show-help)
+ (display (G_ "Usage: guix locate [OPTIONS...] FILE...
+Locate FILE and return the list of packages that contain it.\n"))
+ (display (G_ "
+ -g, --glob interpret FILE as a glob pattern"))
+ (display (G_ "
+ --stats display database statistics"))
+ (display (G_ "
+ -u, --update force a database update"))
+ (display (G_ "
+ --clear clear the database"))
+ (display (G_ "
+ --database=FILE store the database in FILE"))
+ (newline)
+ (display (G_ "
+ --method=METHOD use METHOD to select packages to index; METHOD can
+ be 'manifests' (fast) or 'store' (slower)"))
+ (newline)
+ (display (G_ "
+ -h, --help display this help and exit"))
+ (display (G_ "
+ -V, --version display version information and exit"))
+ (show-bug-report-information))
+
+(define %options
+ (list (option '(#\h "help") #f #f
+ (lambda args (show-help) (exit 0)))
+ (option '(#\V "version") #f #f
+ (lambda (opt name arg result)
+ (show-version-and-exit "guix locate")))
+ (option '(#\g "glob") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'glob? #t result)))
+ (option '("stats") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'stats? #t result)))
+ (option '("database") #f #t
+ (lambda (opt name arg result)
+ (alist-cons 'database (const arg)
+ (alist-delete 'database result))))
+ (option '(#\u "update") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'update? #t result)))
+ (option '("clear") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'clear? #t result)))
+ (option '(#\m "method") #f #t
+ (lambda (opt name arg result)
+ (match arg
+ ((or "manifests" "store")
+ (alist-cons 'method (string->symbol arg)
+ (alist-delete 'method result)))
+ (_
+ (leave (G_ "~a: unknown indexing method~%"))))))))
+
+(define %default-options
+ `((database . ,suitable-database)
+ (method . manifests)))
+
+
+;;;
+;;; Entry point.
+;;;
+
+(define-command (guix-locate . args)
+ (category packaging)
+ (synopsis "search for packages providing a given file")
+
+ (define age-update-threshold
+ ;; Time since database modification after which an update is triggered.
+ (* 2 30 (* 24 60 60)))
+
+ (define age-cleanup-threshold
+ ;; Time since database modification after which it is cleared. This is to
+ ;; avoid having stale info in the database and an endlessly growing
+ ;; database.
+ (* 9 30 (* 24 60 60)))
+
+ (define (file-age stat)
+ ;; Return true if TIME denotes an "old" time.
+ (- (current-time) (stat:mtime stat)))
+
+ (with-error-handling
+ (let* ((opts (parse-command-line args %options
+ (list %default-options)
+ #:build-options? #f
+ #:argument-handler
+ (lambda (arg result)
+ (alist-cons 'argument arg
+ result))))
+ (clear? (assoc-ref opts 'clear?))
+ (update? (assoc-ref opts 'update?))
+ (glob? (assoc-ref opts 'glob?))
+ (database ((assoc-ref opts 'database) update?))
+ (method (assoc-ref opts 'method))
+ (files (reverse (filter-map (match-lambda
+ (('argument . arg) arg)
+ (_ #f))
+ opts))))
+ (define* (populate-database database clear?)
+ (mkdir-p (dirname database))
+ (call-with-database database
+ (lambda (db)
+ (when clear?
+ (clear-database db))
+ (match method
+ ('manifests
+ (index-packages-from-manifests-with-db db))
+ ('store
+ (index-packages-from-store-with-db db))
+ (_
+ (leave (G_ "~a: unknown indexing method~%") method))))))
+
+ ;; Populate the database if needed.
+ (let* ((stat (stat database #f))
+ (age (and stat (file-age stat)))
+ (clear? (or clear?
+ (and age (>= age age-cleanup-threshold)))))
+ (when (or update? clear?
+ (not stat)
+ (>= age age-update-threshold))
+ (when clear?
+ (info (G_ "clearing database...~%")))
+ (info (G_ "indexing files from ~a...~%") (%store-prefix))
+ (populate-database database clear?)))
+
+ (if (assoc-ref opts 'stats?)
+ (print-statistics database)
+ (match (call-with-database database
+ (lambda (db)
+ (append-map (lambda (file)
+ (matching-packages db file
+ #:glob? glob?))
+ files)))
+ (()
+ (if (null? files)
+ (unless update?
+ (leave (G_ "no files to search for~%")))
+ (leave (N_ "file~{ '~a'~} not found in database '~a'~%"
+ "files~{ '~a'~} not found in database '~a'~%"
+ (length files))
+ files database)))
+ (matches
+ (leave-on-EPIPE
+ (print-matching-results matches))))))))
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index cd2e470289..ecd264d3fa 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -769,22 +769,21 @@ Use '~/.config/guix/channels.scm' instead."))
(url (or (assoc-ref opts 'repository-url)
(environment-variable))))
(if (or ref url)
- (match (find guix-channel? channels)
- ((? channel? guix)
- ;; Apply '--url', '--commit', and '--branch' to the 'guix' channel.
- (let ((url (or url (channel-url guix))))
- (cons (match ref
- (('commit . commit)
- (channel (inherit guix)
- (url url) (commit commit) (branch #f)))
- (('branch . branch)
- (channel (inherit guix)
- (url url) (commit #f) (branch branch)))
- (#f
- (channel (inherit guix) (url url))))
- (remove guix-channel? channels))))
- (#f ;no 'guix' channel, failure will ensue
- channels))
+ ;; Apply '--url', '--commit', and '--branch' to the 'guix' channel.
+ (map (lambda (c)
+ (if (guix-channel? c)
+ (let ((url (or url (channel-url c))))
+ (match ref
+ (('commit . commit)
+ (channel (inherit c)
+ (url url) (commit commit) (branch #f)))
+ (('branch . branch)
+ (channel (inherit c)
+ (url url) (commit #f) (branch branch)))
+ (#f
+ (channel (inherit c) (url url)))))
+ c))
+ channels)
channels)))
(define (validate-cache-directory-ownership)
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 3626832dda..8b1f7d6fda 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -38,7 +38,7 @@
#:use-module (guix cache)
#:use-module (gcrypt pk-crypto)
#:use-module (guix pki)
- #:use-module ((guix build utils) #:select (mkdir-p))
+ #:autoload (guix build utils) (mkdir-p delete-file-recursively)
#:use-module ((guix build download)
#:select (uri-abbreviation nar-uri-abbreviation
(open-connection-for-uri
@@ -167,6 +167,11 @@ was found."
(define (cached-narinfo-expiration-time file)
"Return the expiration time for FILE, which is a cached narinfo."
+ (define max-ttl
+ ;; Upper bound on the TTL used to avoid keeping around cached narinfos for
+ ;; too long, which makes the cache bigger and more expensive to traverse.
+ (* 2 30 24 60 60)) ;2 months
+
(catch 'system-error
(lambda ()
(call-with-input-file file
@@ -174,10 +179,10 @@ was found."
(match (read port)
(('narinfo ('version 2) ('cache-uri uri)
('date date) ('ttl ttl) ('value #f))
- (+ date ttl))
+ (+ date (min ttl max-ttl)))
(('narinfo ('version 2) ('cache-uri uri)
('date date) ('ttl ttl) ('value value))
- (+ date ttl))
+ (+ date (min ttl max-ttl)))
(x
0)))))
(lambda args
@@ -440,6 +445,11 @@ server certificates."
"Bind PORT with EXP... to a socket connected to URI."
(call-with-cached-connection uri (lambda (port) exp ...)))
+(define-syntax-rule (catch-system-error exp)
+ (catch 'system-error
+ (lambda () exp)
+ (const #f)))
+
(define* (download-nar narinfo destination
#:key status-port
deduplicate? print-build-trace?)
@@ -498,6 +508,10 @@ STATUS-PORT."
(narinfo-path narinfo)
(narinfo-uri-base narinfo)))))
+ ;; Delete DESTINATION first--necessary when starting over after a failed
+ ;; download.
+ (catch-system-error (delete-file-recursively destination))
+
(let ((choices (narinfo-preferred-uris narinfo
#:fast-decompression?
%prefer-fast-decompression?)))
diff --git a/guix/store/roots.scm b/guix/store/roots.scm
index 222f69c5c0..6b949b5a86 100644
--- a/guix/store/roots.scm
+++ b/guix/store/roots.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2014, 2017, 2019, 2023 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -105,7 +105,15 @@ are user-controlled symlinks stored anywhere on the file system."
(map (match-lambda
((file . properties)
(cons (scope file) properties)))
- (scandir* directory regular?)))))
+ (catch 'system-error
+ (lambda ()
+ (scandir* directory regular?))
+ (lambda args
+ (if (= ENOENT
+ (system-error-errno
+ args))
+ '()
+ (apply throw args))))))))
(loop (append rest (map first sub-directories))
(append (map canonical-root (filter symlink? files))
roots)
diff --git a/guix/ui.scm b/guix/ui.scm
index 7540e2194f..47a118364a 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -722,6 +722,15 @@ evaluating the tests and bodies of CLAUSES."
(leave (G_ "~a:~a:~a: package `~a' has an invalid input: ~s~%")
file line column
(package-full-name package) input)))
+ ((package-cyclic-dependency-error? c)
+ (let ((package (package-error-package c)))
+ (leave (package-location package)
+ (G_ "~a: dependency cycle detected:
+ ~a~{ -> ~a~}~%")
+ (package-full-name package)
+ (package-full-name package)
+ (map package-full-name
+ (package-error-dependency-cycle c)))))
((package-cross-build-system-error? c)
(let* ((package (package-error-package c))
(loc (package-location package))
diff --git a/guix/utils.scm b/guix/utils.scm
index b9657df292..e9af33bdeb 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
;;; Copyright © 2023 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -89,6 +90,7 @@
package-name->name+version
target-linux?
target-hurd?
+ system-hurd?
target-mingw?
target-x86-32?
target-x86-64?
@@ -674,6 +676,10 @@ a character other than '@'."
(and (string-suffix? "-gnu" target)
(not (string-contains target "linux"))))
+(define* (system-hurd?)
+ "Is the current system the GNU(/Hurd) system?"
+ (and=> (%current-system) target-hurd?))
+
(define* (target-mingw? #:optional (target (%current-target-system)))
"Is the operating system of TARGET Windows?"
(and target
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index 0431de522b..154ad4e530 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -111,6 +111,7 @@ guix/scripts/system.scm
guix/scripts/system/edit.scm
guix/scripts/system/search.scm
guix/scripts/lint.scm
+guix/scripts/locate.scm
guix/scripts/publish.scm
guix/scripts/edit.scm
guix/scripts/size.scm
diff --git a/tests/cpan.scm b/tests/cpan.scm
index e4ee788e9d..42e8c4e42c 100644
--- a/tests/cpan.scm
+++ b/tests/cpan.scm
@@ -102,21 +102,22 @@
(downstream-name "perl-test-script")
(type 'propagated))))
(with-http-server `((200 ,test-json)
- (200 ,test-source)
- (200 "{ \"distribution\" : \"Test-Script\" }"))
- (define source
- (parameterize ((%metacpan-base-url (%local-url)))
+ (200 "{ \"distribution\" : \"Test-Script\" }")
+ (200 ,test-source))
+ (parameterize ((%metacpan-base-url (%local-url))
+ (current-http-proxy (%local-url)))
+ (define source
(package-latest-release
(dummy-package "perl-test-script"
- (version "0.0.0")
- (source (dummy-origin
- (method url-fetch)
- (uri "mirror://cpan/Foo-Bar-0.0.0.tgz"))))
- (list %cpan-updater))))
+ (version "0.0.0")
+ (source (dummy-origin
+ (method url-fetch)
+ (uri "mirror://cpan/Foo-Bar-0.0.0.tgz"))))
+ (list %cpan-updater)))
- (list (upstream-source-urls source)
- (upstream-source-signature-urls source)
- (upstream-source-inputs source))))
+ (list (upstream-source-urls source)
+ (upstream-source-signature-urls source)
+ (upstream-source-inputs source)))))
(test-equal "metacpan-url->mirror-url, http"
"mirror://cpan/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz"
diff --git a/tests/elpa.scm b/tests/elpa.scm
index f6d008cd09..f563b99df1 100644
--- a/tests/elpa.scm
+++ b/tests/elpa.scm
@@ -43,17 +43,17 @@
[(11 88 6)
nil "Integrated environment for *TeX*" tar
((:url . "http://www.gnu.org/software/auctex/"))])
- (taxy-magit-section .
- [(0 12 2)
- ((emacs
- (26 3))
- (magit-section
- (3 2 1))
- (taxy
- (0 10)))
- "View Taxy structs in a Magit Section buffer" tar
- ((:url . "https://github.com/alphapapa/taxy.el")
- (:keywords "lisp"))])))
+ (fake-taxy-magit-section .
+ [(0 12 2)
+ ((emacs
+ (26 3))
+ (magit-section
+ (3 2 1))
+ (taxy
+ (0 10)))
+ "View Taxy structs in a Magit Section buffer" tar
+ ((:url . "https://github.com/alphapapa/taxy.el")
+ (:keywords "lisp"))])))
(test-begin "elpa")
@@ -88,8 +88,8 @@
(eval-test-with-elpa "auctex"))
(test-equal "package-latest-release"
- (list '("https://elpa.gnu.org/packages/taxy-magit-section-0.12.2.tar")
- '("https://elpa.gnu.org/packages/taxy-magit-section-0.12.2.tar.sig")
+ (list '("http://elpa.gnu.org/packages/fake-taxy-magit-section-0.12.2.tar")
+ '("http://elpa.gnu.org/packages/fake-taxy-magit-section-0.12.2.tar.sig")
(list (upstream-input
(name "magit-section")
(downstream-name "emacs-magit-section")
@@ -105,12 +105,13 @@
(with-http-server `((200 ,(object->string elpa-mock-archive)))
(parameterize ((current-http-proxy (%local-url)))
(define source
+ ;; Note: Use 'http' URLs to the proxy is used.
(package-latest-release
- (dummy-package "emacs-taxy-magit-section"
+ (dummy-package "emacs-fake-taxy-magit-section"
(version "0.0.0")
(source (dummy-origin
(method url-fetch)
- (uri "https://elpa.gnu.org/xyz"))))
+ (uri "http://elpa.gnu.org/xyz"))))
(list %elpa-updater)))
(list (upstream-source-urls source)
diff --git a/tests/guix-locate.sh b/tests/guix-locate.sh
new file mode 100755
index 0000000000..43f8ba53b0
--- /dev/null
+++ b/tests/guix-locate.sh
@@ -0,0 +1,72 @@
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2023 Antoine R. Dumont <antoine.romain.dumont@gmail.com>
+# Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
+#
+# This file is part of GNU Guix.
+#
+# GNU Guix is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# GNU Guix is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Test the 'guix locate' command-line utility.
+#
+
+set -x
+
+RUN_EXPENSIVE_TESTS="${RUN_EXPENSIVE_TESTS:-false}"
+
+tmpdir="guix-index-$$"
+# In the following tests, we use two different databases, one for each
+# indexation method.
+tmpdb_manifests="$tmpdir/manifests/db.sqlite"
+tmpdb_store="$tmpdir/store/db.sqlite"
+trap 'rm -rf "$tmpdir" "$tmpdb_store" "$tmpdb_manifests"' EXIT
+
+guix locate --version
+
+# Preparing db locations for both indexation methods.
+mkdir -p "$(dirname "$tmpdb_manifests")" "$(dirname "$tmpdb_store")"
+
+cmd_manifests="guix locate --database=$tmpdb_manifests --method=manifests"
+cmd_store="guix locate --database=$tmpdb_store --method=store"
+
+# Lookup without any db should fail.
+guix locate --database="$tmpdb_manifests" guile && false
+guix locate --database="$tmpdb_store" guile && false
+
+# Lookup without anything in db should yield no results because the indexer
+# didn't stumble upon any profile.
+test -z "$(guix locate --database="$tmpdb_manifests" guile)"
+
+# Install a package.
+guix package --bootstrap --install guile-bootstrap \
+ --profile="$tmpdir/profile"
+
+# Look for 'guile'.
+$cmd_manifests --update
+$cmd_manifests guile | grep "$(guix build guile-bootstrap)/bin/guile"
+$cmd_manifests boot-9.scm | grep ^guile-bootstrap
+
+# Using a glob pattern.
+$cmd_manifests -g '*.scm' | grep "^guile-bootstrap.*boot-9"
+
+# Statistics.
+$cmd_manifests --stats
+
+if $RUN_EXPENSIVE_TESTS
+then
+ $cmd_store --update
+ $cmd_store guile
+ $cmd_store guile | grep "$(guix build guile-bootstrap)/bin/guile"
+ $cmd_store boot-9.scm | grep ^guile-bootstrap
+fi
diff --git a/tests/minetest.scm b/tests/minetest.scm
index cbb9e83889..78469bf95b 100644
--- a/tests/minetest.scm
+++ b/tests/minetest.scm
@@ -194,7 +194,7 @@
(scm->json-port
(list->vector (filter-map argument-list->json sorted-argument-lists))))
(mock ((guix http-client) http-fetch
- (lambda* (url #:key headers)
+ (lambda* (url #:key headers timeout)
(unless (string-prefix? "mock://api/packages/" url)
(error "the URL ~a should not be used" url))
(define resource
diff --git a/tests/packages.scm b/tests/packages.scm
index 5e8eac99dc..2b7ab01f7d 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -368,6 +368,23 @@
(package-transitive-supported-systems d)
(package-transitive-supported-systems e))))
+(test-equal "package-transitive-supported-systems detects cycles"
+ '("c" "a" "b" "c")
+ (letrec* ((a (dummy-package "a"
+ (build-system trivial-build-system)
+ (native-inputs (list c))))
+ (b (dummy-package "b"
+ (build-system trivial-build-system)
+ (inputs (list a))))
+ (c (dummy-package "c"
+ (build-system trivial-build-system)
+ (inputs (list b)))))
+ (guard (c ((package-cyclic-dependency-error? c)
+ (map package-name
+ (cons (package-error-package c)
+ (package-error-dependency-cycle c)))))
+ (package-transitive-supported-systems c))))
+
(test-assert "package-development-inputs"
;; Note: Due to propagated inputs, 'package-development-inputs' returns a
;; couple more inputs, such as 'linux-libre-headers'.
diff --git a/tests/store-roots.scm b/tests/store-roots.scm
index 5bcf1bc87e..9877987a65 100644
--- a/tests/store-roots.scm
+++ b/tests/store-roots.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2023 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,14 +21,26 @@
#:use-module (guix store)
#:use-module (guix store roots)
#:use-module ((guix utils) #:select (call-with-temporary-directory))
+ #:use-module ((guix build utils) #:select (delete-file-recursively))
+ #:use-module ((guix config) #:select (%state-directory))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-64))
-(define %store
- (open-connection))
+(define %store #f)
(test-begin "store-roots")
+(test-equal "gc-roots, initial"
+ (list (string-append %state-directory "/profiles"))
+ (begin
+ ;; 'gc-roots' should gracefully handle lack of that directory.
+ (delete-file-recursively (string-append %state-directory "/profiles"))
+ (gc-roots)))
+
+;; The 'open-connection' call below gets guix-daemon to create
+;; %STATE-DIRECTORY/profiles.
+(set! %store (open-connection))
+
(test-assert "gc-roots, regular root"
(let* ((item (add-text-to-store %store "something"
(random-text)))
diff --git a/tests/substitute.scm b/tests/substitute.scm
index 8df3938b59..7246ed82d5 100644
--- a/tests/substitute.scm
+++ b/tests/substitute.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014-2015, 2017-2019, 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2015, 2017-2019, 2021-2023 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -639,6 +639,29 @@ System: mips64el-linux\n")))
(lambda ()
(false-if-exception (delete-file "substitute-retrieved")))))))
+(test-equal "substitute, previous partial download around"
+ "Substitutable data."
+ (with-narinfo* (string-append %narinfo "Signature: " (signature-field %narinfo))
+ %main-substitute-directory
+
+ (with-http-server `((200 ,(string-append %narinfo "Signature: "
+ (signature-field %narinfo)))
+ (200 ,(call-with-input-file
+ (string-append %main-substitute-directory
+ "/example.nar")
+ get-bytevector-all)))
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (parameterize ((substitute-urls (list (%local-url))))
+ (mkdir-p "substitute-retrieved/a/b/c/d") ;add stale data
+ (request-substitution (string-append (%store-prefix)
+ "/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-foo")
+ "substitute-retrieved"))
+ (call-with-input-file "substitute-retrieved" get-string-all))
+ (lambda ()
+ (false-if-exception (delete-file "substitute-retrieved")))))))
+
(test-quit "substitute, narinfo is available but nar is missing"
"failed to find alternative substitute"
(with-narinfo*