~ruther/guix-local

7d134b57b79188f8c878625d4e09f9bd6181e8c0 — Liliana Marie Prikler 2 years ago b18b2d1 + ee5de9c
Merge branch 'master' into gnome-team
111 files changed, 4420 insertions(+), 2214 deletions(-)

M configure.ac
M doc/contributing.texi
M doc/guix.texi
M etc/committer.scm.in
M etc/teams.scm.in
M gnu/local.mk
M gnu/packages/admin.scm
M gnu/packages/assembly.scm
M gnu/packages/astronomy.scm
M gnu/packages/avr-xyz.scm
M gnu/packages/avr.scm
M gnu/packages/axoloti.scm
M gnu/packages/bioinformatics.scm
M gnu/packages/bittorrent.scm
M gnu/packages/browser-extensions.scm
M gnu/packages/ci.scm
M gnu/packages/code.scm
M gnu/packages/commencement.scm
M gnu/packages/compression.scm
M gnu/packages/cpp.scm
M gnu/packages/crates-io.scm
M gnu/packages/cups.scm
M gnu/packages/databases.scm
M gnu/packages/electronics.scm
M gnu/packages/emacs-xyz.scm
M gnu/packages/embedded.scm
M gnu/packages/engineering.scm
M gnu/packages/file-systems.scm
M gnu/packages/finance.scm
M gnu/packages/firmware.scm
M gnu/packages/flashing-tools.scm
M gnu/packages/fonts.scm
M gnu/packages/fontutils.scm
M gnu/packages/games.scm
M gnu/packages/gcc.scm
M gnu/packages/gl.scm
M gnu/packages/gnunet.scm
M gnu/packages/gnuzilla.scm
M gnu/packages/guile-xyz.scm
M gnu/packages/hardware.scm
M gnu/packages/image-processing.scm
M gnu/packages/image.scm
M gnu/packages/julia-jll.scm
M gnu/packages/julia-xyz.scm
M gnu/packages/julia.scm
M gnu/packages/libusb.scm
M gnu/packages/linux.scm
M gnu/packages/lisp-xyz.scm
M gnu/packages/machine-learning.scm
M gnu/packages/mail.scm
M gnu/packages/markup.scm
M gnu/packages/maths.scm
M gnu/packages/messaging.scm
M gnu/packages/mpd.scm
M gnu/packages/music.scm
M gnu/packages/networking.scm
M gnu/packages/package-management.scm
M gnu/packages/pantheon.scm
M gnu/packages/password-utils.scm
A gnu/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch
A gnu/packages/patches/icecat-102-makeicecat.patch
M gnu/packages/patches/icecat-makeicecat.patch
A gnu/packages/patches/kiwix-desktop-newer-libkiwix.patch
A gnu/packages/patches/libvpx-CVE-2023-5217.patch
M gnu/packages/patches/sdcc-disable-non-free-code.patch
A gnu/packages/patches/xen-docs-use-predictable-ordering.patch
A gnu/packages/patches/xen-remove-config.gz-timestamp.patch
R gnu/packages/patches/{xpra-4.2-install_libs => xpra-5.0-install_libs}.patch
R gnu/packages/patches/{xpra-4.2-systemd-run => xpra-5.0-systemd-run}.patch
M gnu/packages/profiling.scm
M gnu/packages/python-crypto.scm
M gnu/packages/python-xyz.scm
M gnu/packages/radio.scm
M gnu/packages/raspberry-pi.scm
M gnu/packages/rdesktop.scm
M gnu/packages/rust-apps.scm
M gnu/packages/sssd.scm
M gnu/packages/sync.scm
M gnu/packages/syncthing.scm
M gnu/packages/terminals.scm
M gnu/packages/text-editors.scm
M gnu/packages/textutils.scm
M gnu/packages/tls.scm
M gnu/packages/toolkits.scm
M gnu/packages/video.scm
M gnu/packages/virtualization.scm
M gnu/packages/vnc.scm
M gnu/packages/web.scm
M gnu/packages/wine.scm
M gnu/packages/wm.scm
M gnu/packages/xdisorg.scm
M gnu/packages/xorg.scm
M guix/build/git.scm
M guix/config.scm.in
M guix/git-download.scm
M guix/git.scm
M guix/read-print.scm
M guix/scripts/archive.scm
M guix/scripts/perform-download.scm
M guix/self.scm
M nix/libstore/builtins.cc
M nix/local.mk
M tests/builders.scm
M tests/channels.scm
M tests/derivations.scm
M tests/git-authenticate.scm
M tests/git.scm
M tests/gnu-maintenance.scm
M tests/guix-graph.sh
M tests/import-git.scm
M tests/read-print.scm
M configure.ac => configure.ac +7 -0
@@ 201,6 201,13 @@ AC_SUBST([GZIP])
AC_SUBST([BZIP2])
AC_SUBST([XZ])

dnl Git is now required for the "builtin:git-download" derivation builder.
AC_PATH_PROG([GIT], [git])
if test "x$GIT" = "x"; then
  AC_MSG_ERROR([Git is missing; please install it.])
fi
AC_SUBST([GIT])

LIBGCRYPT_LIBDIR="no"
LIBGCRYPT_PREFIX="no"


M doc/contributing.texi => doc/contributing.texi +65 -4
@@ 397,13 397,12 @@ configuration file:

@lisp
;;; Bug references.
(require 'bug-reference)
(add-hook 'prog-mode-hook #'bug-reference-prog-mode)
(add-hook 'gnus-mode-hook #'bug-reference-mode)
(add-hook 'erc-mode-hook #'bug-reference-mode)
(add-hook 'bug-reference-mode-hook 'debbugs-browse-mode)
(add-hook 'bug-reference-prog-mode-hook 'debbugs-browse-mode)
(add-hook 'gnus-summary-mode-hook 'bug-reference-mode)
(add-hook 'gnus-article-mode-hook 'bug-reference-mode)
(add-hook 'gnus-summary-mode-hook #'bug-reference-mode)
(add-hook 'gnus-article-mode-hook #'bug-reference-mode)

;;; This extends the default expression (the top-most, first expression
;;; provided to 'or') to also match URLs such as


@@ 431,6 430,12 @@ configuration file:
                     (seq "<https://bugs.gnu.org/"
                          (group-n 2 (one-or-more (char "0-9")))
                          ">")))))
(setq bug-reference-url-format "https://issues.guix.gnu.org/%s")

(require 'debbugs)
(require 'debbugs-browse)
(add-hook 'bug-reference-mode-hook #'debbugs-browse-mode)
(add-hook 'bug-reference-prog-mode-hook #'debbugs-browse-mode)

;; The following allows Emacs Debbugs user to open the issue directly within
;; Emacs.


@@ 518,6 523,7 @@ needed is to review and apply the patch.
* Version Numbers::             When the name is not enough.
* Synopses and Descriptions::   Helping users find the right package.
* Snippets versus Phases::      Whether to use a snippet, or a build phase.
* Cyclic Module Dependencies::   Going full circle.
* Emacs Packages::              Your Elisp fix.
* Python Modules::              A touch of British comedy.
* Perl Modules::                Little pearls.


@@ 789,6 795,61 @@ embed store items in the sources; such patching should rather be done
using build phases.  Refer to the @code{origin} record documentation for
more information (@pxref{origin Reference}).

@node Cyclic Module Dependencies
@subsection Cyclic Module Dependencies

While there cannot be circular dependencies between packages, Guile's
lax module loading mechanism allows circular dependencies between Guile
modules, which doesn't cause problems as long as the following
conditions are followed for two modules part of a dependency cycle:

@cindex rules to cope with circular module dependencies
@enumerate
@item
Macros are not shared between the co-dependent modules
@item
Top-level variables are only referenced in delayed (@i{thunked}) package
fields: @code{arguments}, @code{native-inputs}, @code{inputs},
@code{propagated-inputs} or @code{replacement}
@item
Procedures referencing top-level variables from another module are not
called at the top level of a module themselves.
@end enumerate

Straying away from the above rules may work while there are no
dependency cycles between modules, but given such cycles are confusing
and difficult to troubleshoot, it is best to follow the rules to avoid
introducing problems down the line.

@noindent
Here is a common trap to avoid:

@lisp
(define-public avr-binutils
  (package
    (inherit (cross-binutils "avr"))
    (name "avr-binutils")))
@end lisp

In the above example, the @code{avr-binutils} package was defined in the
module @code{(gnu packages avr)}, and the @code{cross-binutils}
procedure in @code{(gnu packages cross-base)}.  Because the
@code{inherit} field is not delayed (thunked), it is evaluated at the
top level at load time, which is problematic in the presence of module
dependency cycles.  This could be resolved by turning the package into a
procedure instead, like:

@lisp
(define (make-avr-binutils)
  (package
    (inherit (cross-binutils "avr"))
    (name "avr-binutils")))
@end lisp

Care would need to be taken to ensure the above procedure is only ever
used in a package delayed fields or within another procedure also not
called at the top level.

@node Emacs Packages
@subsection Emacs Packages


M doc/guix.texi => doc/guix.texi +1 -0
@@ 1011,6 1011,7 @@ version 0.1.0 or later;
@item
@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, version 0.5.0
or later;
@item @uref{https://git-scm.com, Git} (yes, both!);
@item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}
4.3.0 or later;
@item @url{https://www.gnu.org/software/make/, GNU Make}.

M etc/committer.scm.in => etc/committer.scm.in +98 -61
@@ 85,21 85,39 @@ the expression."
    (seek port start SEEK_SET)
    result))

(define (surrounding-sexp port line-no)
(define (lines+offsets-with-opening-parens port)
  "Record all line numbers (and their offsets) where an opening parenthesis is
found in column 0.  The resulting list is in reverse order."
  (let loop ((acc '())
             (number 0))
    (let ((line (read-line port)))
      (cond
       ((eof-object? line) acc)
       ((string-prefix? "(" line)
        (loop (cons (cons number                      ;line number
                          (- (ftell port)
                             (string-length line) 1)) ;offset
                    acc)
              (1+ number)))
       (else (loop acc (1+ number)))))))

(define (surrounding-sexp port target-line-no)
  "Return the top-level S-expression surrounding the change at line number
LINE-NO in PORT."
  (let loop ((i (1- line-no))
             (last-top-level-sexp #f))
    (if (zero? i)
        last-top-level-sexp
        (match (peek-char port)
          (#\(
           (let ((sexp (read-excursion port)))
             (read-line port)
             (loop (1- i) sexp)))
          (_
           (read-line port)
           (loop (1- i) last-top-level-sexp))))))
TARGET-LINE-NO in PORT."
  (let* ((line-numbers+offsets
          (lines+offsets-with-opening-parens port))
         (closest-offset
          (or (and=> (list-index (match-lambda
                                   ((line-number . offset)
                                    (< line-number target-line-no)))
                                 line-numbers+offsets)
                     (lambda (index)
                       (match (list-ref line-numbers+offsets index)
                         ((line-number . offset) offset))))
              (error "Could not find surrounding S-expression for line"
                     target-line-no))))
    (seek port closest-offset SEEK_SET)
    (read port)))

;;; Whether the hunk contains a newly added package (definition), a removed
;;; package (removal) or something else (#false).


@@ 196,21 214,34 @@ LINE-NO in PORT."
                (string-ref line 0)))
             (hunk-diff-lines hunk))))

(define (old-sexp hunk)
  "Using the diff information in HUNK return the unmodified S-expression
corresponding to the top-level definition containing the staged changes."
  ;; TODO: We can't seek with a pipe port...
(define %original-file-cache
  (make-hash-table))

(define (read-original-file file-name)
  "Return the contents of FILE-NAME prior to any changes."
  (let* ((port (open-pipe* OPEN_READ
                           "git" "cat-file" "-p" (string-append
                                                  "HEAD:"
                                                  (hunk-file-name hunk))))
                                                  "HEAD:" file-name)))
         (contents (get-string-all port)))
    (close-pipe port)
    (call-with-input-string contents
      (lambda (port)
        (surrounding-sexp port
                          (+ (lines-to-first-change hunk)
                             (hunk-old-line-number hunk)))))))
    contents))

(define (read-original-file* file-name)
  "Caching variant of READ-ORIGINAL-FILE."
  (or (hashv-ref %original-file-cache file-name)
      (let ((value (read-original-file file-name)))
        (hashv-set! %original-file-cache file-name value)
        value)))

(define (old-sexp hunk)
  "Using the diff information in HUNK return the unmodified S-expression
corresponding to the top-level definition containing the staged changes."
  ;; TODO: We can't seek with a pipe port...
  (call-with-input-string (read-original-file* (hunk-file-name hunk))
    (lambda (port)
      (surrounding-sexp port
                        (+ (lines-to-first-change hunk)
                           (hunk-old-line-number hunk))))))

(define (new-sexp hunk)
  "Using the diff information in HUNK return the modified S-expression


@@ 358,6 389,7 @@ modifying."
        (_
         (apply change-commit-message file-name old new rest)))))

  (read-disable 'positions)
  (match (diff-info)
    (()
     (display "Nothing to be done.\n" (current-error-port)))


@@ 388,41 420,46 @@ modifying."
              (unless (eqv? 0 (status:exit-val (close-pipe port)))
                (error "Cannot commit"))))
          (usleep %delay))
        definitions))

     ;; Changes.
     (for-each
      (match-lambda
        ((new old . hunks)
         (for-each (lambda (hunk)
                     (let ((port (open-pipe* OPEN_WRITE
                                             "git" "apply"
                                             "--cached"
                                             "--unidiff-zero")))
                       (hunk->patch hunk port)
                       (unless (eqv? 0 (status:exit-val (close-pipe port)))
                         (error "Cannot apply")))
                     (usleep %delay))
                   hunks)
         (define copyright-line
           (any (lambda (line) (and=> (string-prefix? "+;;; Copyright ©" line)
                                      (const line)))
                (hunk-diff-lines (first hunks))))
         (cond
          (copyright-line
           (add-copyright-line copyright-line))
          (else
           (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
             (change-commit-message* (hunk-file-name (first hunks))
                                     old new)
             (change-commit-message* (hunk-file-name (first hunks))
                                     old new
                                     port)
             (usleep %delay)
             (unless (eqv? 0 (status:exit-val (close-pipe port)))
               (error "Cannot commit")))))))
      ;; XXX: we recompute the hunks here because previous
      ;; insertions lead to offsets.
      (new+old+hunks (diff-info))))))
        definitions)

       ;; Changes.
       (for-each
        (match-lambda
          ((new old . hunks)
           (for-each (lambda (hunk)
                       (let ((port (open-pipe* OPEN_WRITE
                                               "git" "apply"
                                               "--cached"
                                               "--unidiff-zero")))
                         (hunk->patch hunk port)
                         (unless (eqv? 0 (status:exit-val (close-pipe port)))
                           (error "Cannot apply")))
                       (usleep %delay))
                     hunks)
           (define copyright-line
             (any (lambda (line) (and=> (string-prefix? "+;;; Copyright ©" line)
                                   (const line)))
                  (hunk-diff-lines (first hunks))))
           (cond
            (copyright-line
             (add-copyright-line copyright-line))
            (else
             (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
               (change-commit-message* (hunk-file-name (first hunks))
                                       old new)
               (change-commit-message* (hunk-file-name (first hunks))
                                       old new
                                       port)
               (usleep %delay)
               (unless (eqv? 0 (status:exit-val (close-pipe port)))
                 (error "Cannot commit")))))))
        (new+old+hunks (match definitions
                         ('() changes) ;reuse
                         (_
                          ;; XXX: we recompute the hunks here because previous
                          ;; insertions lead to offsets.
                          (let-values (((definitions changes)
                                        (partition hunk-type (diff-info))))
                            changes)))))))))

(apply main (cdr (command-line)))

M etc/teams.scm.in => etc/teams.scm.in +4 -0
@@ 643,6 643,10 @@ GLib/GIO, GTK, GStreamer and Webkit."
                       "marius@gnu.org")
  python)

(define-member (person "Munyoki Kilyungi"
                       "me@bonfacemunyoki.com")
  python lisp)


(define (find-team name)
  (or (hash-ref %teams (string->symbol name))

M gnu/local.mk => gnu/local.mk +9 -2
@@ 355,6 355,7 @@ GNU_SYSTEM_MODULES =				\
  %D%/packages/java-compression.scm		\
  %D%/packages/java-graphics.scm		\
  %D%/packages/java-maths.scm			\
  %D%/packages/java-rdf.scm			\
  %D%/packages/java-xml.scm			\
  %D%/packages/javascript.scm			\
  %D%/packages/jemalloc.scm			\


@@ 1176,6 1177,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/freedink-engine-fix-sdl-hints.patch	\
  %D%/packages/patches/freeimage-libtiff-compat.patch		\
  %D%/packages/patches/freeimage-unbundle.patch		\
  %D%/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch	\
  %D%/packages/patches/fuse-glibc-2.34.patch			\
  %D%/packages/patches/fuse-overlapping-headers.patch		\
  %D%/packages/patches/fuzzylite-relative-path-in-tests.patch	\


@@ 1408,6 1410,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/hwloc-1-test-btrfs.patch			\
  %D%/packages/patches/i7z-gcc-10.patch				\
  %D%/packages/patches/icecat-makeicecat.patch			\
  %D%/packages/patches/icecat-102-makeicecat.patch		\
  %D%/packages/patches/icecat-avoid-bundled-libraries.patch	\
  %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
  %D%/packages/patches/icecat-use-system-media-libs.patch	\


@@ 1481,6 1484,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
  %D%/packages/patches/kismet-unbundle-boost.patch		\
  %D%/packages/patches/kitty-fix-wayland-protocols.patch	\
  %D%/packages/patches/kiwix-desktop-newer-libkiwix.patch	\
  %D%/packages/patches/kmod-module-directory.patch		\
  %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
  %D%/packages/patches/kobodeluxe-paths.patch			\


@@ 1562,6 1566,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/libutils-remove-damaging-includes.patch	\
  %D%/packages/patches/libvdpau-va-gl-unbundle.patch		\
  %D%/packages/patches/libvpx-CVE-2016-2818.patch		\
  %D%/packages/patches/libvpx-CVE-2023-5217.patch		\
  %D%/packages/patches/libxml2-xpath0-Add-option-xpath0.patch	\
  %D%/packages/patches/libwpd-gcc-compat.patch			\
  %D%/packages/patches/libxslt-generated-ids.patch		\


@@ 2122,6 2127,8 @@ dist_patch_DATA =						\
  %D%/packages/patches/wpa-supplicant-dbus-group-policy.patch		\
  %D%/packages/patches/x265-arm-flags.patch			\
  %D%/packages/patches/xdg-desktop-portal-wlr-harcoded-length.patch\
  %D%/packages/patches/xen-docs-use-predictable-ordering.patch	\
  %D%/packages/patches/xen-remove-config.gz-timestamp.patch	\
  %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
  %D%/packages/patches/xf86-video-nouveau-fixup-ABI.patch	\
  %D%/packages/patches/xf86-video-savage-xorg-compat.patch 	\


@@ 2135,8 2142,8 @@ dist_patch_DATA =						\
  %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
  %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
  %D%/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch	\
  %D%/packages/patches/xpra-4.2-systemd-run.patch		\
  %D%/packages/patches/xpra-4.2-install_libs.patch		\
  %D%/packages/patches/xpra-5.0-systemd-run.patch		\
  %D%/packages/patches/xpra-5.0-install_libs.patch		\
  %D%/packages/patches/xsane-fix-memory-leak.patch		\
  %D%/packages/patches/xsane-fix-pdf-floats.patch		\
  %D%/packages/patches/xsane-fix-snprintf-buffer-length.patch	\

M gnu/packages/admin.scm => gnu/packages/admin.scm +17 -16
@@ 389,7 389,7 @@ interface and is based on GNU Guile.")
                       ;; single-board computers.
                       (if (target-arm?)
                           guile-fibers-1.1
                           guile-fibers-1.3))))
                           guile-fibers))))
    (inputs (modify-inputs (package-inputs shepherd-0.9)
              (replace "guile-fibers"
                (this-package-native-input "guile-fibers"))))))


@@ 4490,7 4490,7 @@ Python loading in HPC environments.")
  (let ((real-name "inxi"))
    (package
      (name "inxi-minimal")
      (version "3.3.29-1")
      (version "3.3.30-1")
      (source
       (origin
         (method git-fetch)


@@ 4499,7 4499,7 @@ Python loading in HPC environments.")
               (commit version)))
         (file-name (git-file-name real-name version))
         (sha256
          (base32 "05z0vydfmkva61kj14p6jxy7dr8qwd024a7nn8pib57q4qnjm4r8"))))
          (base32 "0k27m4a19p32c00w4jpmqy17v0ca4g5zixyw97yy12932c73d0dy"))))
      (build-system trivial-build-system)
      (inputs
       (list bash-minimal


@@ 5042,7 5042,7 @@ entries, providing commands to add, remove, comment, and search.")
(define-public nmrpflash
  (package
    (name "nmrpflash")
    (version "0.9.19")
    (version "0.9.21")
    (source
     (origin
       (method git-fetch)


@@ 5051,24 5051,25 @@ entries, providing commands to add, remove, comment, and search.")
         (url "https://github.com/jclehner/nmrpflash")
         (commit (string-append "v" version))))
       (sha256
        (base32 "02r2z3mnbj8dfka7adw1l76zq1jh1l13mmkns93c54ychs44jz3d"))
        (base32 "183nvxqdn8klin5f14f4cv9vjymj0izy0qmj1l76igmlcq7ravwx"))
       (file-name (git-file-name name version))))
    (build-system gnu-build-system)
    (arguments
     (list
      #:tests? #f                       ; none exist
      #:make-flags
      #~(list (string-append "CC=" #$(cc-for-target))
              (string-append "PREFIX=" #$output))
      #:phases
      #~(modify-phases %standard-phases
          (delete 'configure)
          (add-before 'install 'prepare-install
            (lambda _
              (mkdir-p (string-append #$output "/bin")))))))
    (native-inputs
     (list pkg-config))
    (inputs
     (list libnl libpcap))
    (arguments
     `(#:tests? #f ; None exist
       #:make-flags
       (list (string-append "CC=" ,(cc-for-target))
             (string-append "PREFIX=" (assoc-ref %outputs "out")))
       #:phases
       (modify-phases %standard-phases
         (delete 'configure)
         (add-before 'install 'prepare-install
           (lambda* (#:key outputs #:allow-other-keys)
             (mkdir-p (string-append (assoc-ref outputs "out") "/bin")))))))
    (home-page "https://github.com/jclehner/nmrpflash")
    (synopsis "Reflash (``unbrick'') Netgear devices with corrupted firmware")
    (description "This package provides a utility to flash a new firmware

M gnu/packages/assembly.scm => gnu/packages/assembly.scm +35 -0
@@ 14,6 14,7 @@
;;; Copyright © 2022 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2022 Andy Tai <atai@atai.org>
;;; Copyright © 2023 Simon South <simon@simonsouth.net>
;;; Copyright © 2023 B. Wilson <elaexuotee@wilsonb.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 644,3 645,37 @@ intrinsics as defined in the @file{arm_neon.h} header and x86 SSE (up to
SSE4.2) intrinsic functions as defined in corresponding x86 compilers headers
files.")
      (license license:bsd-2))))

(define-public blinkenlights
  (package
    (name "blinkenlights")
    (version "1.0.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/jart/blink")
                    (commit version)))
              (sha256
               (base32
                "0dgfqy5z1vbpgbf39f14ngkqmw4gi3hsyihi4sh1qcbp9gnqpg2v"))
              (file-name (git-file-name name version))))
    (build-system gnu-build-system)
    (arguments
     (list #:tests? #f                           ;Tests require network access
           #:phases
           #~(modify-phases %standard-phases
               ;; Call ./configure without --enable-fast-install argument, which
               ;; causes the script to fail with an "unsupported option" error.
               (replace 'configure
                 (lambda* (#:key inputs outputs #:allow-other-keys)
                   (invoke "./configure"
                           (string-append "CC=" #$(cc-for-target))
                           (string-append "--prefix="
                                          (assoc-ref outputs "out"))))))))
    (home-page "https://justine.lol/blinkenlights/")
    (synopsis "Emulator for x86_64-linux programs with a text user interface")
    (description
     "Blinkenlights is a command-line debugger that focuses on visualizing how
software changes memory.  It can emulate statically-linked i8086 and
x86_64-pc-linux-gnu programs.")
    (license license:isc)))

M gnu/packages/astronomy.scm => gnu/packages/astronomy.scm +88 -72
@@ 11,6 11,7 @@
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;; Copyright © 2023 Iliya Tikhonenko <tikhonenko@mpe.mpg.de>
;;; Copyright © 2023 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 534,45 535,42 @@ mining in astronomy.")
(define-public python-fitsio
  (package
    (name "python-fitsio")
    (version "1.1.10")
    (version "1.2.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "fitsio" version))
       (sha256
        (base32 "0dv2vjj8qn3rq5sr99x5yjjch5h867c8q7zh73i67dzdsk7ix0jf"))
        (base32 "04fbg1ffj7qrlzw50xzzkfnlk6qjjqq96j0im7phprmwb1rbvzzh"))
       (modules '((guix build utils)))
       (snippet
        ;; Remove the bundled cfitsio
        ;; Remove the bundled cfitsio. When update the package check the
        ;; current bundled version.
        #~(begin
            (delete-file-recursively "cfitsio3490")
            (delete-file-recursively "cfitsio-4.2.0")
            (substitute* "MANIFEST.in"
              (("recursive-include cfitsio3490.*$\n") ""))))))
              (("recursive-include cfitsio-4.2.0.*$\n") ""))))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'unbundle-cfitsio
          (add-before 'build 'set-env
            (lambda _
              (let* ((cfitsio #$(this-package-input "cfitsio"))
                     (includedir (string-append "\"" cfitsio "/include\""))
                     (libdir (string-append "\"" cfitsio "/lib\"")))
                ;; Use Guix' cfitsio instead of the bundled one
                (substitute* "setup.py"
                  (("self.use_system_fitsio = False") "pass")
                  (("self.system_fitsio_includedir = None") "pass")
                  (("self.system_fitsio_libdir = None") "pass")
                  (("self.use_system_fitsio") "True")
                  (("self.system_fitsio_includedir") includedir)
                  (("self.system_fitsio_libdir") libdir)))))
              (setenv "FITSIO_USE_SYSTEM_FITSIO" "True")
              (setenv "FITSIO_SYSTEM_FITSIO_INCLUDEDIR"
                      (string-append
                       #$(this-package-input "cfitsio") "/include"))
              (setenv "FITSIO_SYSTEM_FITSIO_LIBDIR"
                      (string-append
                       #$(this-package-input "cfitsio") "/lib"))))
          (add-before 'check 'build-extensions
            (lambda _
              (invoke "python" "setup.py" "build_ext" "--inplace"))))))
    (native-inputs
     (list python-pytest))
    (inputs
     (list curl cfitsio))
     (list curl cfitsio zlib))
    (propagated-inputs
     (list python-numpy))
    (home-page "https://github.com/esheldon/fitsio")


@@ 741,6 739,21 @@ coordinate systems in a @dfn{FITS} (Flexible Image Transport System) image
header.")
    (license license:lgpl3+)))

;;; The version is required for julia-wcs-jll and julia-wcs.  They do not
;;; support version higher than 7.x.
(define-public wcslib-7.12
  (package
    (inherit wcslib)
    (version "7.12")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://www.atnf.csiro.au/people/mcalabre/WCS/"
                           "wcslib-" version ".tar.bz2"))
       (sha256
        (base32 "1m3bx6gh5w3c7vvsqcki0x20mg8lilg13m0i8nh7za89w58dxy4w"))))
    (properties '((hidden? . #t)))))

(define-public weightwatcher
  (package
    (name "weightwatcher")


@@ 1011,7 1024,7 @@ image formats.")
(define-public splash
  (package
    (name "splash")
    (version "3.8.2")
    (version "3.8.4")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 1019,7 1032,7 @@ image formats.")
                    (commit (string-append "v" version))))
              (sha256
               (base32
                "0y6l135g0a3hvvh8w8sfdh1kfq2g0gbp0dgjhnmwid8bwwcjvw8v"))
                "1l18sqz5mpab9wb5hlbfy18wfwq6fpijc3p9wa5bv6lrcymvpirp"))
              (file-name (git-file-name name version))))
    (build-system gnu-build-system)
    (arguments


@@ 1356,13 1369,13 @@ accurately in real time at any rate desired.")
(define-public python-astropy
  (package
    (name "python-astropy")
    (version "5.3.1")
    (version "5.3.3")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "astropy" version))
       (sha256
        (base32 "0x4dh7wx9sn1gy6sl2d54zsd24cgfjwrlk6kfrwpzzrmbsv22lwv"))
        (base32 "1fwk7x4q1hgdf9m8q613c6q7045sam1g934vgqv588ksbngxyc03"))
       (modules '((guix build utils)))
       (snippet
        '(begin


@@ 1460,13 1473,13 @@ astronomy and astrophysics.")
(define-public python-astropy-healpix
  (package
    (name "python-astropy-healpix")
    (version "0.7")
    (version "1.0.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "astropy_healpix" version))
       (sha256
        (base32 "1n1svmd41iv944zf4anbnsigd47zr4dfjf49vrc7m6928gmq9hw8"))))
        (base32 "18zfmdv0vs0yawirq8c2mpjxx7bvy66z0rlcyc1n6s0fl5ifz0pl"))))
    (build-system pyproject-build-system)
    (arguments
     (list


@@ 1582,7 1595,7 @@ specifically in the C code.")
(define-public python-bayesicfitting
  (package
    (name "python-bayesicfitting")
    (version "3.1.1")
    (version "3.2.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 1591,7 1604,7 @@ specifically in the C code.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "07y9dr9wxhxrvhk0jjakhbyrgal60i92m7z7q14fp12k8x0gl69l"))))
                "0q6v7w9b1xzam0qn5vsl5wrdp1fkfpsn411pzd8wyy9giznpajxi"))))
    (build-system python-build-system)
    (arguments
     (list #:phases #~(modify-phases %standard-phases


@@ 1643,7 1656,7 @@ bad pixel tracking throughout the reduction process.")
(define-public python-cdflib
  (package
    (name "python-cdflib")
    (version "1.0.5")
    (version "1.1.0")
    (source
     (origin
       (method git-fetch)   ; no tests in pypi archive


@@ 1652,11 1665,15 @@ bad pixel tracking throughout the reduction process.")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1pkda9gmpjhbqxl2jj5q9rjx77lv5c908mgf20lw3rz4nvfaa2wn"))))
        (base32 "0qxf13vmfiblcazxdk2b765b02ys57amawvrwlkj9d5x9f5s6061"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:phases
           #~(modify-phases %standard-phases
               (add-before 'build 'set-env-version
                 (lambda _
                   (setenv "SETUPTOOLS_SCM_PRETEND_VERSION"
                           #$version)))
               (add-before 'check 'set-home-env
                 (lambda _
                   (setenv "HOME" (getcwd)))))))


@@ 1668,6 1685,7 @@ bad pixel tracking throughout the reduction process.")
           python-pytest
           python-pytest-cov
           python-pytest-remotedata
           python-setuptools-scm
           python-xarray))
    (home-page "https://github.com/MAVENSDC/cdflib")
    (synopsis "Python library to deal with NASA's CDF astronmical data format")


@@ 1687,13 1705,13 @@ attempting to maintain ISTP compliance
(define-public python-crds
  (package
    (name "python-crds")
    (version "11.17.0")
    (version "11.17.4")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "crds" version))
              (sha256
               (base32
                "0sdz1k4hrgrc2jwihp9ns7lx23kcz7f90c222q7aaqf9g3vvpqlr"))))
                "0bk6cyd2il7ibqwky6m5kkgs9shrlzyfpnp2rh9jx0xa9habf7zm"))))
    (build-system pyproject-build-system)
    (arguments
     (list


@@ 1705,7 1723,6 @@ attempting to maintain ISTP compliance
                             python-astropy
                             python-boto3
                             python-filelock
                             python-lxml
                             python-numpy
                             python-parsley
                             python-pysynphot


@@ 1924,13 1941,13 @@ the easy construction of interactive matplotlib widget based animations.")
(define-public python-photutils
  (package
    (name "python-photutils")
    (version "1.7.0")
    (version "1.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "photutils" version))
       (sha256
        (base32 "1bq4ma402lpa5d6l85awlc23kasxf40nq8hgi3iyrilnfikan0jz"))))
        (base32 "0gjvrmcb10lyqx3h9521zqskqngd5xcp3l9h2b02mk1p7q54mzdy"))))
    (build-system pyproject-build-system)
    (arguments
     (list


@@ 2083,13 2100,13 @@ interest, and which require portability between platforms or ease of scripting."
(define-public python-pyvo
  (package
    (name "python-pyvo")
    (version "1.4.1")
    (version "1.4.2")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "pyvo" version))
       (sha256
        (base32 "17acv1yhz1jrsx9f35nr1vg276ibaivh4i243qkmp6abzvfyg907"))))
        (base32 "1jwmgpavw80mf9sigfz5p2cqh6vz5mvm11ziqmdp5zdccn42kzk6"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-pytest-astropy python-requests-mock python-setuptools-scm))


@@ 2247,11 2264,10 @@ orbits described in TLE files.")
      #:test-flags
      #~(list "-k" (string-append
                    ;; XXX: Failed: DID NOT RAISE <class 'ModuleNotFoundError'>
                    ;; It struggles to find python-opencsv package info with
                    ;; 'importlib.metadata'
                    "not test_main_nonexisting_module"
                    " and not test_main_stdlib_module"
                    ;; XXX: packaging.version.InvalidVersion: Invalid version: 'unknown'
                    " and not test_read_cdf"
                    " and not test_read_empty_cdf"))
                    " and not test_main_stdlib_module"))
      #:phases
      #~(modify-phases %standard-phases
          (add-before 'install 'writable-compiler


@@ 2526,13 2542,13 @@ image processing functions: @code{xyxymatch}, @code{geomap}.")
(define-public python-stdatamodels
  (package
    (name "python-stdatamodels")
    (version "1.7.1")
    (version "1.8.0")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "stdatamodels" version))
              (sha256
               (base32
                "0d7a27myl3xgri3z7yx26mr4dpqnlfhdh5i2ql2miwymi0mx3ij5"))))
                "003h3f07aqf6s24ivwnps81n2h51k545b236s75l8ppvjrm45xfq"))))
    (build-system pyproject-build-system)
    (arguments
     (list


@@ 2546,13 2562,11 @@ image processing functions: @code{xyxymatch}, @code{geomap}.")
    (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))


@@ 2790,7 2804,7 @@ standard astronomy libraries:
(define-public libxisf
  (package
    (name "libxisf")
    (version "0.2.8")
    (version "0.2.9")
    (source
     (origin
       (method git-fetch)


@@ 2799,7 2813,7 @@ standard astronomy libraries:
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1j2bg53hrr2yc55qa6549vcpj7qjnwmxjcdgc98w3ygnrjy7n7v0"))))
        (base32 "02cxv86h0ng4kmvyjkf7cr2ak2i3vpf0q0ik7jg4nmqjsidcs796"))))
    (build-system cmake-build-system)
    (arguments
     (list #:configure-flags #~(list "-DUSE_BUNDLED_LIBS=OFF")))


@@ 2810,8 2824,11 @@ standard astronomy libraries:
    (home-page "https://nouspiro.space/?page_id=306")
    (synopsis "Astronomical library to load and write XISF file format")
    (description
     "LibXISF is C++ library that can read and write XISF files produced by
PixInsight.  It implements XISF 1.0 specification.")
     "LibXISF is C++ library that can read and write @acronym{XISF,Extensible
Image Serialization Format} files produced by @url{https://pixinsight.com/,
PixInsight}.  It implements
@url{https://pixinsight.com/doc/docs/XISF-1.0-spec/XISF-1.0-spec.html, XISF
1.0 specification}.")
    (license license:gpl3+)))

(define-public missfits


@@ 3178,13 3195,13 @@ JPL ephemerides use to predict raw (x,y,z) planetary positions.")
(define-public python-jwst
  (package
    (name "python-jwst")
    (version "1.10.2")
    (version "1.11.4")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "jwst" version))
              (sha256
               (base32
                "1lmfyw2y7c84rs9xqavah9aidj478ijiiijlz6fag11xqn1vs98y"))))
                "1q3kpdjr8j1y8hkpidy80aqxsp3k13sz4j5aagq3wnzvpnds3x73"))))
    (build-system pyproject-build-system)
    (arguments
     (list


@@ 3201,11 3218,13 @@ JPL ephemerides use to predict raw (x,y,z) planetary positions.")
    (propagated-inputs (list opencv
                             python-asdf
                             python-asdf-astropy
                             python-asdf-transform-schemas
                             python-astropy
                             python-bayesicfitting
                             python-crds
                             python-drizzle
                             python-gwcs
                             python-jplephem
                             python-jsonschema
                             python-numpy
                             python-photutils


@@ 3223,9 3242,7 @@ JPL ephemerides use to predict raw (x,y,z) planetary positions.")
                             python-stsci-imagestats
                             python-tweakwcs
                             python-wiimatch))
    (native-inputs (list python-codecov
                         python-colorama
                         python-flake8
    (native-inputs (list python-colorama
                         python-pytest
                         python-pytest-cov
                         python-pytest-doctestplus


@@ 3804,22 3821,20 @@ default) to world coordinates.")
(define-public python-rad
  (package
    (name "python-rad")
    (version "0.15.0")
    (version "0.17.1")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "rad" version))
              (sha256
               (base32
                "0j51pkywxdaqrfz162rdsywlvx1mbb2h0gi5framvhf25i1im7mb"))))
                "11jhh3qmd00g8sn6hcfshbpb2qy1rfj0xkxn30pd63lqazg4ra3p"))))
    (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))
     (list
      ;; XXX: Tests introduce dependencies cycle, breaking it by disable them.
      ;; python-rad -> python-roman-datamodels -> python-crds -> python-rad
      #:tests? #f))
    (native-inputs (list 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")


@@ 3834,22 3849,21 @@ Grace Roman Space Telescope.")
(define-public python-roman-datamodels
  (package
    (name "python-roman-datamodels")
    (version "0.15.0")
    (version "0.17.1")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "roman_datamodels" version))
              (sha256
               (base32
                "0frhm1cqqd8934yizhm4fy78y38q2w9ncm4rv1n74hfypkyis4ap"))))
                "1y12cp8172i4a314gmhpi86jw6pfylz1adh0rzr5zqmvd3mrjqlj"))))
    (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"))))
     (list
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'set-env
            (lambda _
              (setenv "HOME" "/tmp"))))))
    (propagated-inputs (list python-asdf
                             python-asdf-astropy
                             python-asdf-standard


@@ 3858,8 3872,10 @@ Grace Roman Space Telescope.")
                             python-numpy
                             python-psutil
                             python-rad))
    (native-inputs (list python-pytest python-pytest-doctestplus
                         python-pytest-openfiles python-semantic-version
    (native-inputs (list python-pytest
                         python-pytest-doctestplus
                         python-pytest-env
                         python-semantic-version
                         python-setuptools-scm))
    (home-page "https://github.com/spacetelescope/roman_datamodels")
    (synopsis "Roman Datamodels Support")

M gnu/packages/avr-xyz.scm => gnu/packages/avr-xyz.scm +1 -1
@@ 71,7 71,7 @@
                           (string-append "PREFIX=" #$output)
                           (string-append "DESTDIR=" #$output))))
    (propagated-inputs
     (list avr-toolchain))
     (list (make-avr-toolchain)))
    (native-inputs
     (list autoconf
           which

M gnu/packages/avr.scm => gnu/packages/avr.scm +122 -99
@@ 25,6 25,7 @@
(define-module (gnu packages avr)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix gexp)
  #:use-module (guix memoization)
  #:use-module (guix utils)
  #:use-module (guix download)
  #:use-module (guix git-download)


@@ 37,113 38,135 @@
  #:use-module (gnu packages flashing-tools)
  #:use-module (gnu packages gcc)
  #:use-module (gnu packages llvm)
  #:use-module (gnu packages vim))
  #:use-module (gnu packages vim)
  #:export (make-avr-toolchain))

(define-public avr-binutils
  (package
    (inherit (cross-binutils "avr"))
    (name "avr-binutils")))
;;; Commentary:
;;;
;;; This module defines a procedure that can be used to create a complete
;;; avr-toolchain package.  The procedure must not be used at the top level,
;;; to avoid cyclic module dependencies caused by the (gnu packages
;;; cross-base) module referring to top level bindings from (gnu packages
;;; gcc).
;;;
;;; It also contains packages for working with or targeting the AVR system.
;;;

(define avr-gcc
  (let ((xgcc (cross-gcc "avr" #:xbinutils avr-binutils)))
(define make-avr-binutils
  (mlambda ()
    (package
      (inherit xgcc)
      (name "avr-gcc")
      (arguments
       (substitute-keyword-arguments (package-arguments xgcc)
         ((#:phases phases)
          #~(modify-phases #$phases
              (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH
                (lambda* (#:key inputs #:allow-other-keys)
                  (let ((gcc (assoc-ref inputs  "gcc")))
                    ;; Remove the default compiler from CPLUS_INCLUDE_PATH to
                    ;; prevent header conflict with the GCC from native-inputs.
                    (setenv "CPLUS_INCLUDE_PATH"
                            (string-join
                             (delete (string-append gcc "/include/c++")
                                     (string-split (getenv "CPLUS_INCLUDE_PATH")
                                                   #\:))
                             ":"))
                    (format #t
                            "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
                            (getenv "CPLUS_INCLUDE_PATH")))))
              ;; Without a working multilib build, the resulting GCC lacks
              ;; support for nearly every AVR chip.
              (add-after 'unpack 'fix-genmultilib
                (lambda _
                  ;; patch-shebang doesn't work here because there are actually
                  ;; several scripts inside this script, each with a #!/bin/sh
                  ;; that needs patching.
                  (substitute* "gcc/genmultilib"
                    (("#!/bin/sh") (string-append "#!" (which "sh"))))))))
         ((#:configure-flags flags)
          #~(delete "--disable-multilib" #$flags))))
      (native-search-paths
       (list (search-path-specification
              (variable "CROSS_C_INCLUDE_PATH")
              (files '("avr/include")))
             (search-path-specification
              (variable "CROSS_CPLUS_INCLUDE_PATH")
              (files '("avr/include")))
             (search-path-specification
              (variable "CROSS_OBJC_INCLUDE_PATH")
              (files '("avr/include")))
             (search-path-specification
              (variable "CROSS_OBJCPLUS_INCLUDE_PATH")
              (files '("avr/include")))
             (search-path-specification
              (variable "CROSS_LIBRARY_PATH")
              (files '("avr/lib")))))
      (native-inputs
       `(("gcc" ,gcc)
         ,@(package-native-inputs xgcc))))))
      (inherit (cross-binutils "avr"))
      (name "avr-binutils"))))

(define avr-libc
  (package
    (name "avr-libc")
    (version "2.0.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah//avr-libc/avr-libc-"
                                  version ".tar.bz2"))
              (sha256
               (base32
                "15svr2fx8j6prql2il2fc0ppwlv50rpmyckaxx38d3gxxv97zpdj"))))
    (build-system gnu-build-system)
    (arguments
     '(#:out-of-source? #t
       #:configure-flags '("--host=avr")))
    (native-inputs `(("avr-binutils" ,avr-binutils)
                     ("avr-gcc" ,avr-gcc)))
    (home-page "https://www.nongnu.org/avr-libc/")
    (synopsis "The AVR C Library")
    (description
     "AVR Libc is a project whose goal is to provide a high quality C library
for use with GCC on Atmel AVR microcontrollers.")
    (license
     (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
(define make-avr-gcc
  (mlambda ()
    (let ((xgcc (cross-gcc "avr" #:xbinutils (make-avr-binutils))))
      (package
        (inherit xgcc)
        (name "avr-gcc")
        (arguments
         (substitute-keyword-arguments (package-arguments xgcc)
           ((#:phases phases)
            #~(modify-phases #$phases
                (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH
                  (lambda* (#:key inputs #:allow-other-keys)
                    (let ((gcc (assoc-ref inputs  "gcc")))
                      ;; Remove the default compiler from CPLUS_INCLUDE_PATH
                      ;; to prevent header conflict with the GCC from
                      ;; native-inputs.
                      (setenv "CPLUS_INCLUDE_PATH"
                              (string-join
                               (delete (string-append gcc "/include/c++")
                                       (string-split (getenv "CPLUS_INCLUDE_PATH")
                                                     #\:))
                               ":"))
                      (format #t
                              "environment variable `CPLUS_INCLUDE_PATH' \
changed to ~a~%"
                              (getenv "CPLUS_INCLUDE_PATH")))))
                ;; Without a working multilib build, the resulting GCC lacks
                ;; support for nearly every AVR chip.
                (add-after 'unpack 'fix-genmultilib
                  (lambda _
                    ;; patch-shebang doesn't work here because there are
                    ;; actually several scripts inside this script, each with
                    ;; a #!/bin/sh that needs patching.
                    (substitute* "gcc/genmultilib"
                      (("#!/bin/sh") (string-append "#!" (which "sh"))))))))
           ((#:configure-flags flags)
            #~(delete "--disable-multilib" #$flags))))
        (native-search-paths
         (list (search-path-specification
                (variable "CROSS_C_INCLUDE_PATH")
                (files '("avr/include")))
               (search-path-specification
                (variable "CROSS_CPLUS_INCLUDE_PATH")
                (files '("avr/include")))
               (search-path-specification
                (variable "CROSS_OBJC_INCLUDE_PATH")
                (files '("avr/include")))
               (search-path-specification
                (variable "CROSS_OBJCPLUS_INCLUDE_PATH")
                (files '("avr/include")))
               (search-path-specification
                (variable "CROSS_LIBRARY_PATH")
                (files '("avr/lib")))))
        (native-inputs
         `(("gcc" ,gcc)
           ,@(package-native-inputs xgcc)))))))

(define-public avr-toolchain
  ;; avr-libc checks the compiler version and passes "--enable-device-lib" for avr-gcc > 5.1.0.
  ;; It wouldn't install the library for atmega32u4 etc if we didn't use the corret avr-gcc.
  (package
    (name "avr-toolchain")
    (version (package-version avr-gcc))
    (source #f)
    (build-system trivial-build-system)
    (arguments '(#:builder (begin (mkdir %output) #t)))
    (propagated-inputs
     `(("avrdude" ,avrdude)
       ("binutils" ,avr-binutils)
       ("gcc" ,avr-gcc)
       ("libc" ,avr-libc)))
    (synopsis "Complete GCC tool chain for AVR microcontroller development")
    (description "This package provides a complete GCC tool chain for AVR
(define make-avr-libc
  (mlambda ()
    (package
      (name "avr-libc")
      (version "2.0.0")
      (source (origin
                (method url-fetch)
                (uri (string-append "mirror://savannah//avr-libc/avr-libc-"
                                    version ".tar.bz2"))
                (sha256
                 (base32
                  "15svr2fx8j6prql2il2fc0ppwlv50rpmyckaxx38d3gxxv97zpdj"))))
      (build-system gnu-build-system)
      (arguments
       '(#:out-of-source? #t
         #:configure-flags '("--host=avr")))
      (native-inputs `(("avr-binutils" ,(make-avr-binutils))
                       ("avr-gcc" ,(make-avr-gcc))))
      (home-page "https://www.nongnu.org/avr-libc/")
      (synopsis "The AVR C Library")
      (description
       "AVR Libc is a project whose goal is to provide a high quality C
library for use with GCC on Atmel AVR microcontrollers.")
      (license
       (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt")))))

(define make-avr-toolchain
  (mlambda ()
    (let ((avr-binutils (make-avr-binutils))
          (avr-libc (make-avr-libc))
          (avr-gcc (make-avr-gcc)))
      ;; avr-libc checks the compiler version and passes "--enable-device-lib"
      ;; for avr-gcc > 5.1.0.  It wouldn't install the library for atmega32u4
      ;; etc if we didn't use the corret avr-gcc.
      (package
        (name "avr-toolchain")
        (version (package-version avr-gcc))
        (source #f)
        (build-system trivial-build-system)
        (arguments '(#:builder (begin (mkdir %output) #t)))
        (propagated-inputs
         `(("avrdude" ,avrdude)
           ("binutils" ,avr-binutils)
           ("gcc" ,avr-gcc)
           ("libc" ,avr-libc)))
        (synopsis "Complete GCC tool chain for AVR microcontroller development")
        (description "This package provides a complete GCC tool chain for AVR
microcontroller development.  This includes the GCC AVR cross compiler and
avrdude for firmware flashing.  The supported programming languages are C and
C++.")
    (home-page (package-home-page avr-libc))
    (license (package-license avr-gcc))))
        (home-page (package-home-page avr-libc))
        (license (package-license avr-gcc))))))

(define-public microscheme
  (package

M gnu/packages/axoloti.scm => gnu/packages/axoloti.scm +3 -3
@@ 199,7 199,7 @@
       ;; for compiling patches
       ("make" ,gnu-make)
       ;; for compiling firmware
       ("cross-toolchain" ,arm-none-eabi-nano-toolchain-4.9)
       ("cross-toolchain" ,(make-arm-none-eabi-nano-toolchain-4.9))
       ;; for uploading compiled patches and firmware
       ("dfu-util" ,dfu-util-for-axoloti)))
    (native-inputs


@@ 339,7 339,7 @@ runtime.")
           (assoc-ref ant:%standard-phases 'strip-jar-timestamps)))))
    (inputs
     `(("icedtea" ,icedtea "jdk")
       ("cross-toolchain" ,arm-none-eabi-nano-toolchain-4.9)
       ("cross-toolchain" ,(make-arm-none-eabi-nano-toolchain-4.9))
       ("java-simple-xml" ,java-simple-xml)
       ("java-rsyntaxtextarea" ,java-rsyntaxtextarea)
       ("java-usb4java" ,java-usb4java)


@@ 572,7 572,7 @@ patcher application.")))
           (assoc-ref ant:%standard-phases 'strip-jar-timestamps)))))
    (inputs
     `(("jdk" ,icedtea "jdk")
       ("cross-toolchain" ,arm-none-eabi-nano-toolchain-7-2018-q2-update)
       ("cross-toolchain" ,(make-arm-none-eabi-nano-toolchain-7-2018-q2-update))
       ;; for compiling patches
       ("make" ,gnu-make)
       ;; for uploading compiled patches and firmware

M gnu/packages/bioinformatics.scm => gnu/packages/bioinformatics.scm +32 -9
@@ 6687,7 6687,7 @@ performance.")
(define-public htscodecs
  (package
    (name "htscodecs")
    (version "1.5.0")
    (version "1.5.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/samtools/htscodecs/"


@@ 6695,7 6695,7 @@ performance.")
                                  version "/htscodecs-" version ".tar.gz"))
              (sha256
               (base32
                "1cys6hp438m1rfmgq6xig3q0md7nh0m03jb17mc798q13lsggpil"))))
                "0nykdf08wil6iiihgf5qlb04n70yv4zqqj7c27vpnpwpr2r2ns62"))))
    (build-system gnu-build-system)
    (inputs (list bzip2 zlib))
    (home-page "https://github.com/samtools/htscodecs")


@@ 6721,7 6721,11 @@ name/ID compression and quality score compression derived from fqzcomp.")
                    version "/htslib-" version ".tar.bz2"))
              (sha256
               (base32
                "093r1n4s134k50m9a925yn95gyi90ps5dlgc6gq4qwvkzxx7qsv0"))))
                "093r1n4s134k50m9a925yn95gyi90ps5dlgc6gq4qwvkzxx7qsv0"))
              (snippet
               #~(begin
                   (use-modules (guix build utils))
                   (delete-file-recursively "htscodecs")))))
    (build-system gnu-build-system)
    ;; Let htslib translate "gs://" and "s3://" to regular https links with
    ;; "--enable-gcs" and "--enable-s3". For these options to work, we also


@@ 6729,12 6733,13 @@ name/ID compression and quality score compression derived from fqzcomp.")
    (arguments
     `(#:configure-flags '("--enable-gcs"
                           "--enable-libcurl"
                           "--enable-s3")))
                           "--enable-s3"
                           "--with-external-htscodecs")))
    (inputs
     (list bzip2 curl openssl xz))
    ;; This is referred to in the pkg-config file as a required library.
    (propagated-inputs
     (list zlib))
     (list htscodecs zlib))
    (native-inputs
     (list perl))
    (home-page "https://www.htslib.org")


@@ 6757,7 6762,14 @@ data.  It also provides the @command{bgzip}, @command{htsfile}, and
                    version "/htslib-" version ".tar.bz2"))
              (sha256
               (base32
                "0pwk8yhhvb85mi1d2qhwsb4samc3rmbcrq7b1s0jz0glaa7in8pd"))))))
                "0pwk8yhhvb85mi1d2qhwsb4samc3rmbcrq7b1s0jz0glaa7in8pd"))))
    (arguments
     (substitute-keyword-arguments (package-arguments htslib)
       ((#:configure-flags cf #~'())
        #~(delete "--with-external-htscodecs" #$cf))))
    (propagated-inputs
     (modify-inputs (package-propagated-inputs htslib)
                    (delete "htscodecs")))))

(define-public htslib-1.12
  (package/inherit htslib


@@ 6769,7 6781,14 @@ data.  It also provides the @command{bgzip}, @command{htsfile}, and
                    version "/htslib-" version ".tar.bz2"))
              (sha256
               (base32
                "1jplnvizgr0fyyvvmkfmnsywrrpqhid3760vw15bllz98qdi9012"))))))
                "1jplnvizgr0fyyvvmkfmnsywrrpqhid3760vw15bllz98qdi9012"))))
    (arguments
     (substitute-keyword-arguments (package-arguments htslib)
       ((#:configure-flags cf #~'())
        #~(delete "--with-external-htscodecs" #$cf))))
    (propagated-inputs
     (modify-inputs (package-propagated-inputs htslib)
                    (delete "htscodecs")))))

(define-public htslib-1.10
  (package/inherit htslib


@@ 11732,7 11751,7 @@ replacement for strverscmp.")
                 (copy-recursively (assoc-ref inputs "tests") "/tmp/tests")
                 (with-directory-excursion "/tmp/tests"
                   (invoke "multiqc" "data" "--ignore" "data/modules")))))))))
    (propagated-inputs
    (inputs
     (list python-click
           python-coloredlogs
           python-future


@@ 16412,7 16431,11 @@ genomic scores), long range contacts and the visualization of viewpoints.")
           (lambda _
             (substitute* "setup.py"
               (("matplotlib ==3.1.1")
                "matplotlib >=3.1.1")))))))
                "matplotlib >=3.1.1"))))
         (add-after 'unpack 'remove-invalid-syntax
           (lambda _
             (substitute* "setup.py"
               ((".\\*,") ",")))))))
    (propagated-inputs
     (list python-future
           python-gffutils

M gnu/packages/bittorrent.scm => gnu/packages/bittorrent.scm +19 -8
@@ 17,6 17,7 @@
;;; Copyright © 2022 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2022 Jacob Hart <hartja1@yahoo.com>
;;; Copyright © 2022 Simon Streit <simon@netpanic.org>
;;; Copyright © 2023 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 127,7 128,7 @@
                (lambda (dir)
                  (rename-file (string-append #$output "/share/" dir)
                               (string-append #$output:gui "/share/" dir)))
                '("applications" "icons" "metainfo" "transmission"))
                '("applications" "icons" "metainfo"))
              (rename-file
               (string-append #$output "/share/man/man1/transmission-gtk.1")
               (string-append #$output:gui "/share/man/man1/transmission-gtk.1"))))


@@ 135,7 136,14 @@
             (lambda* (#:key outputs #:allow-other-keys #:rest args)
               (apply (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)
                      #:glib-or-gtk-wrap-excluded-outputs (list "out")
                      args))))))
                      args)))
           (add-after 'glib-or-gtk-wrap 'wrap-program
             (lambda* (#:key outputs #:allow-other-keys)
               (wrap-program (string-append #$output:gui "/bin/transmission-gtk")
                 ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Transmission to load
                 ;; its own icons in pure environments.
                 `("GDK_PIXBUF_MODULE_FILE" =
                   (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
    (inputs (list curl
                  (list glib "bin")
                  gtkmm


@@ 452,7 460,7 @@ desktops.")
(define-public qbittorrent
  (package
    (name "qbittorrent")
    (version "4.5.4")
    (version "4.5.5")
    (source
     (origin
       (method git-fetch)


@@ 461,7 469,7 @@ desktops.")
             (commit (string-append "release-" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1r4vqlwmvg7b0ibq53m7ascyykv3v66qxlwfi0zmmi1ig7rlkxkk"))))
        (base32 "1ngvvwhafi9mi05r2l9dk9x05za8x35y12p230wpzprydhlgwsxd"))))
    (build-system qt-build-system)
    (arguments
     (list #:configure-flags #~(list "-DTESTING=ON")


@@ 486,11 494,11 @@ qBittorrent is fast, stable and provides unicode support as well as many
features.")
    (license l:gpl2+)))

(define-public qbittorrent-nox
(define-public qbittorrent-no-x
  (let ((base qbittorrent))
    (package
      (inherit base)
      (name "qbittorrent-nox")
      (name "qbittorrent-no-x")
      (arguments
       (substitute-keyword-arguments (package-arguments base)
         ((#:configure-flags configure-flags)


@@ 499,11 507,14 @@ features.")
       (modify-inputs (package-inputs base)
         (delete "qtsvg-5"))))))

(define-public qbittorrent-nox
  (deprecated-package "qbittorrent-nox" qbittorrent-no-x))

(define-public qbittorrent-enhanced
  (package
    (inherit qbittorrent)
    (name "qbittorrent-enhanced")
    (version "4.5.4.10")
    (version "4.5.5.10")
    (source
     (origin
       (method git-fetch)


@@ 513,7 524,7 @@ features.")
       (file-name (git-file-name name version))
       (sha256
        (base32
         "0qwk69mgcyh7fij4nsi4ndd17aa61p2c6cxn9l402w4cf1dy6hfs"))))
         "029crx8yd8apssg2k4alnc0py5i2sp3bhjkwki5fvvnpgkrhfqf0"))))
    (home-page "https://github.com/c0re100/qBittorrent-Enhanced-Edition")
    (description
     "qBittorrent Enhanced is a bittorrent client based on qBittorrent with

M gnu/packages/browser-extensions.scm => gnu/packages/browser-extensions.scm +72 -39
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 17,6 18,7 @@
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages browser-extensions)
  #:use-module (guix gexp)
  #:use-module (guix packages)
  #:use-module (guix git-download)
  #:use-module (guix build-system copy)


@@ 48,57 50,88 @@ supported content to the Kodi media center.")
(define-public play-to-kodi/chromium
  (make-chromium-extension play-to-kodi))

(define ublock-main-assets
  ;; Arbitrary commit of branch master,
  ;; Update when updating uBlockOrigin.
  (let* ((name "ublock-main-assets")
         (commit "c8783488f377723165e3661062bd124ae6d57165")
         (revision "0")
         (version (git-version "0" revision commit)))
    (origin
      (method git-fetch)
      (uri (git-reference
            (url "https://github.com/uBlockOrigin/uAssets")
            (commit commit)))
      (file-name (git-file-name name version))
      (sha256
       (base32 "1b6a1m6s060r49vg563f32rsy057af6i4jcyprym4sdci3z90nls")))))

(define ublock-prod-assets
  ;; Arbitrary commit of branch gh-pages,
  ;; Update when updating uBlockOrigin.
  (let* ((name "ublock-prod-assets")
         (commit "fbcfe9229ab6b865ef349c01a4eac73943be8418")
         (revision "0")
         (version (git-version "0" revision commit)))
    (origin
      (method git-fetch)
      (uri (git-reference
            (url "https://github.com/uBlockOrigin/uAssets")
            (commit commit)))
      (file-name (git-file-name name version))
      (sha256
       (base32 "0s5rvaz8lc9lk44yfc8463vah8yppy1ybmag0dpd4m1hyj6165h0")))))

(define ublock-origin
  (package
    (name "ublock-origin")
    (version "1.45.2")
    (version "1.51.0")
    (home-page "https://github.com/gorhill/uBlock")
    (source (origin
              (method git-fetch)
              (uri (git-reference (url home-page) (commit version)
                                  ;; Also fetch the tightly coupled
                                  ;; "uAssets" submodule.
                                  (recursive? #t)))
              (uri (git-reference
                    (url home-page)
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0dz1rcphm8cbc2qdd41ahbsqskmqcf2ja6zx0vq0dswnakpc3lyd"))))
                "1i8rnij3sbwg6vj6znprrsca0n5xjzhmhppaa8v6jyxg6wrrfch1"))))
    (build-system gnu-build-system)
    (outputs '("xpi" "firefox" "chromium"))
    (arguments
     '(#:tests? #f                      ;no tests
       #:allowed-references ()
       #:phases
       (modify-phases (map (lambda (phase)
                             (assq phase %standard-phases))
                           '(set-paths unpack patch-source-shebangs))
         (add-after 'unpack 'do-not-depend-on-git
           (lambda _
             ;; The script attempts to checkout the uAssets submodule,
             ;; but we already did so with git-fetch.
             (substitute* "tools/make-assets.sh"
               (("^git submodule update.*")
                ""))))
         (add-after 'unpack 'make-files-writable
           (lambda _
             ;; The build system copies some files and later tries
             ;; modifying them.
             (for-each make-file-writable (find-files "."))))
         (add-after 'patch-source-shebangs 'build-xpi
           (lambda _
             (invoke "./tools/make-firefox.sh" "all")))
         (add-after 'build-xpi 'build-chromium
           (lambda _
             (invoke "./tools/make-chromium.sh")))
         (add-after 'build-chromium 'install
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((firefox (assoc-ref outputs "firefox"))
                   (xpi (assoc-ref outputs "xpi"))
                   (chromium (assoc-ref outputs "chromium")))
               (install-file "dist/build/uBlock0.firefox.xpi"
                             (string-append xpi "/lib/mozilla/extensions"))
               (copy-recursively "dist/build/uBlock0.firefox" firefox)
               (copy-recursively "dist/build/uBlock0.chromium" chromium)))))))
     (list
      #:tests? #f                      ;no tests
      #:allowed-references '()
      #:phases
      #~(modify-phases (map (lambda (phase)
                              (assq phase %standard-phases))
                            '(set-paths unpack patch-source-shebangs))
          (add-after 'unpack 'do-not-depend-on-git
            (lambda _
              (mkdir-p "dist/build/uAssets/main")
              (copy-recursively #$ublock-main-assets "dist/build/uAssets/main")
              (mkdir-p "dist/build/uAssets/prod")
              (copy-recursively #$ublock-prod-assets "dist/build/uAssets/prod")))
          (add-after 'unpack 'make-files-writable
            (lambda _
              ;; The build system copies some files and later tries
              ;; modifying them.
              (for-each make-file-writable (find-files "."))))
          (add-after 'patch-source-shebangs 'build-xpi
            (lambda _
              (invoke "./tools/make-firefox.sh" "all")))
          (add-after 'build-xpi 'build-chromium
            (lambda _
              (invoke "./tools/make-chromium.sh")))
          (add-after 'build-chromium 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((firefox (assoc-ref outputs "firefox"))
                    (xpi (assoc-ref outputs "xpi"))
                    (chromium (assoc-ref outputs "chromium")))
                (install-file "dist/build/uBlock0.firefox.xpi"
                              (string-append xpi "/lib/mozilla/extensions"))
                (copy-recursively "dist/build/uBlock0.firefox" firefox)
                (copy-recursively "dist/build/uBlock0.chromium" chromium)))))))
    (native-inputs
     (list python-wrapper zip))
    (synopsis "Block unwanted content from web sites")

M gnu/packages/ci.scm => gnu/packages/ci.scm +1 -1
@@ 142,7 142,7 @@
      (inputs
       (list guile-3.0-latest
             guile-avahi
             guile-fibers-1.3
             guile-fibers
             guile-gcrypt
             guile-json-4
             guile-simple-zmq

M gnu/packages/code.scm => gnu/packages/code.scm +41 -42
@@ 623,7 623,7 @@ results and determine build stability.")
(define-public kcov
  (package
    (name "kcov")
    (version "40")
    (version "42")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 632,7 632,7 @@ results and determine build stability.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0zayhmx6s377bxmkmvl9d9vjzfbpvh1k9ba6np4zdjvjjq327xag"))))
                "14pyahpgadh845q2p1gjw2yrlqcan4n870icrn2yqdpf33cprzgk"))))
    (build-system cmake-build-system)
    (arguments
     `(#:tests? #f                      ; no test target


@@ 640,10 640,9 @@ results and determine build stability.")
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-/bin/bash-references
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((bash (assoc-ref inputs "bash")))
             (substitute* (find-files "src" ".*\\.cc?$")
               (("/bin/(bash|sh)" shell)
                (string-append (assoc-ref inputs "bash") shell)))))))))
                (search-input-file inputs shell))))))))
    (inputs
     (list curl elfutils libelf openssl zlib))
    (native-inputs


@@ 835,54 834,54 @@ Objective@tie{}C, D, Java, Pawn, and Vala).  Features:
(define-public astyle
  (package
    (name "astyle")
    (version "3.1")
    (version "3.4.8")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/astyle/astyle/astyle%20"
                           version "/astyle_"  version "_linux.tar.gz"))
       (sha256
        (base32
         "1ms54wcs7hg1bsywqwf2lhdfizgbk7qxc9ghasxk8i99jvwlrk6b"))))
        (base32 "1ms54wcs7hg1bsywqwf2lhdfizgbk7qxc9ghasxk8i99jvwlrk6b"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f                      ;no tests
       #:make-flags (list (string-append "prefix=" %output)
                          "INSTALL=install"
                          "all")
       #:modules ((guix build gnu-build-system) ;; FIXME use %default-modules
     (list
      #:tests? #f                       ;no tests
      #:make-flags
      #~(list (string-append "prefix=" #$output)
              "INSTALL=install"
              "release" "shared")
      #:modules '((guix build gnu-build-system) ;FIXME use %default-modules
                  (guix build utils)
                  (ice-9 regex))
       #:phases
       (modify-phases %standard-phases
         (replace 'configure
           (lambda _ (chdir "build/gcc") #t))
         (add-after 'install 'install-libs
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Libraries and includes are not installed by default
             (let* ((output (assoc-ref outputs "out"))
                    (incdir (string-append output "/include"))
                    (libdir (string-append output "/lib")))
               (define (make-so-link sofile strip-pattern)
                 (symlink
                  (basename sofile)
                  (regexp-substitute #f
                                     (string-match strip-pattern sofile)
                                     'pre)))
               (mkdir-p incdir)
               (copy-file "../../src/astyle.h"
                          (string-append incdir "/astyle.h"))
               (mkdir-p libdir)
               (for-each (lambda (l)
                           (copy-file
                            l (string-append libdir "/" (basename l))))
                         (find-files "bin" "lib*"))
               (for-each
                (lambda (sofile)
                  (make-so-link sofile "(\\.[0-9]){3}$")  ;; link .so
                  (make-so-link sofile "(\\.[0-9]){2}$")) ;; link .so.3
                (find-files libdir "lib.*\\.so\\..*")))
             #t)))))
      #:phases
      #~(modify-phases %standard-phases
          (replace 'configure
            (lambda _
              (chdir "build/gcc")))
          (add-after 'install 'install-more
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Libraries and headers aren't installed by default.
              (let ((include (string-append #$output "/include"))
                    (lib     (string-append #$output "/lib")))
                (define (link.so file strip-pattern)
                  (symlink
                   (basename file)
                   (regexp-substitute #f
                                      (string-match strip-pattern file)
                                      'pre)))
                (mkdir-p include)
                (copy-file "../../src/astyle.h"
                           (string-append include "/astyle.h"))
                (mkdir-p lib)
                (for-each (lambda (l)
                            (copy-file
                             l (string-append lib "/" (basename l))))
                          (find-files "bin" "^lib.*\\.so"))
                (for-each
                 (lambda (file)
                   (link.so file "(\\.[0-9]+){3}$")  ;.so
                   (link.so file "(\\.[0-9]+){2}$")) ;.so.3
                 (find-files lib "lib.*\\.so\\..*"))))))))
    (home-page "https://astyle.sourceforge.net/")
    (synopsis "Source code indenter, formatter, and beautifier")
    (description

M gnu/packages/commencement.scm => gnu/packages/commencement.scm +3 -0
@@ 3635,6 3635,9 @@ is the GNU Compiler Collection.")
(define-public gcc-toolchain-12
  (make-gcc-toolchain gcc-12))

(define-public gcc-toolchain-13
  (make-gcc-toolchain gcc-13))

(define-public gcc-toolchain-aka-gcc
  ;; It's natural for users to try "guix install gcc".  This package
  ;; automatically "redirects" them to 'gcc-toolchain'.

M gnu/packages/compression.scm => gnu/packages/compression.scm +21 -22
@@ 542,7 542,7 @@ than gzip and 15 % smaller output than bzip2.")
(define-public lhasa
  (package
    (name "lhasa")
    (version "0.3.1")
    (version "0.4.0")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 550,26 550,25 @@ than gzip and 15 % smaller output than bzip2.")
                    version "/lhasa-" version ".tar.gz"))
              (sha256
               (base32
                "092zi9av18ma20c6h9448k0bapvx2plnp292741dvfd9hmgqxc1z"))))
                "1cy5429c7h1dp4l5y9ncdy40qarl9ix31ylkzdi8al2c60y8iz57"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases
       (modify-phases %standard-phases
         (add-before 'check 'set-up-test-environment
           (lambda* (#:key inputs #:allow-other-keys)
             (setenv "TZDIR"
                     (search-input-directory inputs
                                             "share/zoneinfo")))))))
    (native-inputs
     (list tzdata-for-tests))
    (home-page "https://fragglet.github.com/lhasa/")
     (list #:phases #~(modify-phases %standard-phases
                        (add-before 'check 'set-up-test-environment
                          (lambda* (#:key inputs #:allow-other-keys)
                            (setenv "TZDIR"
                                    (search-input-directory inputs
                                                            "share/zoneinfo")))))))
    (native-inputs (list tzdata-for-tests))
    (home-page "https://fragglet.github.io/lhasa/")
    (synopsis "LHA archive decompressor")
    (description "Lhasa is a replacement for the Unix LHA tool, for
decompressing .lzh (LHA / LHarc) and .lzs (LArc) archives.  The backend for the
tool is a library, so that it can be reused for other purposes.  Lhasa aims to
be compatible with as many types of lzh/lzs archives as possible.  It also aims
to generate the same output as the (non-free) Unix LHA tool, so that it will
act as a free drop-in replacement.")
    (description
     "Lhasa is a replacement for the Unix LHa tool, for decompressing
@file{.lzh} (LHA / LHarc) and .lzs (LArc) archives.  The backend for the tool is
a library, so that it can be reused for other purposes.  Lhasa aims to be
compatible with as many types of @file{.lzh}/@file{lzs} archives as possible.
It also aims to generate the same output as the (non-free) Unix @command{lha}
tool, so that it will act as a free drop-in replacement.")
    (license license:isc)))

(define-public lzo


@@ 1106,7 1105,7 @@ tarballs.")
(define-public libjcat
  (package
    (name "libjcat")
    (version "0.1.12")
    (version "0.1.14")
    (source
     (origin
       (method git-fetch)


@@ 1116,7 1115,7 @@ tarballs.")
         (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0fbcmnpc0y7s2ls3q829dv3ardhv0m5gxqqmbn0dnkzgkh42vv7p"))))
        (base32 "0dhyqhs2lg9ka47n8d1lalvic2m3rn5k6mya9bjyw242smkgzpjw"))))
    (build-system meson-build-system)
    (native-inputs
     (list gobject-introspection help2man pkg-config))


@@ 2670,7 2669,7 @@ to their original, binary CD format.")
(define-public libdeflate
  (package
    (name "libdeflate")
    (version "1.15")
    (version "1.19")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 2679,7 2678,7 @@ to their original, binary CD format.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "001l1xdc3k1dfjvl3ng480ydz0rnyvlhv54l5mshg2p9v4iz3v09"))))
                "033d8jcaissiy3mk07wx6dap17c1xl768xy75righ22ggmm7c1hy"))))
    (build-system cmake-build-system)
    (arguments
     (list #:configure-flags

M gnu/packages/cpp.scm => gnu/packages/cpp.scm +43 -0
@@ 37,6 37,7 @@
;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2023 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 223,6 224,34 @@ range-v3 ranges are an abstraction layer on top of iterators.")
      ;; Others
      license:boost1.0))))

(define-public robin-hood-hashing
  (package
    (name "robin-hood-hashing")
    (version "3.11.5")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/martinus/robin-hood-hashing")
                    (commit version)))
              (modules '((guix build utils)))
              (snippet #~(delete-file-recursively "src/test/thirdparty"))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1qx6i09sp8c3l89mhyaql144nzh2h26ky9ms3n5l85qplx1vv2r7"))))
    (build-system cmake-build-system)
    (arguments
     (list #:tests? #f ;; Needs bundled libraries for tests.
           ;; By default this option is set to ON and removes the ability to
           ;; install the library.
           #:configure-flags
           #~(list "-DRH_STANDALONE_PROJECT=OFF")))
    (home-page "https://github.com/martinus/robin-hood-hashing")
    (synopsis "Unordered set and map data structures library")
    (description "This library provides a header-only unordered set and map
data structures for C++.")
    (license license:expat)))

(define-public c++-gsl
  (package
    (name "c++-gsl")


@@ 2019,6 2048,20 @@ validation.")
    (home-page "https://github.com/simdjson/simdjson")
    (license license:asl2.0)))

(define-public simdjson-0.6
  (package
    (inherit simdjson)
    (version "0.6.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/simdjson/simdjson")
                    (commit (string-append "v" version))))
              (file-name (git-file-name (package-name simdjson) version))
              (sha256
               (base32
                "038i9nmk85vpxvs546w6cyci0ppdrrp5wnlv1kffxw29x71a3g5l"))))))

(define-public bloomberg-bde-tools
  (let ((commit "f63dfe9114cd7df29623bd01f644b9f654253972"))
    (package

M gnu/packages/crates-io.scm => gnu/packages/crates-io.scm +252 -29
@@ 31,6 31,7 @@
;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2022 Paul Alesius <paul@unnservice.com>
;;; Copyright © 2023 Arnav Andrew Jose <arnav.jose@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 15421,6 15422,41 @@ conversion factors for even more numerous measurement units (meter, kilometer, f
mile, ...).")
    (license (list license:expat license:asl2.0))))

(define-public rust-cradle-0.2
  (package
    (name "rust-cradle")
    (version "0.2.2")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "cradle" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "16n04y60jps91dsw5fs6p8zash052y82aclg57kkvm9320n155kh"))
              (modules '((guix build utils)))
              (snippet
               '(begin (substitute* "Cargo.toml"
                         (("version = \"=") "version = \"^"))))))
    (build-system cargo-build-system)
    (arguments
     `(#:tests? #f          ; Not all files included.
       #:cargo-inputs
       (("rust-executable-path" ,rust-executable-path-1)
        ("rust-gag" ,rust-gag-0.1)
        ("rust-nix" ,rust-nix-0.22)
        ("rust-rustversion" ,rust-rustversion-1))
       #:cargo-development-inputs
       (("rust-bitflags" ,rust-bitflags-1)
        ("rust-executable-path" ,rust-executable-path-1)
        ("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-pretty-assertions" ,rust-pretty-assertions-1)
        ("rust-tempfile" ,rust-tempfile-3)
        ("rust-unindent" ,rust-unindent-0.1))))
    (home-page "https://github.com/soenkehahn/cradle")
    (synopsis "Execute child processes with ease")
    (description "Execute child processes with ease.")
    (license license:cc0)))

(define-public rust-crates-index-0.18
  (package
    (name "rust-crates-index")


@@ 20966,6 21002,37 @@ Rust.")
        ("rust-regex" ,rust-regex-0.2)
        ("rust-syn" ,rust-syn-0.11))))))

(define-public rust-dotenvy-0.15
  (package
    (name "rust-dotenvy")
    (version "0.15.7")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "dotenvy" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "16s3n973n5aqym02692i1npb079n5mb0fwql42ikmwn8wnrrbbqs"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-test-flags
       ;; Not all files included.
       '("--release" "--"
         "--skip=dotenv"
         "--skip=dotenv_iter"
         "--skip=dotenv_override"
         "--skip=from_filename"
         "--skip=from_filename_override")
       #:cargo-inputs
       (("rust-clap" ,rust-clap-3))
       #:cargo-development-inputs
       (("rust-once-cell" ,rust-once-cell-1)
        ("rust-tempfile" ,rust-tempfile-3))))
    (home-page "https://github.com/allan2/dotenvy")
    (synopsis "Fork of the dotenv crate")
    (description "This package provides a fork of the dotenv crate.")
    (license license:expat)))

(define-public rust-draw-state-0.8
  (package
    (name "rust-draw-state")


@@ 23179,6 23246,23 @@ You can use this crate to turn non-blocking data structures into async or
blocking data structures.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-executable-path-1
  (package
    (name "rust-executable-path")
    (version "1.0.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "executable-path" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0y0lhhrx9f9q1f81am3b20f8znixjcvqfg7kx220pjg3i5nmmg1y"))))
    (build-system cargo-build-system)
    (home-page "https://github.com/casey/rust-executable-path")
    (synopsis "Get the path of a binary target's executable")
    (description "Get the path of a binary target's executable.")
    (license license:cc0)))

(define-public rust-executors-0.9
  (package
    (name "rust-executors")


@@ 34534,6 34618,23 @@ a no_std environment.  This does not depend on any standard library features,
nor a system allocator.")
    (license (list license:expat license:asl2.0))))

(define-public rust-lexiclean-0.0.1
  (package
    (name "rust-lexiclean")
    (version "0.0.1")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "lexiclean" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1rb8sky7gi75a7xxn6xrfkrbqkp465npm54p5s89ysqhgc0ja4j4"))))
    (build-system cargo-build-system)
    (home-page "https://github.com/casey/lexiclean")
    (synopsis "Lexically clean paths")
    (description "Lexically clean paths")
    (license license:cc0)))

(define-public rust-lexopt-0.3
  (package
    (name "rust-lexopt")


@@ 62802,21 62903,22 @@ monotone matrix.")
clone.")
    (license (list license:expat license:asl2.0))))

(define-public rust-snafu-derive-0.6
(define-public rust-snafu-derive-0.7
  (package
    (name "rust-snafu-derive")
    (version "0.6.10")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "snafu-derive" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "0nri7ma06g5kimpcdcm8359a55nmps5f3kcngy0j6bin7jhfy20m"))))
    (version "0.7.5")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "snafu-derive" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1gzy9rzggs090zf7hfvgp4lm1glrmg9qzh796686jnq7bxk7j04r"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-proc-macro2" ,rust-proc-macro2-1)
       (("rust-heck" ,rust-heck-0.4)
        ("rust-proc-macro2" ,rust-proc-macro2-1)
        ("rust-quote" ,rust-quote-1)
        ("rust-syn" ,rust-syn-1))))
    (home-page "https://github.com/shepmaster/snafu")


@@ 62825,32 62927,70 @@ clone.")
package provides derive macros.")
    (license (list license:expat license:asl2.0))))

(define-public rust-snafu-0.6
(define-public rust-snafu-derive-0.6
  (package
    (name "rust-snafu")
    (inherit rust-snafu-derive-0.7)
    (name "rust-snafu-derive")
    (version "0.6.10")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "snafu" version))
       (uri (crate-uri "snafu-derive" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "19wwqxwb85pl040qk5xylj0vlznib3xzy9hcv2q0h8qv4qy2vcga"))))
        (base32 "0nri7ma06g5kimpcdcm8359a55nmps5f3kcngy0j6bin7jhfy20m"))))
    (arguments
     `(#:cargo-inputs
       (("rust-proc-macro2" ,rust-proc-macro2-1)
        ("rust-quote" ,rust-quote-1)
        ("rust-syn" ,rust-syn-1))))))

(define-public rust-snafu-0.7
  (package
    (name "rust-snafu")
    (version "0.7.5")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "snafu" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1mj2j2gfbf8mm1hr02zrbrqrh2zp01f61xgkx0lpln2w0ankgpp4"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-backtrace" ,rust-backtrace-0.3)
        ("rust-doc-comment" ,rust-doc-comment-0.3)
        ("rust-futures" ,rust-futures-0.3)
        ("rust-futures" ,rust-futures-0.1)
        ("rust-futures-core" ,rust-futures-core-0.3)
        ("rust-pin-project" ,rust-pin-project-0.4)
        ("rust-snafu-derive" ,rust-snafu-derive-0.6))))
        ("rust-pin-project" ,rust-pin-project-1)
        ("rust-snafu-derive" ,rust-snafu-derive-0.7))))
    (home-page "https://github.com/shepmaster/snafu")
    (synopsis "Ergonomic error handling library")
    (description "Snafu aims to be an ergonomic error handling library.")
    (license (list license:expat license:asl2.0))))

(define-public rust-snafu-0.6
  (package
    (inherit rust-snafu-0.7)
    (name "rust-snafu")
    (version "0.6.10")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "snafu" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32 "19wwqxwb85pl040qk5xylj0vlznib3xzy9hcv2q0h8qv4qy2vcga"))))
    (arguments
     `(#:cargo-inputs
       (("rust-backtrace" ,rust-backtrace-0.3)
        ("rust-doc-comment" ,rust-doc-comment-0.3)
        ("rust-futures" ,rust-futures-0.3)
        ("rust-futures" ,rust-futures-0.1)
        ("rust-futures-core" ,rust-futures-core-0.3)
        ("rust-pin-project" ,rust-pin-project-0.4)
        ("rust-snafu-derive" ,rust-snafu-derive-0.6))))))

(define-public rust-snap-1
  (package
    (name "rust-snap")


@@ 65028,22 65168,25 @@ struct.")
     "Parse command line argument by defining a struct, derive crate.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-strum-0.21
(define-public rust-strum-0.24
  (package
    (name "rust-strum")
    (version "0.21.0")
    (version "0.24.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "strum" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "1qnd2by1zrwgx7li0hmwy7jbzjwz1ky697qjg85nga8zzny6py5a"))))
        (base32 "0gz6cjhlps5idwasznklxdh2zsas6mxf99vr0n27j876q12n0gh6"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
     `(#:tests? #f          ; Doc tests fail.
       #:cargo-inputs
       (("rust-strum-macros" ,rust-strum-macros-0.21))))
       (("rust-phf" ,rust-phf-0.10)
        ("rust-strum-macros" ,rust-strum-macros-0.24))
       #:cargo-development-inputs
       (("rust-strum-macros" ,rust-strum-macros-0.24))))
    (home-page "https://github.com/Peternator7/strum")
    (synopsis "Set of traits for working with enums and strings")
    (description


@@ 65051,6 65194,23 @@ struct.")
easier in Rust.")
    (license license:expat)))

(define-public rust-strum-0.21
  (package
    (inherit rust-strum-0.24)
    (name "rust-strum")
    (version "0.21.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "strum" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "1qnd2by1zrwgx7li0hmwy7jbzjwz1ky697qjg85nga8zzny6py5a"))))
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs
       (("rust-strum-macros" ,rust-strum-macros-0.21))))))

(define-public rust-strum-0.20
  (package
    (inherit rust-strum-0.21)


@@ 65102,31 65262,53 @@ easier in Rust.")
     `(#:cargo-inputs
       (("rust-strum-macros" ,rust-strum-macros-0.18))))))

(define-public rust-strum-macros-0.21
(define-public rust-strum-macros-0.24
  (package
    (name "rust-strum-macros")
    (version "0.21.1")
    (version "0.24.3")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "strum_macros" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "1v55b1in7dn07s6vxr8dajqpvxkxjbfq6qamnjgcbnq9x3pawsnh"))))
        (base32 "0naxz2y38kwq5wgirmia64vvf6qhwy8j367rw966n62gsbh5nf0y"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs
       (("rust-heck" ,rust-heck-0.3)
     `(#:cargo-inputs
       (("rust-heck" ,rust-heck-0.4)
        ("rust-proc-macro2" ,rust-proc-macro2-1)
        ("rust-quote" ,rust-quote-1)
        ("rust-syn" ,rust-syn-1))))
        ("rust-rustversion" ,rust-rustversion-1)
        ("rust-syn" ,rust-syn-1))
       #:cargo-development-inputs
       (("rust-strum" ,rust-strum-0.24))))
    (home-page "https://github.com/Peternator7/strum")
    (synopsis "Set of macros for working with enums and strings")
    (description
     "This crate provides helpful macros for working with enums and strings.")
    (license license:expat)))

(define-public rust-strum-macros-0.21
  (package
    (inherit rust-strum-macros-0.24)
    (name "rust-strum-macros")
    (version "0.21.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "strum_macros" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "1v55b1in7dn07s6vxr8dajqpvxkxjbfq6qamnjgcbnq9x3pawsnh"))))
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs
       (("rust-heck" ,rust-heck-0.3)
        ("rust-proc-macro2" ,rust-proc-macro2-1)
        ("rust-quote" ,rust-quote-1)
        ("rust-syn" ,rust-syn-1))))))

(define-public rust-strum-macros-0.20
  (package
    (inherit rust-strum-macros-0.21)


@@ 66682,6 66864,27 @@ memory all at once.")
    (license (list license:asl2.0
                   license:expat))))

(define-public rust-target-2
  (package
    (name "rust-target")
    (version "2.0.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "target" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0p5hi5vxcs8w95qmg9hsv985g8kaxjrzjlgsybmf4h13a1qjx1ds"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-development-inputs
       (("rust-executable-path" ,rust-executable-path-1)
        ("rust-pretty-assertions" ,rust-pretty-assertions-0.7))))
    (home-page "https://github.com/casey/target")
    (synopsis "Get information on compilation target")
    (description "Get information on compilation target.")
    (license license:cc0)))

(define-public rust-target-build-utils-0.3
  (package
    (name "rust-target-build-utils")


@@ 67524,6 67727,26 @@ directories.")
     "This package provides support for Linux-specific tempfile extensions.")
    (license license:expat)))

(define-public rust-temptree-0.2
  (package
    (name "rust-temptree")
    (version "0.2.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "temptree" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0c461j4xrjp1mz89fb3rmv8w36m1dm1nymv9ny60hh0v4pc99nlg"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-tempfile" ,rust-tempfile-3))))
    (home-page "https://github.com/casey/temptree")
    (synopsis "Temporary trees of files")
    (description "Temporary trees of files.")
    (license license:cc0)))

(define-public rust-tendril-0.4
  (package
    (name "rust-tendril")

M gnu/packages/cups.scm => gnu/packages/cups.scm +2 -2
@@ 514,14 514,14 @@ should only be used as part of the Guix cups-pk-helper service.")
(define-public hplip
  (package
    (name "hplip")
    (version "3.23.5")
    (version "3.23.8")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/hplip/hplip/" version
                                  "/hplip-" version ".tar.gz"))
              (sha256
               (base32
                "1j6bjn4zplxl7w15xrc1v5l3p9a0x0345756ahvgq8mi97bmx3pn"))
                "0ihv9ddjrjx5bdf8pwc2fvljkpfzq4qi9r2awm8dgky053v0bk7p"))
              (modules '((guix build utils)))
              (snippet
               '(begin

M gnu/packages/databases.scm => gnu/packages/databases.scm +2 -2
@@ 3323,14 3323,14 @@ Memory-Mapped Database} (LMDB), a high-performance key-value store.")
(define-public virtuoso-ose
  (package
    (name "virtuoso-ose")
    (version "7.2.10")
    (version "7.2.11")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/virtuoso/virtuoso/" version "/"
                           "virtuoso-opensource-" version ".tar.gz"))
       (sha256
        (base32 "03vznas39valis02zk0hnli7x5asiam4rxzqhr58agzkdyb0lay0"))
        (base32 "0mk25gr1pafmps4nsydjprwswbzwch8b583nlwh7x2031sz7ald1"))
       (patches (search-patches "virtuoso-ose-remove-pre-built-jar-files.patch"))
       (modules '((guix build utils)))
       ;; This snippet removes pre-built Java archives.

M gnu/packages/electronics.scm => gnu/packages/electronics.scm +28 -31
@@ 34,7 34,6 @@
  #:use-module (gnu packages algebra)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages boost)
  #:use-module (gnu packages c)
  #:use-module (gnu packages check)


@@ 42,7 41,6 @@
  #:use-module (gnu packages documentation)
  #:use-module (gnu packages embedded)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages gawk)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages graphviz)


@@ 123,35 121,34 @@ to take care of the OS-specific details when writing software that uses serial p
      (license license:gpl3+))))

(define-public sigrok-firmware-fx2lafw
  (package
    (name "sigrok-firmware-fx2lafw")
    (version "0.1.7")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://sigrok.org/download/source/sigrok-firmware-fx2lafw/"
                    "sigrok-firmware-fx2lafw-" version ".tar.gz"))
              (sha256
               (base32
                "0fyfd82mvrcf55v5a3afq1mh1kfswk4c37qrbln6x92jm3b41x53"))))
    (arguments
     `(#:implicit-inputs? #f))
    (native-inputs
     `(("awk" ,gawk)
       ("bash" ,bash)
       ("coreutils" ,coreutils)
       ("grep" ,grep)
       ("gzip" ,gzip)
       ("make" ,gnu-make)
       ("sdcc" ,sdcc)
       ("sed" ,sed)
       ("tar" ,tar)))
    (build-system gnu-build-system)
    (home-page "https://www.sigrok.org/wiki/Fx2lafw")
    (synopsis "Firmware for Cypress FX2 chips")
    (description "Fx2lafw is free firmware for Cypress FX2 chips which makes them usable
as simple logic analyzer and/or oscilloscope hardware.")
    (license license:gpl2+)))
  ;; The project's last formal release was in 2019.
  ;;
  ;; The changes since then allow it to build with the latest version of SDCC,
  ;; 4.3.0.
  (let ((commit "96b0b476522c3f93a47ff8f479ec08105ba6a2a5")
        (revision "1"))
    (package
      (name "sigrok-firmware-fx2lafw")
      (version (git-version "0.1.7" revision commit))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "git://sigrok.org/sigrok-firmware-fx2lafw")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256
                 (base32
                  "1n5nj2g2m5ih59591ny2drrv25zviqcwyx1cfdhy8ijl82yxjkmb"))))
      (build-system gnu-build-system)
      (arguments
       (list #:tests? #f))              ; no test suite
      (native-inputs
       (list autoconf automake sdcc))
      (home-page "https://www.sigrok.org/wiki/Fx2lafw")
      (synopsis "Firmware for Cypress FX2 chips")
      (description "Fx2lafw is free firmware for Cypress FX2 chips which makes
them usable as simple logic analyzer and/or oscilloscope hardware.")
      (license license:gpl2+))))

(define-public libsigrok
  (let ((commit "a7e919a3a6b7fd511acbe1a280536b76c70c28d2")

M gnu/packages/emacs-xyz.scm => gnu/packages/emacs-xyz.scm +15 -33
@@ 13856,7 13856,16 @@ and tooling.")
    (build-system emacs-build-system)
    (arguments
     `(#:tests? #t
       #:test-command '("make" "test")))
       #:test-command '("make" "test")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-program-calls
           (lambda* (#:key inputs #:allow-other-keys)
             (emacs-substitute-variables "elfeed-curl.el"
               ("elfeed-curl-program-name"
                (search-input-file inputs "/bin/curl"))))))))
    (inputs
     (list curl))
    (home-page "https://github.com/skeeto/elfeed")
    (synopsis "Atom/RSS feed reader for Emacs")
    (description


@@ 15207,9 15216,9 @@ e.g., the expression you've just evaluated would briefly flash and so on.")
      (license license:gpl3+))))

(define-public emacs-sly
  ;; Update together with sbcl-slynk.
  (let ((commit "82b20a9a83209b4dbfbfb62a1536896aed5f85f7")
        (revision "7"))
  ;; Update together with sbcl-slynk .
  (let ((commit "df62abae73bd511885c9c7ec0ea7ea1469a00923")
        (revision "8"))
    ;; Versions are not always tagged.  Besides, latest master contains
    ;; important fixes.
    (package


@@ 15224,7 15233,7 @@ e.g., the expression you've just evaluated would briefly flash and so on.")
         (file-name (git-file-name name version))
         (sha256
          (base32
           "0dvr36qvb490gml0znay0slw63czp7azvajnv7srh8s0j8pqpcaj"))))
           "1nxijv52bja6la2i3asq7kklpj5li25454n52sgsc6xnnfvakbsv"))))
      (build-system emacs-build-system)
      (native-inputs
       (list texinfo))


@@ 15523,7 15532,7 @@ using package inferred style.")
     `(#:tests? #t
       #:test-command '("buttercup" "-l" "lua-mode.el")))
    (native-inputs
     (list emacs-buttercup-1.25 lua))
     (list emacs-buttercup lua))
    (synopsis "Major mode for lua")
    (description
     "This Emacs package provides a mode for @uref{https://www.lua.org/,


@@ 28520,16 28529,6 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)")
      #:test-command #~(list "make" "test")
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'fix-spy-on-test
            (lambda _
              (substitute* "buttercup.el"
                ;; The spy-on test fails with native compilation, which was
                ;; fixed in v1.30 but with a variable name for Emacs newer
                ;; than 28.2.  Add in the same fix with the current variable
                ;; name.  Upstream bug and fix:
                ;; <https://github.com/jorgenschaefer/emacs-buttercup/issues/236>
                (("\\(native-comp-enable-subr-trampolines nil\\)" all)
                 (string-append all " (comp-enable-subr-trampolines nil)")))))
          (add-after 'install 'install-bin
            (lambda _
              (install-file "bin/buttercup"


@@ 28542,23 28541,6 @@ common set-up and tear-down code, and allows the programmer to \"spy\" on
functions to ensure they are called with the right arguments during testing.")
    (license license:gpl3+)))

;;; Required by emacs-lua-mode
(define emacs-buttercup-1.25
  (package
    (inherit emacs-buttercup)
    (name "emacs-buttercup")
    (version "1.25")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/jorgenschaefer/emacs-buttercup")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "0fsysvsypda6b7azc15bpaprq3bwx4gb6rlq2mj6f8rgwdqc8153"))))))

(define-public emacs-cort
  (package
    (name "emacs-cort")

M gnu/packages/embedded.scm => gnu/packages/embedded.scm +736 -632
@@ 11,7 11,7 @@
;;; Copyright © 2020, 2021, 2022 Simon South <simon@simonsouth.net>
;;; 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 © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.


@@ 34,6 34,7 @@
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix gexp)
  #:use-module (guix memoization)
  #:use-module (guix svn-download)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:)


@@ 73,442 74,519 @@
  #:use-module (gnu packages tls)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages xorg)
  #:use-module (srfi srfi-1))
  #:use-module (srfi srfi-1)
  #:export (make-gcc-arm-none-eabi-4.9
            make-gcc-arm-none-eabi-6
            make-gcc-arm-none-eabi-7-2018-q2-update

            make-gcc-vc4

            make-newlib-arm-none-eabi
            make-newlib-arm-none-eabi-7-2018-q2-update

            make-newlib-nano-arm-none-eabi
            make-newlib-nano-arm-none-eabi-7-2018-q2-update

            make-arm-none-eabi-toolchain-4.9
            make-arm-none-eabi-toolchain-6
            make-arm-none-eabi-toolchain-7-2018-q2-update

            make-arm-none-eabi-nano-toolchain-4.9
            make-arm-none-eabi-nano-toolchain-6
            make-arm-none-eabi-nano-toolchain-7-2018-q2-update

            make-gdb-arm-none-eabi

            make-propeller-gcc
            make-propeller-gcc-4
            make-propeller-gcc-6
            make-propeller-toolchain
            make-propeller-development-suite))

;;; Commentary:
;;;
;;; This modules contains toolchain generators as well as packages for use in
;;; embedded contexts.  Note: the toolchain and specialized packages are
;;; procedures, so as to delay their references to top level bindings such as
;;; 'gcc' or 'cross-gcc', etc.
;;;

;; We must not use the released GCC sources here, because the cross-compiler
;; does not produce working binaries.  Instead we take the very same SVN
;; revision from the branch that is used for a release of the "GCC ARM
;; embedded" project on launchpad.
;; See https://launchpadlibrarian.net/218827644/release.txt
(define-public gcc-arm-none-eabi-4.9
  (let ((xgcc (cross-gcc "arm-none-eabi"
                         #:xgcc gcc-4.9
                         #:xbinutils (cross-binutils "arm-none-eabi")))
        (revision "1")
        (svn-revision 227977))
    (package (inherit xgcc)
      (version (string-append (package-version xgcc) "-"
                              revision "." (number->string svn-revision)))
      (source
       (origin
         (method svn-fetch)
         (uri (svn-reference
               (url "svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch/")
               (revision svn-revision)))
         (file-name (string-append "gcc-arm-embedded-" version "-checkout"))
         (sha256
          (base32
           "113r98kygy8rrjfv2pd3z6zlfzbj543pq7xyq8bgh72c608mmsbr"))
(define make-gcc-arm-none-eabi-4.9
  (mlambda ()
    (let ((xgcc (cross-gcc "arm-none-eabi"
                           #:xgcc gcc-4.9
                           #:xbinutils (cross-binutils "arm-none-eabi")))
          (revision "1")
          (svn-revision 227977))
      (package
        (inherit xgcc)
        (version (string-append (package-version xgcc) "-"
                                revision "." (number->string svn-revision)))
        (source
         (origin
           (method svn-fetch)
           (uri (svn-reference
                 (url "svn://gcc.gnu.org/svn/gcc/branches/ARM/\
embedded-4_9-branch/")
                 (revision svn-revision)))
           (file-name (string-append "gcc-arm-embedded-" version "-checkout"))
           (sha256
            (base32
             "113r98kygy8rrjfv2pd3z6zlfzbj543pq7xyq8bgh72c608mmsbr"))

         (patches (cons (search-patch "gcc-4.9-inline.patch")
                        ;; Remove the one patch that doesn't apply to this 4.9
                        ;; snapshot (the patch is for 4.9.4 and later but this
                        ;; svn snapshot is older).
                        (remove (lambda (patch)
                                  (string=? (basename patch)
                                            "gcc-arm-bug-71399.patch"))
                                (origin-patches (package-source xgcc)))))))
      (native-inputs
       `(("flex" ,flex)
         ("gcc@5" ,gcc-5)
         ,@(package-native-inputs xgcc)))
      (arguments
       (substitute-keyword-arguments (package-arguments xgcc)
         ((#:phases phases)
          #~(modify-phases #$phases
              (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH
                (lambda* (#:key inputs #:allow-other-keys)
                  (let ((gcc (assoc-ref inputs  "gcc")))
                    ;; Remove the default compiler from CPLUS_INCLUDE_PATH to
                    ;; prevent header conflict with the GCC from native-inputs.
                    (setenv "CPLUS_INCLUDE_PATH"
                            (string-join
                             (delete (string-append gcc "/include/c++")
                                     (string-split (getenv "CPLUS_INCLUDE_PATH")
                                                   #\:))
                             ":"))
                    (format #t
                            "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
                            (getenv "CPLUS_INCLUDE_PATH")))))
              (add-after 'unpack 'fix-genmultilib
                (lambda _
                  (substitute* "gcc/genmultilib"
                    (("#!/bin/sh") (string-append "#!" (which "sh"))))))))
         ((#:configure-flags flags)
          ;; The configure flags are largely identical to the flags used by the
          ;; "GCC ARM embedded" project.
          #~(append (list "--enable-multilib"
                          "--with-newlib"
                          "--with-multilib-list=armv6-m,armv7-m,armv7e-m"
                          "--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm"
                          "--enable-plugins"
                          "--disable-decimal-float"
                          "--disable-libffi"
                          "--disable-libgomp"
                          "--disable-libmudflap"
                          "--disable-libquadmath"
                          "--disable-libssp"
                          "--disable-libstdcxx-pch"
                          "--disable-nls"
                          "--disable-shared"
                          "--disable-threads"
                          "--disable-tls")
                    (delete "--disable-multilib" #$flags)))))
      (native-search-paths
       (list (search-path-specification
              (variable "CROSS_C_INCLUDE_PATH")
              (files '("arm-none-eabi/include")))
             (search-path-specification
              (variable "CROSS_CPLUS_INCLUDE_PATH")
              (files '("arm-none-eabi/include"
                       "arm-none-eabi/include/c++"
                       "arm-none-eabi/include/c++/arm-none-eabi")))
             (search-path-specification
              (variable "CROSS_LIBRARY_PATH")
              (files '("arm-none-eabi/lib"))))))))
           (patches (cons (search-patch "gcc-4.9-inline.patch")
                          ;; Remove the one patch that doesn't apply to this
                          ;; 4.9 snapshot (the patch is for 4.9.4 and later
                          ;; but this svn snapshot is older).
                          (remove (lambda (patch)
                                    (string=? (basename patch)
                                              "gcc-arm-bug-71399.patch"))
                                  (origin-patches (package-source xgcc)))))))
        (native-inputs
         `(("flex" ,flex)
           ("gcc@5" ,gcc-5)
           ,@(package-native-inputs xgcc)))
        (arguments
         (substitute-keyword-arguments (package-arguments xgcc)
           ((#:phases phases)
            #~(modify-phases #$phases
                (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH
                  (lambda* (#:key inputs #:allow-other-keys)
                    (let ((gcc (assoc-ref inputs  "gcc")))
                      ;; Remove the default compiler from CPLUS_INCLUDE_PATH
                      ;; to prevent header conflict with the GCC from
                      ;; native-inputs.
                      (setenv "CPLUS_INCLUDE_PATH"
                              (string-join
                               (delete (string-append gcc "/include/c++")
                                       (string-split (getenv "CPLUS_INCLUDE_PATH")
                                                     #\:))
                               ":"))
                      (format #t
                              "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
                              (getenv "CPLUS_INCLUDE_PATH")))))
                (add-after 'unpack 'fix-genmultilib
                  (lambda _
                    (substitute* "gcc/genmultilib"
                      (("#!/bin/sh") (string-append "#!" (which "sh"))))))))
           ((#:configure-flags flags)
            ;; The configure flags are largely identical to the flags used by the
            ;; "GCC ARM embedded" project.
            #~(append (list "--enable-multilib"
                            "--with-newlib"
                            "--with-multilib-list=armv6-m,armv7-m,armv7e-m"
                            "--with-host-libstdcxx=-static-libgcc \
-Wl,-Bstatic,-lstdc++,-Bdynamic -lm"
                            "--enable-plugins"
                            "--disable-decimal-float"
                            "--disable-libffi"
                            "--disable-libgomp"
                            "--disable-libmudflap"
                            "--disable-libquadmath"
                            "--disable-libssp"
                            "--disable-libstdcxx-pch"
                            "--disable-nls"
                            "--disable-shared"
                            "--disable-threads"
                            "--disable-tls")
                      (delete "--disable-multilib" #$flags)))))
        (native-search-paths
         (list (search-path-specification
                (variable "CROSS_C_INCLUDE_PATH")
                (files '("arm-none-eabi/include")))
               (search-path-specification
                (variable "CROSS_CPLUS_INCLUDE_PATH")
                (files '("arm-none-eabi/include"
                         "arm-none-eabi/include/c++"
                         "arm-none-eabi/include/c++/arm-none-eabi")))
               (search-path-specification
                (variable "CROSS_LIBRARY_PATH")
                (files '("arm-none-eabi/lib")))))))))

(define-public gcc-arm-none-eabi-6
  (package
    (inherit gcc-arm-none-eabi-4.9)
    (version (package-version gcc-6))
    (source (origin (inherit (package-source gcc-6))
                    (patches
                     (append
                      (origin-patches (package-source gcc-6))
                      (search-patches "gcc-6-cross-environment-variables.patch"
                                      "gcc-6-arm-none-eabi-multilib.patch")))))))
(define make-gcc-arm-none-eabi-6
  (mlambda ()
    (package
      (inherit (make-gcc-arm-none-eabi-4.9))
      (version (package-version gcc-6))
      (source (origin
                (inherit (package-source gcc-6))
                (patches
                 (append
                  (origin-patches (package-source gcc-6))
                  (search-patches "gcc-6-cross-environment-variables.patch"
                                  "gcc-6-arm-none-eabi-multilib.patch"))))))))

(define-public newlib-arm-none-eabi
  (package
    (name "newlib")
    (version "2.4.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "ftp://sourceware.org/pub/newlib/newlib-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "01i7qllwicf05vsvh39qj7qp5fdifpvvky0x95hjq39mbqiksnsl"))))
    (build-system gnu-build-system)
    (arguments
     `(#:out-of-source? #t
       ;; The configure flags are identical to the flags used by the "GCC ARM
       ;; embedded" project.
       #:configure-flags '("--target=arm-none-eabi"
                           "--enable-newlib-io-long-long"
                           "--enable-newlib-register-fini"
                           "--disable-newlib-supplied-syscalls"
                           "--disable-nls")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-references-to-/bin/sh
           (lambda _
             (substitute* '("libgloss/arm/cpu-init/Makefile.in"
                            "libgloss/arm/Makefile.in"
                            "libgloss/libnosys/Makefile.in"
                            "libgloss/Makefile.in")
               (("/bin/sh") (which "sh")))
             #t)))))
    (native-inputs
     `(("xbinutils" ,(cross-binutils "arm-none-eabi"))
       ("xgcc" ,gcc-arm-none-eabi-4.9)
       ("texinfo" ,texinfo)))
    (home-page "https://www.sourceware.org/newlib/")
    (synopsis "C library for use on embedded systems")
    (description "Newlib is a C library intended for use on embedded
(define make-newlib-arm-none-eabi
  (mlambda ()
    (package
      (name "newlib")
      (version "2.4.0")
      (source (origin
                (method url-fetch)
                (uri (string-append "ftp://sourceware.org/pub/newlib/newlib-"
                                    version ".tar.gz"))
                (sha256
                 (base32
                  "01i7qllwicf05vsvh39qj7qp5fdifpvvky0x95hjq39mbqiksnsl"))))
      (build-system gnu-build-system)
      (arguments
       `(#:out-of-source? #t
         ;; The configure flags are identical to the flags used by the "GCC ARM
         ;; embedded" project.
         #:configure-flags '("--target=arm-none-eabi"
                             "--enable-newlib-io-long-long"
                             "--enable-newlib-register-fini"
                             "--disable-newlib-supplied-syscalls"
                             "--disable-nls")
         #:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'fix-references-to-/bin/sh
             (lambda _
               (substitute* '("libgloss/arm/cpu-init/Makefile.in"
                              "libgloss/arm/Makefile.in"
                              "libgloss/libnosys/Makefile.in"
                              "libgloss/Makefile.in")
                 (("/bin/sh") (which "sh")))
               #t)))))
      (native-inputs
       `(("xbinutils" ,(cross-binutils "arm-none-eabi"))
         ("xgcc" ,(make-gcc-arm-none-eabi-4.9))
         ("texinfo" ,texinfo)))
      (home-page "https://www.sourceware.org/newlib/")
      (synopsis "C library for use on embedded systems")
      (description "Newlib is a C library intended for use on embedded
systems.  It is a conglomeration of several library parts that are easily
usable on embedded products.")
    (license (license:non-copyleft
              "https://www.sourceware.org/newlib/COPYING.NEWLIB"))))
      (license (license:non-copyleft
                "https://www.sourceware.org/newlib/COPYING.NEWLIB")))))

(define-public newlib-nano-arm-none-eabi
  (package (inherit newlib-arm-none-eabi)
    (name "newlib-nano")
    (arguments
     (substitute-keyword-arguments (package-arguments newlib-arm-none-eabi)
       ;; The configure flags are identical to the flags used by the "GCC ARM
       ;; embedded" project.  They optimize newlib for use on small embedded
       ;; systems with limited memory.
       ((#:configure-flags flags)
        ''("--target=arm-none-eabi"
           "--enable-multilib"
           "--disable-newlib-supplied-syscalls"
           "--enable-newlib-reent-small"
           "--disable-newlib-fvwrite-in-streamio"
           "--disable-newlib-fseek-optimization"
           "--disable-newlib-wide-orient"
           "--enable-newlib-nano-malloc"
           "--disable-newlib-unbuf-stream-opt"
           "--enable-lite-exit"
           "--enable-newlib-global-atexit"
           "--enable-newlib-nano-formatted-io"
           "--disable-nls"))
       ((#:phases phases)
        `(modify-phases ,phases
           ;; XXX: Most arm toolchains offer both *.a and *_nano.a as newlib
           ;; and newlib-nano respectively.  The headers are usually
           ;; arm-none-eabi/include/newlib.h for newlib and
           ;; arm-none-eabi/include/newlib-nano/newlib.h for newlib-nano.  We
           ;; have two different toolchain packages for each which works but
           ;; is a little strange.
           (add-after 'install 'hardlink-newlib
             (lambda* (#:key outputs #:allow-other-keys)
               (let ((out (assoc-ref outputs "out")))
                 ;; The nano.specs file says that newlib-nano files should end
                 ;; in "_nano.a" instead of just ".a".  Note that this applies
                 ;; to all the multilib folders too.
                 (for-each
                  (lambda (file)
                    (link file
                          (string-append
                           ;; Strip ".a" off the end
                           (substring file 0 (- (string-length file) 2))
                           ;; Add "_nano.a" onto the end
                           "_nano.a")))
                  (find-files
                   out
                   "^(libc.a|libg.a|librdimon.a|libstdc\\+\\+.a|libsupc\\+\\+.a)$"))
(define make-newlib-nano-arm-none-eabi
  (mlambda ()
    (let ((base (make-newlib-arm-none-eabi)))
      (package
        (inherit base)
        (name "newlib-nano")
        (arguments
         (substitute-keyword-arguments (package-arguments base)
           ;; The configure flags are identical to the flags used by the "GCC
           ;; ARM embedded" project.  They optimize newlib for use on small
           ;; embedded systems with limited memory.
           ((#:configure-flags _)
            ''("--target=arm-none-eabi"
               "--enable-multilib"
               "--disable-newlib-supplied-syscalls"
               "--enable-newlib-reent-small"
               "--disable-newlib-fvwrite-in-streamio"
               "--disable-newlib-fseek-optimization"
               "--disable-newlib-wide-orient"
               "--enable-newlib-nano-malloc"
               "--disable-newlib-unbuf-stream-opt"
               "--enable-lite-exit"
               "--enable-newlib-global-atexit"
               "--enable-newlib-nano-formatted-io"
               "--disable-nls"))
           ((#:phases phases)
            `(modify-phases ,phases
               ;; XXX: Most arm toolchains offer both *.a and *_nano.a as
               ;; newlib and newlib-nano respectively.  The headers are
               ;; usually arm-none-eabi/include/newlib.h for newlib and
               ;; arm-none-eabi/include/newlib-nano/newlib.h for newlib-nano.
               ;; We have two different toolchain packages for each which
               ;; works but is a little strange.
               (add-after 'install 'hardlink-newlib
                 (lambda* (#:key outputs #:allow-other-keys)
                   (let ((out (assoc-ref outputs "out")))
                     ;; The nano.specs file says that newlib-nano files should
                     ;; end in "_nano.a" instead of just ".a".  Note that this
                     ;; applies to all the multilib folders too.
                     (for-each
                      (lambda (file)
                        (link file
                              (string-append
                               ;; Strip ".a" off the end
                               (substring file 0 (- (string-length file) 2))
                               ;; Add "_nano.a" onto the end
                               "_nano.a")))
                      (find-files
                       out
                       "^(libc.a|libg.a|librdimon.a|libstdc\\+\\+.a|\
libsupc\\+\\+.a)$"))

                 ;; newlib.h is usually in this location instead so both
                 ;; newlib and newlib-nano can be in the toolchain at the same
                 ;; time
                 (mkdir (string-append out "/arm-none-eabi/include/newlib-nano"))
                 (symlink
                   "../newlib.h"
                   (string-append out "/arm-none-eabi/include/newlib-nano/newlib.h"))
                 #t)))))))
    (synopsis "Newlib variant for small systems with limited memory")))
                     ;; newlib.h is usually in this location instead so both
                     ;; newlib and newlib-nano can be in the toolchain at the
                     ;; same time
                     (mkdir (string-append
                             out "/arm-none-eabi/include/newlib-nano"))
                     (symlink
                      "../newlib.h"
                      (string-append
                       out
                       "/arm-none-eabi/include/newlib-nano/newlib.h")))))))))
        (synopsis "Newlib variant for small systems with limited memory")))))


;;; The following definitions are for the "7-2018-q2-update" variant of the
;;; ARM cross toolchain as offered on https://developer.arm.com
(define-public gcc-arm-none-eabi-7-2018-q2-update
  (let ((xgcc (cross-gcc "arm-none-eabi"
                         #:xgcc gcc-7
                         #:xbinutils (cross-binutils "arm-none-eabi")))
        (revision "1")
        (svn-revision 261907))
    (package (inherit xgcc)
      (version (string-append "7-2018-q2-update-"
                              revision "." (number->string svn-revision)))
      (source
       (origin
         (method svn-fetch)
         (uri (svn-reference
               (url "svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-7-branch/")
               (revision svn-revision)))
         (file-name (string-append "gcc-arm-embedded-" version "-checkout"))
         (sha256
          (base32
           "192ggs63bixf3irpijgfkjks73yx1r3a4i6grk1y0i0iny76pmx5"))
         (patches
          (append
           (origin-patches (package-source gcc-7))
           (search-patches "gcc-7-cross-environment-variables.patch")))))
      (native-inputs
       (modify-inputs (package-native-inputs xgcc)
         (delete "isl")
         (prepend flex isl-0.18)))
      (arguments
       (substitute-keyword-arguments (package-arguments xgcc)
         ((#:phases phases)
          #~(modify-phases #$phases
              (add-after 'unpack 'expand-version-string
                (lambda _
                  (make-file-writable "gcc/DEV-PHASE")
                  (with-output-to-file "gcc/DEV-PHASE"
                    (lambda ()
                      (display "7-2018-q2-update")))))
              (add-after 'unpack 'fix-genmultilib
                (lambda _
                  (substitute* "gcc/genmultilib"
                    (("#!/bin/sh") (string-append "#!" (which "sh"))))))
              (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH
                (lambda* (#:key inputs #:allow-other-keys)
                  (let ((gcc (assoc-ref inputs  "gcc")))
                    ;; Remove the default compiler from CPLUS_INCLUDE_PATH to
                    ;; prevent header conflict with the GCC from native-inputs.
                    (setenv "CPLUS_INCLUDE_PATH"
                            (string-join
                             (delete (string-append gcc "/include/c++")
                                     (string-split (getenv "CPLUS_INCLUDE_PATH")
                                                   #\:))
                             ":"))
                    (format #t
                            "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
                            (getenv "CPLUS_INCLUDE_PATH")))))))
         ((#:configure-flags flags)
          ;; The configure flags are largely identical to the flags used by the
          ;; "GCC ARM embedded" project.
          #~(append (list "--enable-multilib"
                          "--with-newlib"
                          "--with-multilib-list=rmprofile"
                          "--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm"
                          "--enable-plugins"
                          "--disable-decimal-float"
                          "--disable-libffi"
                          "--disable-libgomp"
                          "--disable-libmudflap"
                          "--disable-libquadmath"
                          "--disable-libssp"
                          "--disable-libstdcxx-pch"
                          "--disable-nls"
                          "--disable-shared"
                          "--disable-threads"
                          "--disable-tls")
                    (delete "--disable-multilib" #$flags)))))
      (native-search-paths
       (list (search-path-specification
              (variable "CROSS_C_INCLUDE_PATH")
              (files '("arm-none-eabi/include")))
             (search-path-specification
              (variable "CROSS_CPLUS_INCLUDE_PATH")
              (files '("arm-none-eabi/include"
                       "arm-none-eabi/include/c++"
                       "arm-none-eabi/include/c++/arm-none-eabi")))
             (search-path-specification
              (variable "CROSS_LIBRARY_PATH")
              (files '("arm-none-eabi/lib"))))))))
(define make-gcc-arm-none-eabi-7-2018-q2-update
  (mlambda ()
    (let ((xgcc (cross-gcc "arm-none-eabi"
                           #:xgcc gcc-7
                           #:xbinutils (cross-binutils "arm-none-eabi")))
          (revision "1")
          (svn-revision 261907))
      (package (inherit xgcc)
               (version (string-append "7-2018-q2-update-"
                                       revision "."
                                       (number->string svn-revision)))
               (source
                (origin
                  (method svn-fetch)
                  (uri (svn-reference
                        (url "svn://gcc.gnu.org/svn/gcc/branches/ARM/\
embedded-7-branch/")
                        (revision svn-revision)))
                  (file-name (string-append "gcc-arm-embedded-" version
                                            "-checkout"))
                  (sha256
                   (base32
                    "192ggs63bixf3irpijgfkjks73yx1r3a4i6grk1y0i0iny76pmx5"))
                  (patches
                   (append
                    (origin-patches (package-source gcc-7))
                    (search-patches
                     "gcc-7-cross-environment-variables.patch")))))
               (native-inputs
                (modify-inputs (package-native-inputs xgcc)
                  (delete "isl")
                  (prepend flex isl-0.18)))
               (arguments
                (substitute-keyword-arguments (package-arguments xgcc)
                  ((#:phases phases)
                   #~(modify-phases #$phases
                       (add-after 'unpack 'expand-version-string
                         (lambda _
                           (make-file-writable "gcc/DEV-PHASE")
                           (with-output-to-file "gcc/DEV-PHASE"
                             (lambda ()
                               (display "7-2018-q2-update")))))
                       (add-after 'unpack 'fix-genmultilib
                         (lambda _
                           (substitute* "gcc/genmultilib"
                             (("#!/bin/sh")
                              (string-append "#!" (which "sh"))))))
                       (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH
                         (lambda* (#:key inputs #:allow-other-keys)
                           (let ((gcc (assoc-ref inputs  "gcc")))
                             ;; Remove the default compiler from
                             ;; CPLUS_INCLUDE_PATH to prevent header conflict
                             ;; with the GCC from native-inputs.
                             (setenv "CPLUS_INCLUDE_PATH"
                                     (string-join
                                      (delete (string-append gcc "/include/c++")
                                              (string-split
                                               (getenv "CPLUS_INCLUDE_PATH")
                                               #\:))
                                      ":"))
                             (format #t
                                     "environment variable `CPLUS_INCLUDE_PATH'\
 changed to ~a~%"
                                     (getenv "CPLUS_INCLUDE_PATH")))))))
                  ((#:configure-flags flags)
                   ;; The configure flags are largely identical to the flags
                   ;; used by the "GCC ARM embedded" project.
                   #~(append (list "--enable-multilib"
                                   "--with-newlib"
                                   "--with-multilib-list=rmprofile"
                                   "--with-host-libstdcxx=-static-libgcc \
-Wl,-Bstatic,-lstdc++,-Bdynamic -lm"
                                   "--enable-plugins"
                                   "--disable-decimal-float"
                                   "--disable-libffi"
                                   "--disable-libgomp"
                                   "--disable-libmudflap"
                                   "--disable-libquadmath"
                                   "--disable-libssp"
                                   "--disable-libstdcxx-pch"
                                   "--disable-nls"
                                   "--disable-shared"
                                   "--disable-threads"
                                   "--disable-tls")
                             (delete "--disable-multilib" #$flags)))))
               (native-search-paths
                (list (search-path-specification
                       (variable "CROSS_C_INCLUDE_PATH")
                       (files '("arm-none-eabi/include")))
                      (search-path-specification
                       (variable "CROSS_CPLUS_INCLUDE_PATH")
                       (files '("arm-none-eabi/include"
                                "arm-none-eabi/include/c++"
                                "arm-none-eabi/include/c++/arm-none-eabi")))
                      (search-path-specification
                       (variable "CROSS_LIBRARY_PATH")
                       (files '("arm-none-eabi/lib")))))))))

(define-public newlib-arm-none-eabi-7-2018-q2-update
(define make-newlib-arm-none-eabi-7-2018-q2-update
  ;; This is the same commit as used for the 7-2018-q2-update release
  ;; according to the release.txt.
  (let ((commit "3ccfb407af410ba7e54ea0da11ae1e40b554a6f4")
        (revision "0"))
    (package
      (inherit newlib-arm-none-eabi)
      (version (git-version "3.0.0" revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "http://sourceware.org/git/newlib-cygwin.git")
               (commit commit)))
         (file-name (git-file-name "newlib" commit))
         (sha256
          (base32
           "1dq23fqrk75g1a4v7569fvnnw5q440zawbxi3w0g05n8jlqsmvcy"))))
      (arguments
       (substitute-keyword-arguments (package-arguments newlib-arm-none-eabi)
         ;; The configure flags are identical to the flags used by the "GCC ARM
         ;; embedded" project.
         ((#:configure-flags flags)
          `(cons* "--enable-newlib-io-c99-formats"
                  "--enable-newlib-retargetable-locking"
                  "--with-headers=yes"
                  ,flags))))
      (native-inputs
       `(("xbinutils" ,(cross-binutils "arm-none-eabi"))
         ("xgcc" ,gcc-arm-none-eabi-7-2018-q2-update)
         ("texinfo" ,texinfo))))))
  (mlambda ()
    (let ((base (make-newlib-arm-none-eabi))
          (commit "3ccfb407af410ba7e54ea0da11ae1e40b554a6f4")
          (revision "0"))
      (package
        (inherit base)
        (version (git-version "3.0.0" revision commit))
        (source
         (origin
           (method git-fetch)
           (uri (git-reference
                 (url "http://sourceware.org/git/newlib-cygwin.git")
                 (commit commit)))
           (file-name (git-file-name "newlib" commit))
           (sha256
            (base32
             "1dq23fqrk75g1a4v7569fvnnw5q440zawbxi3w0g05n8jlqsmvcy"))))
        (arguments
         (substitute-keyword-arguments (package-arguments base)
           ;; The configure flags are identical to the flags used by the "GCC
           ;; ARM embedded" project.
           ((#:configure-flags flags)
            `(cons* "--enable-newlib-io-c99-formats"
                    "--enable-newlib-retargetable-locking"
                    "--with-headers=yes"
                    ,flags))))
        (native-inputs
         `(("xbinutils" ,(cross-binutils "arm-none-eabi"))
           ("xgcc" ,(make-gcc-arm-none-eabi-7-2018-q2-update))
           ("texinfo" ,texinfo)))))))

(define-public newlib-nano-arm-none-eabi-7-2018-q2-update
  (package (inherit newlib-arm-none-eabi-7-2018-q2-update)
    (name "newlib-nano")
    (arguments
     (package-arguments newlib-nano-arm-none-eabi))
    (synopsis "Newlib variant for small systems with limited memory")))
(define-public make-newlib-nano-arm-none-eabi-7-2018-q2-update
  (mlambda ()
    (let ((base (make-newlib-arm-none-eabi-7-2018-q2-update)))
      (package
        (inherit base)
        (name "newlib-nano")
        (arguments
         (package-arguments base))
        (synopsis "Newlib variant for small systems with limited memory")))))


(define (make-libstdc++-arm-none-eabi xgcc newlib)
  (let ((libstdc++ (make-libstdc++ xgcc)))
    (package (inherit libstdc++)
      (name "libstdc++-arm-none-eabi")
      (arguments
       (substitute-keyword-arguments (package-arguments libstdc++)
         ((#:configure-flags flags)
          ``("--target=arm-none-eabi"
             "--host=arm-none-eabi"
             "--disable-libstdcxx-pch"
             "--enable-multilib"
             "--with-multilib-list=armv6-m,armv7-m,armv7e-m"
             "--disable-shared"
             "--disable-tls"
             "--disable-plugin"
             "--with-newlib"
             ,(string-append "--with-gxx-include-dir="
                             (assoc-ref %outputs "out")
                             "/arm-none-eabi/include/c++")))))
      (native-inputs
       `(("newlib" ,newlib)
         ("xgcc" ,xgcc)
         ,@(package-native-inputs libstdc++))))))
(define make-libstdc++-arm-none-eabi
  (mlambda (xgcc newlib)
    (let ((libstdc++ (make-libstdc++ xgcc)))
      (package
        (inherit libstdc++)
        (name "libstdc++-arm-none-eabi")
        (arguments
         (substitute-keyword-arguments (package-arguments libstdc++)
           ((#:configure-flags _)
            ``("--target=arm-none-eabi"
               "--host=arm-none-eabi"
               "--disable-libstdcxx-pch"
               "--enable-multilib"
               "--with-multilib-list=armv6-m,armv7-m,armv7e-m"
               "--disable-shared"
               "--disable-tls"
               "--disable-plugin"
               "--with-newlib"
               ,(string-append "--with-gxx-include-dir="
                               (assoc-ref %outputs "out")
                               "/arm-none-eabi/include/c++")))))
        (native-inputs
         `(("newlib" ,newlib)
           ("xgcc" ,xgcc)
           ,@(package-native-inputs libstdc++)))))))

(define (arm-none-eabi-toolchain xgcc newlib)
  "Produce a cross-compiler toolchain package with the compiler XGCC and the C
library variant NEWLIB."
  (let ((newlib-with-xgcc (package (inherit newlib)
                            (native-inputs
                             (alist-replace "xgcc" (list xgcc)
                                            (package-native-inputs newlib))))))
    (package
      (name (string-append "arm-none-eabi"
                           (if (string=? (package-name newlib-with-xgcc)
                                         "newlib-nano")
                               "-nano" "")
                           "-toolchain"))
      (version (package-version xgcc))
      (source #f)
      (build-system trivial-build-system)
      (arguments
       '(#:modules ((guix build union))
         #:builder
         (begin
           (use-modules (ice-9 match)
                        (guix build union))
           (match %build-inputs
             (((names . directories) ...)
              (union-build (assoc-ref %outputs "out")
                           directories)
              #t)))))
      (propagated-inputs
       `(("binutils" ,(cross-binutils "arm-none-eabi"))
         ("libstdc++" ,(make-libstdc++-arm-none-eabi xgcc newlib-with-xgcc))
         ("gcc" ,xgcc)
         ("newlib" ,newlib-with-xgcc)))
      (synopsis "Complete GCC tool chain for ARM bare metal development")
      (description "This package provides a complete GCC tool chain for ARM
(define make-arm-none-eabi-toolchain
  (mlambda (xgcc newlib)
    "Produce a cross-compiler toolchain package with the compiler XGCC and the
C library variant NEWLIB."
    (let ((newlib-with-xgcc
           (package
             (inherit newlib)
             (native-inputs
              (alist-replace "xgcc" (list xgcc)
                             (package-native-inputs newlib))))))
      (package
        (name (string-append "arm-none-eabi"
                             (if (string=? (package-name newlib-with-xgcc)
                                           "newlib-nano")
                                 "-nano" "")
                             "-toolchain"))
        (version (package-version xgcc))
        (source #f)
        (build-system trivial-build-system)
        (arguments
         '(#:modules ((guix build union))
           #:builder
           (begin
             (use-modules (ice-9 match)
                          (guix build union))
             (match %build-inputs
               (((names . directories) ...)
                (union-build (assoc-ref %outputs "out")
                             directories))))))
        (propagated-inputs
         `(("binutils" ,(cross-binutils "arm-none-eabi"))
           ("libstdc++" ,(make-libstdc++-arm-none-eabi xgcc newlib-with-xgcc))
           ("gcc" ,xgcc)
           ("newlib" ,newlib-with-xgcc)))
        (synopsis "Complete GCC tool chain for ARM bare metal development")
        (description "This package provides a complete GCC tool chain for ARM
bare metal development.  This includes the GCC arm-none-eabi cross compiler
and newlib (or newlib-nano) as the C library.  The supported programming
languages are C and C++.")
      (home-page (package-home-page xgcc))
      (license (package-license xgcc)))))
        (home-page (package-home-page xgcc))
        (license (package-license xgcc))))))

(define-public arm-none-eabi-toolchain-4.9
  (arm-none-eabi-toolchain gcc-arm-none-eabi-4.9
                           newlib-arm-none-eabi))
(define make-arm-none-eabi-toolchain-4.9
  (mlambda ()
    (make-arm-none-eabi-toolchain (make-gcc-arm-none-eabi-4.9)
                                  (make-newlib-arm-none-eabi))))

(define-public arm-none-eabi-nano-toolchain-4.9
  (arm-none-eabi-toolchain gcc-arm-none-eabi-4.9
                           newlib-nano-arm-none-eabi))
(define make-arm-none-eabi-nano-toolchain-4.9
  (mlambda ()
    (make-arm-none-eabi-toolchain (make-gcc-arm-none-eabi-4.9)
                                  (make-newlib-nano-arm-none-eabi))))

(define-public arm-none-eabi-toolchain-6
  (arm-none-eabi-toolchain gcc-arm-none-eabi-6
                           newlib-arm-none-eabi))
(define make-arm-none-eabi-toolchain-6
  (mlambda ()
    (make-arm-none-eabi-toolchain (make-gcc-arm-none-eabi-6)
                                  (make-newlib-arm-none-eabi))))

(define-public arm-none-eabi-nano-toolchain-6
  (arm-none-eabi-toolchain gcc-arm-none-eabi-6
                           newlib-nano-arm-none-eabi))
(define make-arm-none-eabi-nano-toolchain-6
  (mlambda ()
    (make-arm-none-eabi-toolchain (make-gcc-arm-none-eabi-6)
                                  (make-newlib-nano-arm-none-eabi))))

(define-public arm-none-eabi-toolchain-7-2018-q2-update
  (arm-none-eabi-toolchain gcc-arm-none-eabi-7-2018-q2-update
                           newlib-arm-none-eabi-7-2018-q2-update))
(define make-arm-none-eabi-toolchain-7-2018-q2-update
  (mlambda ()
    (make-arm-none-eabi-toolchain
     (make-gcc-arm-none-eabi-7-2018-q2-update)
     (make-newlib-arm-none-eabi-7-2018-q2-update))))

(define-public arm-none-eabi-nano-toolchain-7-2018-q2-update
  (arm-none-eabi-toolchain gcc-arm-none-eabi-7-2018-q2-update
                           newlib-nano-arm-none-eabi-7-2018-q2-update))
(define make-arm-none-eabi-nano-toolchain-7-2018-q2-update
  (mlambda ()
    (make-arm-none-eabi-toolchain
     (make-gcc-arm-none-eabi-7-2018-q2-update)
     (make-newlib-nano-arm-none-eabi-7-2018-q2-update))))

(define-public gdb-arm-none-eabi
  (package
    (inherit gdb)
    (name "gdb-arm-none-eabi")
    (arguments
     `(#:configure-flags '("--target=arm-none-eabi"
                           "--enable-multilib"
                           "--enable-interwork"
                           "--enable-languages=c,c++"
                           "--disable-nls")
     ,@(package-arguments gdb)))))
(define make-gdb-arm-none-eabi
  (mlambda ()
    (package
      (inherit gdb)
      (name "gdb-arm-none-eabi")
      (arguments
       `(#:configure-flags '("--target=arm-none-eabi"
                             "--enable-multilib"
                             "--enable-interwork"
                             "--enable-languages=c,c++"
                             "--disable-nls")
         ,@(package-arguments gdb))))))

(define-public libjaylink
  (package


@@ 647,116 725,123 @@ with a layered architecture of JTAG interface and TAP support.")
;; personal correspondence with the developers in July 2017, more recent
;; versions are currently incompatible with the "Simple Libraries".

(define propeller-binutils
  (let ((xbinutils (cross-binutils "propeller-elf"))
        (commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
        (revision "2"))
    (package
      (inherit xbinutils)
      (name "propeller-binutils")
      (version (string-append "0.0.0-" revision "." (string-take commit 9)))
      (source (origin (inherit (package-source xbinutils))
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/parallaxinc/propgcc")
                      (commit commit)))
                (file-name (string-append name "-" commit "-checkout"))
                (sha256
                 (base32
                  "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))
                (patches '())))
      (arguments
       `(;; FIXME: For some reason there are many test failures.  It's not
         ;; obvious how to fix the failures.
         #:tests? #f
         #:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'chdir
             (lambda _ (chdir "binutils") #t)))
         ,@(substitute-keyword-arguments (package-arguments xbinutils)
            ((#:configure-flags flags)
             `(cons "--disable-werror" ,flags)))))
      (native-inputs
       `(("bison" ,bison)
         ("flex" ,flex)
         ("texinfo" ,texinfo)
         ("dejagnu" ,dejagnu)
         ,@(package-native-inputs xbinutils))))))
(define make-propeller-binutils
  (mlambda ()
    (let ((xbinutils (cross-binutils "propeller-elf"))
          (commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
          (revision "2"))
      (package
        (inherit xbinutils)
        (name "propeller-binutils")
        (version (string-append "0.0.0-" revision "." (string-take commit 9)))
        (source (origin
                  (inherit (package-source xbinutils))
                  (method git-fetch)
                  (uri (git-reference
                        (url "https://github.com/parallaxinc/propgcc")
                        (commit commit)))
                  (file-name (string-append name "-" commit "-checkout"))
                  (sha256
                   (base32
                    "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))
                  (patches '())))
        (arguments
         `(;; FIXME: For some reason there are many test failures.  It's not
           ;; obvious how to fix the failures.
           #:tests? #f
           #:phases
           (modify-phases %standard-phases
             (add-after 'unpack 'chdir
               (lambda _ (chdir "binutils") #t)))
           ,@(substitute-keyword-arguments (package-arguments xbinutils)
               ((#:configure-flags flags)
                `(cons "--disable-werror" ,flags)))))
        (native-inputs
         `(("bison" ,bison)
           ("flex" ,flex)
           ("texinfo" ,texinfo)
           ("dejagnu" ,dejagnu)
           ,@(package-native-inputs xbinutils)))))))

(define-public propeller-gcc-6
  (let ((xgcc (cross-gcc "propeller-elf"
                         #:xbinutils propeller-binutils))
        (commit "b4f45a4725e0b6d0af59e594c4e3e35ca4105867")
        (revision "1"))
    (package (inherit xgcc)
      (name "propeller-gcc")
      (version (string-append "6.0.0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/totalspectrum/gcc-propeller")
                      (commit commit)))
                (file-name (string-append name "-" commit "-checkout"))
                (sha256
                 (base32
                  "0d9kdxm2fzanjqa7q5850kzbsfl0fqyaahxn74h6nkxxacwa11zb"))
                (patches
                 (append
                  (origin-patches (package-source gcc-6))
                  (search-patches "gcc-cross-environment-variables.patch")))))
      (native-inputs
       (modify-inputs (package-native-inputs xgcc)
         (prepend flex)))
      ;; All headers and cross libraries of the propeller toolchain are
      ;; installed under the "propeller-elf" prefix.
      (native-search-paths
       (list (search-path-specification
              (variable "CROSS_C_INCLUDE_PATH")
              (files '("propeller-elf/include")))
             (search-path-specification
              (variable "CROSS_LIBRARY_PATH")
              (files '("propeller-elf/lib")))))
      (home-page "https://github.com/totalspectrum/gcc-propeller")
      (synopsis "GCC for the Parallax Propeller"))))
(define make-propeller-gcc-6
  (mlambda ()
    (let ((xgcc (cross-gcc "propeller-elf"
                           #:xbinutils (make-propeller-binutils)))
          (commit "b4f45a4725e0b6d0af59e594c4e3e35ca4105867")
          (revision "1"))
      (package
        (inherit xgcc)
        (name "propeller-gcc")
        (version (string-append "6.0.0-" revision "." (string-take commit 9)))
        (source (origin
                  (method git-fetch)
                  (uri (git-reference
                        (url "https://github.com/totalspectrum/gcc-propeller")
                        (commit commit)))
                  (file-name (string-append name "-" commit "-checkout"))
                  (sha256
                   (base32
                    "0d9kdxm2fzanjqa7q5850kzbsfl0fqyaahxn74h6nkxxacwa11zb"))
                  (patches
                   (append
                    (origin-patches (package-source gcc-6))
                    (search-patches "gcc-cross-environment-variables.patch")))))
        (native-inputs
         (modify-inputs (package-native-inputs xgcc)
           (prepend flex)))
        ;; All headers and cross libraries of the propeller toolchain are
        ;; installed under the "propeller-elf" prefix.
        (native-search-paths
         (list (search-path-specification
                (variable "CROSS_C_INCLUDE_PATH")
                (files '("propeller-elf/include")))
               (search-path-specification
                (variable "CROSS_LIBRARY_PATH")
                (files '("propeller-elf/lib")))))
        (home-page "https://github.com/totalspectrum/gcc-propeller")
        (synopsis "GCC for the Parallax Propeller")))))

(define-public propeller-gcc-4
  (let ((xgcc propeller-gcc-6)
        (commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
        (revision "2"))
    (package (inherit xgcc)
      (name "propeller-gcc")
      (version (string-append "4.6.1-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/parallaxinc/propgcc")
                      (commit commit)))
                (file-name (string-append name "-" commit "-checkout"))
                (sha256
                 (base32
                  "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))
                (patch-flags (list "-p1" "--directory=gcc"))
                (patches
                 (append
                  (origin-patches (package-source gcc-4.7))
                  (search-patches "gcc-4.6-gnu-inline.patch"
                                  "gcc-cross-environment-variables.patch")))))
      (arguments
       (substitute-keyword-arguments (package-arguments propeller-gcc-6)
         ((#:phases phases)
          #~(modify-phases #$phases
             (add-after 'unpack 'chdir
               (lambda _ (chdir "gcc")))))))
      (native-inputs
       (modify-inputs (package-native-inputs propeller-gcc-6)
         (prepend gcc-4.9)))
      (home-page "https://github.com/parallaxinc/propgcc")
      (supported-systems (delete "aarch64-linux" %supported-systems)))))
(define make-propeller-gcc-4
  (mlambda ()
    (let ((xgcc (make-propeller-gcc-6))
          (commit "4c46ecbe79ffbecd2ce918497ace5b956736b5a3")
          (revision "2"))
      (package
        (inherit xgcc)
        (name "propeller-gcc")
        (version (string-append "4.6.1-" revision "." (string-take commit 9)))
        (source (origin
                  (method git-fetch)
                  (uri (git-reference
                        (url "https://github.com/parallaxinc/propgcc")
                        (commit commit)))
                  (file-name (string-append name "-" commit "-checkout"))
                  (sha256
                   (base32
                    "0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))
                  (patch-flags (list "-p1" "--directory=gcc"))
                  (patches
                   (append
                    (origin-patches (package-source gcc-4.7))
                    (search-patches
                     "gcc-4.6-gnu-inline.patch"
                     "gcc-cross-environment-variables.patch")))))
        (arguments
         (substitute-keyword-arguments (package-arguments xgcc)
           ((#:phases phases)
            #~(modify-phases #$phases
                (add-after 'unpack 'chdir
                  (lambda _ (chdir "gcc")))))))
        (native-inputs
         (modify-inputs (package-native-inputs xgcc)
           (prepend gcc-4.9)))
        (home-page "https://github.com/parallaxinc/propgcc")
        (supported-systems (delete "aarch64-linux" %supported-systems))))))

;; Version 6 is experimental and may not work correctly.  This is why we
;; default to version 4, which is also used in the binary toolchain bundle
;; provided by Parallax Inc.
(define-public propeller-gcc propeller-gcc-4)
(define make-propeller-gcc make-propeller-gcc-4)


;; FIXME: We do not build the tiny library because that would require C++


@@ 814,7 899,7 @@ with a layered architecture of JTAG interface and TAP support.")
             (lambda* (#:key make-flags #:allow-other-keys)
               (apply invoke "make" "install-includes" make-flags))))))
      (native-inputs
       (list propeller-gcc propeller-binutils perl))
       (list (make-propeller-gcc) (make-propeller-binutils) perl))
      (home-page "https://github.com/parallaxinc/propgcc")
      (synopsis "C library for the Parallax Propeller")
      (description "This is a C library for the Parallax Propeller


@@ 823,22 908,24 @@ micro-controller.")
      ;; included code is public domain and some changes are BSD licensed.
      (license license:expat))))

(define-public propeller-toolchain
  (package
    (name "propeller-toolchain")
    (version (package-version propeller-gcc))
    (source #f)
    (build-system trivial-build-system)
    (arguments '(#:builder (begin (mkdir %output) #t)))
    (propagated-inputs
     `(("binutils" ,propeller-binutils)
       ("libc" ,proplib)
       ("gcc" ,propeller-gcc)))
    (synopsis "Complete GCC tool chain for Propeller micro-controllers")
    (description "This package provides a complete GCC tool chain for
(define make-propeller-toolchain
  (mlambda ()
    (let ((propeller-gcc (make-propeller-gcc)))
      (package
        (name "propeller-toolchain")
        (version (package-version propeller-gcc))
        (source #f)
        (build-system trivial-build-system)
        (arguments '(#:builder (begin (mkdir %output) #t)))
        (propagated-inputs
         `(("binutils" ,(make-propeller-binutils))
           ("libc" ,proplib)
           ("gcc" ,propeller-gcc)))
        (synopsis "Complete GCC tool chain for Propeller micro-controllers")
        (description "This package provides a complete GCC tool chain for
Propeller micro-controller development.")
    (home-page (package-home-page propeller-gcc))
    (license (package-license propeller-gcc))))
        (home-page (package-home-page propeller-gcc))
        (license (package-license propeller-gcc))))))

(define-public openspin
  (package


@@ 906,7 993,7 @@ code.")
             (lambda _ (chdir "loader") #t))
           (delete 'configure))))
      (native-inputs
       (list openspin propeller-toolchain))
       (list openspin (make-propeller-toolchain)))
      (home-page "https://github.com/parallaxinc/propgcc")
      (synopsis "Loader for Parallax Propeller micro-controllers")
      (description "This package provides the tool @code{propeller-load} to


@@ 951,7 1038,7 @@ upload binaries to a Parallax Propeller micro-controller.")
                         '("testlex" "spin2cpp" "fastspin")))
             #t)))))
    (native-inputs
     (list bison propeller-load propeller-toolchain))
     (list bison propeller-load (make-propeller-toolchain)))
    (home-page "https://github.com/totalspectrum/spin2cpp")
    (synopsis "Convert Spin code to C, C++, or PASM code")
    (description "This is a set of tools for converting the Spin language for


@@ 997,26 1084,28 @@ execution, but it does not support multi-tasking.  It supports about
two-thirds of the opcodes in the P2 instruction set.")
      (license license:expat))))

(define-public propeller-development-suite
  (package
    (name "propeller-development-suite")
    (version (package-version propeller-gcc))
    (source #f)
    (build-system trivial-build-system)
    (arguments '(#:builder (begin (mkdir %output) #t)))
    (propagated-inputs
     `(("toolchain" ,propeller-toolchain)
       ("openspin" ,openspin)
       ("propeller-load" ,propeller-load)
       ("spin2cpp" ,spin2cpp)
       ("spinsim" ,spinsim)))
    (synopsis "Complete development suite for Propeller micro-controllers")
    (description "This meta-package provides a complete environment for the
(define make-propeller-development-suite
  (mlambda ()
    (let ((propeller-gcc (make-propeller-gcc)))
      (package
        (name "propeller-development-suite")
        (version (package-version propeller-gcc))
        (source #f)
        (build-system trivial-build-system)
        (arguments '(#:builder (begin (mkdir %output) #t)))
        (propagated-inputs
         `(("toolchain" ,(make-propeller-toolchain))
           ("openspin" ,openspin)
           ("propeller-load" ,propeller-load)
           ("spin2cpp" ,spin2cpp)
           ("spinsim" ,spinsim)))
        (synopsis "Complete development suite for Propeller micro-controllers")
        (description "This meta-package provides a complete environment for the
development with Parallax Propeller micro-controllers.  It includes the GCC
toolchain, the loader, the Openspin compiler, the Spin2cpp tool, and the Spin
simulator.")
    (home-page (package-home-page propeller-gcc))
    (license (package-license propeller-gcc))))
        (home-page (package-home-page propeller-gcc))
        (license (package-license propeller-gcc))))))

(define-public binutils-vc4
  (let ((commit "708acc851880dbeda1dd18aca4fd0a95b2573b36"))


@@ 1070,32 1159,34 @@ the Raspberry Pi chip.")
      (license license:gpl3+)
      (home-page "https://github.com/puppeh/vc4-toolchain/"))))

(define-public gcc-vc4
  (let ((commit "0fe4b83897341742f9df65797474cb0feab4b377")
        (xgcc (cross-gcc "vc4-elf" #:xgcc gcc-6 #:xbinutils binutils-vc4)))
    (package (inherit xgcc)
      (name "gcc-vc4")
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/puppeh/gcc-vc4")
                      (commit commit)))
                (file-name (string-append name
                                          "-"
                                          (package-version xgcc)
                                          "-checkout"))
                (sha256
                 (base32
                  "0kvaq4s0assvinmmicwqp07d0wwldcw0fv6f4k13whp3q5909jnr"))
                (patches
                 (search-patches "gcc-6-fix-buffer-size.patch"
                                 "gcc-6-fix-isl-includes.patch"))))
      (native-inputs
        (modify-inputs (package-native-inputs xgcc)
          (prepend flex)))
      (synopsis "GCC for VC4")
      (description "This package provides @code{gcc} for VideoCore IV,
the Raspberry Pi chip."))))
(define make-gcc-vc4
  (mlambda ()
    (let ((commit "0fe4b83897341742f9df65797474cb0feab4b377")
          (xgcc (cross-gcc "vc4-elf" #:xgcc gcc-6 #:xbinutils binutils-vc4)))
      (package
        (inherit xgcc)
        (name "gcc-vc4")
        (source (origin
                  (method git-fetch)
                  (uri (git-reference
                        (url "https://github.com/puppeh/gcc-vc4")
                        (commit commit)))
                  (file-name (string-append name
                                            "-"
                                            (package-version xgcc)
                                            "-checkout"))
                  (sha256
                   (base32
                    "0kvaq4s0assvinmmicwqp07d0wwldcw0fv6f4k13whp3q5909jnr"))
                  (patches
                   (search-patches "gcc-6-fix-buffer-size.patch"
                                   "gcc-6-fix-isl-includes.patch"))))
        (native-inputs
         (modify-inputs (package-native-inputs xgcc)
           (prepend flex)))
        (synopsis "GCC for VC4")
        (description "This package provides @code{gcc} for VideoCore IV,
the Raspberry Pi chip.")))))

(define-public imx-usb-loader
  ;; There are no proper releases.


@@ 1357,12 1448,11 @@ these identified regions.
(define-public stcgal
  (package
    (name "stcgal")
    (version "1.6")
    (version "1.10")
    (source (origin
              ;; Neither the unit tests nor the "doc" subdirectory referred to
              ;; by stcgal's setup.py is present in the source distribution on
              ;; PyPI, so we fetch directly from the project's git repository
              ;; instead.
              ;; The "doc" subdirectory referred to by stcgal's setup.py is
              ;; missing from the source distribution on PyPI so we fetch
              ;; directly from the project's git repository instead.
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/grigorig/stcgal")


@@ 1370,14 1460,7 @@ these identified regions.
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1d10qxyghz66zp7iqpm8q8rfv9jz9n609gxmfcav1lssmf1dlyk3"))
              (modules '((guix build utils)))
              (snippet
               ;; Make tests compatible with PyYAML 6 and later.
               '(substitute* '("tests/test_program.py"
                               "tests/test_fuzzing.py")
                  (("yaml\\.load\\(test_file\\.read\\(\\)\\)")
                   "yaml.load(test_file.read(), Loader=yaml.SafeLoader)")))))
                "04hsj49sw5mb6swhd3sdsm7dzwp1frnzpmq70wgsn5vmjavb1ka8"))))
    (build-system python-build-system)
    (propagated-inputs
     (list python-pyserial python-pyusb python-tqdm))


@@ 1388,7 1471,7 @@ these identified regions.
    (synopsis "Programmer for STC 8051-compatible microcontrollers")
    (description "stcgal is a command-line flash-programming tool for STC
MCU's line of Intel 8051-compatible microcontrollers, including those in the
STC89, STC90, STC10, STC11, STC12, STC15 and STC8 series.")
STC89, STC90, STC10, STC11, STC12, STC15, STC8 and STC32 series.")
    (license license:expat)))

(define-public stlink


@@ 1509,45 1592,52 @@ handling communication with eBUS devices connected to a 2-wire bus system
(define-public ucsim
  (package
    (name "ucsim")
    (version "0.7.1")
    (version "0.8.0")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://mazsola.iit.uni-miskolc.hu/ucsim/download/unix/"
                    "source/v" (version-major+minor version) ".x/"
                    "ucsim-" version ".tar.gz"))
                    "http://mazsola.iit.uni-miskolc.hu/ucsim/download/"
                    "v" (version-major+minor version) ".x/"
                    "ucsim_" version "_orig.tar.gz"))
              (sha256
               (base32
                "080471wvkjdzxz5j3zdaq1apjcj84ql50kn26b7p4ansixnimml4"))))
                "0qyrrna2ssvwla15al183r9zqnqdxxlqawyhx9c86a10m8q8qqlz"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-makefiles
           (lambda _
             (substitute* (find-files "." "(\\.mk$|\\.in$)")
               (("/bin/sh") (which "sh"))))))))
     (list
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'patch-makefiles
            (lambda _
              (substitute* (find-files "." "(\\.mk$|\\.in$)")
                (("/bin/sh") (which "sh")))

              ;; Ensure the documentation is installed to the correct path,
              ;; without a duplicate "ucsim" segment (necessary as we are
              ;; building μCsim outside of SDCC).
              (substitute* "doc/Makefile.in"
                (("@docdir@/ucsim") "@docdir@")))))
      ;; μCsim's regression-test suite is of little use in this context since
      ;; it doesn't stop or return an error code when it encounters a problem.
      #:tests? #f))
    (inputs
     (list ncurses))
    (native-inputs
     (append (list bison flex)
             ;; Certain tests use assemblers provided by SDCC.
             (if (not (%current-target-system))
                 (list sdcc)
                 '())))
     (list bison flex))
    (outputs '("out" "doc"))
    (home-page "http://mazsola.iit.uni-miskolc.hu/ucsim/")
    (synopsis "Simulators for various microcontroller families")
    (description "μCsim is a collection of software simulators for
microcontrollers in the Atmel AVR; Intel MCS-51 (8051); MOS Technology 6502;
Motorola 6800, 68HC08 and 6809; P1516; Padauk PDK13, PDK14 and PDK15;
STMicroelectronics ST7 and STM8; Xilinx PicoBlaze; and Zilog Z80 families,
plus many of their variants.")
microcontrollers in the Atmel AVR; Fairchild F8; Intel MCS-51 (8051) and 8085;
MOS Technology 6502; Motorola 6800, 6809, 68HC08, 68HC11 and 68HC12; P1516;
Padauk PDK13, PDK14 and PDK15; STMicroelectronics ST7 and STM8; Xilinx
PicoBlaze; and Zilog Z80 families, plus many of their variants.")
    (license license:gpl2+)))

(define-public sdcc
  (package
    (name "sdcc")
    (version "4.2.0")
    (version "4.3.0")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 1555,42 1645,56 @@ plus many of their variants.")
                    "/" version "/sdcc-src-" version ".tar.bz2"))
              (sha256
               (base32
                "0ly0m3q9vzjb9kcfjh79s77wpl4w7xhybzy4h9x0bmmw4cfsx6xl"))
                "1kckr20jqa4rp4qcw38lwagmw3yfm3z0xb4kygd0608847qc0vra"))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  ;; Remove non-free source files
                  (delete-file-recursively "device/non-free")
                  ;; Remove bundled μCsim source
                  (delete-file-recursively "sim")
                  #t))
               #~(begin
                   ;; Remove non-free source files.
                   (delete-file-recursively "device/non-free")
                   ;; Remove bundled μCsim source.
                   (delete-file-recursively "sim")))
              (patches (search-patches "sdcc-disable-non-free-code.patch"))))
    (build-system gnu-build-system)
    (arguments
     (list
      #:configure-flags
      #~(list
         ;; GPUTILS is required for the PIC ports, but the licensing status of
         ;; some of the files contained in its distribution is unclear (see
         ;; https://issues.guix.gnu.org/44557).  For this reason it is not yet
         ;; available as a package in Guix.
         "--disable-pic14-port"
         "--disable-pic16-port"

         ;; Do not build or install the bundled copy of μCsim, for which Guix
         ;; has its own package.
         "--disable-ucsim")
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'patch-makefiles
            (lambda _
              (substitute* (find-files "." "(\\.mk$|\\.in$)")
                (("/bin/sh") (which "sh")))
              ;; --disable-ucsim disables sdcc-misc, patch it back in.
              (substitute* "Makefile.in"
                (("debugger/mcs51" line)
                 (string-append line  "\n"
                                "TARGETS += sdcc-misc\n"
                                "PKGS += $(SDCC_MISC)")))))
          (add-after 'patch-makefiles 'embed-absolute-ucsim-reference
            (lambda _
              ;; Embed in the debugger an absolute reference to the MCS-51
              ;; simulator from Guix's μCsim package to ensure it is always
              ;; available.
              (substitute* "debugger/mcs51/sdcdb.c"
                (("s51")
                 (string-append #$(this-package-input "ucsim")
                                "/bin/s51"))))))))
    (inputs
     (list readline))
     (list readline ucsim))
    (native-inputs
     (list bison boost flex python-2 texinfo zlib))
    (arguments
     `(;; GPUTILS is required for the PIC ports, but the licensing status of
       ;; some of the files contained in its distribution is unclear (see
       ;; https://issues.guix.gnu.org/44557).  For this reason it is not yet
       ;; available as a package in Guix.
       #:configure-flags
       '("--disable-pic14-port" "--disable-pic16-port" "--disable-ucsim")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-makefiles
           (lambda _
             (substitute* (find-files "." "(\\.mk$|\\.in$)")
               (("/bin/sh") (which "sh")))
             ;; --disable-ucsim disables sdcc-misc, patch it back in.
             (substitute* "Makefile.in"
               (("debugger/mcs51" line)
                (string-append line  "\n"
                               "TARGETS += sdcc-misc\n"
                               "PKGS += $(SDCC_MISC)")))
             #t)))))
    (home-page "https://sdcc.sourceforge.net")
    (home-page "https://sdcc.sourceforge.net/")
    (synopsis "C compiler suite for 8-bit microcontrollers")
    (description "SDCC is a retargetable, optimizing Standard C compiler suite
that targets 8-bit microcontrollers in the Intel MCS-51 (8051); MOS Technology

M gnu/packages/engineering.scm => gnu/packages/engineering.scm +34 -28
@@ 1487,7 1487,7 @@ replacement for the OpenDWG libraries.")
(define-public minicom
  (package
    (name "minicom")
    (version "2.8")
    (version "2.9")
    (source
     (origin
       (method git-fetch)


@@ 1495,31 1495,28 @@ replacement for the OpenDWG libraries.")
             (url "https://salsa.debian.org/minicom-team/minicom.git")
             (commit (string-append "v" version))))
       (sha256
        (base32 "0kfihxbh9qkjk9m1932ajyqx384c2aj3d9yaphh3i9i7y1shxlpx"))
        (base32 "18k0hiljsiq80x93c3qrd1cmcjjvsk1ymin03vncjp1v35xn8248"))
       (file-name (git-file-name name version))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags '("--enable-lock-dir=/var/lock")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'make-git-checkout-writable
           (lambda _
             (for-each make-file-writable (find-files "."))))
         (replace 'bootstrap
           ;; autogen.sh needlessly hard-codes aclocal-1.14.
           (lambda _
             (invoke "autoreconf" "-vif")
             #t))
         (add-before 'configure 'patch-lock-check
           (lambda _
             (substitute* "configure"
               (("test -d [$]UUCPLOCK") "true"))
             #t)))))
     (list
      #:configure-flags
      #~(list "--enable-lock-dir=/var/lock")
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'make-git-checkout-writable
            (lambda _
              (for-each make-file-writable (find-files "."))))
          (replace 'bootstrap
            ;; autogen.sh needlessly hard-codes aclocal-1.14.
            (lambda _
              (invoke "autoreconf" "-vif")))
          (add-before 'configure 'patch-lock-check
            (lambda _
              (substitute* "configure"
                (("test -d [$]UUCPLOCK") "true")))))))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("gettext" ,gettext-minimal)
       ("pkg-config" ,pkg-config)))
     (list autoconf-2.71 automake gettext-minimal pkg-config))
    (inputs
     (list ncurses))
    (home-page "https://salsa.debian.org/minicom-team/minicom")


@@ 1801,7 1798,7 @@ analyzer (FFT) and frequency sweep plot.")
(define-public capstone
  (package
    (name "capstone")
    (version "4.0.2")
    (version "5.0.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 1810,7 1807,7 @@ analyzer (FFT) and frequency sweep plot.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0y5g74yjyliciawpn16zhdwya7bd3d7b1cccpcccc2wg8vni1k2w"))))
                "1j4a6w8p3z5qrkzf0h5aklrnlpvscv6nlq7d3abbpxlyqvk8pach"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f


@@ 4235,7 4232,7 @@ form, numpad.
(define-public rizin
  (package
    (name "rizin")
    (version "0.6.1")
    (version "0.6.2")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 4243,7 4240,7 @@ form, numpad.
                    version "/rizin-src-v" version ".tar.xz"))
              (sha256
               (base32
                "14bcmjx64pgi9zj4zb7yppx69l1ykjwgf2q41s5672m7z354f1kn"))))
                "0szq3wr7i7gwm8llgbhssjb63q70rjqqdlj6078vs110waih16p2"))))
    (build-system meson-build-system)
    (arguments
     (list


@@ 4279,9 4276,18 @@ form, numpad.
                (("'hash',\n") "")))))))
    (native-inputs (list pkg-config))
    (inputs
     (list capstone file libuv libzip lz4 openssl tree-sitter xxhash zlib libmspack))
     (list capstone
           file
           libuv
           libzip
           lz4
           openssl
           tree-sitter
           xxhash
           zlib
           libmspack))
    (home-page "https://rizin.re")
    (synopsis "Disasm, debug, analyze and manipulate binary files")
    (synopsis "Disassemble, debug, analyze, and manipulate binary files")
    (description
     "Rizin is a reverse engineering framework and a set of small command-line
utilities, providing a complete binary analysis experience with features like

M gnu/packages/file-systems.scm => gnu/packages/file-systems.scm +27 -15
@@ 575,11 575,11 @@ from a mounted file system.")
    (license license:gpl2+)))

(define-public bcachefs-tools
  (let ((commit "c8bec83e307f28751c433ba1d3f648429fb5a34c")
        (revision "17"))
  (let ((commit "1e358401ecdf1963e5799de19ab69111e82e5ebc")
        (revision "0"))
    (package
      (name "bcachefs-tools")
      (version (git-version "0.1" revision commit))
      (version (git-version "1.2" revision commit))
      (source
       (origin
         (method git-fetch)


@@ 588,7 588,7 @@ from a mounted file system.")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0b1avy5mw3r3ppfs3n9cq4zb74yl45nd5l69r6hi27z9q5bc3nv8"))))
          (base32 "0bflgqb3q9jikyyrv6hywv6m1fapzzn874hlhf86pn6abxrlf5fa"))))
      (build-system gnu-build-system)
      (arguments
       (list #:make-flags


@@ 620,16 620,23 @@ from a mounted file system.")
                                               "not test_list and "
                                               "not test_list_inodes and "
                                               "not test_list_dirent")))))
                 (add-after 'install 'patch-shell-wrappers
                   ;; These are overcomplicated wrappers that invoke readlink(1)
                   ;; to exec the appropriate bcachefs(8) subcommand.  We can
                   ;; simply patch in the latter file name directly, and do.
                   (lambda _
                     (let ((sbin/ (string-append #$output "/sbin/")))
                       (substitute* (find-files sbin/ (lambda (file stat)
                                                        (not (elf-file? file))))
                         (("SDIR=.*") "")
                         (("\\$\\{SDIR.*}/") sbin/))))))))
                 (add-after 'install 'promote-mount.bcachefs.sh
                   ;; The (optional) ‘mount.bcachefs’ requires rust:cargo.
                   ;; This shell alternative does the job well enough for now.
                   (lambda* (#:key inputs #:allow-other-keys)
                     (define (whence file)
                       (dirname (search-input-file inputs file)))
                     (let ((mount (string-append #$output
                                                 "/sbin/mount.bcachefs")))
                       (delete-file mount) ; symlink to ‘bcachefs’
                       (copy-file "mount.bcachefs.sh" mount)
                       ;; WRAP-SCRIPT causes bogus ‘Insufficient arguments’ errors.
                       (wrap-program mount
                         `("PATH" ":" prefix
                           ,(list (getcwd)
                                  (whence "bin/tail")
                                  (whence "bin/awk")
                                  (whence "bin/mount"))))))))))
      (native-inputs
       (cons* pkg-config
              ;; For generating documentation with rst2man.


@@ 650,7 657,12 @@ from a mounted file system.")
             `(,util-linux "lib")
             lz4
             zlib
             `(,zstd "lib")))
             `(,zstd "lib")

             ;; Only for mount.bcachefs.sh.
             coreutils-minimal
             gawk
             util-linux))
      (home-page "https://bcachefs.org/")
      (synopsis "Tools to create and manage bcachefs file systems")
      (description

M gnu/packages/finance.scm => gnu/packages/finance.scm +62 -26
@@ 34,6 34,7 @@
;;; Copyright © 2022 Justin Veilleux <terramorpha@cock.li>
;;; Copyright © 2023 Frank Pursel <frank.pursel@gmail.com>
;;; Copyright © 2023 Skylar Hill <stellarskylark@posteo.net>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 76,6 77,7 @@
  #:use-module (gnu packages boost)
  #:use-module (gnu packages check)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages cpp)
  #:use-module (gnu packages crypto)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages databases)


@@ 1810,36 1812,70 @@ a Qt GUI.")
(define-public fulcrum
  (package
    (name "fulcrum")
    (version "1.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://gitlab.com/FloweeTheHub/fulcrum/-/archive/v"
                           version "/fulcrum-v" version ".tar.gz"))
       (sha256
        (base32 "04w5gw02d39caa8a0l6wkn87kc43zzad2prqsyrcq97vlbkdx6x6"))))
    (version "1.9.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/cculianu/Fulcrum")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (modules '((guix build utils)))
              (snippet
                #~(for-each delete-file-recursively
                            '("src/Json/simdjson"
                              "src/bitcoin/secp256k1"
                              "src/robin_hood"
                              "src/zmq"
                              "staticlibs")))
              (sha256
               (base32
                "1110vanl6aczlq25i4ck9j4vr81in5icw4z383wyhjpcy6rwxsw2"))
              (patches
               (search-patches "fulcrum-1.9.1-unbundled-libraries.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         ;; Call qmake instead of configure to create a Makefile.
         (replace 'configure
           (lambda _
             (invoke
              "qmake"
              (string-append "PREFIX=" %output)
              "features="))))))
    (native-inputs
     (list qttools-5))
     (list #:configure-flags
           #~(list "CONFIG+=config_without_bundled_cppzmq"
                   "CONFIG+=config_without_bundled_robin_hood"
                   "CONFIG+=config_without_bundled_secp256k1"
                   "LIBS+=-lrocksdb"
                   #$@(if (target-64bit?) '("LIBS+=-lsimdjson") '())
                   (format #f "DEFINES+=GIT_COMMIT=\"\\\\\\~s\\\\\\\""
                           #$version)
                   (string-append "PREFIX=" #$output))
           #:phases
           #~(modify-phases %standard-phases
               (replace 'configure
                 (lambda* (#:key configure-flags #:allow-other-keys)
                   (apply invoke "qmake" configure-flags))))))
    (native-inputs (list pkg-config qttools-5))
    (inputs
     (list python qtbase-5 rocksdb zlib))
    (home-page "https://gitlab.com/FloweeTheHub/fulcrum/")
    (synopsis "Fast and nimble SPV server for Bitcoin Cash")
     (append (list cppzmq
                   jemalloc
                   python
                   qtbase-5
                   robin-hood-hashing
                   rocksdb
                   zeromq
                   zlib)
             (if (target-64bit?)
                 (list simdjson-0.6)
                 '())))
    (home-page "https://github.com/cculianu/Fulcrum")
    (synopsis "Payment verification server for Bitcoin-like crypto-currencies")
    (description
     "Flowee Fulcrum is a server that is the back-end for @acronym{SPV,
Simplified Payment Verification} wallets, it provides the full API for those
walets in a fast and small server.  The full data is stored in a full node,
like Flowee the Hub, which Fulcrum connects to over RPC.")
     "Fulcrum is a @acronym{SPV, Simplified Payment Verification} server for
Bitcoin-like crypto-currencies.  The server indexes the blockchain of the
crypto-currency used, and the resulting index can be used by wallets to
perform queries to keep real-time track of balances.

Supported crypto-currencies:

@itemize
@item Bitcoin Core.
@item Bitcoin Cash-like.
@item Litecoin.
@end itemize")
    (license license:gpl3+)))

(define-public flowee

M gnu/packages/firmware.scm => gnu/packages/firmware.scm +4 -3
@@ 796,7 796,7 @@ after an operating system boots.")
(define-public edk2-tools
  (package
    (name "edk2-tools")
    (version "202211")
    (version "202308")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 805,11 805,12 @@ after an operating system boots.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1264542mm0mffjcmw5sw34h94n405swz5z56rw1ragp3j62144iy"))))
                "19g3g94hayvcwmn6sjs6mghq0qf5nsd785k5j8szcrj2p0vjh54f"))))
    (build-system gnu-build-system)
    (arguments
     (list #:make-flags
           #~(list (string-append "BUILD_CC=" #$(cc-for-target)))
           #~(list (string-append "BUILD_CC=" #$(cc-for-target))
                   (string-append "CC=" #$(cc-for-target)))
           #:test-target "Tests"
           #:phases
           #~(modify-phases %standard-phases

M gnu/packages/flashing-tools.scm => gnu/packages/flashing-tools.scm +33 -1
@@ 10,6 10,7 @@
;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io>
;;; Copyright © 2023 B. Wilson <x@wilsonb.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 59,9 60,11 @@
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages libusb)
  #:use-module (gnu packages libftdi)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages pciutils)
  #:use-module (gnu packages qt)
  #:use-module (gnu packages tls))
  #:use-module (gnu packages tls)
  #:use-module (gnu packages xml))

(define-public flashrom
  (package


@@ 581,3 584,32 @@ formats, and can perform many different manipulations.")
    (description "@code{uuu} is a command line tool, evolved out of MFGTools.
It can be used to upload images to I.MX SoC's using at least their boot ROM.")
    (license license:bsd-3)))

(define-public qdl
  (let ((commit "13681fcb359c9f9c32a17a91d3dd20df2e413b6d")
        (revision "1"))
    (package
      (name "qdl")
      (version (git-version "1.0" revision commit))
      (source
        (origin
          (method git-fetch)
          (uri (git-reference
                 (url "https://git.linaro.org/landing-teams/working/qualcomm/qdl.git")
                 (commit commit)))
          (file-name (git-file-name name version))
          (sha256
            (base32 "0m6wdhfwbf7gzlckxx21bvbv33qjahpzqbg1pdqdd1lifx5f51mj"))))
      (build-system gnu-build-system)
      (native-inputs (list libxml2))
      (inputs (list eudev))
      (arguments
       `(#:tests? #f  ; No tests implemented
         #:make-flags (list (string-append "CC=" ,(cc-for-target))
                            (string-append "prefix=" %output))
         #:phases (modify-phases %standard-phases (delete 'configure))))
      (home-page "https://git.linaro.org/landing-teams/working/qualcomm/qdl")
      (synopsis "Qualcomm EDL mode flashing tool")
      (description "This tool communicates with USB devices of id 05c6:9008 to
upload a flash loader and use this to flash images.")
      (license license:bsd-3))))

M gnu/packages/fonts.scm => gnu/packages/fonts.scm +2 -2
@@ 1937,7 1937,7 @@ weights and five widths in both Roman and Italic, plus variable fonts.")
(define-public font-sarasa-gothic
  (package
    (name "font-sarasa-gothic")
    (version "0.41.8")
    (version "0.42.0")
    (source
     (origin
       (method url-fetch)


@@ 1945,7 1945,7 @@ weights and five widths in both Roman and Italic, plus variable fonts.")
                           "/releases/download/v" version
                           "/sarasa-gothic-ttc-" version ".7z"))
       (sha256
        (base32 "0m2c3g8c6wxgyyvmraln4bx0qn949j9rin593s1c01hzah435cac"))))
        (base32 "06yvymkkmp8g7innmwg9xc6wdsfngj118k1fhp8fcav4110qx585"))))
    (build-system font-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases

M gnu/packages/fontutils.scm => gnu/packages/fontutils.scm +12 -3
@@ 789,9 789,18 @@ suite of the @code{psautohint} package.")
    (build-system pyproject-build-system)
    (arguments
     (list
      ;; The CJKSparseVar.subset.hinted.otf test fails with slightly different
      ;; output caused by the newer fonttools version used in Guix.
      #:test-flags #~(list "-k" "not CJKSparseVar.subset.hinted.otf")
      #:test-flags
      #~(list "-k"
              (string-join
               '(;; The CJKSparseVar.subset.hinted.otf test fails with slightly
                 ;; different output caused by the newer fonttools version used
                 ;; in Guix.
                 "not CJKSparseVar.subset.hinted.otf"
                 ;; These tests fails underministically, See also:
                 ;; https://github.com/adobe-type-tools/afdko/issues/1678
                 "not test_hashmap_no_version"
                 "not test_hashmap_old_version")
               " and "))
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'copy-font-data

M gnu/packages/games.scm => gnu/packages/games.scm +9 -51
@@ 128,6 128,7 @@
  #:use-module (gnu packages cyrus-sasl)
  #:use-module (gnu packages documentation)
  #:use-module (gnu packages docbook)
  #:use-module (gnu packages emacs)
  #:use-module (gnu packages emulators)
  #:use-module (gnu packages flex)
  #:use-module (gnu packages fltk)


@@ 412,48 413,6 @@ enemy, ally, weapon and mission types.  Features include simulated 4D texturing,
mouse and joystick control, and original music.")
      (license license:gpl2))))

(define-public alex4
  (package
    (name "alex4")
    (version "1.2.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/carstene1ns/alex4")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f                      ; no check target
       #:make-flags
       (list "CC=gcc"
             "CFLAGS=-D_FILE_OFFSET_BITS=64 -fcommon"
             (string-append "PREFIX=" (assoc-ref %outputs "out")))
       #:phases
       (modify-phases %standard-phases
         (delete 'configure)            ; no configure script
         (add-after 'install 'install-data
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((share (string-append (assoc-ref outputs "out")
                                         "/share/" ,name)))
               (install-file "alex4.ini" share)
               #t))))))
    (inputs
     `(("allegro" ,allegro-4)
       ("dumb" ,dumb-allegro4)))
    (home-page "https://allegator.sourceforge.net/")
    (synopsis "Retro platform game")
    (description
     "Guide Alex the Allegator through the jungle in order to save his
girlfriend Lola from evil humans who want to make a pair of shoes out of her.
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"))


@@ 3778,9 3737,9 @@ Portable Game Notation.")
                              (substitute* file
                                (("ncursesw/ncurses.h")
                                 "ncurses.h")))
                            (find-files "." "configure$|\\.c$"))
                  #t))))
                            (find-files "." "configure$|\\.c$"))))))
    (build-system gnu-build-system)
    (native-inputs (list emacs-minimal))
    (inputs (list ncurses perl))
    (home-page "https://www.gnu.org/software/gtypist/")
    (synopsis "Typing tutor")


@@ 10460,15 10419,14 @@ protect you.")
(define-public 7kaa
  (package
    (name "7kaa")
    (version "2.15.5")
    (version "2.15.6")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://github.com/the3dfxdude/7kaa/"
                           "releases/download/v" version "/"
                           "7kaa-" version ".tar.xz"))
       (uri (string-append "mirror://sourceforge/skfans/"
                           "7KAA%20" version "/7kaa-" version ".tar.gz"))
       (sha256
        (base32 "0axbv14fh87hwjabrb3zv7ivj88rs6kd2xq6s9qlpsszk20jc2im"))))
        (base32 "15a0cl55bg479gw880yz48myg336q5lwp2zpyxyyhyadq26vjy9c"))))
    (build-system gnu-build-system)
    (native-inputs
     (list gettext-minimal pkg-config))


@@ 11050,7 11008,7 @@ play; it will look for them at @file{~/.local/share/fheroes2} folder.")
(define-public vcmi
  (package
    (name "vcmi")
    (version "1.3.1")
    (version "1.3.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 11059,7 11017,7 @@ play; it will look for them at @file{~/.local/share/fheroes2} folder.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0jq84i6lxp96xkzq9mq8n2bbmincjzi39vijj9ws8i59c7xvjw5f"))
                "1x1bzd89h0j4xci91d2v5aj5vgkx6vm12iml805wkia4hy1jp4ff"))
              (patches (search-patches "vcmi-disable-privacy-breach.patch"))))
    (build-system cmake-build-system)
    (arguments

M gnu/packages/gcc.scm => gnu/packages/gcc.scm +22 -0
@@ 783,6 783,28 @@ It also includes runtime support libraries for these languages.")
       ("x86_64" ,@%gcc-12-x86_64-micro-architectures))
      ,@(package-properties gcc-11)))))

(define-public gcc-13
  (package
    (inherit gcc-11)
    (version "13.2.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gcc/gcc-"
                                  version "/gcc-" version ".tar.xz"))
              (sha256
               (base32
                "1nj3qyswcgc650sl3h0480a171ixp33ca13zl90p61m689jffxg2"))
              (patches (search-patches "gcc-12-strmov-store-file-names.patch"
                                       "gcc-5.0-libvtv-runpath.patch"))
              (modules '((guix build utils)))
              (snippet gcc-canadian-cross-objdump-snippet)))
    (properties
     `((compiler-cpu-architectures
        ("aarch64" ,@%gcc-13-aarch64-micro-architectures)
        ("armhf" ,@%gcc-13-armhf-micro-architectures)
        ("x86_64" ,@%gcc-13-x86_64-micro-architectures))
       ,@(package-properties gcc-11)))))


;; Note: When changing the default gcc version, update
;;       the gcc-toolchain-* definitions.

M gnu/packages/gl.scm => gnu/packages/gl.scm +46 -8
@@ 12,7 12,7 @@
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;; Copyright © 2021, 2022, 2023 John Kehayias <john.kehayias@protonmail.com>


@@ 760,7 760,7 @@ OpenGL graphics API.")
(define-public libglvnd
  (package
    (name "libglvnd")
    (version "1.5.0")
    (version "1.7.0")
    (home-page "https://gitlab.freedesktop.org/glvnd/libglvnd")
    (source (origin
              (method git-fetch)


@@ 770,7 770,7 @@ OpenGL graphics API.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1nvlcwzivrdchp70i2l7ic7qdlsdmlsb0ckydscr43rhqldswx69"))))
                "07v3bmwzmg0d4g2zp835v1g7j22j8vz7hjfmqrdqjgxjj6v4jkyr"))))
    (build-system meson-build-system)
    (arguments
     '(#:configure-flags '("-Dx11=enabled")


@@ 883,12 883,50 @@ OpenGL.")
                "1kcrpl4d6b6h23ib5j9q670d9w3knd07whgbanbmwwhbcqnc9lmv"))))
    (build-system cmake-build-system)
    (arguments
     '(#:tests? #f ; no test target
       #:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
    (native-inputs
     (list doxygen unzip))
     (list
      #:modules '((guix build cmake-build-system)
                  (guix build utils)
                  (ice-9 format))
      #:tests? #f                       ;no test target
      #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'patch-sonames
            (lambda* (#:key inputs #:allow-other-keys)
              (let-syntax ((patch-sonames
                            (syntax-rules ()
                              ((_ (file ...) soname ...)
                               (substitute* (list file ...)
                                 (((format #f "(~@{~a~^|~})" soname ...) lib)
                                  (search-input-file
                                   inputs (string-append
                                           "lib/" lib))))))))
                ;; Avoid looking in LD_LIBRARY_PATH for dlopen calls.
                (patch-sonames ("src/egl_context.c"
                                "src/glx_context.c"
                                "src/vulkan.c"
                                "src/wl_init.c"
                                "src/x11_init.c")
                               "libEGL.so.1"
                               "libGL.so"
                               "libGL.so.1"
                               "libGLESv1_CM.so.1"
                               "libGLESv2.so.2"
                               "libvulkan.so.1"
                               "libwayland-cursor.so.0"
                               "libwayland-egl.so.1"
                               "libxkbcommon.so.0"
                               "libXxf86vm.so.1"
                               "libXi.so.6"
                               "libXrandr.so.2"
                               "libXcursor.so.1"
                               "libXinerama.so.1"
                               "libX11-xcb.so.1"
                               "libXrender.so.1")))))))
    (native-inputs (list doxygen unzip))
    (inputs (list libxkbcommon wayland vulkan-loader))
    (propagated-inputs
     (list mesa ;included in public headers
     (list mesa              ;included in public headers
           ;; These are in 'Requires.private' of 'glfw3.pc'.
           libx11
           libxrandr

M gnu/packages/gnunet.scm => gnu/packages/gnunet.scm +2 -2
@@ 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.3))
                             guile-fibers))
    (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.3
                         guile-fibers
                         libfaketime
                         automake
                         autoconf

M gnu/packages/gnuzilla.scm => gnu/packages/gnuzilla.scm +415 -120
@@ 375,6 375,26 @@ from collections.abc import MutableSequence"))))
     (list icu4c-69 readline zlib))))


;;
;; Needed for IceCat 115.
;;
(define icu4c-73-promise
  (delay
    (package
      (inherit icu4c)
      (version "73.1")
      (source (origin
                (method url-fetch)
                (uri (string-append
                      "https://github.com/unicode-org/icu/releases/download/release-"
                      (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
                      "/icu4c-"
                      (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
                      "-src.tgz"))
                (sha256
                 (base32
                  "0iccpdvc0kvpww5a31k9gjkqigyz016i7v80r9zamd34w4fl6mx4")))))))

;;;
;;; Localization helper procedures.
;;;


@@ 417,111 437,114 @@ variable defined below.  It requires guile-json to be installed."
  (mozilla-locales
   ;;                      sha256                            changeset    locale
   ;;---------------------------------------------------------------------------
   ("1s59ihmj8x6z0ssq4xav689jb5azrpdnay8csgjm1b9pw7wmvcli" "a6940ae1a02f" "ach")
   ("1cqixlk9f8p63jz20wzsvnfb7xa82ba725gzdydlwz2axgp09c26" "4e2c7d1ddbed" "af")
   ("19r1yhmfxqasyslc8gr9as5w1scscz1xr8iqy9zi4b90fdjzs0ac" "06897e40a7ea" "an")
   ("0nfknb1p03j9fgmkwlm1mzdyh10g0l33x34ab39kc072apziyv0n" "9272819b09e2" "ar")
   ("11qqblqfffbmkdr5b6mxzq02i8rj1hjq3iy6xv5i5xxy311b3vpb" "f706d22e6910" "ast")
   ("0q2p1a437qr2nshdd4934qkv2sblmykiwzir149c8p9m5sjk0dyw" "f5c2a9800add" "az")
   ("0gxxm3lv18kj0922bw0g897azc4nkrszm5irgwdkgmkbyr97li83" "98ba7d51484f" "be")
   ("10vrbbaabjns824ndya6c09znm815pak2xpvqgjydl3r5qvacx65" "5c79c77311cd" "bg")
   ("1il7yyifx5xzj0v2lna315mppl5pk1vi4m9r66hdz1lzc485m1wp" "c80c87ef7193" "bn")
   ("1p1ig4v9pczzrnnxzr20r61g7xk85k5lgnxhzgn1rx518p85xrkm" "6a1bcb9851b2" "br")
   ("08q33bk9kdvbyc4ib58bsn2b67ki3d2yzskkf5r2n5zlglblksa2" "939779cb58d6" "bs")
   ("1bdkywrqah85fh8kfnz163qnc02ffx0a4vlnx5pq1wg9j4f1gznf" "9a45ccf144f1" "ca")
   ("0hhmp5dzc0rssykl0b2n9h0vfy4svwhxmhpsr3rcfpbg2s0r5h6l" "4f60e18fc248" "ca-valencia")
   ("18phbl9raqsbys9wa8z0gq0h0pw3b55v6ngn67r4373lfc0s9cxv" "b4ef404c7de8" "cak")
   ("0147qyw1y97mgqhkb46wblxv61lq2mvvm5n5ihwf49l5cyizi0jg" "f56ef18f05df" "cs")
   ("08sbhnsxndlsaijnxndc367qcbrzb29m7bpkcawinz9fg6mz3573" "4f9d92f04f5e" "cy")
   ("09cm5kk1sh2a6ws1fj185jrknhfa6n4bhj7nfnr4lsk339n0kvv9" "902503567e30" "da")
   ("0r630bki5d4ylicq6lzh6s2mvsq225933szswmm0sap507rj75cm" "6000baf7a412" "de")
   ("0749qjsfv3rn94rnci3ydgndw27qlr3w3w97kfwma2gmsf3m3r0p" "4a948952d1f4" "dsb")
   ("0yc64i7mpxhs4qlyyh59i2aiz0vpap0bn8slcsk8b71wd1d7cy5m" "153a16a13733" "el")
   ("0d4m5ji6ii10yap8y24cxx3fr60ba1jqi10hy3j1cq6ni7hzavga" "7ce17ae529ac" "en-CA")
   ("12jzqcfbgdhfm8f2gqp15bdnin62li07jwicjc8ynn4cl9a19xiz" "a25d9eea7c23" "en-GB")
   ("0gbb8hfc5yvjah63mapjxm53wxrf98srbrbg43b9g734zfi4n8y5" "4ed3471dad5d" "eo")
   ("19lw7zmqx2irjmv5y6r7nncp6nysn06abf10n3dzj5nzgays6sln" "853fe7acb415" "es-AR")
   ("0rq4pa380b77rkv6dq7sqx8a8i33jk3vs5rgcl8fv7slqvsw23kd" "921b67bf27a5" "es-CL")
   ("1dyxzab9hln5spch66wmfagfzmfdiaxgpq7qlzvdfg98wkqdj25n" "c9a210ea496c" "es-ES")
   ("1gwpmfl37wxl7rynqswgj41liljflgxydvljd4zdhk3jzqn605fb" "ddd35183d81c" "es-MX")
   ("0c3blniddklapifnjbz03f2frw24jjgwgwn6swl5mwm2z0y6wa9f" "82d23ffaa7d3" "et")
   ("05mq2df6n6fr8m5m2xwl0f6n1q3zgjrnk465ldx1nfr9agrhd36c" "13975626d549" "eu")
   ("1l1jyqqiy551903j6yzh9ayg1pf26q2hr9h3jj4l51xzp7x4ms2q" "039e1fdb7c71" "fa")
   ("091l05y9sggxznv0y11b9zy5qf146p0hb5faw4ix7yn5p5kca2f5" "7bd3722d82de" "ff")
   ("1lllwjvmbl5dx44fcvsqg08fbflkc8dx5as9n6nf4xlkzydx6izm" "39808e88c9d1" "fi")
   ("10ha955vvyf5vbciricm72kplj9j0s00g2333lmg46jiwi7aviiv" "426d373db6a7" "fr")
   ("11zdfk8jvdy1k9z1q162cwapplcbz35l3dq4mv45brdin3v0x8kr" "96cd93d18389" "fy-NL")
   ("1l5xr25gmssyachwmfprlnp2v2xj4b0hp8gxrf7fi5bvv9c2fynb" "de3daf7d3f9d" "ga-IE")
   ("06h9ijfsn1cgz5fvxxbisk7fvqhgsw99id92575hgyg1p8xb1n69" "f04aea656d9e" "gd")
   ("19913i5n8yyfhz9j21krlk7wqsyy89vggxc1m1swv94y2ix8rpaj" "1b8cdb87bf69" "gl")
   ("0k5x31bfl2l0r9b5dkn03frm1gd8n6igai7ch2f1kj0skflynwww" "82df570c4241" "gn")
   ("03rygnj9xhfvykark7dls117kwhid13ghvrsqiial0vp8m7ymx79" "e2e41d7beaa5" "gu-IN")
   ("0vyraplj1x7b5im15anhzdaq03k2gqfyybgklrd4f9ry6msh5jhx" "de724e943805" "he")
   ("1zqps586jrgxpf7xx2l3qw3ch3fr31r9a25y861fpxrpvh7ygw7g" "898598e1a5c6" "hi-IN")
   ("0czq68l3qdhdc0mgazlrh8x83a6d5qrjwgjv8xvsmmzi7h68ww0l" "2711d1515af0" "hr")
   ("1wwvrnm38gk2rnw4vmcranh8hk61gjcj9292pck3ckiv6mq7kd4s" "03e02f3d0676" "hsb")
   ("0yvgdxlbyhhg3lk43hxx9gx66rcm7gaj02zzzx5zni8dhvlk2v6m" "d423ada9dc00" "hu")
   ("1kjm7bg4990jhfbxwc38r4lqm2fbcxc82nc2d4qkqwikr4aah4b9" "06836af0bd6e" "hy-AM")
   ("1dla7r3snvagb7m985xxqyi7gl498cr5xsz8msw0zpg6xmi05rlx" "299bd950d538" "ia")
   ("0w8w9xn93akir7nqcp5iwr3kqvba5gbirg7gmzlzg7mgrhw8pcsa" "dee087477b99" "id")
   ("10iakv1c1d20ihxg1s7c3zc1zfw18vr2kspcw7bk5k02rmrffgcn" "320095d063ed" "is")
   ("1xn5pa3rc7l6k2migm3c0dx71q1hk7mjls045xpv9cy8gvirnj94" "4722680fb5bf" "it")
   ("0va9zfj3wqh1yvbgh3x808yvdyxkg780vazjg887wbxpfk1n6hxa" "cb3cfe294621" "ja")
   ("0qvjc3fhk6jg2c3g6mymmnslg1rkkxmv9gi3whf2bc5mzfgyc5zw" "7efe92bd7780" "ja-JP-mac")
   ("0zfiwwz0axbd219ar32c7a6b8h816sf04ajx6jl74s5kyij79y82" "4c1fe3a18da9" "ka")
   ("1aiik4758r5df76q2a132y5fjdjrsxshjylk7irwsr7yy0c7f63g" "acdf76048aa0" "kab")
   ("0icxh4sgv6m1yykycb9d9c43k3r6w02f9c6jr04wm8hvqq5icfl5" "9b418ff7936b" "kk")
   ("1cqlhggf46lr7w399k7qb7a1hc56f32w1dy26i2racpppzza5plc" "9771ada0b5f8" "km")
   ("0p04irnb7x7y37m6lz388x9dynn8rnk000avpp296barajnhs5i8" "645aa37a2112" "kn")
   ("1lbc1fxr5i0ccymlsd8axz3633cqggg5k8ak5yqwi704g7kvv9g2" "1cd68952d119" "ko")
   ("11b55bxg73zqfdn5gy9nn5imab2mv0hxr603whggp7vymllgb7kb" "26bb83959bfe" "lij")
   ("15jsijm6d26i0105gz0f7sh2yh2v4pmw4j95cwkdrb1d8m935jlz" "b9829891f153" "lt")
   ("0liwwv13fgyw97nizhsyy53xrbf8jks5ics7qkkxfccawjrg5rlb" "e5f09d03d959" "lv")
   ("0w420yf3hdnl7dp9mn9ghc20cq79k24fn9adn3syk723ppl6mkb0" "7884845e94f3" "mk")
   ("13wkr7rgqsv9w3d9w7k8lnxdzgfixsq4bmc27zsyc770l6062ml6" "030db7412202" "mr")
   ("06nsadcnxx0ssdp67x47dj9crihn1ycgd5mwvn5m7lkb97r4ch9f" "40a7703e875c" "ms")
   ("0mlnjdzck6dp9p59ajj3sr63r36fn0qi8r9scrqrqcisgfclw9sg" "daca40056531" "my")
   ("0z1hgx9d5i9w20f9k9azzng1y3lmm5d6hdjkj7rf6r5710bhhzh5" "664bd049e105" "nb-NO")
   ("1466qvrs13g2iix1k35cknb2pia9b66li2ncvdyqf0jsd92z9k8x" "eaa6ae781ba0" "ne-NP")
   ("0jgmz2lkzj0aspd9mabygzic6li5s2b25y0r6vjg8mv3jm5pi86j" "5ef8f1c9739e" "nl")
   ("1m46x0h20vdfbzjxlz0ac43dbaq40xnyldr2yzbf7pk5di9pzxa6" "f08e15466d5d" "nn-NO")
   ("0r3zvihqh6iya3z1qm7if0m3zfgf81s9qp7x7qc701h2q357wkgf" "6712c0e12ec2" "oc")
   ("102j89jm28c223yhhkrj76xxj4kmy58hcs2r0jn15xa1qkqv1fdk" "8f36cc819e00" "pa-IN")
   ("1j9za6s0i46abn8dsrlkpck3qxxw35rhfcg1xs1vp8sc4ckg8qwi" "c3b0c1c02b94" "pl")
   ("1k9lbsvckpwl4xax8kxp5yxsfkspq2mhqm77jh5nl9aw88dsn55b" "cc32bf9630fe" "pt-BR")
   ("0f0jyvbn2sa5m66wqdzh4607g4gd0270xq37ipd9ls52b4764bd8" "5478d7242086" "pt-PT")
   ("19znkkialh1d4np7qcp80xkagrf1j2xah2s1xxzsh854p3d30zs7" "dd934a76fb01" "rm")
   ("1xn26r8g8zzkb5myfgmnjbk8k4i0brkvbrvnhp7k5nkrnsin25di" "d57ab3dee73d" "ro")
   ("04rhkxlmpp5pyzw85ldbfkmiigqr2p9y5cbns5dqs6sz1633ccxp" "7aea98f33a20" "ru")
   ("1zzkkxl7ayxh5gx9snyvp5czflsvi77hp48li613h3c2fii4n9qk" "7c986f4b5044" "sco")
   ("1219i0ghhqj3s1i0rm68jjkvivh6y40938wav7z4ifck527sq6r1" "bc9e55d4e3ea" "si")
   ("05i5p3n3a6hgl6rf10yjs4vag7y3rn2jwgxsddcdcqiv6405zn81" "8814afd7f67e" "sk")
   ("1wcqdbm1py1ldq6cj2g201m715nql79r6szr71jvrxacb711c62a" "20013dc06e96" "sl")
   ("0g2izkaa4ipwgwyhy77ciyrxxpf4pxzj9mjqvxriy5prmkhm3zjs" "d86d5d2b6eef" "son")
   ("1cc99m6srjg8698dkc3il70crby0mdv43v3ijwy069k4w50hyjjg" "49bb5fae5d9b" "sq")
   ("13kfssq4fhq9mb36as6sxiaffl17qyg1wdw8kpz3ilqm86bsjrgl" "d6a0ab79b06f" "sr")
   ("1wx9snbm0431q97i0q0nv4wbsqcv9nhllwfr88crlp7bfj5w8czw" "4bab04993da3" "sv-SE")
   ("0laglkfl8ml0ip5vmm3z2q790hgwax9gfqwq3wm68a2nnsyck8fw" "4b3316c4aa48" "szl")
   ("15pnlic4q7m48y0mc5yh8w5yscjwzx0mmfrbj3f2b9jxxa44nx4h" "48c7aab86db8" "ta")
   ("16qar5y0wns75ryi8bfv7yln3mjsyn7qi4345zcniz3ydgkczh46" "7bbb3dac8f47" "te")
   ("112g7x8h0qz16r5faam386x4a0rgwd4zy02d5agmg9m0kbficdfx" "009fd0852454" "th")
   ("1l80kh9byqxnz5vkz357rb39g4y9sgn9pr0v29ywp6d009img1qg" "dad9caecd7a9" "tl")
   ("1nalvjlxxsa9wldhhdb93bgfc7dl084xayh7i7mgg93yjgrym93x" "0c48082d37cd" "tr")
   ("0wkxqcfgsra2ljws28kiwajv73w9aa8drsc4fqlg9krbicnjl2n8" "f6d105faedcc" "trs")
   ("18jf4ysrfv3635fyxc1vwr970dr2r05bl3h8v599pwp2g7jzyjpm" "e1011388a55e" "uk")
   ("1ihmksjsz54yii23qda5iv8cxrj9144afy75hzhvfi6m182kj4h8" "c4e927eab511" "ur")
   ("0d42dhfa2vcw24wsvwf95pw20np0pz8c0is6p4307n981n8s207y" "7063df917cb3" "uz")
   ("04khnkrg8css55hyna01jqay9c2ppxk5znbx2zj9i25knhvvx1lq" "1753054e6ab8" "vi")
   ("0fi5kxn78xp7s15svkqlf4748j4pzxh941nm52n6kbbrhyi3qcqn" "93bc595dc32e" "xh")
   ("0jg676vd37wqgzjnm0yynj7xrvm6fsgdwg296h78wnyc33zc4ads" "edd4e468bc31" "zh-CN")
   ("1y4wldm3z95mfjlficp994jyqg0lj07wi35b79dy1s8ljy3jilil" "0bad1f7d2b2d" "zh-TW")))
   ("152dc3nxbsjhawq8wm040hbnhq96l039j3k8ll4q93qm93msj507" "de9eb6a1e3e0" "ach")
   ("0rfbzyv87x5d4qspjaiwsvqcf57g0d93daibj4rc4xsq3g2gw45v" "45b72420bf17" "af")
   ("13lfl3nq0nr3zvh1zddpnyk8x054784yz08nkprmqhzyvfv3i5wq" "babed417b5e8" "an")
   ("07fjh9wvl9jgvyqbvsd7l4pq895y4sv725fd8fr274s6l4x7pzz0" "7df35a519b47" "ar")
   ("04zmfr15a3zhalj66ydpcrh3nxk1q7wb2gckfqsq55q72i3hvkcy" "fd0068a8989f" "ast")
   ("1x2hnsa1nfmysd7w53ly14bp8hk1vbgfj1016wapcshvf1kap3mr" "4df6d5edc74d" "az")
   ("1synmbnng6ai8gmz8srxdgf3qgadjvymb66inp3g2lww0c98c4qn" "97829729f043" "be")
   ("1zank8f4145v4fv28y47ssknn55zrpyll3kxhha2h54za4zkn4p1" "4f568ae49cf3" "bg")
   ("00wdllmdmzg11x6dcj3f2i047y3bgab1qw2zjaa92i36d5nd2hdr" "a634f8559ffd" "bn")
   ("0b5f50ar7zj2z1jjvhv8841rabx5a2ylcl0rma3qiz5i6r41lgli" "4ca046b16e37" "br")
   ("1g1qh8b496psq9yknjzi7drzqzhd5g50xl5qiwd6pr61xyqfvnkx" "690960700526" "bs")
   ("1wd463lfhdybx0nz0dqvhrsi7f9xl5qd7mvshpgqxlj5x1nhamzy" "58714a456fd6" "ca")
   ("1s9ls2fh9xfgb8q9vay5lkszfhh0k99lrp28m3fi83b5vv8qj8fq" "12760eef74bc" "cak")
   ("0abwslv88hda2wfsnkyi7si9v16923gf4xfbq3h0a6mpxf1mylhs" "703352c2a9b4" "ca-valencia")
   ("05pfacr2kk0sxrpw3s15c8rvchkzxgvsy1njp5q72b270sw98i7h" "6a7eef3982fb" "cs")
   ("0cidwylb4s7n1hdw4yjqj89bl2qsscf3b1vnfl7hsxf68lj2lzaj" "9c30e4ec1dde" "cy")
   ("10d7mn2qq0nvw3073ga4garwnvpk5xqkgn3dgw1az2g5pncclhfk" "668cf42570ef" "da")
   ("0nfb3nf47gavafb35mm4ghl82kpylyj0r1vqc47nz151mjj2mnli" "c968a5118cda" "de")
   ("1qjf12aymz1x281chv7sqyarbz6f8w7nxsli3b4srsar12l5f0lb" "27dd7f4a3f3f" "dsb")
   ("040165lwplyj0cv9ccagdjwigy527rli3qda6b633bqrpx6310sw" "920e28aa6758" "el")
   ("1h5zk58rmrqnbfhxyiwcn0385v6r5ayfkblpwqkji80p135n74sa" "b0e55a5a6413" "en-CA")
   ("1w5q4b1a9ysgc76dg45cr2q55y4djdcrj2qzs0imq61sjrvih2fv" "9aae743f32df" "en-GB")
   ("0mxsp5ipg36jdpphwrdra877z9vz1ifbhas988awhc3i9byx7zbh" "3c825be76f39" "eo")
   ("1nxscjmk80wh359lv4cxgh1y85f8qw522dppy292pkqnqnsrfnq1" "ffac56bd3aef" "es-AR")
   ("02353n524fy5icp2myjn198n511lzb03hcd4a61bgd7f26cpkhy5" "77e209bb2114" "es-CL")
   ("1863d4zy2745hfw2kgw5z0625znvzkqwlwbvcj8cw6nv3r6dxgdv" "215ced58e499" "es-ES")
   ("0asrcxvig4i75r4kpkmcfsc1kzjl8cbaz11an5kny2slcy63av7i" "d748a2a91643" "es-MX")
   ("1p40zmf29mq81blssjh6gs8fih925mia3l1gya9vzgyp5i4dvln6" "66edf9863a04" "et")
   ("1hr4q01856j8jmjia39586mxfbv5ijkq7i6cyxz1r422gqivv13v" "752b6aa2225e" "eu")
   ("0d6vgd6anz237ckgc3a30nzdxa98fw33rc1r2wkr4y3yfvd2bidc" "4a57be1cf783" "fa")
   ("1kjb8k55vkgn7fpzgvayahzx7cbx7vryyv89kynp2lv052smhh01" "e42c0149059c" "ff")
   ("0d392s3fh1cl491b72cxlj7la6in84mfxbcn862f0sr63iz0q7wn" "0a2a3e96367c" "fi")
   ("10rvxinl9as9wdd9yrhsskjwsklzxd35j4b1ygr4jlvslcrmdhpn" "119b009eba98" "fr")
   ("1x0bfp7gaplnwcmfvv8c87znxp9fxsa99nl88j87qxn45h9kz8q6" "475065215d5c" "fur")
   ("0p20jlm8vxlzixm446wcqjs5sz7m9x7v4zgqczvriwyspad7d8xp" "6909c0c42a2e" "fy-NL")
   ("1rh8mvlamawzdfis0ah8rgnjk30mzpxhgh1yx8rxppps7l5n2hpj" "2f350c9ba505" "ga-IE")
   ("1n2dxvv0q77azg2cz4nasq47pbsh1l6fngphy3lzz1wj4x3s8z7g" "3fe4a6bcac31" "gd")
   ("15x51q3lsr67lklci13cqlxmgjyk8px12qc3qfrfdv2dk68znwmq" "0482da4a3d5b" "gl")
   ("1zx7a0l781hyi9k6bi0m9ghgzcb116cqy88q7bf9sm0gar85yxwi" "bb255fc733c3" "gn")
   ("1p6ycyjp7qsv1fk19yca5bwvyg72y3v87fr3wmhq7xzmdz6994fm" "dd3707daa411" "gu-IN")
   ("02r68v2yhxxdfms9l2yq8pk7rarg1ysv67mbny04gaws6k5fv3an" "c247293030ae" "he")
   ("116s9qgcwb0j1mzwy5napq5ww9cs5hcj41xiq2k6kz4gjxw4jazl" "e9c1a1fe1b79" "hi-IN")
   ("1kg7xiw75ks490kiay2gndlc2akkg4bxdx4q7ysaxf6kpgisakxg" "068c00ca7cae" "hr")
   ("1xjqvqn65nyb0dlchy3bikpf0g3qjba7i5g68jcicz0hcyrfagvd" "5fd424d1061b" "hsb")
   ("1j81cv599h3iv26yzzdf8m5vkdw9kdhrlls8c6zd3fslpd91yn5q" "0ef89daff942" "hu")
   ("0wwjyjpqcxvjsw7md6sz2zxncay3wk066qiv4p2vpqv5sw9z1sdh" "771fd65bc781" "hy-AM")
   ("0pxjvzkkhls3d28c1656y3fc78snhc90f0mj5jx9rhh7l6hg0801" "6cfa8fc01f2a" "ia")
   ("1xh93qkj7y4ad10sqyldr9hymsbffnq7kya0smvci1nwmnndd8bk" "ae863f3cd230" "id")
   ("1npyaz5zyk6yr8z8sj2gbd0ahynglxmalw27rcdb57h81n0520y7" "d465499a6600" "is")
   ("14hhl050vzbrwwppvpyicqfcqazpvyaygnr8hgrz0jgyb30lfvhw" "a8ac50410815" "it")
   ("1jz9i0x22qig74gwrrrvnwc7s50h1x18sl797lr678xiw4f6p0ar" "13abbdd8abdf" "ja")
   ("04k53mnskapqv968gphpmzhxbg1m0jxbzf24z9g0lgspnhcgwpx9" "1f388ad7f0e9" "ja-JP-mac")
   ("1n9ayc6l72fy08zdqpwag54rh6j5aagj7y7976gyvjl1ssz745fs" "ed774dd2eff3" "ka")
   ("09bw4sk8g7bmx9xxxiy8y9p8zhf3h3gvaddlx86zdk12k44iqmnc" "c9cfab9734b4" "kab")
   ("0lmwsq72vk424nlrgnq46apdbgivzrmx303rvng8h03wrp9qjz1m" "4797db4a0fcb" "kk")
   ("0al453bmiq85kkkfaba11iwnx0dy9f3dl9hlz0j38ysgcipwap5l" "f312da458d8b" "km")
   ("1rjf875nwcqnlbfgk92vpa8msy3vp2xcgfasj7kksr37rxcbwa8m" "a30ac878de56" "kn")
   ("0v5a1v0a6xziwhspfqpdccl00h0b4j4k4vwmmijld44cdmj208v9" "6f5e9c8eb029" "ko")
   ("0kx0hz0dp9bdgf0r0m9qsip2ybrc4dwmry3kp488z2pig0asai7x" "dcdf4bf4482b" "lij")
   ("1iawv3hbl0wab1xzhhihxiqsz2i6icf64ipmjrpm9srlg6kaxgg5" "913770b70ead" "lt")
   ("15ppml5b0f78ycdswff0yqr27d649fr2rggv5dnxqxxm2bx5hzw6" "6351f7efe4d7" "lv")
   ("0crbysr0raqh90ayb5rq73d3cddfryfaj4bdbzijk2j2rpdlwv1m" "6acffb2c66ee" "mk")
   ("0b5dw5a904w5ibd7yz1839a0cv2hmnlv2bz0kpsr6xf52jv20g6a" "942eca4c76b6" "mr")
   ("0fr83kiq7xmw1kyrjrmm3iirlfcp94dyacdkkj9df6gr5qp6wn7i" "de00ab4bb6fe" "ms")
   ("011y1yyl97avjawja3gmwwa74kxcvm2g2wn47yv01xqy74wbbss7" "2ce7138cd126" "my")
   ("0f6ffh76g31df9kfj6azip2qy0b14s287isgm7sxnclch4jwq83s" "5cc51d238790" "nb-NO")
   ("193nw6l0z7vlcd7flb72bc8h7vd9vjj8xlz5lhf7irmfr2bldj0r" "db205a4fd15a" "ne-NP")
   ("14qizkrcs1avd78ci4i4hr7v3bz3m51if1jc5wxydkx9n0yb8cgn" "1abc02acab91" "nl")
   ("1cjglsaf8ynm4wgzpbcf68gj8jhvnzldrnjlni4c4vvl0bfxnxa2" "b4ff1a7885c2" "nn-NO")
   ("0jpdq7zpqs3gnyzz1xvccvjqbzwga35sj85z52vprm6zcxd8gm0m" "1c7d5471dba9" "oc")
   ("14apl3vhxkqcy8l5a0ny71f9dkmbb5fakvkpngqv5xgbbl0byfk3" "cf3fd8eb605b" "pa-IN")
   ("1aglsx0w3xgbn1dhdbzwcqn8sdkp4bncl5bj7nlick56rbkicj9j" "3c9c3c67830a" "pl")
   ("10hqfd0fjbcbgdsj0jxdfvm9abiya05lw2bpy0cz6h61mgjywqiz" "68bf2b7c6f25" "pt-BR")
   ("1vvs0kkvnnnsxn1d5fnma55fizzs1bbx5sv5k2w4164k6h7fhxfv" "fae18b48519f" "pt-PT")
   ("0c8dl12n5fjdd3bjaf8idyaxsf8ppbma132vdw8bk2wqnh4cv69a" "92110fd6e211" "rm")
   ("0mxxy56kj0k5jhjxjv8v4zz57pha819mz7j803lcilax7w52wgca" "5eeba1f64743" "ro")
   ("0jrd95n108r4sxdwgy39zjynm5nlzzmiijsfpxxfwj7886wl4faz" "47131134e349" "ru")
   ("1q6pn3iixzcas9blf61bhvwgppbsh0am0wdz6a6p9f9978894d73" "880b7986692a" "sc")
   ("0xndsph4v725q3xcpmxxjb9vxv19sssqnng82m9215cdsv9klgpb" "bf5f6e362f6f" "sco")
   ("0l70n8817mbmbc09fsnn2aqjj9k9dhad2gmzgphmiilf9mqm2dpf" "1f705c926a99" "si")
   ("19bqjazazww08chd1qc08dsnr2521088jq5jd4j3185yb1ypm3nr" "c1bd10d70325" "sk")
   ("11nmjmy2j249588ahg4mh9lxdqr476jbh28a07qxxibfa76j9vk3" "44be3cbf69b6" "sl")
   ("1ww35141nixg2s03kfmmq9fk6m3qiz2vg7p5a85shjp7i89pyj1d" "800576ff8ef9" "son")
   ("1q7nfybwc8mxdwi9fpvfhayq18mykzygkpakr5ngfz2316k8lf5r" "4de8638ac27f" "sq")
   ("06wr7zx6kvaxsly5f3ci7kb2zaqlwjjbg1vrimp0jcqs4l5x6wpl" "ec560d96370c" "sr")
   ("01n1ly9lihnznrab3kcby2i93k0qwg99c9fh55xpi90vkyq77gmq" "c5754f9325a1" "sv-SE")
   ("09kk9bj2139j34md26zysaaf8cqyh5nmf861vxnc2vdsd37nr4x4" "c3fa195a8edf" "szl")
   ("1vpr88vj9n7pm87dynyqyyiv1v2igd3w0f3a65g8rirknh3wfw44" "755763981e95" "ta")
   ("19qwvi642fpg7zyhlcj9fgnm0bbkvqby6apr7iijayammg2vnyx3" "3a34078388af" "te")
   ("1lh3m1d8rblas50g990qwcr2qv2nk5m6isjvi0gr57zhc4l9a4lw" "24c3a61f463c" "tg")
   ("0sr0wa886a5gwrgn7rmn08sn6qz4p58037wx9gskacclhrzs53aw" "6dad5f8774df" "th")
   ("19cvf42lmi9996mxlmplpk1b65p1fh4ja36xprs115z2n1iky9y5" "befaa7917b35" "tl")
   ("04p50pd380hdalizz09qix7camipazkjyyi97f3sl04h6i67vz17" "66c8bc5e9da6" "tr")
   ("0lqbaxkdvi8hjns8myssmv6bxymh53glf0w2nfpj72zh40rr1n09" "9e86caeded11" "trs")
   ("13qmsji7gyad0d23ac7lx4181zhm3kb9xym82z786f7k271jq7kl" "bd5e0aad5f0b" "uk")
   ("0m52xl2vy0paj5kcfk8jy70hhck5bgdg8lb6cvjqm2mhl5sli0ka" "040d506ed663" "ur")
   ("1n0gdgjwwwd5yd69ylr05hskjxasydnkqw33rncpx7491x3nf4kf" "7e4e5290c700" "uz")
   ("140lnl9dq82azlw1qic386h4z0xbilcf3jvjy93qid67mvnmwqqm" "b8196f646583" "vi")
   ("07yc91645aiks3fxzx16kw4kzvksyrj36n9iz59wn9wppzlampx6" "ef98e07b4b9e" "xh")
   ("1c1sfaincridbdp66bzgwgxgp5gqpvzkf10m9yafm9bgkif18vwy" "f614d8a31562" "zh-CN")
   ("0s9chi76476gznrxjcn6slhgsznjnaps0h29kck6ijb0x3yx98xi" "ab22459ceb2f" "zh-TW")))

;; XXXX: Workaround 'snippet' limitations.
(define computed-origin-method (@@ (guix packages) computed-origin-method))

(define %icecat-base-version "102.15.1")
(define %icecat-base-version "115.3.0")
(define %icecat-version (string-append %icecat-base-version "-guix0-preview1"))
(define %icecat-build-id "20230829000000") ;must be of the form YYYYMMDDhhmmss
(define %icecat-build-id "20230926000000") ;must be of the form YYYYMMDDhhmmss

;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'


@@ 541,12 564,12 @@ variable defined below.  It requires guile-json to be installed."
                  "firefox-" upstream-firefox-version ".source.tar.xz"))
            (sha256
             (base32
              "04q1fjninm9lw721xgv0c2fknicc24s8iaimkabwcfwmcnvly689"))))
              "1jkhfrnjyjr3c7xs724ny0wv3jamld8ia6ggx273ppw17l5wa7ca"))))

         ;; The upstream-icecat-base-version may be older than the
         ;; %icecat-base-version.
         (upstream-icecat-base-version "102.15.0")
         (gnuzilla-commit "400fbfdbc0c1ac9c68c9f52fd2ab6899bc8e8bd0")
         (upstream-icecat-base-version "115.3.0")
         (gnuzilla-commit "3486a3e29280093102e11411d4f05987133ba789")
         (gnuzilla-source
          (origin
            (method git-fetch)


@@ 558,7 581,7 @@ variable defined below.  It requires guile-json to be installed."
                                      (string-take gnuzilla-commit 8)))
            (sha256
             (base32
              "1fqrf94a5vnjq56zyyxlc1zsvbblgmzcks760nj1szpws4y91m8r"))))
              "0x3dlrvf59w8sgg5n6ryaj39yxr2573zmshimfh4mzbidv3j4aw5"))))

         ;; 'search-patch' returns either a valid file name or #f, so wrap it
         ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.


@@ 729,7 752,7 @@ variable defined below.  It requires guile-json to be installed."
           ;; https://bugzilla.mozilla.org/show_bug.cgi?id=1819374).
           ffmpeg-5
           libvpx
           icu4c
           (force icu4c-73-promise)
           pixman
           pulseaudio
           mesa


@@ 738,7 761,7 @@ variable defined below.  It requires guile-json to be installed."
           hunspell
           libnotify
           nspr
           nss
           ;; UNBUNDLE-ME! nss  (pending upgrade of 'nss' to 3.90 or later)
           shared-mime-info
           sqlite
           eudev


@@ 760,11 783,11 @@ variable defined below.  It requires guile-json to be installed."
      ;;  ,(search-patch "icecat-use-system-media-libs.patch"))
      rust
      `(,rust "cargo")
      rust-cbindgen-0.23
      llvm
      clang
      rust-cbindgen-0.24
      llvm-15
      clang-15
      perl
      node
      node-lts
      python-wrapper
      yasm
      nasm                         ; XXX FIXME: only needed on x86_64 and i686


@@ 835,7 858,7 @@ variable defined below.  It requires guile-json to be installed."
         ;; UNBUNDLE-ME! "--with-system-libvpx"
         "--with-system-icu"
         "--with-system-nspr"
         "--with-system-nss"
         ;; UNBUNDLE-ME! "--with-system-nss" ; pending upgrade of 'nss' to 3.90

         ;; UNBUNDLE-ME! "--with-system-harfbuzz"
         ;; UNBUNDLE-ME! "--with-system-graphite2"


@@ 1120,7 1143,7 @@ features built-in privacy-protecting features.  This package also includes the
@command{geckodriver} command, which can be useful for automated web
testing.

WARNING: IceCat 102 has not yet been released by the upstream IceCat project.
WARNING: IceCat 115 has not yet been released by the upstream IceCat project.
This is a preview release, and does not currently meet the privacy-respecting
standards of the IceCat project.")
    (license license:mpl2.0)     ;and others, see toolkit/content/license.html


@@ 1132,12 1155,286 @@ standards of the IceCat project.")
(define %icecat-locales
  '("ach" "af" "an" "ar" "ast" "az" "be" "bg" "bn" "br" "bs" "ca" "cak"
    "ca-valencia" "cs" "cy" "da" "de" "dsb" "el" "en-CA" "en-GB" "eo" "es-AR"
    "es-CL" "es-ES" "es-MX" "et" "eu" "fa" "ff" "fi" "fr" "fy-NL" "ga-IE" "gd"
    "es-CL" "es-ES" "es-MX" "et" "eu" "fa" "ff" "fi" "fr" "fur" "fy-NL" "ga-IE" "gd"
    "gl" "gn" "gu-IN" "he" "hi-IN" "hr" "hsb" "hu" "hy-AM" "ia" "id" "is" "it"
    "ja" "ja-JP-mac" "ka" "kab" "kk" "km" "kn" "ko" "lij" "lt" "lv" "mk" "mr" "ms"
    "my" "nb-NO" "ne-NP" "nl" "nn-NO" "oc" "pa-IN" "pl" "pt-BR" "pt-PT" "rm" "ro"
    "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"))
    "ru" "sc" "sco" "si" "sk" "sl" "son" "sq" "sr" "sv-SE" "szl" "ta" "te" "tg"
    "th" "tl" "tr" "trs" "uk" "ur" "uz" "vi" "xh" "zh-CN" "zh-TW"))

(define all-mozilla-102-locales
  (mozilla-locales
   ;;                      sha256                            changeset    locale
   ;;---------------------------------------------------------------------------
   ("1s59ihmj8x6z0ssq4xav689jb5azrpdnay8csgjm1b9pw7wmvcli" "a6940ae1a02f" "ach")
   ("1cqixlk9f8p63jz20wzsvnfb7xa82ba725gzdydlwz2axgp09c26" "4e2c7d1ddbed" "af")
   ("19r1yhmfxqasyslc8gr9as5w1scscz1xr8iqy9zi4b90fdjzs0ac" "06897e40a7ea" "an")
   ("0nfknb1p03j9fgmkwlm1mzdyh10g0l33x34ab39kc072apziyv0n" "9272819b09e2" "ar")
   ("11qqblqfffbmkdr5b6mxzq02i8rj1hjq3iy6xv5i5xxy311b3vpb" "f706d22e6910" "ast")
   ("0q2p1a437qr2nshdd4934qkv2sblmykiwzir149c8p9m5sjk0dyw" "f5c2a9800add" "az")
   ("0gxxm3lv18kj0922bw0g897azc4nkrszm5irgwdkgmkbyr97li83" "98ba7d51484f" "be")
   ("10vrbbaabjns824ndya6c09znm815pak2xpvqgjydl3r5qvacx65" "5c79c77311cd" "bg")
   ("1il7yyifx5xzj0v2lna315mppl5pk1vi4m9r66hdz1lzc485m1wp" "c80c87ef7193" "bn")
   ("1p1ig4v9pczzrnnxzr20r61g7xk85k5lgnxhzgn1rx518p85xrkm" "6a1bcb9851b2" "br")
   ("08q33bk9kdvbyc4ib58bsn2b67ki3d2yzskkf5r2n5zlglblksa2" "939779cb58d6" "bs")
   ("1bdkywrqah85fh8kfnz163qnc02ffx0a4vlnx5pq1wg9j4f1gznf" "9a45ccf144f1" "ca")
   ("0hhmp5dzc0rssykl0b2n9h0vfy4svwhxmhpsr3rcfpbg2s0r5h6l" "4f60e18fc248" "ca-valencia")
   ("18phbl9raqsbys9wa8z0gq0h0pw3b55v6ngn67r4373lfc0s9cxv" "b4ef404c7de8" "cak")
   ("0147qyw1y97mgqhkb46wblxv61lq2mvvm5n5ihwf49l5cyizi0jg" "f56ef18f05df" "cs")
   ("08sbhnsxndlsaijnxndc367qcbrzb29m7bpkcawinz9fg6mz3573" "4f9d92f04f5e" "cy")
   ("09cm5kk1sh2a6ws1fj185jrknhfa6n4bhj7nfnr4lsk339n0kvv9" "902503567e30" "da")
   ("0r630bki5d4ylicq6lzh6s2mvsq225933szswmm0sap507rj75cm" "6000baf7a412" "de")
   ("0749qjsfv3rn94rnci3ydgndw27qlr3w3w97kfwma2gmsf3m3r0p" "4a948952d1f4" "dsb")
   ("0yc64i7mpxhs4qlyyh59i2aiz0vpap0bn8slcsk8b71wd1d7cy5m" "153a16a13733" "el")
   ("0d4m5ji6ii10yap8y24cxx3fr60ba1jqi10hy3j1cq6ni7hzavga" "7ce17ae529ac" "en-CA")
   ("12jzqcfbgdhfm8f2gqp15bdnin62li07jwicjc8ynn4cl9a19xiz" "a25d9eea7c23" "en-GB")
   ("0gbb8hfc5yvjah63mapjxm53wxrf98srbrbg43b9g734zfi4n8y5" "4ed3471dad5d" "eo")
   ("19lw7zmqx2irjmv5y6r7nncp6nysn06abf10n3dzj5nzgays6sln" "853fe7acb415" "es-AR")
   ("0rq4pa380b77rkv6dq7sqx8a8i33jk3vs5rgcl8fv7slqvsw23kd" "921b67bf27a5" "es-CL")
   ("1dyxzab9hln5spch66wmfagfzmfdiaxgpq7qlzvdfg98wkqdj25n" "c9a210ea496c" "es-ES")
   ("1gwpmfl37wxl7rynqswgj41liljflgxydvljd4zdhk3jzqn605fb" "ddd35183d81c" "es-MX")
   ("0c3blniddklapifnjbz03f2frw24jjgwgwn6swl5mwm2z0y6wa9f" "82d23ffaa7d3" "et")
   ("05mq2df6n6fr8m5m2xwl0f6n1q3zgjrnk465ldx1nfr9agrhd36c" "13975626d549" "eu")
   ("1l1jyqqiy551903j6yzh9ayg1pf26q2hr9h3jj4l51xzp7x4ms2q" "039e1fdb7c71" "fa")
   ("091l05y9sggxznv0y11b9zy5qf146p0hb5faw4ix7yn5p5kca2f5" "7bd3722d82de" "ff")
   ("1lllwjvmbl5dx44fcvsqg08fbflkc8dx5as9n6nf4xlkzydx6izm" "39808e88c9d1" "fi")
   ("10ha955vvyf5vbciricm72kplj9j0s00g2333lmg46jiwi7aviiv" "426d373db6a7" "fr")
   ("11zdfk8jvdy1k9z1q162cwapplcbz35l3dq4mv45brdin3v0x8kr" "96cd93d18389" "fy-NL")
   ("1l5xr25gmssyachwmfprlnp2v2xj4b0hp8gxrf7fi5bvv9c2fynb" "de3daf7d3f9d" "ga-IE")
   ("06h9ijfsn1cgz5fvxxbisk7fvqhgsw99id92575hgyg1p8xb1n69" "f04aea656d9e" "gd")
   ("19913i5n8yyfhz9j21krlk7wqsyy89vggxc1m1swv94y2ix8rpaj" "1b8cdb87bf69" "gl")
   ("0k5x31bfl2l0r9b5dkn03frm1gd8n6igai7ch2f1kj0skflynwww" "82df570c4241" "gn")
   ("03rygnj9xhfvykark7dls117kwhid13ghvrsqiial0vp8m7ymx79" "e2e41d7beaa5" "gu-IN")
   ("0vyraplj1x7b5im15anhzdaq03k2gqfyybgklrd4f9ry6msh5jhx" "de724e943805" "he")
   ("1zqps586jrgxpf7xx2l3qw3ch3fr31r9a25y861fpxrpvh7ygw7g" "898598e1a5c6" "hi-IN")
   ("0czq68l3qdhdc0mgazlrh8x83a6d5qrjwgjv8xvsmmzi7h68ww0l" "2711d1515af0" "hr")
   ("1wwvrnm38gk2rnw4vmcranh8hk61gjcj9292pck3ckiv6mq7kd4s" "03e02f3d0676" "hsb")
   ("0yvgdxlbyhhg3lk43hxx9gx66rcm7gaj02zzzx5zni8dhvlk2v6m" "d423ada9dc00" "hu")
   ("1kjm7bg4990jhfbxwc38r4lqm2fbcxc82nc2d4qkqwikr4aah4b9" "06836af0bd6e" "hy-AM")
   ("1dla7r3snvagb7m985xxqyi7gl498cr5xsz8msw0zpg6xmi05rlx" "299bd950d538" "ia")
   ("0w8w9xn93akir7nqcp5iwr3kqvba5gbirg7gmzlzg7mgrhw8pcsa" "dee087477b99" "id")
   ("10iakv1c1d20ihxg1s7c3zc1zfw18vr2kspcw7bk5k02rmrffgcn" "320095d063ed" "is")
   ("1xn5pa3rc7l6k2migm3c0dx71q1hk7mjls045xpv9cy8gvirnj94" "4722680fb5bf" "it")
   ("0va9zfj3wqh1yvbgh3x808yvdyxkg780vazjg887wbxpfk1n6hxa" "cb3cfe294621" "ja")
   ("0qvjc3fhk6jg2c3g6mymmnslg1rkkxmv9gi3whf2bc5mzfgyc5zw" "7efe92bd7780" "ja-JP-mac")
   ("0zfiwwz0axbd219ar32c7a6b8h816sf04ajx6jl74s5kyij79y82" "4c1fe3a18da9" "ka")
   ("1aiik4758r5df76q2a132y5fjdjrsxshjylk7irwsr7yy0c7f63g" "acdf76048aa0" "kab")
   ("0icxh4sgv6m1yykycb9d9c43k3r6w02f9c6jr04wm8hvqq5icfl5" "9b418ff7936b" "kk")
   ("1cqlhggf46lr7w399k7qb7a1hc56f32w1dy26i2racpppzza5plc" "9771ada0b5f8" "km")
   ("0p04irnb7x7y37m6lz388x9dynn8rnk000avpp296barajnhs5i8" "645aa37a2112" "kn")
   ("1lbc1fxr5i0ccymlsd8axz3633cqggg5k8ak5yqwi704g7kvv9g2" "1cd68952d119" "ko")
   ("11b55bxg73zqfdn5gy9nn5imab2mv0hxr603whggp7vymllgb7kb" "26bb83959bfe" "lij")
   ("15jsijm6d26i0105gz0f7sh2yh2v4pmw4j95cwkdrb1d8m935jlz" "b9829891f153" "lt")
   ("0liwwv13fgyw97nizhsyy53xrbf8jks5ics7qkkxfccawjrg5rlb" "e5f09d03d959" "lv")
   ("0w420yf3hdnl7dp9mn9ghc20cq79k24fn9adn3syk723ppl6mkb0" "7884845e94f3" "mk")
   ("13wkr7rgqsv9w3d9w7k8lnxdzgfixsq4bmc27zsyc770l6062ml6" "030db7412202" "mr")
   ("06nsadcnxx0ssdp67x47dj9crihn1ycgd5mwvn5m7lkb97r4ch9f" "40a7703e875c" "ms")
   ("0mlnjdzck6dp9p59ajj3sr63r36fn0qi8r9scrqrqcisgfclw9sg" "daca40056531" "my")
   ("0z1hgx9d5i9w20f9k9azzng1y3lmm5d6hdjkj7rf6r5710bhhzh5" "664bd049e105" "nb-NO")
   ("1466qvrs13g2iix1k35cknb2pia9b66li2ncvdyqf0jsd92z9k8x" "eaa6ae781ba0" "ne-NP")
   ("0jgmz2lkzj0aspd9mabygzic6li5s2b25y0r6vjg8mv3jm5pi86j" "5ef8f1c9739e" "nl")
   ("1m46x0h20vdfbzjxlz0ac43dbaq40xnyldr2yzbf7pk5di9pzxa6" "f08e15466d5d" "nn-NO")
   ("0r3zvihqh6iya3z1qm7if0m3zfgf81s9qp7x7qc701h2q357wkgf" "6712c0e12ec2" "oc")
   ("102j89jm28c223yhhkrj76xxj4kmy58hcs2r0jn15xa1qkqv1fdk" "8f36cc819e00" "pa-IN")
   ("1j9za6s0i46abn8dsrlkpck3qxxw35rhfcg1xs1vp8sc4ckg8qwi" "c3b0c1c02b94" "pl")
   ("1k9lbsvckpwl4xax8kxp5yxsfkspq2mhqm77jh5nl9aw88dsn55b" "cc32bf9630fe" "pt-BR")
   ("0f0jyvbn2sa5m66wqdzh4607g4gd0270xq37ipd9ls52b4764bd8" "5478d7242086" "pt-PT")
   ("19znkkialh1d4np7qcp80xkagrf1j2xah2s1xxzsh854p3d30zs7" "dd934a76fb01" "rm")
   ("1xn26r8g8zzkb5myfgmnjbk8k4i0brkvbrvnhp7k5nkrnsin25di" "d57ab3dee73d" "ro")
   ("04rhkxlmpp5pyzw85ldbfkmiigqr2p9y5cbns5dqs6sz1633ccxp" "7aea98f33a20" "ru")
   ("1zzkkxl7ayxh5gx9snyvp5czflsvi77hp48li613h3c2fii4n9qk" "7c986f4b5044" "sco")
   ("1219i0ghhqj3s1i0rm68jjkvivh6y40938wav7z4ifck527sq6r1" "bc9e55d4e3ea" "si")
   ("05i5p3n3a6hgl6rf10yjs4vag7y3rn2jwgxsddcdcqiv6405zn81" "8814afd7f67e" "sk")
   ("1wcqdbm1py1ldq6cj2g201m715nql79r6szr71jvrxacb711c62a" "20013dc06e96" "sl")
   ("0g2izkaa4ipwgwyhy77ciyrxxpf4pxzj9mjqvxriy5prmkhm3zjs" "d86d5d2b6eef" "son")
   ("1cc99m6srjg8698dkc3il70crby0mdv43v3ijwy069k4w50hyjjg" "49bb5fae5d9b" "sq")
   ("13kfssq4fhq9mb36as6sxiaffl17qyg1wdw8kpz3ilqm86bsjrgl" "d6a0ab79b06f" "sr")
   ("1wx9snbm0431q97i0q0nv4wbsqcv9nhllwfr88crlp7bfj5w8czw" "4bab04993da3" "sv-SE")
   ("0laglkfl8ml0ip5vmm3z2q790hgwax9gfqwq3wm68a2nnsyck8fw" "4b3316c4aa48" "szl")
   ("15pnlic4q7m48y0mc5yh8w5yscjwzx0mmfrbj3f2b9jxxa44nx4h" "48c7aab86db8" "ta")
   ("16qar5y0wns75ryi8bfv7yln3mjsyn7qi4345zcniz3ydgkczh46" "7bbb3dac8f47" "te")
   ("112g7x8h0qz16r5faam386x4a0rgwd4zy02d5agmg9m0kbficdfx" "009fd0852454" "th")
   ("1l80kh9byqxnz5vkz357rb39g4y9sgn9pr0v29ywp6d009img1qg" "dad9caecd7a9" "tl")
   ("1nalvjlxxsa9wldhhdb93bgfc7dl084xayh7i7mgg93yjgrym93x" "0c48082d37cd" "tr")
   ("0wkxqcfgsra2ljws28kiwajv73w9aa8drsc4fqlg9krbicnjl2n8" "f6d105faedcc" "trs")
   ("18jf4ysrfv3635fyxc1vwr970dr2r05bl3h8v599pwp2g7jzyjpm" "e1011388a55e" "uk")
   ("1ihmksjsz54yii23qda5iv8cxrj9144afy75hzhvfi6m182kj4h8" "c4e927eab511" "ur")
   ("0d42dhfa2vcw24wsvwf95pw20np0pz8c0is6p4307n981n8s207y" "7063df917cb3" "uz")
   ("04khnkrg8css55hyna01jqay9c2ppxk5znbx2zj9i25knhvvx1lq" "1753054e6ab8" "vi")
   ("0fi5kxn78xp7s15svkqlf4748j4pzxh941nm52n6kbbrhyi3qcqn" "93bc595dc32e" "xh")
   ("0jg676vd37wqgzjnm0yynj7xrvm6fsgdwg296h78wnyc33zc4ads" "edd4e468bc31" "zh-CN")
   ("1y4wldm3z95mfjlficp994jyqg0lj07wi35b79dy1s8ljy3jilil" "0bad1f7d2b2d" "zh-TW")))

(define %icecat-102-base-version "102.15.1")
(define %icecat-102-version (string-append %icecat-102-base-version "-guix0-preview1"))

;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
;; script from the upstream IceCat project.
(define icecat-102-source
  (let* ((major-version (first  (string-split %icecat-102-base-version #\.)))
         (minor-version (second (string-split %icecat-102-base-version #\.)))
         (sub-version   (third  (string-split %icecat-102-base-version #\.)))

         (upstream-firefox-version (string-append %icecat-102-base-version "esr"))
         (upstream-firefox-source
          (origin
            (method url-fetch)
            (uri (string-append
                  "https://ftp.mozilla.org/pub/firefox/releases/"
                  upstream-firefox-version "/source/"
                  "firefox-" upstream-firefox-version ".source.tar.xz"))
            (sha256
             (base32
              "04q1fjninm9lw721xgv0c2fknicc24s8iaimkabwcfwmcnvly689"))))

         ;; The upstream-icecat-base-version may be older than the
         ;; %icecat-base-version.
         (upstream-icecat-base-version "102.15.0")
         (gnuzilla-commit "400fbfdbc0c1ac9c68c9f52fd2ab6899bc8e8bd0")
         (gnuzilla-source
          (origin
            (method git-fetch)
            (uri (git-reference
                  (url "git://git.savannah.gnu.org/gnuzilla.git")
                  (commit gnuzilla-commit)))
            (file-name (git-file-name "gnuzilla"
                                      ;;upstream-icecat-base-version
                                      (string-take gnuzilla-commit 8)))
            (sha256
             (base32
              "1fqrf94a5vnjq56zyyxlc1zsvbblgmzcks760nj1szpws4y91m8r"))))

         ;; 'search-patch' returns either a valid file name or #f, so wrap it
         ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
         (makeicecat-patch
          (local-file (assume-valid-file-name
                       (search-patch "icecat-102-makeicecat.patch")))))

    (origin
      (method computed-origin-method)
      (file-name (string-append "icecat-" %icecat-102-version ".tar.xz"))
      (sha256 #f)
      (uri
       (delay
        (with-imported-modules '((guix build utils))
          #~(begin
              (use-modules (guix build utils))
              (let ((firefox-dir
                     (string-append "firefox-" #$%icecat-102-base-version))
                    (icecat-dir
                     (string-append "icecat-" #$%icecat-102-version)))

                (set-path-environment-variable
                 "PATH" '("bin")
                 (list #+python
                       #+(canonical-package bash)
                       #+(canonical-package coreutils)
                       #+(canonical-package findutils)
                       #+(canonical-package patch)
                       #+(canonical-package xz)
                       #+(canonical-package sed)
                       #+(canonical-package grep)
                       #+(canonical-package bzip2)
                       #+(canonical-package gzip)
                       #+(canonical-package tar)))

                (set-path-environment-variable
                 "PYTHONPATH"
                 (list #+(format #f "lib/python~a/site-packages"
                                 (version-major+minor
                                  (package-version python))))
                 '#+(cons python-jsonschema
                          (map second
                               (package-transitive-propagated-inputs
                                python-jsonschema))))

                ;; We copy the gnuzilla source directory because it is
                ;; read-only in 'gnuzilla-source', and the makeicecat script
                ;; uses "cp -a" to copy parts of it and assumes that the
                ;; copies will be writable.
                (copy-recursively #+gnuzilla-source "/tmp/gnuzilla"
                                  #:log (%make-void-port "w"))

                (with-directory-excursion "/tmp/gnuzilla"
                  (make-file-writable "makeicecat")
                  (invoke "patch" "--force" "--no-backup-if-mismatch"
                          "-p1" "--input" #+makeicecat-patch)
                  (patch-shebang "makeicecat")
                  (substitute* "makeicecat"
                    (("^readonly FFMAJOR=(.*)" all ffmajor)
                     (unless (string=? #$major-version
                                       (string-trim-both ffmajor))
                       ;; The makeicecat script cannot be expected to work
                       ;; properly on a different version of Firefox, even if
                       ;; no errors occur during execution.
                       (error "makeicecat major version mismatch"))
                     (string-append "readonly FFMAJOR=" #$major-version "\n"))
                    (("^readonly FFMINOR=.*")
                     (string-append "readonly FFMINOR=" #$minor-version "\n"))
                    (("^readonly FFSUB=.*")
                     (string-append "readonly FFSUB=" #$sub-version "\n"))
                    (("^readonly DATADIR=.*")
                     "readonly DATADIR=/tmp/gnuzilla/data\n")
                    (("^readonly SOURCEDIR=.*")
                     (string-append "readonly SOURCEDIR=" icecat-dir "\n"))
                    (("/bin/sed")
                     #+(file-append (canonical-package sed) "/bin/sed"))))

                (format #t "Unpacking upstream firefox tarball...~%")
                (force-output)
                (invoke "tar" "xf" #+upstream-firefox-source)
                (rename-file firefox-dir icecat-dir)

                (with-directory-excursion icecat-dir
                  (format #t "Populating l10n directory...~%")
                  (force-output)
                  (mkdir "l10n")
                  (with-directory-excursion "l10n"
                    (for-each
                     (lambda (locale-dir)
                       (let ((locale
                              (string-drop (basename locale-dir)
                                           (+ 32  ; length of hash
                                              (string-length "-mozilla-locale-")))))
                         (format #t "  ~a~%" locale)
                         (force-output)
                         (copy-recursively locale-dir locale
                                           #:log (%make-void-port "w"))
                         (for-each make-file-writable (find-files locale))
                         (with-directory-excursion locale
                           (when (file-exists? ".hgtags")
                             (delete-file ".hgtags"))
                           (mkdir-p "browser/chrome/browser/preferences")
                           (call-with-output-file
                               "browser/chrome/browser/preferences/advanced-scripts.dtd"
                             (lambda (port) #f)))))
                     '#+all-mozilla-102-locales)
                    (copy-recursively #+mozilla-compare-locales
                                      "compare-locales"
                                      #:log (%make-void-port "w"))
                    (delete-file "compare-locales/.gitignore")
                    (delete-file "compare-locales/.hgignore")
                    (delete-file "compare-locales/.hgtags")))

                (format #t "Running makeicecat script...~%")
                (force-output)
                (invoke "bash" "/tmp/gnuzilla/makeicecat")

                (format #t "Packing IceCat source tarball...~%")
                (force-output)
                (setenv "XZ_DEFAULTS" (string-join (%xz-parallel-args)))
                (invoke "tar" "cfa" #$output
                        ;; Avoid non-determinism in the archive.  We set the
                        ;; mtime of files in the archive to early 1980 because
                        ;; the build process fails if the mtime of source
                        ;; files is pre-1980, due to the creation of zip
                        ;; archives.
                        "--mtime=@315619200" ; 1980-01-02 UTC
                        "--owner=root:0"
                        "--group=root:0"
                        "--sort=name"
                        icecat-dir)))))))))

(define %icedove-build-id "20230830000000") ;must be of the form YYYYMMDDhhmmss
(define %icedove-version "102.15.0")


@@ 1214,7 1511,7 @@ list of languages supported as well as the currently used changeset."
               ;; Extract the base Icecat tarball, renaming its top-level
               ;; directory.
               (invoke "tar" "--transform" (string-append "s,[^/]*," #$name ",")
                       "-xf" #$icecat-source)
                       "-xf" #$icecat-102-source)
               (chdir #$name)

               ;; Merge the Thunderdbird localization data.


@@ 1671,14 1968,12 @@ their corresponding VERSION, SOURCE and LOCALES variables."
                       (mkdir-p all-ext)
                       (symlink (string-append ext-dir "/" name)
                                (string-append all-ext "/" name)))))
                 (if (eq? 'icedove '#$project)
                     '#$%icedove-locales
                     '#$%icecat-locales)))))))
                 '#$locales))))))
      (native-inputs
       (list m4
             perl
             python-wrapper
             node
             node-lts
             unzip))
      (home-page "https://www.mozilla.org/")
      (synopsis (string-append "Language localization data for " name))

M gnu/packages/guile-xyz.scm => gnu/packages/guile-xyz.scm +5 -3
@@ 799,7 799,7 @@ tables.")
                         (replace "guile-lib" guile2.2-lib)
                         (replace "guile-smc" guile2.2-smc)))))

(define-public guile-fibers-1.3
(define-public guile-fibers
  (package
    (name "guile-fibers")
    (version "1.3.1")


@@ 856,9 856,11 @@ is not available for Guile 2.0.")
    (properties '((upstream-name . "fibers")))
    (license license:lgpl3+)))

(define-public guile-fibers-1.3 guile-fibers)

(define-public guile-fibers-1.1
  (package
    (inherit guile-fibers-1.3)
    (inherit guile-fibers)
    (version "1.1.1")
    (source (origin
              (method git-fetch)


@@ 886,7 888,7 @@ is not available for Guile 2.0.")
     ;; <https://github.com/wingo/fibers/pull/53>.
     (filter (cut string-suffix? "-linux" <>) %supported-systems))))

(define-public guile-fibers
(define-public guile-fibers-1.0
  (package
    (inherit guile-fibers-1.1)
    (version "1.0.0")

M gnu/packages/hardware.scm => gnu/packages/hardware.scm +39 -0
@@ 16,6 16,7 @@
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2023 Spencer Skylar Chan <schan12@umd.edu>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 80,6 81,7 @@
  #:use-module (gnu packages protobuf)
  #:use-module (gnu packages pulseaudio)
  #:use-module (gnu packages python)
  #:use-module (gnu packages python-crypto)
  #:use-module (gnu packages python-web)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages qt)


@@ 99,6 101,7 @@
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system meson)
  #:use-module (guix build-system perl)
  #:use-module (guix build-system pyproject)
  #:use-module (guix build-system python)
  #:use-module (guix download)
  #:use-module (guix gexp)


@@ 798,6 801,42 @@ specific SMBIOS tables.")
    (license
     (list license:osl2.1 license:gpl2+ license:bsd-3 license:boost1.0))))

(define-public liquidctl
  (package
    (name "liquidctl")
    (version "1.13.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/liquidctl/liquidctl")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0hpxkrfxm9c4v5ld7bh6qs9fmq9imz8s5i9l0l78l47bcm12nkrd"))))
    (build-system pyproject-build-system)
    (arguments
     (list #:phases
           #~(modify-phases %standard-phases
               (add-before 'check 'set-runtime-dir
                 (lambda _
                   (setenv "XDG_RUNTIME_DIR" "/tmp"))))))
    (native-inputs (list python-pytest))
    (propagated-inputs
     (list python-colorlog
           python-crcmod
           python-docopt
           python-hidapi
           python-pillow
           python-pyusb
           python-smbus))
    (home-page "https://github.com/liquidctl/liquidctl")
    (synopsis "Drivers and tools for liquid cooling equipment")
    (description "Liquidctl is a package with tools, drivers and a Python
library to work with liquid cooling equipment such as @acronym{AIO, All-In-One}
coolers, fan controllers and other devices.")
    (license license:gpl3+)))

;; Distinct from memtest86, which is obsolete.
(define-public memtest86+
  (package

M gnu/packages/image-processing.scm => gnu/packages/image-processing.scm +42 -7
@@ 592,12 592,8 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
             ;; would get a compile error later:
             "-DPROTOBUF_UPDATE_FILES=ON"

             ;; xfeatures2d disabled, because it downloads extra binaries from
             ;; https://github.com/opencv/opencv_3rdparty
             ;; defined in xfeatures2d/cmake/download_{vgg|bootdesc}.cmake
             ;; Cmp this bug entry:
             ;; https://github.com/opencv/opencv_contrib/issues/1131
             "-DBUILD_opencv_xfeatures2d=OFF")
             ;; For xfeatures2d.
             "-DOPENCV_SKIP_FEATURES2D_DOWNLOADING=ON")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'disable-broken-tests


@@ 655,7 651,18 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
             (copy-recursively (assoc-ref inputs "opencv-extra")
                               "../opencv-extra")
             (copy-recursively (assoc-ref inputs "opencv-contrib")
                               "../opencv-contrib")))
                               "../opencv-contrib")

             ;; Disable downloads of Boost and VGG descriptors as we include
             ;; them in native inputs.
             (substitute* "../opencv-contrib/modules/xfeatures2d/CMakeLists.txt"
               (("download_(boost|vgg)_descriptors") "#"))
             (copy-recursively (assoc-ref inputs "opencv-3rdparty-boost")
                               "../downloads/xfeatures2d")
             (for-each make-file-writable
                       (find-files "../downloads/xfeatures2d" "."))
             (copy-recursively (assoc-ref inputs "opencv-3rdparty-vgg")
                               "../downloads/xfeatures2d")))
         (add-after 'build 'do-not-install-3rdparty-file
           (lambda _
             (substitute* "cmake_install.cmake"


@@ 673,6 680,34 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("xorg-server" ,xorg-server-for-tests) ;For running the tests
       ;; These are files that are derived from the binary descriptors that
       ;; are part of the BinBoost package.  The BinBoost package is released
       ;; under GPLv2+.  See
       ;; https://www.epfl.ch/labs/cvlab/research/descriptors-and-keypoints/research-detect-binboost/
       ;; See xfeatures2d/cmake/download_boostdesc.cmake for commit hash.
       ("opencv-3rdparty-boost"
        ,(let ((commit "34e4206aef44d50e6bbcd0ab06354b52e7466d26"))
           (origin
             (method git-fetch)
             (uri (git-reference (url "https://github.com/opencv/opencv_3rdparty")
                                 (commit commit)))
             (file-name (git-file-name "opencv_3rdparty" commit))
             (sha256
              (base32
               "13yig1xhvgghvxspxmdidss5lqiikpjr0ddm83jsi0k85j92sn62")))))
       ;; These are the Visual Geometry Group descriptors, released under
       ;; BSD-3.  They are generated files produced by the DLCO framework.
       ;; See xfeatures2d/cmake/download_vgg.cmake for commit hash.
       ("opencv-3rdparty-vgg"
        ,(let ((commit "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d"))
           (origin
             (method git-fetch)
             (uri (git-reference (url "https://github.com/opencv/opencv_3rdparty")
                                 (commit commit)))
             (file-name (git-file-name "opencv_3rdparty" commit))
             (sha256
              (base32
               "0r9fam8dplyqqsd3qgpnnfgf9l7lj44di19rxwbm8mxiw0rlcdvy")))))
       ("opencv-extra"
        ,(origin
           (method git-fetch)

M gnu/packages/image.scm => gnu/packages/image.scm +4 -5
@@ 1765,23 1765,22 @@ PNG, and performs PNG integrity checks and corrections.")
(define-public imgp
  (package
    (name "imgp")
    (version "2.8")
    (version "2.9")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "imgp" version))
       (sha256
        (base32 "0q99h9wv9rynig0s0flnr9mxi541zzl0gw8vh4y6m5x132diilri"))))
        (base32 "0avdgr4fx643jg9wzwm65y14s56bnrn3hmkw7v0mcyvxn88vxwiq"))))
    (build-system python-build-system)
    (arguments
     `(#:tests? #f ;there are no tests
     `(#:tests? #f                      ;there are no tests
       #:phases
       (modify-phases %standard-phases
         ;; setup.py expects the file to be named 'imgp'.
         (add-after 'unpack 'rename-imgp
           (lambda _
             (rename-file "imgp.py" "imgp")
             #t)))))
             (rename-file "imgp.py" "imgp"))))))
    (inputs
     (list python-pillow))
    (home-page "https://github.com/jarun/imgp")

M gnu/packages/julia-jll.scm => gnu/packages/julia-jll.scm +1 -1
@@ 1792,7 1792,7 @@ build tree Yggdrasil.")
              ;; There's a Julia file for each platform, override them all
              (find-files "src/wrappers/" "\\.jl$")))))))
    (inputs
     (list wcslib))
     (list wcslib-7.12))
    (propagated-inputs
     (list julia-jllwrappers))
    (home-page "https://github.com/JuliaBinaryWrappers/WCS_jll.jl")

M gnu/packages/julia-xyz.scm => gnu/packages/julia-xyz.scm +27 -22
@@ 231,7 231,7 @@ no issues with the upgrade.")
(define-public julia-arraylayouts
  (package
    (name "julia-arraylayouts")
    (version "0.8.16")
    (version "0.8.18")
    (source
      (origin
        (method git-fetch)


@@ 240,16 240,19 @@ no issues with the upgrade.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32 "1j11jid4scw9icrbr8g6myp17nabjzmf4f40cichb20lzf1agz8l"))))
         (base32 "11h0w1bqw2md5gh4dfmm1aazifcs2ydrc47hqzvav1xrx25b57z5"))))
    (build-system julia-build-system)
    (arguments
     (list
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'adjust-tests
             (lambda _
               (substitute* "test/test_layoutarray.jl"
                 (("@test all\\(B") "@test_broken all(B")))))))
     (if (not (target-x86-64?))
         ;; This test is only broken when using openblas, not openblas-ilp64.
         (list
           #:phases
           #~(modify-phases %standard-phases
               (add-after 'unpack 'adjust-tests
                 (lambda _
                   (substitute* "test/test_layoutarray.jl"
                     (("test all\\(B") "test_broken all(B"))))))
         '()))
    (propagated-inputs
     (list julia-fillarrays))
    (native-inputs


@@ 387,7 390,17 @@ axes, allowing column names or interval selections.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32 "0nrcasjdpwf15z7l2lzyhxjqxlnqk5if78s15sh4gdgxf9kzj3a6"))))
         (base32 "0nrcasjdpwf15z7l2lzyhxjqxlnqk5if78s15sh4gdgxf9kzj3a6"))
        (snippet
         #~(begin
             (use-modules (guix build utils))
             ;; From upstream commit 8bbf901bb7fb417fe90be26e0cd9a141cfdfe19c,
             ;; included in 0.17.34.
             (substitute* "src/BandedMatrices.jl"
               (("const libblas = Base\\.libblas_name")
                "const libblas = LinearAlgebra.BLAS.libblas")
               (("const liblapack = Base\\.liblapack_name")
                "const liblapack = LinearAlgebra.BLAS.liblapack"))))))
    (build-system julia-build-system)
    (propagated-inputs
     (list julia-aqua


@@ 2483,7 2496,7 @@ update step.")
(define-public julia-genericlinearalgebra
  (package
    (name "julia-genericlinearalgebra")
    (version "0.2.5")
    (version "0.3.0")
    (source
      (origin
        (method git-fetch)


@@ 2492,16 2505,8 @@ update step.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32 "0ndwypa397z3pwzdgc3s9plaqlqf63g3d4px5pvym5psgr6lnm3l"))))
         (base32 "16k1r02w5qivvr99n5a9impbnnzygpj705irf5ypy208np91xyyd"))))
    (build-system julia-build-system)
    (arguments
     (list
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'link-depot 'adjust-test-suite
            (lambda _
              (substitute* "test/runtests.jl"
                ((".*lapack.*") "")))))))
    (native-inputs
     (list julia-quaternions))
    (home-page "https://github.com/JuliaLinearAlgebra/GenericLinearAlgebra.jl")


@@ 5538,7 5543,7 @@ a loadable module.")
(define-public julia-scanbyte
  (package
    (name "julia-scanbyte")
    (version "0.3.2")
    (version "0.4.0")
    (source
      (origin
        (method git-fetch)


@@ 5547,7 5552,7 @@ a loadable module.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32 "1c18hkcb0h6l437v2s02kijjkyly91mqark84czvh8yzxm19hr7k"))))
         (base32 "1ww7bbh02s4l917dwkzg9pq71xk0db2rba247vz1xfm24msi8lwj"))))
    (build-system julia-build-system)
    (propagated-inputs
     (list julia-simd))

M gnu/packages/julia.scm => gnu/packages/julia.scm +14 -8
@@ 269,7 269,10 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
               (substitute* (jlpath "nghttp2")
                 (((from "libnghttp2")) (to "libnghttp2" "libnghttp2")))
               (substitute* (jlpath "OpenBLAS")
                 (((from "libopenblas")) (to "openblas" "libopenblas")))
                 (((from "libopenblas"))
                  ,@(if (target-x86-64?)
                      `((to "openblas" "libopenblas64_" "libopenblas"))
                      `((to "openblas" "libopenblas")))))
               (substitute* (jlpath "OpenLibm")
                 (((from "libopenlibm")) (to "openlibm" "libopenlibm")))
               (substitute* (jlpath "PCRE2")


@@ 479,12 482,13 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
         "NO_GIT=1"             ; build from release tarball.
         "USE_GPL_LIBS=1"       ; proudly

         ,@(if (target-aarch64?)
             `("USE_BLAS64=0")
             '())

         "LIBBLAS=-lopenblas"
         "LIBBLASNAME=libopenblas"
         ,@(if (target-x86-64?)
             `("USE_BLAS64=1"
               "LIBBLAS=-lopenblas64_"
               "LIBBLASNAME=libopenblas64_")
             `("USE_BLAS64=0"
               "LIBBLAS=-lopenblas"
               "LIBBLASNAME=libopenblas"))

         (string-append "UTF8PROC_INC="
                        (assoc-ref %build-inputs "utf8proc")


@@ 513,7 517,9 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
       ("llvm" ,llvm-julia)
       ("mbedtls-apache" ,mbedtls-apache)
       ("mpfr" ,mpfr)
       ("openblas" ,openblas)
       ,@(if (target-x86-64?)
             `(("openblas" ,openblas-ilp64))
             `(("openblas" ,openblas)))
       ("openlibm" ,openlibm)
       ("p7zip" ,p7zip)
       ("pcre2" ,pcre2)

M gnu/packages/libusb.scm => gnu/packages/libusb.scm +47 -20
@@ 288,29 288,56 @@ wrapper for accessing libusb-1.0.")
         "1fg7knfzybzija2b01pzrzhzsj989scl12sb2ra4f503l8279k54"))))
    (build-system python-build-system)
    (arguments
     `(#:tests? #f                      ; no tests
       #:modules ((srfi srfi-1)
                  (srfi srfi-26)
                  (guix build utils)
                  (guix build python-build-system))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-libusb-reference
           (lambda* (#:key inputs #:allow-other-keys)
             (substitute* "usb/libloader.py"
               (("lib = locate_library\\(candidates, find_library\\)")
                (string-append
                 "lib = \""
                 (find (negate symbolic-link?)
                       (find-files (assoc-ref inputs "libusb")
                                   "^libusb-.*\\.so\\..*"))
                 "\"")))
             #t)))))

     (list #:modules '((srfi srfi-1)
                       (srfi srfi-26)
                       (guix build utils)
                       (guix build python-build-system))
           #:phases
           #~(modify-phases %standard-phases
               ;; Repurpose the candidates parameter to be the path to the
               ;; library, then on each backend we substitute the candidates
               ;; with the full path to the .so library or with None if not
               ;; supported.
               ;;
               ;; While most applications could use a single back-end this
               ;; library allows to manually select the back-end so it is
               ;; appropriate to provide as much back-ends as possible.
               (add-after 'unpack 'fix-libusb-reference
                 (lambda* (#:key inputs #:allow-other-keys)
                   (let ((libusb0 (find
                                    (negate symbolic-link?)
                                    (find-files (assoc-ref inputs "libusb-compat")
                                                "^libusb-.*\\.so\\..*")))
                         (libusb1 (find
                                    (negate symbolic-link?)
                                    (find-files (assoc-ref inputs "libusb")
                                                "^libusb-.*\\.so\\..*"))))
                     (substitute* "usb/libloader.py"
                       (("lib = locate_library\\(candidates, find_library\\)")
                        "lib = candidates"))
                     (substitute* "usb/backend/libusb0.py"
                       (("\\('usb-0\\.1', 'usb', 'libusb0'\\)")
                        (format #f "~s" libusb0)))
                     (substitute* "usb/backend/libusb1.py"
                       (("\\('usb-1\\.0', 'libusb-1\\.0', 'usb'\\)")
                        (format #f "~s" libusb1)))
                     ;; FIXME: OpenUSB is not packaged for GNU Guix.
                     (substitute* "usb/backend/openusb.py"
                       (("\\('openusb',\\)") "None")))))
               ;; Note: tests seems to succeed with libusb-compat as libusb
               ;; fails because it doesn't have a usbfs present in the build
               ;; environment.
               (replace 'check
                 (lambda* (#:key tests? #:allow-other-keys)
                   (when tests?
                     (with-directory-excursion "tests"
                       (setenv "PYUSB_DEBUG" "debug")
                       (setenv "LIBUSB_DEBUG" "4")
                       (invoke "python" "testall.py"))))))))
    (native-inputs
     (list python-setuptools-scm))
    (inputs
     (list libusb))
     (list libusb libusb-compat))
    (home-page "https://pyusb.github.io/pyusb/")
    (synopsis "Python bindings to the libusb library")
    (description

M gnu/packages/linux.scm => gnu/packages/linux.scm +29 -3
@@ 75,6 75,7 @@
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 dan <i@dan.games>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 188,6 189,7 @@
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system go)
  #:use-module (guix build-system meson)
  #:use-module (guix build-system pyproject)
  #:use-module (guix build-system python)
  #:use-module (guix build-system trivial)
  #:use-module (guix build-system linux-module)


@@ 4963,6 4965,29 @@ SMBus access.")
        #~(list (string-append "prefix=" #$output)
                (string-append "CC=" #$(cc-for-target))))))))

(define-public python-smbus
  (package
    (inherit i2c-tools)
    (name "python-smbus")
    (build-system pyproject-build-system)
    (arguments
     (list #:tests? #f ;; No test suite.
           #:phases
           #~(modify-phases %standard-phases
               (add-after 'unpack 'change-directory
                 (lambda _ (chdir "py-smbus")))
               (add-after 'change-directory 'set-library-path
                 (lambda _
                   (substitute* "setup.py"
                     (("-L\\.\\./lib")
                      (string-append "-L" #$(this-package-input "i2c-tools")
                                     "/lib"))))))))
    (inputs (list i2c-tools))
    (synopsis "I2C/SMBus access for Python")
    (description "This package provides a Python library to access
@acronym{I2C, Inter-Integrated Circuit} and @acronym{SMBus, System
Management Bus} devices on Linux.")))

(define-public xsensors
  (package
    (name "xsensors")


@@ 9751,7 9776,7 @@ kernel side implementation.")
(define-public erofs-utils
  (package
    (name "erofs-utils")
    (version "1.5")
    (version "1.7")
    (source
     (origin
       (method git-fetch)


@@ 9760,11 9785,12 @@ kernel side implementation.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0rgkw3b924xdg49v3qi8a10w41zfk276wb6fp71lb9q9cfc81idw"))))
        (base32 "0bi8n1kb263v1gvis21pa9dxsf3p96d1nasm21icmv3rd9g2xh6p"))))
    (build-system gnu-build-system)
    (inputs
     (list lz4
           `(,util-linux "lib")))
           `(,util-linux "lib")
           zlib))
    (native-inputs
     (list autoconf automake libtool pkg-config))
    (home-page "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/")

M gnu/packages/lisp-xyz.scm => gnu/packages/lisp-xyz.scm +3 -3
@@ 2215,8 2215,8 @@ antialiased TrueType font rendering using CLX and XRender extension.")
  (sbcl-package->ecl-package sbcl-clx-truetype))

(define-public sbcl-slynk
  (let ((commit "82b20a9a83209b4dbfbfb62a1536896aed5f85f7")
        (revision "7"))
  (let ((commit "df62abae73bd511885c9c7ec0ea7ea1469a00923")
        (revision "8"))
    (package
      (name "sbcl-slynk")
      (version (git-version "1.0.43" revision commit))


@@ 2228,7 2228,7 @@ antialiased TrueType font rendering using CLX and XRender extension.")
           (url "https://github.com/joaotavora/sly")
           (commit commit)))
         (sha256
          (base32 "0dvr36qvb490gml0znay0slw63czp7azvajnv7srh8s0j8pqpcaj"))
          (base32 "1nxijv52bja6la2i3asq7kklpj5li25454n52sgsc6xnnfvakbsv"))
         (file-name (git-file-name "cl-slynk" version))))
      (build-system asdf-build-system/sbcl)
      (outputs '("out" "image"))

M gnu/packages/machine-learning.scm => gnu/packages/machine-learning.scm +2 -2
@@ 1524,7 1524,7 @@ for scientific computing and data science (e.g. BLAS and OpenMP).")
(define-public python-tslearn
  (package
    (name "python-tslearn")
    (version "0.6.1")
    (version "0.6.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 1533,7 1533,7 @@ for scientific computing and data science (e.g. BLAS and OpenMP).")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1fhs8c28hdqsyj8kdhzrmrxrh4w92x6nf3gm026xapp9divvljd6"))))
                "0l9l21jy78mhajdfwyx8rskw08597vg55ff22bjkv6xrjjr9g4ac"))))
    (build-system pyproject-build-system)
    (arguments
     (list

M gnu/packages/mail.scm => gnu/packages/mail.scm +6 -6
@@ 1625,14 1625,14 @@ system, written in the Mercury language.")
(define-public muchsync
  (package
    (name "muchsync")
    (version "6")
    (version "7")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "http://www.muchsync.org/src/"
                           "muchsync-" version ".tar.gz"))
       (uri (string-append "https://www.muchsync.org/src/" "muchsync-"
                           version ".tar.gz"))
       (sha256
        (base32 "1s799kx16nm5ry1fcqcc0grgxrwnnp4cnzd0hzwbkvc5v2sf6g8b"))))
        (base32 "1b5ylf0xgb59x6hna5gllm6nb1jn50wqvp7xfls83x0frmpjygpq"))))
    (build-system gnu-build-system)
    (native-inputs
     (list pandoc pkg-config))


@@ 3171,14 3171,14 @@ from the Cyrus IMAP project.")
(define-public opensmtpd
  (package
    (name "opensmtpd")
    (version "7.3.0p1")
    (version "7.3.0p2")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://www.opensmtpd.org/archives/"
                           "opensmtpd-" version ".tar.gz"))
       (sha256
        (base32 "01ss6j1jadnd3ckgf9zpvrbdpipkf7m4l3isribqfwy2l50wsihv"))))
        (base32 "0kjs5cxbh9lq51b8p20hxmiah61cfm8yzkcwpw9005cdp72zpkgw"))))
    (build-system gnu-build-system)
    (inputs
     (list bdb

M gnu/packages/markup.scm => gnu/packages/markup.scm +15 -15
@@ 332,28 332,28 @@ convert HTML to Markdown.")
(define-public cmark
  (package
    (name "cmark")
    (version "0.30.2")
    (version "0.30.3")
    (source (origin
             (method git-fetch)
             (uri (git-reference
                    (url "https://github.com/jgm/cmark")
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/commonmark/cmark")
                    (commit version)))
             (file-name (git-file-name name version))
             (sha256
              (base32
               "1426snw3mq8qmpdxznkhsyy75xd9v9nwlc7sph08qpdz8xnp4hr2"))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "07d30s5v893nb1m7qbam5c3x9b3d84m80kzlj7fmkwhgjrlz7d7z"))))
    (build-system cmake-build-system)
    (arguments
     '(#:test-target "test"))
    (native-inputs (list python))
    (synopsis "CommonMark Markdown reference implementation")
    (description "CommonMark is a strongly defined, highly compatible
specification of Markdown.  cmark is the C reference implementation of
CommonMark.  It provides @code{libcmark} shared library for parsing
CommonMark to an abstract syntax tree (@dfn{AST}) and rendering the document
as HTML, groff man, LaTeX, CommonMark, or an XML representation of the
AST.  The package also provides the command-line program @command{cmark}
for parsing and rendering CommonMark.")
    (description
     "CommonMark is a strongly defined, highly compatible specification of
Markdown.  @code{cmark} is the C reference implementation of CommonMark.  It
provides the @code{libcmark} shared library for parsing CommonMark to an
abstract syntax tree (@dfn{AST}) and rendering the document as HTML, groff man,
LaTeX, CommonMark, or an XML representation of the AST.  It also provides the
command-line program @command{cmark} for parsing and rendering CommonMark.")
    (home-page "https://commonmark.org")
    ;; cmark is distributed with a BSD-2 license, but some components are Expat
    ;; licensed. The CommonMark specification is Creative Commons CC-BY-SA 4.0

M gnu/packages/maths.scm => gnu/packages/maths.scm +45 -17
@@ 1742,27 1742,52 @@ System (Grid, Point and Swath).")
(define-public hdf-eos5
  (package
    (name "hdf-eos5")
    (version "1.15")
    (source (origin
              (method url-fetch)
              (uri (string-append "ftp://edhs1.gsfc.nasa.gov\
/edhs/hdfeos5/latest_release/HDF-EOS5." version ".tar.Z"))
              (sha256
               (base32
                "1p83333nzzy8rn5chxlm0hrkjjnhh2w1ji8ac0f9q4xzg838i58i"))
              (patches (search-patches "hdf-eos5-build-shared.patch"
                                       "hdf-eos5-remove-gctp.patch"
                                       "hdf-eos5-fix-szip.patch"
                                       "hdf-eos5-fortrantests.patch"))))
    (version "2.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append
             "https://git.earthdata.nasa.gov/projects/DAS/repos/hdfeos5/raw/"
             "hdf-eos5-" version "-src.tar.gz?at=refs/heads/HDFEOS5_" version))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0by82zznms00b0d5v4iv8a7jff6xm9hzswsx4mfzw2gyy1q4ghyp"))
       (modules '((guix build utils)))
       (snippet
        #~(begin
            (for-each delete-file (find-files "." "Makefile\\.in$"))
            (for-each delete-file (find-files "m4" "^l.*\\.m4$"))
            (delete-file "configure")
            (delete-file "aclocal.m4")))))
    (native-inputs
     (list gfortran))
     (list autoconf automake gfortran libtool))
    (build-system gnu-build-system)
    (inputs
     (list hdf5-1.8 zlib gctp))
     (list hdf5-1.14 zlib gctp))
    (arguments
     `(#:configure-flags '("--enable-install-include" "--enable-shared"
     (list
      #:configure-flags ''("--enable-install-include" "--enable-shared"
                           "CC=h5cc -Df2cFortran" "LIBS=-lgctp")
       #:parallel-tests? #f))
      #:parallel-tests? #f
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'remove-single_module-flag
            (lambda _
              (substitute* "src/Makefile.am"
                ((",-single_module") ""))))
          (add-after 'unpack 'fix-parallel-tests
            (lambda _
              (substitute* (find-files "testdrivers" "\\.c$")
                (("#include <HE5_HdfEosDef.h>" orig)
                 (string-append "#include <HE5_config.h>\n" orig)))
              ;; pthread is already linked.
              (substitute* "testdrivers/threads/Makefile.am"
                (("(LDADD=\\$\\(LIBHDFEOS5\\) \\$\\(LIBGCTP\\)) pthread" _ rest)
                 rest))
              ;; This file is missing in the testdrivers/threads directory.
              (copy-file "testdrivers/point/simple.txt"
                         "testdrivers/threads/simple.txt"))))))
    (synopsis "HDF5-based data format for NASA's Earth Observing System")
    (description
     "HDF-EOS5 is a software library built on HDF5 to support the construction


@@ 4636,7 4661,10 @@ parts of it.")
    (arguments
     (substitute-keyword-arguments (package-arguments openblas)
       ((#:make-flags flags #~'())
        #~(append (list "INTERFACE64=1" "LIBNAMESUFFIX=ilp64")
        ;; These should be '64' but julia hardcodes '64_'.
        #~(append (list "INTERFACE64=1"
                        "SYMBOLSUFFIX=64_"
                        "LIBPREFIX=libopenblas64_")
                 #$flags))))
    (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
    (license license:bsd-3)))

M gnu/packages/messaging.scm => gnu/packages/messaging.scm +88 -66
@@ 148,6 148,7 @@
  #:use-module (guix build-system meson)
  #:use-module (guix build-system perl)
  #:use-module (guix build-system python)
  #:use-module (guix build-system pyproject)
  #:use-module (guix build-system qt)
  #:use-module (guix build-system trivial)
  #:use-module (guix download)


@@ 1089,21 1090,27 @@ simultaneously and therefore appear under the same nickname on IRC.")
(define-public python-nbxmpp
  (package
    (name "python-nbxmpp")
    (version "3.1.0")
    (version "4.2.2")
    (source
     (origin
       (method url-fetch)
       (uri
        (pypi-uri "nbxmpp" version))
       (uri (pypi-uri "nbxmpp" version))
       (sha256
        (base32 "0c32090gr1fiy7hkn73dcj4ad9gfdpks8hivl1dl8bql01jsfdnj"))))
    (build-system python-build-system)
    (native-inputs
     (list `(,glib "bin")))
         (base32 "095nyy6vjildhrqigxk6vsh49in6mx17bvb3z5zpjmzhv9b8ix46"))))
    (build-system pyproject-build-system)
    (arguments
     (list
      #:phases
      #~(modify-phases %standard-phases
          ;; XXX: This probably should be an option for pyproject-build-system
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests? (invoke "python" "-m" "unittest" "-v")))))))
    (native-inputs (list `(,glib "bin")))
    (inputs
     (list glib
           glib-networking
           libsoup-minimal-2
           libsoup-minimal
           python-gssapi
           python-idna
           python-precis-i18n


@@ 1118,71 1125,85 @@ of xmpppy.")
(define-public gajim
  (package
    (name "gajim")
    (version "1.4.7")
    (version "1.7.3")
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "https://gajim.org/downloads/"
                       (version-major+minor version)
                       "/gajim-" version ".tar.gz"))
       (uri (string-append "https://gajim.org/downloads/"
                           (version-major+minor version)
                           "/gajim-" version ".tar.gz"))
       (sha256
        (base32 "1ww46qlxr14nq0ka8wsf8qpn5qfi5dvgyksfh9411crl7azhfj0s"))
       (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
         (base32 "066kvkjw3qcdanr3nczy0wgcwihk9jc9zhzfr5bwlqvcyxcv7k5p"))
       (patches
         (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
    (build-system python-build-system)
    (arguments
     `(#:imported-modules
       (,@%python-build-system-modules
     (list
      #:imported-modules
      `(,@%python-build-system-modules
        (guix build glib-or-gtk-build-system))
       #:modules
       ((guix build python-build-system)
        ((guix build glib-or-gtk-build-system)
         #:prefix glib-or-gtk:)
      #:modules
      '((guix build python-build-system)
        ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
        (guix build utils))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'disable-failing-tests
           (lambda _
             ;; XXX Gajim builds fine on some (my) machines but fails elsewhere:
             ;; ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
             ;; https://dev.gajim.org/gajim/gajim/-/issues/11041
             (delete-file "test/no_gui/test_styling.py")))
         (replace 'check
           (lambda _
             ;; Tests require a running X server.
             (system "Xvfb :1 +extension GLX &")
             (setenv "DISPLAY" ":1")
             ;; For missing '/etc/machine-id'.
             (setenv "DBUS_FATAL_WARNINGS" "0")
             (invoke "dbus-launch" "python" "./setup.py" "test")))
         ;; Loading gajim_remote require running session bus,
         ;; which in-turn requires running elogind for XDG_RUNTIME_DIR;
         ;; neither of which are possible inside build environment.
         (delete 'sanity-check)
         (add-after 'install 'glib-or-gtk-compile-schemas
           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
         (add-after 'install 'glib-or-gtk-wrap
           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
         (add-after 'install 'wrap-env
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out")))
               (for-each
                (lambda (name)
                  (let ((file (string-append out "/bin/" name))
                        (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
                        (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
                    (wrap-program file
                      `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
                      `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
                '("gajim" "gajim-remote"))))))))
      #: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-before 'build 'build-metadata
            (lambda _
              (invoke "./pep517build/build_metadata.py"
                      "-o" "dist/metadata")))
          ;; TODO: Change to pyproject-build-system once it supports
          ;; in-tree build backends.
          (replace 'build
            (lambda _
              (invoke "python" "-m" "build" "--wheel" "--no-isolation"
                      ".")))
          (replace 'install
            (lambda _
              (apply invoke "pip" "--no-cache-dir" "--no-input"
                     "install" "--no-deps" "--prefix" #$output
                     (find-files "dist" "\\.whl$"))))
          (add-after 'install 'install-metadata
            (lambda _
              (invoke "./pep517build/install_metadata.py" "dist/metadata"
                      (string-append "--prefix=" #$output))))
          (replace 'check
            (lambda _
              ;; Tests require a running X server.
              (system "Xvfb :1 +extension GLX &")
              (setenv "DISPLAY" ":1")
              ;; For missing '/etc/machine-id'.
              (setenv "DBUS_FATAL_WARNINGS" "0")
              (invoke "dbus-launch" "python" "-m" "unittest"
                      "discover" "-s" "test")))
          (add-after 'install 'glib-or-gtk-compile-schemas
            (assoc-ref glib-or-gtk:%standard-phases
                       'glib-or-gtk-compile-schemas))
          (add-after 'install 'glib-or-gtk-wrap
            (assoc-ref glib-or-gtk:%standard-phases
                       'glib-or-gtk-wrap))
          (add-after 'install 'wrap-env
            (lambda _
              (for-each
               (lambda (name)
                 (let ((file (string-append #$output "/bin/" name))
                       (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
                       (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
                       (pixbuf-module-file (getenv "GDK_PIXBUF_MODULE_FILE")))
                   (wrap-program file
                     `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
                     `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
                     `("GDK_PIXBUF_MODULE_FILE" = (,pixbuf-module-file)))))
               '("gajim" "gajim-remote")))))))
    (native-search-paths
     (list
      (search-path-specification
       (variable "GAJIM_PLUGIN_PATH")
       (separator #f)                   ;single entry
       (files
        (list
         "share/gajim/plugins")))
       (separator #f) ; single entry
       (files (list "share/gajim/plugins")))
      ;; Gajim needs to use the propagated inputs of its plugins.
      (search-path-specification
       (variable "GUIX_PYTHONPATH")


@@ 1193,7 1214,7 @@ of xmpppy.")
          ;; FIXME: Cannot use this expression as it would
          ;; introduce a circular dependency at the top level.
          ;; (version-major+minor (package-version python))
          "3.9"
          "3.10"
          "/site-packages"))))))
    (native-inputs
     (list gettext-minimal


@@ 1201,6 1222,7 @@ of xmpppy.")
           gobject-introspection
           `(,gtk+ "bin")
           python-distutils-extra
           python-pypa-build
           python-setuptools
           xorg-server-for-tests))
    (inputs


@@ 1248,7 1270,7 @@ and OpenPGP) and available in 29 languages.")
(define-public gajim-omemo
  (package
    (name "gajim-omemo")
    (version "2.8.15")
    (version "2.9.0")
    (source
     (origin
       (method url-fetch/zipbomb)


@@ 1257,7 1279,7 @@ and OpenPGP) and available in 29 languages.")
         "https://ftp.gajim.org/plugins/master/omemo/omemo_"
         version ".zip"))
       (sha256
        (base32 "1hf148ywr8knk5y3y5xvvwgw74ld1pcfjkp78g514ikcnzfycfcn"))))
        (base32 "0yy9r9fsrlgdywiln8bskhi8faj9hnz7b19jcap5nkhv8jn9cqq7"))))
    (build-system trivial-build-system)
    (arguments
     `(#:modules ((guix build utils))


@@ 1284,7 1306,7 @@ multi-client end-to-end encryption.")
(define-public gajim-openpgp
  (package
    (name "gajim-openpgp")
    (version "1.4.9")
    (version "1.5.0")
    (source
     (origin
       (method url-fetch/zipbomb)


@@ 1293,7 1315,7 @@ multi-client end-to-end encryption.")
         "https://ftp.gajim.org/plugins/master/openpgp/openpgp_"
         version ".zip"))
       (sha256
        (base32 "1xwmf6ai1z7z9x6p1ysglxji73r7d27c0gzc8ykab29cjhjyv0dq"))))
        (base32 "193pbh9iri7bkamvjwp236i8g5zxxiqgsv64kll5sy76vx4q73c4"))))
    (build-system trivial-build-system)
    (arguments
     `(#:modules ((guix build utils))

M gnu/packages/mpd.scm => gnu/packages/mpd.scm +2 -2
@@ 613,7 613,7 @@ mpdevil loads all tags and covers on demand.")
(define-public mympd
  (package
    (name "mympd")
    (version "11.0.5")
    (version "12.0.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 622,7 622,7 @@ mpdevil loads all tags and covers on demand.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0b3skvam3kb14w2afzxl1pfvj4cfanr45nyv93zpxafmxgghxqcv"))))
                "19139ina79jdfmc2vh6xcp5n0z8c41fi2fz2fmvg623bpix3fcgf"))))
    (build-system cmake-build-system)
    (arguments
     (list

M gnu/packages/music.scm => gnu/packages/music.scm +2 -2
@@ 3780,7 3780,7 @@ event-based scripts for scrobbling, notifications, etc.")
(define-public picard
  (package
    (name "picard")
    (version "2.9.1")
    (version "2.9.2")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 3788,7 3788,7 @@ event-based scripts for scrobbling, notifications, etc.")
                    "picard/picard-" version ".tar.gz"))
              (sha256
               (base32
                "1f1nf53xm94jam8w86a8hx69ilzddjibf29c7f1i353fr6k6bqvs"))))
                "1gd4mypqcmpf8xnil1kqfv56znqg9pllvsj7fx8nq8jqaaw9cy6g"))))
    (build-system python-build-system)
    (arguments
     (list

M gnu/packages/networking.scm => gnu/packages/networking.scm +15 -10
@@ 798,7 798,7 @@ at the link-layer level.")
(define-public nng
  (package
    (name "nng")
    (version "1.3.2")
    (version "1.5.2")
    (source
     (origin
       (method git-fetch)


@@ 807,7 807,7 @@ at the link-layer level.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0a4jg8alh2h0rw6fb4dqpvk4hgl2a7h76mq7g34fy89qh9sgg1a4"))))
        (base32 "1sap0iny3z9lhmaiassv8jc399md1307y32xxx3mrr74jcpcrf59"))))
    (build-system cmake-build-system)
    (arguments
     `(#:configure-flags


@@ 821,13 821,18 @@ at the link-layer level.")
             ;; These tests require network access.
             (substitute* "tests/CMakeLists.txt"
               (("add_nng_test1\\(httpclient 60 NNG_SUPP_HTTP\\)") "")
               (("add_nng_test1\\(resolv 10 NNG_STATIC_LIB\\)") "")
               (("add_nng_test\\(tls 60\\)") ""))
             #t)))))
    (native-inputs
     `(("ksh" ,oksh)))
    (inputs
     `(("mbedtls" ,mbedtls-apache)))
             (substitute* "src/platform/CMakeLists.txt"
               (("nng_test\\(platform_test\\)") "")
               (("nng_test\\(resolver_test\\)") ""))
             (substitute* "src/sp/transport/tcp/CMakeLists.txt"
               (("nng_test\\(tcp_test\\)") ""))
             (substitute* "src/sp/transport/ws/CMakeLists.txt"
               (("nng_test_if\\(WS_ON ws_test\\)") ""))
             (substitute* "src/supplemental/websocket/CMakeLists.txt"
               (("nng_test\\(wssfile_test\\)") "")))))))
    (native-inputs (list oksh))
    (inputs (list mbedtls-apache))
    (synopsis "Lightweight messaging library")
    (description "NNG project is a rewrite of the scalability protocols library
known as libnanomsg, and adds significant new capabilities, while retaining


@@ 4525,7 4530,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-20230811053544-53b995bdab83")
    (version "0.0.0-20230829023258-013a0002abe2")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 4534,7 4539,7 @@ on hub/switched networks.  It is based on @acronym{ARP} packets, it will send
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1jc9qldi4f9s6n4ggaphyilxjymrz95hwd060jhj260x2hkdywl9"))))
                "0pqq4mh6dr7fb7i001wggwkxpvavxq0ps9h2cmm4gv8ygh4v6f10"))))
    (build-system go-build-system)
    (arguments
     (list #:install-source? #f

M gnu/packages/package-management.scm => gnu/packages/package-management.scm +16 -7
@@ 174,8 174,8 @@
  ;; Note: the 'update-guix-package.scm' script expects this definition to
  ;; start precisely like this.
  (let ((version "1.4.0")
        (commit "4dfdd822102690b5687acf28365ab707b68d9476")
        (revision 10))
        (commit "d0438fcf658cb8c95b32381fac44b0a6278459ed")
        (revision 11))
    (package
      (name "guix")



@@ 191,7 191,7 @@
                      (commit commit)))
                (sha256
                 (base32
                  "1p21gz2lr7iqvma1m83k2r04w201rzvk31d5kfn2qkr9l0gds4cx"))
                  "05i32m7cxs7vhl54hvs0f9g84jhnn2dbc9qcgaqvqnqc4i8yhhxr"))
                (file-name (string-append "guix-" version "-checkout"))))
      (build-system gnu-build-system)
      (arguments


@@ 215,6 215,13 @@
                            ;; system installation image.)
                            "ac_cv_path_DOT_USER_PROGRAM=dot"

                            ;; When cross-compiling, 'git' is not in $PATH
                            ;; (because it's not a native input).  Thus,
                            ;; always explicitly pass its file name.
                            (string-append "ac_cv_path_GIT="
                                           (search-input-file %build-inputs
                                                              "/bin/git"))

                            ;; To avoid problems with the length of shebangs,
                            ;; choose a fixed-width and short directory name
                            ;; for tests.


@@ 515,6 522,8 @@ $(prefix)/etc/openrc\n")))
         ("disarchive" ,disarchive)               ;for 'guix perform-download'
         ("guile-lzma" ,guile-lzma)               ;for Disarchive

         ("git-minimal" ,git-minimal)             ;for 'guix perform-download'

         ("glibc-utf8-locales" ,glibc-utf8-locales)))
      (propagated-inputs
       `(("guile-gnutls" ,guile-gnutls)


@@ 1592,7 1601,7 @@ environments.")
             guile-gcrypt
             guix
             guile-prometheus
             guile-fibers-1.3
             guile-fibers
             guile-lib
             (first (assoc-ref (package-native-inputs guix) "guile"))))
      (inputs


@@ 1610,7 1619,7 @@ environments.")
             guile-sqlite3
             guix
             guile-gnutls
             guile-fibers-1.3))
             guile-fibers))
      (home-page "https://git.cbaines.net/guix/build-coordinator/")
      (synopsis "Tool to help build derivations")
      (description


@@ 1826,7 1835,7 @@ in an isolated environment, in separate namespaces.")
             guile-json-4
             guile-gcrypt
             guix
             guile-fibers-1.3
             guile-fibers
             guile-prometheus
             guile-lib
             guile-lzlib


@@ 1839,7 1848,7 @@ in an isolated environment, in separate namespaces.")
       (list guile-json-4
             guile-gcrypt
             guix
             guile-fibers-1.3
             guile-fibers
             guile-prometheus
             guile-lib
             guile-lzlib

M gnu/packages/pantheon.scm => gnu/packages/pantheon.scm +70 -0
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;; Copyright © 2023 Wamm K. D. <jaft.r@outlook.com>
;;; Copyright © 2023 altadil <Altadil@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 26,11 27,13 @@
  #:use-module (gnu packages gnupg)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages package-management)
  #:use-module (gnu packages pcre)
  #:use-module (gnu packages photo)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)
  #:use-module (gnu packages xml)
  #:use-module (gnu packages web)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages)
  #:use-module (guix build-system meson)
  #:use-module (guix git-download)


@@ 72,6 75,22 @@ things, it provides complex widgets and convenience functions designed for use
in apps built for the Pantheon desktop.")
    (license license:lgpl3+)))

;; This is required for pantheon apps that have not been ported to GTK4 yet.
(define-public granite-6
  (package
    (inherit granite)
    (version "6.2.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/elementary/granite")
                    (commit version)))
              (file-name (git-file-name "granite" version))
              (sha256
               (base32
                "0ilslmg63hh2x7h5rvs3mhzw1y9ixhhkqnn1j1lzwm12v2iidkaq"))))
    (propagated-inputs (list glib libgee gtk+))))

(define-public pantheon-calculator
  (package
    (name "pantheon-calculator")


@@ 113,6 132,57 @@ arithmetic.  It is the default calculator application in the Pantheon
desktop.")
    (license license:gpl3)))

(define-public pantheon-terminal
  (package
    (name "pantheon-terminal")
    (version "6.1.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/elementary/terminal")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0x3gzghnfx4a1q2zhra4dysc0pm1zvlfdxj96qhfb627pz16iv4k"))))
    (build-system meson-build-system)
    (arguments
     `(#:tests? #f      ; Tests invole launching the terminal.
       #:glib-or-gtk? #t
       #:phases (modify-phases %standard-phases
                  (add-before 'install 'set-environment-variables
                    (lambda _
                      ;; Disable compiling schemas and updating desktop databases
                      (setenv "DESTDIR" "/")))
                  (add-after 'install 'install-symlinks
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let* ((out (assoc-ref outputs "out"))
                             (bin (string-append out
                                   "/bin/io.elementary.terminal"))
                             (link (string-append out "/bin/pantheon-terminal")))
                        (symlink bin link)))))))
    (native-inputs (list appstream
                         desktop-file-utils     ;required for tests
                         gettext-minimal        ;for msgfmt
                         `(,glib "bin")         ;for glib-compile-resources
                         gobject-introspection
                         pkg-config
                         vala
                         xvfb-run))
    (inputs (list granite-6
                  gtk+
                  libgee
                  libhandy
                  pcre2
                  vte))
    (synopsis "Terminal emulator from elementaryOS")
    (description "pantheon-terminal is a lightweight, beautiful and simple
terminal.  It comes with sane defaults, browser-class tabs, sudo paste
protection, smart copy/paste, and little to no configuration.  It is the default
terminal in the Pantheon desktop.")
    (home-page "https://elementary.io/open-source")
    (license license:lgpl3)))

(define-public sideload
  (package
    (name "sideload")

M gnu/packages/password-utils.scm => gnu/packages/password-utils.scm +6 -14
@@ 63,6 63,7 @@
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system go)
  #:use-module (guix build-system python)
  #:use-module (guix build-system qt)
  #:use-module (guix build-system trivial)
  #:use-module (guix download)
  #:use-module (guix gexp)


@@ 154,14 155,9 @@ human.")
                           version "-src.tar.xz"))
       (sha256
        (base32 "0w6nh2lnzfqcxasfsppmh4q309p1flzgfiv25hahzsd8kx879055"))))
    (build-system cmake-build-system)
    (build-system qt-build-system)
    (arguments
     (list
      #:modules '((guix build cmake-build-system)
                  (guix build qt-utils)
                  (guix build utils))
      #:imported-modules `(,@%cmake-build-system-modules
                           (guix build qt-utils))
      #:configure-flags
      #~(append
          (list "-DWITH_XC_ALL=YES"


@@ 175,13 171,10 @@ human.")
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                ;; Fails with "TestCli::testClip() Compared values are not the
                ;; same".  That test also requires a phase with (setenv
                ;; "QT_QPA_PLATFORM" "offscreen") in order to work.
                (invoke "ctest" "--exclude-regex" "testcli"))))
          (add-after 'install 'wrap-qt
            (lambda* (#:key inputs #:allow-other-keys)
              (wrap-qt-program "keepassxc" #:output #$output #:inputs inputs))))))
                ;; "TestCli::testClip() Compared values are not the same".
                ;;   Actual   (((clipboard->text()))): ""
                ;;   Expected (QString("Password"))  : "Password"
                (invoke "ctest" "--exclude-regex" "testcli")))))))
    (native-inputs
     (append
       (list qttools-5)


@@ 201,7 194,6 @@ human.")
           minizip
           pcsc-lite
           qrencode
           qtbase-5
           qtsvg-5
           qtwayland-5
           qtx11extras

A gnu/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch => gnu/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch +210 -0
@@ 0,0 1,210 @@
SPDX-FileCopyrightText: © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
SPDX-License-Identifier: GPL-3.0-or-later

These patch series allow to compile Fulcrum without using any bundled
libraries.

From 141d590b4189908a88ca07ad8e3880e4933e6427 Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Thu, 6 Jul 2023 14:56:53 +0200
Subject: [PATCH 1/4] Add config to build without secp256k1

Signed-off-by: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
---
 Fulcrum.pro | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Fulcrum.pro b/Fulcrum.pro
index e7fdfde..2dad355 100644
--- a/Fulcrum.pro
+++ b/Fulcrum.pro
@@ -480,7 +480,7 @@ HEADERS += \
 # Enable secp256k1 compilation on x86_64 only -- we don't actually use this lib
 # yet in Fulcrum, so on platforms that aren't x86_64 it's ok to exclude it; it
 # was included in case we wish to someday verify signatures in Fulcrum, etc.
-contains(QT_ARCH, x86_64):!win32-msvc {
+contains(QT_ARCH, x86_64):!contains(CONFIG, config_without_bundled_secp256k1):!win32-msvc {
     message("Including embedded secp256k1")
 
     SOURCES += bitcoin/secp256k1/secp256k1.c
-- 
2.34.1


From 093a43d02dd14039ae8aed992223e5167f3fb866 Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Thu, 6 Jul 2023 15:49:01 +0200
Subject: [PATCH 2/4] Allow using system simdjson

Signed-off-by: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
---
 Fulcrum.pro              | 7 +++++++
 src/Json/Json_Parser.cpp | 5 ++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/Fulcrum.pro b/Fulcrum.pro
index 2dad355..c478af6 100644
--- a/Fulcrum.pro
+++ b/Fulcrum.pro
@@ -149,6 +149,13 @@ contains(CONFIG, config_endian_big) {
 }
 # /GIT_COMMIT=
 
+# simdjson
+contains(LIBS, -lsimdjson) {
+    message("simdjson: Using CLI override")
+    DEFINES += SYSTEM_SIMDJSON
+}
+# /simdjson
+
 # ZMQ
 !contains(LIBS, -lzmq) {
     # Test for ZMQ, and if found, add pkg-config which we will rely upon to find libs
diff --git a/src/Json/Json_Parser.cpp b/src/Json/Json_Parser.cpp
index c24fe94..eb42eec 100644
--- a/src/Json/Json_Parser.cpp
+++ b/src/Json/Json_Parser.cpp
@@ -56,7 +56,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 // embed simdjson here, if we are on a known 64-bit platform and the header & sources are available
 #if defined(__x86_64__) || defined(_M_AMD64) || defined(__aarch64__) || defined(_M_ARM64)
-#if __has_include("simdjson/simdjson.h") && __has_include("simdjson/simdjson.cpp")
+#if defined(SYSTEM_SIMDJSON)
+#include <simdjson.h>
+#define HAVE_SIMDJSON 1
+#elif __has_include("simdjson/simdjson.h") && __has_include("simdjson/simdjson.cpp")
 #include "simdjson/simdjson.h"
 #include "simdjson/simdjson.cpp"
 #define HAVE_SIMDJSON 1
-- 
2.34.1


From 4c609cb1467478cb669b5ca2290606128543a48c Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Thu, 6 Jul 2023 15:56:01 +0200
Subject: [PATCH 3/4] Allow using system robin-hood-hashing

Signed-off-by: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
---
 Fulcrum.pro        | 13 ++++++++++---
 src/Controller.cpp |  2 +-
 src/Storage.cpp    |  4 ++--
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/Fulcrum.pro b/Fulcrum.pro
index c478af6..99c7659 100644
--- a/Fulcrum.pro
+++ b/Fulcrum.pro
@@ -149,6 +149,16 @@ contains(CONFIG, config_endian_big) {
 }
 # /GIT_COMMIT=
 
+# robin-hood-hashing
+!contains(CONFIG, config_without_bundled_robin_hood) {
+    # Robin Hood unordered_flat_map implememntation (single header and MUCH more efficient than unordered_map!)
+    HEADERS += robin_hood/robin_hood.h
+    INCLUDEPATH += src/robin_hood/
+} else {
+    message("robin-hood-hashing: Using CLI override")
+}
+# /robin-hood-hashing
+
 # simdjson
 contains(LIBS, -lsimdjson) {
     message("simdjson: Using CLI override")
@@ -402,9 +412,6 @@ HEADERS += \
     WebSocket.h \
     ZmqSubNotifier.h
 
-# Robin Hood unordered_flat_map implememntation (single header and MUCH more efficient than unordered_map!)
-HEADERS += robin_hood/robin_hood.h
-
 RESOURCES += \
     resources.qrc
 
diff --git a/src/Controller.cpp b/src/Controller.cpp
index 918c1f2..d0cab56 100644
--- a/src/Controller.cpp
+++ b/src/Controller.cpp
@@ -33,7 +33,7 @@
 #include "bitcoin/crypto/common.h"  // ReadLE32
 #include "bitcoin/rpc/protocol.h" // for RPC_INVALID_ADDRESS_OR_KEY
 #include "bitcoin/transaction.h"
-#include "robin_hood/robin_hood.h"
+#include <robin_hood.h>
 
 #include <algorithm>
 #include <cassert>
diff --git a/src/Storage.cpp b/src/Storage.cpp
index e74278c..0f0b91e 100644
--- a/src/Storage.cpp
+++ b/src/Storage.cpp
@@ -31,7 +31,7 @@
 
 #include "bitcoin/hash.h"
 
-#include "robin_hood/robin_hood.h"
+#include <robin_hood.h>
 
 #if __has_include(<rocksdb/advanced_cache.h>)
 // Newer rocksdb 8.1 defines the `Cache` class in this header. :/
@@ -4537,7 +4537,7 @@ namespace {
 } // end anon namespace
 
 #ifdef ENABLE_TESTS
-#include "robin_hood/robin_hood.h"
+#include <robin_hood.h>
 namespace {
 
     template<size_t NB>
-- 
2.34.1


From 0e3888b12f62553b032a56b71d2c1545add080b6 Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Thu, 6 Jul 2023 16:04:57 +0200
Subject: [PATCH 4/4] Allow using system cppzmq

Signed-off-by: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
---
 Fulcrum.pro            | 8 ++++++++
 src/ZmqSubNotifier.cpp | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/Fulcrum.pro b/Fulcrum.pro
index 99c7659..0948834 100644
--- a/Fulcrum.pro
+++ b/Fulcrum.pro
@@ -186,6 +186,14 @@ contains(LIBS, -lsimdjson) {
 }
 # /ZMQ
 
+# cppzmq
+!contains(CONFIG, config_without_bundled_cppzmq) {
+    INCLUDEPATH += src/zmq
+} else {
+    message("cppzmq: Using CLI override")
+}
+# /cppzmq
+
 # - Try and detect rocksdb and if not, fall back to the staticlib.
 # - User can suppress this behavior by specifying a "LIBS+=-lrocksdb..." on the
 #   CLI when they invoked qmake. In that case, they must set-up the LIBS+= and
diff --git a/src/ZmqSubNotifier.cpp b/src/ZmqSubNotifier.cpp
index 6b03784..48a41be 100644
--- a/src/ZmqSubNotifier.cpp
+++ b/src/ZmqSubNotifier.cpp
@@ -23,7 +23,7 @@
 #if defined(ENABLE_ZMQ)
 // real implementation
 #define ZMQ_CPP11
-#include "zmq/zmq.hpp"
+#include <zmq.hpp>
 
 #include <QRandomGenerator>
 
-- 
2.34.1


A gnu/packages/patches/icecat-102-makeicecat.patch => gnu/packages/patches/icecat-102-makeicecat.patch +51 -0
@@ 0,0 1,51 @@
Make some of the changes needed to the 'makeicecat' script, to allow it to run
in a snippet without network access.  After this patch is applied, some
additional changes will be made using 'substitute*'.

diff --git a/makeicecat b/makeicecat
index bf2b7a6..bc3b19b 100755
--- a/makeicecat
+++ b/makeicecat
@@ -56,7 +56,7 @@ readonly SOURCEDIR=icecat-${FFVERSION}
 # debug/shell options
 readonly DEVEL=0
 set -euo pipefail
-(( DEVEL )) && set -x
+set -x
 
 
 ###############################################################################
@@ -455,7 +455,7 @@ configure_search()
 
 
     # Process various JSON pre-configuration dumps.
-    python3 ../../tools/process-json-files.py . browser/components/extensions/schemas/
+    python3 "${DATADIR}"/../tools/process-json-files.py . browser/components/extensions/schemas/
 }
 
 configure_mobile()
@@ -837,12 +837,12 @@ finalize_sourceball()
 # entry point
 ###############################################################################
 
-validate_env || exit 1
-prepare_env
-fetch_source
-verify_sources
-extract_sources
-fetch_l10n
+# validate_env || exit 1
+# prepare_env
+# fetch_source
+# verify_sources
+# extract_sources
+# fetch_l10n
 apply_patches
 configure
 configure_search
@@ -854,4 +854,4 @@ prepare_macos_packaging
 configure_extensions
 configure_onboarding
 apply_bugfixes
-finalize_sourceball
+# finalize_sourceball

M gnu/packages/patches/icecat-makeicecat.patch => gnu/packages/patches/icecat-makeicecat.patch +2 -11
@@ 15,16 15,7 @@ index bf2b7a6..bc3b19b 100755
 
 
 ###############################################################################
@@ -455,7 +455,7 @@ configure_search()
 
 
     # Process various JSON pre-configuration dumps.
-    python3 ../../tools/process-json-files.py . browser/components/extensions/schemas/
+    python3 "${DATADIR}"/../tools/process-json-files.py . browser/components/extensions/schemas/
 }
 
 configure_mobile()
@@ -837,12 +837,12 @@ finalize_sourceball()
@@ -928,12 +928,12 @@ finalize_sourceball()
 # entry point
 ###############################################################################
 


@@ 43,7 34,7 @@ index bf2b7a6..bc3b19b 100755
 apply_patches
 configure
 configure_search
@@ -854,4 +854,4 @@ prepare_macos_packaging
@@ -945,4 +945,4 @@ prepare_macos_packaging
 configure_extensions
 configure_onboarding
 apply_bugfixes

A gnu/packages/patches/kiwix-desktop-newer-libkiwix.patch => gnu/packages/patches/kiwix-desktop-newer-libkiwix.patch +40 -0
@@ 0,0 1,40 @@
Description: Fix building kiwix-desktop with libkiwix-12.1.0
Bug: https://github.com/kiwix/kiwix-desktop/issues/964
Origin: https://github.com/kiwix/kiwix-desktop/commit/1b322d8f01c787846546a6473f153cf1daa41e65
Applied-Upstream: https://github.com/kiwix/kiwix-desktop/commit/1b322d8f01c787846546a6473f153cf1daa41e65
---
From 1b322d8f01c787846546a6473f153cf1daa41e65 Mon Sep 17 00:00:00 2001
From: Matthieu Gautier <mgautier@kymeria.fr>
Date: Thu, 9 Feb 2023 09:47:47 +0100
Subject: [PATCH] With last version of libkiwix, Downloader now return
 shared_ptr<Download>.

---
 src/contentmanager.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp
index c2f4ff9..d4db50a 100644
--- a/src/contentmanager.cpp
+++ b/src/contentmanager.cpp
@@ -173,7 +173,7 @@ QStringList ContentManager::updateDownloadInfos(QString id, const QStringList &k
         return values;
     }
     auto& b = mp_library->getBookById(id);
-    kiwix::Download* d;
+    std::shared_ptr<kiwix::Download> d;
     try {
         d = mp_downloader->getDownload(b.getDownloadId());
     } catch(...) {
@@ -270,7 +270,7 @@ QString ContentManager::downloadBook(const QString &id)
     for (auto b : booksList)
         if (b.toStdString() == book.getId())
             return "";
-    kiwix::Download *download;
+    std::shared_ptr<kiwix::Download> download;
     try {
         std::pair<std::string, std::string> downloadDir("dir", downloadPath.toStdString());
         const std::vector<std::pair<std::string, std::string>> options = { downloadDir };
-- 
2.41.0


A gnu/packages/patches/libvpx-CVE-2023-5217.patch => gnu/packages/patches/libvpx-CVE-2023-5217.patch +99 -0
@@ 0,0 1,99 @@
From: Tobias Geerinckx-Rice <me@tobias.gr>
Date: Sun Sep 24 02:00:00 2023 +0200
Subject: libvpx: Fix CVE-2023-5217.

These are the changes made to libvpx between Firefox ESR 115.3.0 and
115.3.1, which claims to fix CVE-2023-5217 and so do we.  The report
itself is not public.

It consists of the following 2 upstream libvpx commits:
  af6dedd715f4307669366944cca6e0417b290282
  3fbd1dca6a4d2dad332a2110d646e4ffef36d590
which are not yet part of an upstream commit.

---
diff -Naur libvpx.orig/test/encode_api_test.cc libvpx/test/encode_api_test.cc
--- libvpx.orig/test/encode_api_test.cc	1970-01-01 01:00:01.000000000 +0100
+++ libvpx/test/encode_api_test.cc	2023-09-29 21:00:03.189620452 +0200
@@ -304,7 +304,6 @@
 
 void InitCodec(const vpx_codec_iface_t &iface, int width, int height,
                vpx_codec_ctx_t *enc, vpx_codec_enc_cfg_t *cfg) {
-  ASSERT_EQ(vpx_codec_enc_config_default(&iface, cfg, 0), VPX_CODEC_OK);
   cfg->g_w = width;
   cfg->g_h = height;
   cfg->g_lag_in_frames = 0;
@@ -342,6 +341,7 @@
         vpx_codec_ctx_t ctx = {};
       } enc;
 
+      ASSERT_EQ(vpx_codec_enc_config_default(iface, &cfg, 0), VPX_CODEC_OK);
       EXPECT_NO_FATAL_FAILURE(
           InitCodec(*iface, kWidth, kHeight, &enc.ctx, &cfg));
       if (IsVP9(iface)) {
@@ -353,6 +353,50 @@
 
       for (const auto threads : { 1, 4, 8, 6, 2, 1 }) {
         cfg.g_threads = threads;
+        EXPECT_NO_FATAL_FAILURE(EncodeWithConfig(cfg, &enc.ctx))
+            << "iteration: " << i << " threads: " << threads;
+      }
+    }
+  }
+}
+
+TEST(EncodeAPI, ConfigResizeChangeThreadCount) {
+  constexpr int kInitWidth = 1024;
+  constexpr int kInitHeight = 1024;
+
+  for (const auto *iface : kCodecIfaces) {
+    SCOPED_TRACE(vpx_codec_iface_name(iface));
+    for (int i = 0; i < (IsVP9(iface) ? 2 : 1); ++i) {
+      vpx_codec_enc_cfg_t cfg = {};
+      struct Encoder {
+        ~Encoder() { EXPECT_EQ(vpx_codec_destroy(&ctx), VPX_CODEC_OK); }
+        vpx_codec_ctx_t ctx = {};
+      } enc;
+
+      ASSERT_EQ(vpx_codec_enc_config_default(iface, &cfg, 0), VPX_CODEC_OK);
+      // Start in threaded mode to ensure resolution and thread related
+      // allocations are updated correctly across changes in resolution and
+      // thread counts. See https://crbug.com/1486441.
+      cfg.g_threads = 4;
+      EXPECT_NO_FATAL_FAILURE(
+          InitCodec(*iface, kInitWidth, kInitHeight, &enc.ctx, &cfg));
+      if (IsVP9(iface)) {
+        EXPECT_EQ(vpx_codec_control_(&enc.ctx, VP9E_SET_TILE_COLUMNS, 6),
+                  VPX_CODEC_OK);
+        EXPECT_EQ(vpx_codec_control_(&enc.ctx, VP9E_SET_ROW_MT, i),
+                  VPX_CODEC_OK);
+      }
+
+      cfg.g_w = 1000;
+      cfg.g_h = 608;
+      EXPECT_EQ(vpx_codec_enc_config_set(&enc.ctx, &cfg), VPX_CODEC_OK)
+          << vpx_codec_error_detail(&enc.ctx);
+
+      cfg.g_w = 16;
+      cfg.g_h = 720;
+
+      for (const auto threads : { 1, 4, 8, 6, 2, 1 }) {
+        cfg.g_threads = threads;
         EXPECT_NO_FATAL_FAILURE(EncodeWithConfig(cfg, &enc.ctx))
             << "iteration: " << i << " threads: " << threads;
       }
diff -Naur libvpx.orig/vp8/encoder/onyx_if.c libvpx/vp8/encoder/onyx_if.c
--- libvpx.orig/vp8/encoder/onyx_if.c	1970-01-01 01:00:01.000000000 +0100
+++ libvpx/vp8/encoder/onyx_if.c	2023-09-29 21:01:44.155476128 +0200
@@ -1443,6 +1443,11 @@
   last_h = cpi->oxcf.Height;
   prev_number_of_layers = cpi->oxcf.number_of_layers;
 
+  if (cpi->initial_width) {
+    // TODO(https://crbug.com/1486441): Allow changing thread counts; the
+    // allocation is done once in vp8_create_compressor().
+    oxcf->multi_threaded = cpi->oxcf.multi_threaded;
+  }
   cpi->oxcf = *oxcf;
 
   switch (cpi->oxcf.Mode) {

M gnu/packages/patches/sdcc-disable-non-free-code.patch => gnu/packages/patches/sdcc-disable-non-free-code.patch +196 -168
@@ 15,10 15,10 @@ remove instructions that encourage the use of SDCC with non-free
software.

diff --git a/Makefile.common.in b/Makefile.common.in
index 1a11f67..69d5efe 100644
index 9cd116c..6bbe9fb 100644
--- a/Makefile.common.in
+++ b/Makefile.common.in
@@ -73,7 +73,6 @@ OPT_DISABLE_PACKIHX     = @OPT_DISABLE_PACKIHX@
@@ -77,7 +77,6 @@ OPT_DISABLE_PACKIHX     = @OPT_DISABLE_PACKIHX@
 OPT_DISABLE_SDBINUTILS  = @OPT_DISABLE_SDBINUTILS@
 OPT_DISABLE_SDCPP       = @OPT_DISABLE_SDCPP@
 OPT_DISABLE_UCSIM       = @OPT_DISABLE_UCSIM@


@@ 27,7 27,7 @@ index 1a11f67..69d5efe 100644
 SLIB                    = $(top_builddir)/support/util
 
diff --git a/Makefile.in b/Makefile.in
index d899b62..554a1c3 100644
index 6d035ec..12f1fad 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -105,9 +105,6 @@ endif


@@ 50,7 50,7 @@ index d899b62..554a1c3 100644
 PKGS           += $(SDCC_AS) sdas/linksrc $(SDCC_SCRIPTS)
 
 PORTS           = $(shell cat ports.build)
@@ -176,21 +170,12 @@ sdcc-sdbinutils:
@@ -168,21 +162,12 @@ sdcc-sdbinutils:
 
 sdcc-device-inc:
 	$(MAKE) -C device/include


@@ 73,7 73,7 @@ index d899b62..554a1c3 100644
 
 # doc depends on latex and latex2html
diff --git a/configure b/configure
index 232d98e..3eeb17c 100755
index 9de81c6..2620e3c 100755
--- a/configure
+++ b/configure
@@ -659,7 +659,6 @@ LATEX


@@ 84,10 84,10 @@ index 232d98e..3eeb17c 100755
 OPT_DISABLE_SDBINUTILS
 OPT_DISABLE_SDCDB
 OPT_DISABLE_SDCPP
@@ -690,10 +689,7 @@ OPT_DISABLE_R2K
 OPT_DISABLE_Z180
 OPT_DISABLE_Z80
@@ -692,10 +691,7 @@ OPT_DISABLE_Z80
 OPT_DISABLE_MCS51
 SVN_REVISION
 GIT_REVISION
-non_free_lib_dir_suffix
 lib_dir_suffix
-non_free_include_dir_suffix


@@ 95,7 95,7 @@ index 232d98e..3eeb17c 100755
 include_dir_suffix
 inclib_dir_suffix
 LIB_TYPE
@@ -821,7 +817,6 @@ enable_packihx
@@ -824,7 +820,6 @@ enable_packihx
 enable_sdcpp
 enable_sdcdb
 enable_sdbinutils


@@ 103,7 103,7 @@ index 232d98e..3eeb17c 100755
 enable_doc
 enable_libgc
 '
@@ -842,10 +837,7 @@ sdccconf_h_dir_separator
@@ -845,10 +840,7 @@ sdccconf_h_dir_separator
 LIB_TYPE
 inclib_dir_suffix
 include_dir_suffix


@@ 114,7 114,7 @@ index 232d98e..3eeb17c 100755
 docdir'
 ac_subdirs_all='support/cpp
 support/packihx
@@ -853,9 +845,7 @@ sim/ucsim
@@ -856,9 +848,7 @@ sim/ucsim
 debugger/mcs51
 support/sdbinutils
 device/lib/pic14


@@ 125,7 125,7 @@ index 232d98e..3eeb17c 100755
 
 # Initialize some variables set by options.
 ac_init_help=
@@ -1509,7 +1499,6 @@ Optional Features:
@@ -1512,7 +1502,6 @@ Optional Features:
   --disable-sdcpp         Disables building sdcpp
   --disable-sdcdb         Disables building sdcdb
   --disable-sdbinutils    Disables configuring and building of sdbinutils


@@ 133,7 133,7 @@ index 232d98e..3eeb17c 100755
   --enable-doc            Enables building the documentation
   --enable-libgc          Use the Bohem memory allocator. Lower runtime
                           footprint.
@@ -1538,16 +1527,8 @@ Some influential environment variables:
@@ -1541,16 +1530,8 @@ Some influential environment variables:
               appended to datadir to define SDCC's include/lib directory
   include_dir_suffix
               appended to datadir to define SDCC's include directory


@@ 150,7 150,7 @@ index 232d98e..3eeb17c 100755
   docdir      documentation installation directory
 
 Use these variables to override the choices made by `configure' or to help
@@ -7421,19 +7402,6 @@ if test "${include_dir_suffix}" = ""; then
@@ -7426,19 +7407,6 @@ if test "${include_dir_suffix}" = ""; then
     include_dir_suffix="${inclib_dir_suffix}/include"
 fi
 


@@ 170,7 170,7 @@ index 232d98e..3eeb17c 100755
 # lib_dir_suffix:
 # *nix default: "sdcc/lib"
 
@@ -7441,13 +7409,6 @@ if test "${lib_dir_suffix}" = ""; then
@@ -7446,13 +7414,6 @@ if test "${lib_dir_suffix}" = ""; then
     lib_dir_suffix="${inclib_dir_suffix}/lib"
 fi
 


@@ 184,7 184,7 @@ index 232d98e..3eeb17c 100755
 # docdir:
 # *nix default: "${datadir}/sdcc/doc"
 
@@ -7600,22 +7561,6 @@ esac
@@ -7605,22 +7566,6 @@ esac
 
 printf "%s\n" "#define INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING \"${norm_inc_dir_suffix}\"" >>confdefs.h
 


@@ 207,7 207,7 @@ index 232d98e..3eeb17c 100755
 
 norm_lib_dir_suffix=${lib_dir_suffix}
 case ":$norm_lib_dir_suffix:" in
@@ -7633,22 +7578,6 @@ esac
@@ -7638,22 +7583,6 @@ esac
 
 printf "%s\n" "#define LIB_DIR_SUFFIX DIR_SEPARATOR_STRING \"${norm_lib_dir_suffix}\"" >>confdefs.h
 


@@ 230,7 230,7 @@ index 232d98e..3eeb17c 100755
 
 # relative paths
 for _lcl_i in expanded_bindir:expanded_datadir:bin2data_dir; do
@@ -8751,27 +8680,6 @@ printf "%s\n" "#define OPT_DISABLE_SDBINUTILS $OPT_DISABLE_SDBINUTILS" >>confdef
@@ -8769,27 +8698,6 @@ printf "%s\n" "#define OPT_DISABLE_SDBINUTILS $OPT_DISABLE_SDBINUTILS" >>confdef
 
 
 


@@ 258,7 258,7 @@ index 232d98e..3eeb17c 100755
 
   # Check whether --enable-doc was given.
 if test ${enable_doc+y}
@@ -9199,20 +9107,12 @@ if test $OPT_DISABLE_PIC14 = 0; then
@@ -9217,20 +9125,12 @@ if test $OPT_DISABLE_PIC14 = 0; then
 
   test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/lib/pic14"
 


@@ 279,14 279,18 @@ index 232d98e..3eeb17c 100755
 fi
 
 if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_SM83 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then
@@ -9289,15 +9189,9 @@ fi
@@ -9307,8 +9207,6 @@ fi
 
 test $OPT_DISABLE_DEVICE_LIB = 0 && ac_config_files="$ac_config_files device/lib/Makefile"
 
-test $OPT_DISABLE_DEVICE_LIB = 0 && test $OPT_DISABLE_NON_FREE = 0 && ac_config_files="$ac_config_files device/non-free/lib/Makefile"
-
 
 ac_config_files="$ac_config_files main.mk:main_in.mk src/Makefile device/include/Makefile sdas/linksrc/Makefile support/makebin/Makefile support/regression/Makefile support/valdiag/Makefile support/scripts/Makefile support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in Makefile Makefile.common:Makefile.common.in"
 ac_config_files="$ac_config_files main.mk:main_in.mk bin/Makefile src/Makefile device/include/Makefile sdas/linksrc/Makefile support/makebin/Makefile support/regression/Makefile support/regression/cases/Makefile support/valdiag/Makefile support/scripts/Makefile support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in Makefile Makefile.common:Makefile.common.in"
 
@@ -9324,10 +9222,6 @@ ac_config_files="$ac_config_files bin/sdranlib"
 
 ac_config_files="$ac_config_files bin/sdobjcopy"
 
-if test $OPT_DISABLE_NON_FREE = 0; then
-  ac_config_files="$ac_config_files device/non-free/include/Makefile"


@@ 295,23 299,23 @@ index 232d98e..3eeb17c 100755
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -10037,7 +9931,6 @@ do
@@ -10068,7 +9962,6 @@ do
     "device/lib/pdk15-stack-auto/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/pdk15-stack-auto/Makefile" ;;
     "sdas/aspdk16/Makefile") CONFIG_FILES="$CONFIG_FILES sdas/aspdk16/Makefile" ;;
     "device/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/Makefile" ;;
-    "device/non-free/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/non-free/lib/Makefile" ;;
     "main.mk") CONFIG_FILES="$CONFIG_FILES main.mk:main_in.mk" ;;
     "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
     "device/include/Makefile") CONFIG_FILES="$CONFIG_FILES device/include/Makefile" ;;
@@ -10049,7 +9942,6 @@ do
     "support/regression/ports/host/spec.mk") CONFIG_FILES="$CONFIG_FILES support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "Makefile.common") CONFIG_FILES="$CONFIG_FILES Makefile.common:Makefile.common.in" ;;
@@ -10088,7 +9981,6 @@ do
     "bin/sdnm") CONFIG_FILES="$CONFIG_FILES bin/sdnm" ;;
     "bin/sdranlib") CONFIG_FILES="$CONFIG_FILES bin/sdranlib" ;;
     "bin/sdobjcopy") CONFIG_FILES="$CONFIG_FILES bin/sdobjcopy" ;;
-    "device/non-free/include/Makefile") CONFIG_FILES="$CONFIG_FILES device/non-free/include/Makefile" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
@@ -10856,54 +10748,6 @@ esac
@@ -10905,54 +10797,6 @@ esac
 incPath3=`echo "$incPath3" | sed 's,\\\\\\\\,\\\\,g'`
 
 


@@ 366,7 370,7 @@ index 232d98e..3eeb17c 100755
 
 libPath1=`echo "/${prefix2data_dir}/${norm_lib_dir_suffix}" | sed 's,/\./,/,g'`
 case ":$libPath1:" in
@@ -10953,54 +10797,6 @@ esac
@@ -11002,54 +10846,6 @@ esac
 libPath3=`echo "$libPath3" | sed 's,\\\\\\\\,\\\\,g'`
 
 


@@ 421,7 425,7 @@ index 232d98e..3eeb17c 100755
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result:
 sdcc ${VERSION} is now configured for
 
@@ -11041,7 +10837,6 @@ sdcc ${VERSION} is now configured for
@@ -11091,7 +10887,6 @@ sdcc ${VERSION} is now configured for
     mos6502             ${enable_mos6502_port}
     mos65c02            ${enable_mos65c02_port}
 


@@ 429,7 433,7 @@ index 232d98e..3eeb17c 100755
   Disable packihx:      ${OPT_DISABLE_PACKIHX}
   Disable ucsim:        ${OPT_DISABLE_UCSIM}
   Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
@@ -11056,9 +10851,6 @@ sdcc ${VERSION} is now configured for
@@ -11106,9 +10901,6 @@ sdcc ${VERSION} is now configured for
     include/library files:  ${datadir}/${inclib_dir_suffix}
     include files:          ${datadir}/${include_dir_suffix}
     library files:          ${datadir}/${lib_dir_suffix}


@@ 439,7 443,7 @@ index 232d98e..3eeb17c 100755
     documentation:          ${docdir}
 
     prefix:             ${prefix}
@@ -11070,15 +10862,9 @@ sdcc ${VERSION} is now configured for
@@ -11120,15 +10912,9 @@ sdcc ${VERSION} is now configured for
     include files:      ${incPath1}
                         path(argv[0])${incPath2}
                         ${incPath3}


@@ 455,7 459,7 @@ index 232d98e..3eeb17c 100755
 " >&5
 printf "%s\n" "
 sdcc ${VERSION} is now configured for
@@ -11120,7 +10906,6 @@ sdcc ${VERSION} is now configured for
@@ -11171,7 +10957,6 @@ sdcc ${VERSION} is now configured for
     mos6502             ${enable_mos6502_port}
     mos65c02            ${enable_mos65c02_port}
 


@@ 463,7 467,7 @@ index 232d98e..3eeb17c 100755
   Disable packihx:      ${OPT_DISABLE_PACKIHX}
   Disable ucsim:        ${OPT_DISABLE_UCSIM}
   Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
@@ -11135,9 +10920,6 @@ sdcc ${VERSION} is now configured for
@@ -11186,9 +10971,6 @@ sdcc ${VERSION} is now configured for
     include/library files:  ${datadir}/${inclib_dir_suffix}
     include files:          ${datadir}/${include_dir_suffix}
     library files:          ${datadir}/${lib_dir_suffix}


@@ 473,7 477,7 @@ index 232d98e..3eeb17c 100755
     documentation:          ${docdir}
 
     prefix:             ${prefix}
@@ -11149,15 +10931,9 @@ sdcc ${VERSION} is now configured for
@@ -11200,15 +10982,9 @@ sdcc ${VERSION} is now configured for
     include files:      ${incPath1}
                         path(argv[0])${incPath2}
                         ${incPath3}


@@ 490,10 494,10 @@ index 232d98e..3eeb17c 100755
 # End of configure/configure.in
 
diff --git a/configure.ac b/configure.ac
index cc5309e..5eb4326 100644
index ead779c..a3578fe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -562,19 +562,6 @@ if test "${include_dir_suffix}" = ""; then
@@ -564,19 +564,6 @@ if test "${include_dir_suffix}" = ""; then
     include_dir_suffix="${inclib_dir_suffix}/include"
 fi
 


@@ 513,7 517,7 @@ index cc5309e..5eb4326 100644
 # lib_dir_suffix:
 # *nix default: "sdcc/lib"
 AC_ARG_VAR([lib_dir_suffix], [appended to datadir to define SDCC's library root directory])
@@ -582,13 +569,6 @@ if test "${lib_dir_suffix}" = ""; then
@@ -584,13 +571,6 @@ if test "${lib_dir_suffix}" = ""; then
     lib_dir_suffix="${inclib_dir_suffix}/lib"
 fi
 


@@ 527,7 531,7 @@ index cc5309e..5eb4326 100644
 # docdir:
 # *nix default: "${datadir}/sdcc/doc"
 AC_ARG_VAR([docdir], [documentation installation directory])
@@ -629,19 +609,11 @@ norm_inc_dir_suffix=${include_dir_suffix}
@@ -631,19 +611,11 @@ norm_inc_dir_suffix=${include_dir_suffix}
 adl_NORMALIZE_PATH([norm_inc_dir_suffix], [$sdccconf_h_dir_separator])
 AC_DEFINE_UNQUOTED(INCLUDE_DIR_SUFFIX,
                    DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}", [XXX])


@@ 547,7 551,7 @@ index cc5309e..5eb4326 100644
 
 # relative paths
 adl_COMPUTE_RELATIVE_PATHS([expanded_bindir:expanded_datadir:bin2data_dir])
@@ -819,7 +791,6 @@ AC_DO_DISABLER(packihx,    PACKIHX,    [Disables building packihx])
@@ -836,7 +808,6 @@ AC_DO_DISABLER(packihx,    PACKIHX,    [Disables building packihx])
 AC_DO_DISABLER(sdcpp,      SDCPP,      [Disables building sdcpp])
 AC_DO_DISABLER(sdcdb,      SDCDB,      [Disables building sdcdb])
 AC_DO_DISABLER(sdbinutils, SDBINUTILS, [Disables configuring and building of sdbinutils])


@@ 555,7 559,7 @@ index cc5309e..5eb4326 100644
 
 AC_DO_ENABLER(doc,   DOC,   [Enables building the documentation])
 AC_CHECK_PROG([LYX],        [lyx],        [lyx],        [:])
@@ -897,16 +868,10 @@ if test $OPT_DISABLE_PIC14 = 0; then
@@ -915,16 +886,10 @@ if test $OPT_DISABLE_PIC14 = 0; then
   AC_CONFIG_FILES(src/pic14/Makefile)
   test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/lib/pic14)
 fi


@@ 572,25 576,25 @@ index cc5309e..5eb4326 100644
 
 if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_SM83 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then
   AC_CONFIG_FILES([src/z80/Makefile])
@@ -970,7 +935,6 @@ fi
@@ -988,7 +953,6 @@ fi
 
 
 test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_FILES([device/lib/Makefile])
-test $OPT_DISABLE_DEVICE_LIB = 0 && test $OPT_DISABLE_NON_FREE = 0 && AC_CONFIG_FILES([device/non-free/lib/Makefile])
 
 AC_CONFIG_FILES([main.mk:main_in.mk
 src/Makefile
@@ -984,9 +948,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in
 Makefile
 Makefile.common:Makefile.common.in
 ])
 bin/Makefile
@@ -1010,9 +974,6 @@ AC_CONFIG_FILES([bin/sdar], [chmod +x bin/sdar])
 AC_CONFIG_FILES([bin/sdnm], [chmod +x bin/sdnm])
 AC_CONFIG_FILES([bin/sdranlib], [chmod +x bin/sdranlib])
 AC_CONFIG_FILES([bin/sdobjcopy], [chmod +x bin/sdobjcopy])
-if test $OPT_DISABLE_NON_FREE = 0; then
-  AC_CONFIG_FILES([device/non-free/include/Makefile])
-fi
 AC_OUTPUT
 
 # I found no better place
@@ -1004,16 +965,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir},                         [binPath],  [
@@ -1030,16 +991,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir},                         [binPath],  [
 adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_inc_dir_suffix}, [incPath1], [$dirch])
 adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_inc_dir_suffix},    [incPath2], [$dirch])
 adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_inc_dir_suffix}, [incPath3], [$dirch])


@@ 607,7 611,7 @@ index cc5309e..5eb4326 100644
 
 AC_MSG_RESULT([
 sdcc ${VERSION} is now configured for
@@ -1055,7 +1010,6 @@ sdcc ${VERSION} is now configured for
@@ -1082,7 +1037,6 @@ sdcc ${VERSION} is now configured for
     mos6502             ${enable_mos6502_port}
     mos65c02            ${enable_mos65c02_port}
 


@@ 615,7 619,7 @@ index cc5309e..5eb4326 100644
   Disable packihx:      ${OPT_DISABLE_PACKIHX}
   Disable ucsim:        ${OPT_DISABLE_UCSIM}
   Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
@@ -1070,9 +1024,6 @@ sdcc ${VERSION} is now configured for
@@ -1097,9 +1051,6 @@ sdcc ${VERSION} is now configured for
     include/library files:  ${datadir}/${inclib_dir_suffix}
     include files:          ${datadir}/${include_dir_suffix}
     library files:          ${datadir}/${lib_dir_suffix}


@@ 625,7 629,7 @@ index cc5309e..5eb4326 100644
     documentation:          ${docdir}
 
     prefix:             ${prefix}
@@ -1084,14 +1035,8 @@ sdcc ${VERSION} is now configured for
@@ -1111,14 +1062,8 @@ sdcc ${VERSION} is now configured for
     include files:      ${incPath1}
                         path(argv[[0]])${incPath2}
                         ${incPath3}


@@ 671,10 675,10 @@ index 019fe0f..da3389d 100644
 ############################################################
 # Common actions
diff --git a/device/lib/pic14/Makefile.in b/device/lib/pic14/Makefile.in
index 039c0cb..90510fd 100644
index 2c1a5d1..5a2082c 100644
--- a/device/lib/pic14/Makefile.in
+++ b/device/lib/pic14/Makefile.in
@@ -335,13 +335,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
@@ -338,13 +338,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
 # C preprocessor flags
 ############################################################
 AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \


@@ 689,7 693,7 @@ index 039c0cb..90510fd 100644
 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_4)
 
 # extra flags for enhanced cores
@@ -366,8 +365,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
@@ -369,8 +368,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
 ############################################################
 # Assembler flags
 ############################################################


@@ 700,10 704,10 @@ index 039c0cb..90510fd 100644
 # extensions generated by the build process
 CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
diff --git a/device/lib/pic14/libc/Makefile.in b/device/lib/pic14/libc/Makefile.in
index 1283cbb..70e82d0 100644
index ccf2032..8b2ba48 100644
--- a/device/lib/pic14/libc/Makefile.in
+++ b/device/lib/pic14/libc/Makefile.in
@@ -878,13 +878,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
@@ -880,13 +880,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
 # C preprocessor flags
 ############################################################
 AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \


@@ 718,7 722,7 @@ index 1283cbb..70e82d0 100644
 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_9)
 
 # extra flags for enhanced cores
@@ -909,8 +908,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
@@ -911,8 +910,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
 ############################################################
 # Assembler flags
 ############################################################


@@ 729,10 733,10 @@ index 1283cbb..70e82d0 100644
 # extensions generated by the build process
 CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
diff --git a/device/lib/pic14/libm/Makefile.in b/device/lib/pic14/libm/Makefile.in
index 409835d..e9fdef8 100644
index 47f83e9..599023a 100644
--- a/device/lib/pic14/libm/Makefile.in
+++ b/device/lib/pic14/libm/Makefile.in
@@ -511,13 +511,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
@@ -513,13 +513,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
 # C preprocessor flags
 ############################################################
 AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \


@@ 747,7 751,7 @@ index 409835d..e9fdef8 100644
 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_9)
 
 # extra flags for enhanced cores
@@ -542,8 +541,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
@@ -544,8 +543,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
 ############################################################
 # Assembler flags
 ############################################################


@@ 758,10 762,10 @@ index 409835d..e9fdef8 100644
 # extensions generated by the build process
 CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
diff --git a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
index c82f7ba..780fa77 100644
index b74e455..0991bfa 100644
--- a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
+++ b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
@@ -518,13 +518,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
@@ -520,13 +520,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
 # C preprocessor flags
 ############################################################
 AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \


@@ 776,7 780,7 @@ index c82f7ba..780fa77 100644
 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_5)
 
 # extra flags for enhanced cores
@@ -549,8 +548,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
@@ -551,8 +550,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
 ############################################################
 # Assembler flags
 ############################################################


@@ 787,10 791,10 @@ index c82f7ba..780fa77 100644
 # extensions generated by the build process
 CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
diff --git a/device/lib/pic14/libsdcc/enhanced/Makefile.in b/device/lib/pic14/libsdcc/enhanced/Makefile.in
index 33b8299..f4e0398 100644
index 0647cca..0e98e11 100644
--- a/device/lib/pic14/libsdcc/enhanced/Makefile.in
+++ b/device/lib/pic14/libsdcc/enhanced/Makefile.in
@@ -518,13 +518,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
@@ -520,13 +520,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
 # C preprocessor flags
 ############################################################
 AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \


@@ 805,7 809,7 @@ index 33b8299..f4e0398 100644
 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_5)
 
 # extra flags for enhanced cores
@@ -549,8 +548,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
@@ -551,8 +550,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
 ############################################################
 # Assembler flags
 ############################################################


@@ 816,10 820,10 @@ index 33b8299..f4e0398 100644
 # extensions generated by the build process
 CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
diff --git a/device/lib/pic14/libsdcc/regular/Makefile.in b/device/lib/pic14/libsdcc/regular/Makefile.in
index 6586b7d..7010287 100644
index 5936858..16786b4 100644
--- a/device/lib/pic14/libsdcc/regular/Makefile.in
+++ b/device/lib/pic14/libsdcc/regular/Makefile.in
@@ -511,13 +511,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
@@ -513,13 +513,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
 # C preprocessor flags
 ############################################################
 AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \


@@ 834,7 838,7 @@ index 6586b7d..7010287 100644
 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_5)
 
 # extra flags for enhanced cores
@@ -542,8 +541,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
@@ -544,8 +543,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
 ############################################################
 # Assembler flags
 ############################################################


@@ 871,7 875,7 @@ index 01ad950..62839b9 100644
 
 clean-local:
diff --git a/device/lib/pic16/Makefile.in b/device/lib/pic16/Makefile.in
index 6a4c9cf..4b07384 100644
index b0b5dfd..cfa190d 100644
--- a/device/lib/pic16/Makefile.in
+++ b/device/lib/pic16/Makefile.in
@@ -87,10 +87,7 @@ PRE_UNINSTALL = :


@@ 886,7 890,7 @@ index 6a4c9cf..4b07384 100644
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
@@ -297,8 +294,7 @@ top_build_prefix = @top_build_prefix@
@@ -298,8 +295,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 SUBDIRS = debug libc libio libm libsdcc startup


@@ 896,7 900,7 @@ index 6a4c9cf..4b07384 100644
 #AM_CFLAGS += --no-optimize-goto
 
 #AM_CFLAGS += --debug-ralloc
@@ -312,11 +308,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
@@ -313,11 +309,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
 #AM_CFLAGS += --noinduction
 #AM_CFLAGS += --nojtbound
 #AM_CFLAGS += --noloopreverse


@@ 911,10 915,10 @@ index 6a4c9cf..4b07384 100644
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
diff --git a/device/lib/pic16/configure b/device/lib/pic16/configure
index add51b9..c451a74 100755
index 88da323..abfd874 100755
--- a/device/lib/pic16/configure
+++ b/device/lib/pic16/configure
@@ -3828,7 +3828,6 @@ fi
@@ -3859,7 +3859,6 @@ fi
 
 
 


@@ 922,7 926,7 @@ index add51b9..c451a74 100755
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking devices supported by gputils" >&5
 printf %s "checking devices supported by gputils... " >&6; }
 GOOD_PICS="";
@@ -3839,20 +3838,6 @@ N_GOOD=0
@@ -3870,20 +3869,6 @@ N_GOOD=0
 N_BAD=0
 mkdir -p ".checkdevices";
 rm -f "$RESULT";


@@ 944,10 948,10 @@ index add51b9..c451a74 100755
 printf "%s\n" "$N_GOOD devices ($GOOD_PICS)" >&6; }
 
diff --git a/device/lib/pic16/configure.ac b/device/lib/pic16/configure.ac
index 75bea9d..65e98be 100644
index df811a5..4a49c25 100644
--- a/device/lib/pic16/configure.ac
+++ b/device/lib/pic16/configure.ac
@@ -68,10 +68,6 @@ AC_SUBST(OBJEXT, [o])
@@ -69,10 +69,6 @@ AC_SUBST(OBJEXT, [o])
 _AM_DEPENDENCIES(CC)
 _AM_DEPENDENCIES(CCAS)
 


@@ 959,7 963,7 @@ index 75bea9d..65e98be 100644
 
 # Checks for header files.
diff --git a/device/lib/pic16/debug/Makefile.in b/device/lib/pic16/debug/Makefile.in
index 05108a8..a6a94bb 100644
index db0d421..9e90d7a 100644
--- a/device/lib/pic16/debug/Makefile.in
+++ b/device/lib/pic16/debug/Makefile.in
@@ -88,10 +88,7 @@ PRE_UNINSTALL = :


@@ 974,7 978,7 @@ index 05108a8..a6a94bb 100644
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -292,8 +289,7 @@ top_builddir = @top_builddir@
@@ -293,8 +290,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 lib_LIBRARIES = libdebug.a
 libdebug_a_SOURCES = gstack/gstack.c


@@ 984,7 988,7 @@ index 05108a8..a6a94bb 100644
 #AM_CFLAGS += --no-optimize-goto
 
 #AM_CFLAGS += --debug-ralloc
@@ -307,11 +303,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
@@ -308,11 +304,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
 #AM_CFLAGS += --noinduction
 #AM_CFLAGS += --nojtbound
 #AM_CFLAGS += --noloopreverse


@@ 999,7 1003,7 @@ index 05108a8..a6a94bb 100644
 
 .SUFFIXES:
diff --git a/device/lib/pic16/libc/Makefile.in b/device/lib/pic16/libc/Makefile.in
index 49a437d..5579b71 100644
index ae76fdd..75fc04a 100644
--- a/device/lib/pic16/libc/Makefile.in
+++ b/device/lib/pic16/libc/Makefile.in
@@ -88,10 +88,7 @@ PRE_UNINSTALL = :


@@ 1014,7 1018,7 @@ index 49a437d..5579b71 100644
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -382,8 +379,7 @@ libc18f_a_SOURCES = ctype/iscntrl.c ctype/isdigit.c ctype/isgraph.c \
@@ -383,8 +380,7 @@ libc18f_a_SOURCES = ctype/iscntrl.c ctype/isdigit.c ctype/isgraph.c \
 	string/strpbrk.c string/strrchr.c string/strspn.c \
 	string/strstr.c string/strtok.c string/strupr.c \
 	utils/cnvfrac.S utils/cnvint.S utils/cvtdec.S


@@ 1024,7 1028,7 @@ index 49a437d..5579b71 100644
 #AM_CFLAGS += --no-optimize-goto
 
 #AM_CFLAGS += --debug-ralloc
@@ -397,11 +393,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
@@ -398,11 +394,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
 #AM_CFLAGS += --noinduction
 #AM_CFLAGS += --nojtbound
 #AM_CFLAGS += --noloopreverse


@@ 1039,7 1043,7 @@ index 49a437d..5579b71 100644
 
 .SUFFIXES:
diff --git a/device/lib/pic16/libio/Makefile.in b/device/lib/pic16/libio/Makefile.in
index 5b1a9b0..664958f 100644
index f2b4ecc..13537a8 100644
--- a/device/lib/pic16/libio/Makefile.in
+++ b/device/lib/pic16/libio/Makefile.in
@@ -481,10 +481,7 @@ POST_UNINSTALL = :


@@ 1054,7 1058,7 @@ index 5b1a9b0..664958f 100644
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -15601,8 +15598,7 @@ libio18lf8722_a_SOURCES = dummy.c i2c/i2cack.c i2c/i2cclose.c \
@@ -15602,8 +15599,7 @@ libio18lf8722_a_SOURCES = dummy.c i2c/i2cack.c i2c/i2cclose.c \
 libio18lf8722_a_CFLAGS = -p18lf8722 $(AM_CFLAGS)
 libio18lf8723_a_SOURCES = dummy.c
 libio18lf8723_a_CFLAGS = -p18lf8723 $(AM_CFLAGS)


@@ 1064,7 1068,7 @@ index 5b1a9b0..664958f 100644
 #AM_CFLAGS += --no-optimize-goto
 
 #AM_CFLAGS += --debug-ralloc
@@ -15616,11 +15612,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
@@ -15617,11 +15613,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
 #AM_CFLAGS += --noinduction
 #AM_CFLAGS += --nojtbound
 #AM_CFLAGS += --noloopreverse


@@ 1124,7 1128,7 @@ index 211604e..e8896bf 100755
 include \$(top_srcdir)/Makefile.common
 
diff --git a/device/lib/pic16/libm/Makefile.in b/device/lib/pic16/libm/Makefile.in
index 285c5b8..ad6c293 100644
index d08a59c..e01d8e2 100644
--- a/device/lib/pic16/libm/Makefile.in
+++ b/device/lib/pic16/libm/Makefile.in
@@ -88,10 +88,7 @@ PRE_UNINSTALL = :


@@ 1139,7 1143,7 @@ index 285c5b8..ad6c293 100644
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -313,8 +310,7 @@ libm18f_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c \
@@ -314,8 +311,7 @@ libm18f_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c \
 	frexpf.c isinf.c isnan.c ldexpf.c log10f.c logf.c modff.c \
 	powf.c sincosf.c sincoshf.c sinf.c sinhf.c sqrtf.c tancotf.c \
 	tanf.c tanhf.c


@@ 1149,7 1153,7 @@ index 285c5b8..ad6c293 100644
 #AM_CFLAGS += --no-optimize-goto
 
 #AM_CFLAGS += --debug-ralloc
@@ -328,11 +324,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
@@ -329,11 +325,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
 #AM_CFLAGS += --noinduction
 #AM_CFLAGS += --nojtbound
 #AM_CFLAGS += --noloopreverse


@@ 1164,7 1168,7 @@ index 285c5b8..ad6c293 100644
 
 .SUFFIXES:
diff --git a/device/lib/pic16/libsdcc/Makefile.in b/device/lib/pic16/libsdcc/Makefile.in
index 808b8a5..412dc80 100644
index afbf492..4f4a5e5 100644
--- a/device/lib/pic16/libsdcc/Makefile.in
+++ b/device/lib/pic16/libsdcc/Makefile.in
@@ -88,10 +88,7 @@ PRE_UNINSTALL = :


@@ 1179,7 1183,7 @@ index 808b8a5..412dc80 100644
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -414,8 +411,7 @@ libsdcc_a_SOURCES = char/divschar.c char/divuchar.c char/modschar.c \
@@ -415,8 +412,7 @@ libsdcc_a_SOURCES = char/divschar.c char/divuchar.c char/modschar.c \
 	int/modsint.c int/moduint.c int/mulint.c long/divslong.c \
 	long/divulong.c long/modslong.c long/modulong.c long/mullong.c \
 	lregs/lrrest.c lregs/lrst.c stack/stack.S


@@ 1189,7 1193,7 @@ index 808b8a5..412dc80 100644
 #AM_CFLAGS += --no-optimize-goto
 
 #AM_CFLAGS += --debug-ralloc
@@ -429,11 +425,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
@@ -430,11 +426,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
 #AM_CFLAGS += --noinduction
 #AM_CFLAGS += --nojtbound
 #AM_CFLAGS += --noloopreverse


@@ 1204,7 1208,7 @@ index 808b8a5..412dc80 100644
 
 .SUFFIXES:
diff --git a/device/lib/pic16/startup/Makefile.in b/device/lib/pic16/startup/Makefile.in
index d57c254..7394a4c 100644
index 5c2fce7..8d70807 100644
--- a/device/lib/pic16/startup/Makefile.in
+++ b/device/lib/pic16/startup/Makefile.in
@@ -89,10 +89,7 @@ PRE_UNINSTALL = :


@@ 1219,7 1223,7 @@ index d57c254..7394a4c 100644
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -309,8 +306,7 @@ libcrt0iz_a_SOURCES = crt0iz.c
@@ -310,8 +307,7 @@ libcrt0iz_a_SOURCES = crt0iz.c
 # Force installation of .o files into $libdir
 crtdir = $(libdir)
 crt_DATA = crt0.o crt0i.o crt0iz.o


@@ 1229,7 1233,7 @@ index d57c254..7394a4c 100644
 #AM_CFLAGS += --no-optimize-goto
 
 #AM_CFLAGS += --debug-ralloc
@@ -324,11 +320,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
@@ -325,11 +321,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
 #AM_CFLAGS += --noinduction
 #AM_CFLAGS += --nojtbound
 #AM_CFLAGS += --noloopreverse


@@ 1244,7 1248,7 @@ index d57c254..7394a4c 100644
 
 .SUFFIXES:
diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt
index 3c4bc1f..0a6fdd5 100644
index 3711c71..9e500a2 100644
--- a/doc/INSTALL.txt
+++ b/doc/INSTALL.txt
@@ -18,9 +18,7 @@ To install:


@@ 1278,7 1282,7 @@ index 3c4bc1f..0a6fdd5 100644
 
 You can test the install by entering:
diff --git a/doc/README.txt b/doc/README.txt
index 3720fd6..5a0d0a8 100644
index cd1ef3f..5a0d0a8 100644
--- a/doc/README.txt
+++ b/doc/README.txt
@@ -37,10 +37,9 @@ Exception are pic device libraries and header files which are derived


@@ 1288,7 1292,7 @@ index 3720fd6..5a0d0a8 100644
-with the GPL. Pic device libraries and header files are located at
-non-free/lib and non-free/include directories respectively. Sdcc should
-be run with the --use-non-free command line option in order to include
-non-free header files and libraries.
-the potentially non-free header files and libraries.
+with the GPL. These non-free libraries and header files (and the build
+and run-time options that enable their use) are omitted in the SDCC
+package distributed with GNU Guix.


@@ 1296,10 1300,10 @@ index 3720fd6..5a0d0a8 100644
 However: Many think that the Microchip requirement is not legally enforceable,
 arguing that the header files only contain noncopyrightable facts.
diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx
index 9ba31eb..3d69b5a 100644
index a57bf15..d6f30c7 100644
--- a/doc/sdccman.lyx
+++ b/doc/sdccman.lyx
@@ -1093,54 +1093,9 @@ A possible exception are pic device libraries and header files which are
@@ -1150,54 +1150,9 @@ A possible exception are pic device libraries and header files which are
  to be used with authentic Microchip devices" which makes them incompatible
  with the GPL, if Microchip has any copyright in them (which might depend
  on local copyright laws).


@@ 1357,7 1361,31 @@ index 9ba31eb..3d69b5a 100644
 \end_layout
 
 \begin_layout Itemize
@@ -2943,18 +2898,6 @@ include_dir_suffix environment variable, see table below
@@ -1260,23 +1215,6 @@ makebin:
 zlib/libpng License
 \end_layout
 
-\begin_layout Itemize
-pic libraries in device/non-free:
-\begin_inset Newline newline
-\end_inset
-
-Microchip Technology Inc.
-\begin_inset space \space{}
-\end_inset
-
-claims to have copyrights on this, and their term are non-free.
- However, a more common opinion is that Microchip Technology Inc.
-\begin_inset space \space{}
-\end_inset
-
-is just claiming a copyright on uncopyrightable facts.
-\end_layout
-
 \end_deeper
 \begin_layout Itemize
 libraries:
@@ -3062,18 +3000,6 @@ include_dir_suffix environment variable, see table below
 \end_inset
 
 


@@ 1376,7 1404,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset space ~
 \end_inset
 
@@ -2967,22 +2910,6 @@ lib_dir_suffix environment variable, see table below
@@ -3086,22 +3012,6 @@ lib_dir_suffix environment variable, see table below
 \end_inset
 
 


@@ 1399,7 1427,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset space ~
 \end_inset
 
@@ -3481,7 +3408,7 @@ These defaults are:
@@ -3600,7 +3510,7 @@ These defaults are:
 \begin_layout Standard
 \align center
 \begin_inset Tabular


@@ 1408,7 1436,7 @@ index 9ba31eb..3d69b5a 100644
 <features tabularvalignment="middle">
 <column alignment="block" valignment="top" width="0in">
 <column alignment="block" valignment="top" width="0in">
@@ -3765,68 +3692,6 @@ sdcc/include
@@ -3884,68 +3794,6 @@ sdcc/include
 include
 \end_layout
 


@@ 1477,7 1505,7 @@ index 9ba31eb..3d69b5a 100644
 \end_inset
 </cell>
 </row>
@@ -3837,7 +3702,7 @@ lib
@@ -3956,7 +3804,7 @@ lib
 \begin_layout Plain Layout
 
 \emph on


@@ 1486,7 1514,7 @@ index 9ba31eb..3d69b5a 100644
 \end_layout
 
 \end_inset
@@ -3846,7 +3711,7 @@ NON_FREE_LIB_DIR_SUFFIX
@@ -3965,7 +3813,7 @@ NON_FREE_LIB_DIR_SUFFIX
 \begin_inset Text
 
 \begin_layout Plain Layout


@@ 1495,7 1523,7 @@ index 9ba31eb..3d69b5a 100644
 \end_layout
 
 \end_inset
@@ -3855,7 +3720,7 @@ sdcc/non-free/lib
@@ -3974,7 +3822,7 @@ sdcc/non-free/lib
 \begin_inset Text
 
 \begin_layout Plain Layout


@@ 1504,7 1532,7 @@ index 9ba31eb..3d69b5a 100644
 \end_layout
 
 \end_inset
@@ -4254,20 +4119,6 @@ include
@@ -4373,20 +4221,6 @@ include
 \end_inset
 
  


@@ 1525,7 1553,7 @@ index 9ba31eb..3d69b5a 100644
 \backslash
 
 \begin_inset Newline newline
@@ -4282,20 +4133,6 @@ lib
@@ -4401,20 +4235,6 @@ lib
 \end_inset
 
  


@@ 1546,7 1574,7 @@ index 9ba31eb..3d69b5a 100644
 \backslash
 
 \begin_inset Newline newline
@@ -4476,20 +4313,6 @@ include
@@ -4595,20 +4415,6 @@ include
 \end_inset
 
  


@@ 1567,7 1595,7 @@ index 9ba31eb..3d69b5a 100644
 \backslash
 
 \begin_inset Newline newline
@@ -4504,20 +4327,6 @@ lib
@@ -4623,20 +4429,6 @@ lib
 \end_inset
 
  


@@ 1588,7 1616,7 @@ index 9ba31eb..3d69b5a 100644
 \backslash
 
 \begin_inset Newline newline
@@ -4614,7 +4423,7 @@ Install paths
@@ -4733,7 +4525,7 @@ Install paths
 \begin_layout Standard
 \align center
 \begin_inset Tabular


@@ 1597,7 1625,7 @@ index 9ba31eb..3d69b5a 100644
 <features tabularvalignment="middle">
 <column alignment="left" valignment="top">
 <column alignment="left" valignment="top" width="4.5cm">
@@ -4770,64 +4579,6 @@ include
@@ -4889,64 +4681,6 @@ include
 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
 \begin_inset Text
 


@@ 1662,7 1690,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_layout Plain Layout
 Library file**
 \end_layout
@@ -4877,64 +4628,6 @@ sdcc
@@ -4996,64 +4730,6 @@ sdcc
 lib
 \end_layout
 


@@ 1727,7 1755,7 @@ index 9ba31eb..3d69b5a 100644
 \end_inset
 </cell>
 </row>
@@ -5257,7 +4950,7 @@ $PATH
@@ -5376,7 +5052,7 @@ $PATH
 \begin_layout Standard
 \align center
 \begin_inset Tabular


@@ 1736,7 1764,7 @@ index 9ba31eb..3d69b5a 100644
 <features tabularvalignment="middle">
 <column alignment="block" valignment="top" width="0.5cm">
 <column alignment="block" valignment="top" width="4.8cm">
@@ -5535,203 +5228,13 @@ include
@@ -5654,203 +5330,13 @@ include
 </cell>
 </row>
 <row>


@@ 1941,7 1969,7 @@ index 9ba31eb..3d69b5a 100644
 \end_inset
 </cell>
 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
@@ -5747,21 +5250,13 @@ $DATADIR/
@@ -5866,21 +5352,13 @@ $DATADIR/
 \end_inset
 
 


@@ 1964,7 1992,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Text
 
 \begin_layout Plain Layout
@@ -5769,7 +5264,7 @@ $INCLUDE_DIR_SUFFIX
@@ -5888,7 +5366,7 @@ $INCLUDE_DIR_SUFFIX
 \begin_inset Newline newline
 \end_inset
 


@@ 1973,7 2001,7 @@ index 9ba31eb..3d69b5a 100644
 \end_layout
 
 \end_inset
@@ -5867,7 +5362,7 @@ model
@@ -5986,7 +5464,7 @@ model
 \begin_layout Standard
 \align center
 \begin_inset Tabular


@@ 1982,7 2010,7 @@ index 9ba31eb..3d69b5a 100644
 <features tabularvalignment="middle">
 <column alignment="block" valignment="top" width="0.5cm">
 <column alignment="block" valignment="top" width="4.5cm">
@@ -6147,7 +5642,7 @@ lib
@@ -6266,7 +5744,7 @@ lib
 </cell>
 </row>
 <row>


@@ 1991,7 2019,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Text
 
 \begin_layout Plain Layout
@@ -6156,7 +5651,7 @@ lib
@@ -6275,7 +5753,7 @@ lib
 
 \end_inset
 </cell>


@@ 2000,7 2028,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Text
 
 \begin_layout Plain Layout
@@ -6187,7 +5682,7 @@ $LIB_DIR_SUFFIX/
@@ -6306,7 +5784,7 @@ $LIB_DIR_SUFFIX/
 
 \end_inset
 </cell>


@@ 2009,7 2037,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Text
 
 \begin_layout Plain Layout
@@ -6202,7 +5697,7 @@ lib/
@@ -6321,7 +5799,7 @@ lib/
 
 \end_inset
 </cell>


@@ 2018,7 2046,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Text
 
 \begin_layout Plain Layout
@@ -6225,308 +5720,6 @@ lib
@@ -6344,308 +5822,6 @@ lib
 <model>
 \end_layout
 


@@ 2327,7 2355,7 @@ index 9ba31eb..3d69b5a 100644
 \end_inset
 </cell>
 </row>
@@ -8801,14 +7994,6 @@ In <installdir>/share/sdcc/include
@@ -8923,14 +8099,6 @@ In <installdir>/share/sdcc/include
 the include files
 \end_layout
 


@@ 2342,7 2370,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_layout Standard
 In <installdir>/share/sdcc/lib
 \end_layout
@@ -8817,14 +8002,6 @@ In <installdir>/share/sdcc/lib
@@ -8939,14 +8107,6 @@ In <installdir>/share/sdcc/lib
 the src and target subdirectories with the precompiled relocatables.
 \end_layout
 


@@ 2357,7 2385,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_layout Standard
 In <installdir>/share/sdcc/doc
 \end_layout
@@ -15590,66 +14767,6 @@ splint
@@ -16096,66 +15256,6 @@ splint
 myprogram.c
 \end_layout
 


@@ 2424,7 2452,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_layout Subsection
 Linker Options
 \begin_inset Index idx
@@ -45248,66 +44365,9 @@ http://sourceforge.net/projects/gputils
@@ -45880,66 +44980,9 @@ http://sourceforge.net/projects/gputils
 Pic device specific header and c source files are automatically generated
  from MPLAB include files, which are published by Microchip with a special
  requirement that they are only to be used with authentic Microchip devices.


@@ 2494,7 2522,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Newline newline
 \end_inset
 
@@ -45361,7 +44421,7 @@ Makefile
@@ -45993,7 +45036,7 @@ Makefile
 \begin_inset space ~
 \end_inset
 


@@ 2503,7 2531,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Newline newline
 \end_inset
 
@@ -45455,7 +44515,7 @@ Makefile
@@ -46087,7 +45130,7 @@ Makefile
 \begin_inset space ~
 \end_inset
 


@@ 2512,7 2540,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_inset Newline newline
 \end_inset
 
@@ -45737,47 +44797,6 @@ status collapsed
@@ -46369,47 +45412,6 @@ status collapsed
 \begin_layout Plain Layout
 
 


@@ 2560,7 2588,7 @@ index 9ba31eb..3d69b5a 100644
 \backslash
 /
 \end_layout
@@ -46650,47 +45669,6 @@ status collapsed
@@ -47282,47 +46284,6 @@ status collapsed
 -all-callee-saves
 \end_layout
 


@@ 2608,7 2636,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_layout Subsection
 Port Specific Options
 \begin_inset Index idx
@@ -47967,188 +46945,6 @@ Linker
@@ -48599,188 +47560,6 @@ Linker
 \end_inset
 
 


@@ 2797,7 2825,7 @@ index 9ba31eb..3d69b5a 100644
 \end_layout
 
 \begin_layout Subsection
@@ -48844,66 +47640,9 @@ name "subsec:PIC16_Header-Files-and-Libraries"
@@ -49476,66 +48255,9 @@ name "subsec:PIC16_Header-Files-and-Libraries"
 Pic device specific header and c source files are automatically generated
  from MPLAB include files, which are published by Microchip with a special
  requirement that they are only to be used with authentic Microchip devices.


@@ 2867,7 2895,7 @@ index 9ba31eb..3d69b5a 100644
 \end_layout
 
 \begin_layout Subsection
@@ -49149,195 +47888,6 @@ vfprintf.c
@@ -49781,195 +48503,6 @@ vfprintf.c
  should also work, but is untested.
 \end_layout
 


@@ 3063,7 3091,7 @@ index 9ba31eb..3d69b5a 100644
 \begin_layout Subsection
 Memory Models
 \end_layout
@@ -74082,6 +72632,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC
@@ -74714,6 +73247,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC
  developers.
 \end_layout
 


@@ 3077,7 3105,7 @@ index 9ba31eb..3d69b5a 100644
 All product names mentioned herein may be trademarks
 \begin_inset Index idx
diff --git a/sdcc.spec b/sdcc.spec
index 85ae200..8e0ef4b 100644
index b784cbc..f180b51 100644
--- a/sdcc.spec
+++ b/sdcc.spec
@@ -89,9 +89,7 @@ rm -rf $RPM_BUILD_ROOT


@@ 3140,7 3168,7 @@ index ca8d69f..980af8d 100644
 #undef OPT_DISABLE_PACKIHX
 
diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h
index b49fa1b..d357169 100644
index 87981f4..e2701f2 100644
--- a/src/SDCCglobl.h
+++ b/src/SDCCglobl.h
@@ -287,7 +287,6 @@ struct options


@@ 3152,10 3180,10 @@ index b49fa1b..d357169 100644
     int xstack_loc;             /* initial location of external stack */
     int stack_loc;              /* initial value of internal stack pointer */
diff --git a/src/SDCCmain.c b/src/SDCCmain.c
index bc1493d..e775988 100644
index 6b50572..089c42f 100644
--- a/src/SDCCmain.c
+++ b/src/SDCCmain.c
@@ -151,7 +151,6 @@ char buffer[PATH_MAX * 2];
@@ -143,7 +143,6 @@ char buffer[PATH_MAX * 2];
 #define OPTION_DATA_SEG             "--dataseg"
 #define OPTION_DOLLARS_IN_IDENT     "--fdollars-in-identifiers"
 #define OPTION_SIGNED_CHAR          "--fsigned-char"


@@ 3163,15 3191,15 @@ index bc1493d..e775988 100644
 #define OPTION_PEEP_RETURN          "--peep-return"
 #define OPTION_NO_PEEP_RETURN       "--no-peep-return"
 #define OPTION_NO_OPTSDCC_IN_ASM    "--no-optsdcc-in-asm"
@@ -209,7 +208,6 @@ static const OPTION optionsTable[] = {
   {0,   OPTION_STD_SDCC2X, NULL, "Use ISO C2X standard with SDCC extensions"},
@@ -193,7 +192,6 @@ static const OPTION optionsTable[] = {
   {0,   OPTION_STD, NULL, "Determine the language standard (c89, c99, c11, c2x, sdcc89 etc.)"},
   {0,   OPTION_DOLLARS_IN_IDENT, &options.dollars_in_ident, "Permit '$' as an identifier character"},
   {0,   OPTION_SIGNED_CHAR, &options.signed_char, "Make \"char\" signed by default"},
-  {0,   OPTION_USE_NON_FREE, &options.use_non_free, "Search / include non-free licensed libraries and header files"},
 
   {0,   NULL, NULL, "Code generation options"},
   {'m', NULL, NULL, "Set the port to use e.g. -mz80."},
@@ -2132,10 +2130,6 @@ preProcess (char **envp)
@@ -2207,10 +2205,6 @@ preProcess (char **envp)
       else
         addSet (&preArgvSet, Safe_strdup ("-D__SDCC_CHAR_UNSIGNED"));
 


@@ 3182,7 3210,7 @@ index bc1493d..e775988 100644
       /* set the macro for large model  */
       switch (options.model)
         {
@@ -2365,12 +2359,6 @@ setIncludePath (void)
@@ -2454,12 +2448,6 @@ setIncludePath (void)
    *  6. - $SDCC_HOME/PREFIX2DATA_DIR/INCLUDE_DIR_SUFFIX
    *  7. - path(argv[0])/BIN2DATA_DIR/INCLUDE_DIR_SUFFIX
    *  8. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix)


@@ 3195,7 3223,7 @@ index bc1493d..e775988 100644
    */
 
   if (!options.nostdinc)
@@ -2386,17 +2374,6 @@ setIncludePath (void)
@@ -2475,17 +2463,6 @@ setIncludePath (void)
         includeDirsSet = processStrSet (includeDirsSet, NULL, port->target, NULL);
       mergeSets (&includeDirsSet, tempSet);
 


@@ 3213,7 3241,7 @@ index bc1493d..e775988 100644
       if ((p = getenv (SDCC_INCLUDE_NAME)) != NULL)
         {
           struct dbuf_s dbuf;
@@ -2421,9 +2398,6 @@ setLibPath (void)
@@ -2510,9 +2487,6 @@ setLibPath (void)
    * 3. - $SDCC_HOME/PREFIX2DATA_DIR/LIB_DIR_SUFFIX/<model>
    * 4. - path(argv[0])/BIN2DATA_DIR/LIB_DIR_SUFFIX/<model>
    * 5. - DATADIR/LIB_DIR_SUFFIX/<model> (only on *nix)


@@ 3223,7 3251,7 @@ index bc1493d..e775988 100644
    */
 
   if (!options.nostdlib)
@@ -2440,13 +2414,6 @@ setLibPath (void)
@@ -2529,13 +2503,6 @@ setLibPath (void)
       dbuf_makePath (&dbuf, LIB_DIR_SUFFIX, port->general.get_model ? port->general.get_model () : targetname);
       libDirsSet = processStrSet (dataDirsSet, NULL, dbuf_c_str (&dbuf), NULL);
 


@@ 3238,7 3266,7 @@ index bc1493d..e775988 100644
         {
           addSetHead (&libDirsSet, Safe_strdup (p));
diff --git a/src/pic14/main.c b/src/pic14/main.c
index 38d8730..a0eecdb 100644
index ab4bcdf..1747fd6 100644
--- a/src/pic14/main.c
+++ b/src/pic14/main.c
@@ -42,7 +42,6 @@ static OPTION _pic14_poptions[] =


@@ 3279,7 3307,7 @@ index 4275b65..0dc8c86 100644
 
 extern pic14_options_t pic14_options;
diff --git a/src/pic16/device.h b/src/pic16/device.h
index cdfbba0..5877f09 100644
index 41a1b79..9c642e3 100644
--- a/src/pic16/device.h
+++ b/src/pic16/device.h
@@ -99,7 +99,6 @@ typedef struct {


@@ 3291,7 3319,7 @@ index cdfbba0..5877f09 100644
 
 extern pic16_options_t pic16_options;
diff --git a/src/pic16/main.c b/src/pic16/main.c
index b0e717a..d7616f5 100644
index 8809e2c..53c700e 100644
--- a/src/pic16/main.c
+++ b/src/pic16/main.c
@@ -660,7 +660,6 @@ OPTION pic16_optionsTable[]= {


@@ 3328,7 3356,7 @@ index b0e717a..d7616f5 100644
 
 static const char *
diff --git a/src/regression/Makefile b/src/regression/Makefile
index d8dae7c..1a32355 100644
index 634e970..9a7a78a 100644
--- a/src/regression/Makefile
+++ b/src/regression/Makefile
@@ -107,12 +107,12 @@ endif


@@ 3348,10 3376,10 @@ index d8dae7c..1a32355 100644
 # linker libraries
 LIB_SUFFIX = $(LIB_E)$(LIB_O)$(LIB_X)
diff --git a/support/regression/ports/pic14/spec.mk b/support/regression/ports/pic14/spec.mk
index a3dcc05..bef1c45 100644
index b0b0867..2d5cdd3 100644
--- a/support/regression/ports/pic14/spec.mk
+++ b/support/regression/ports/pic14/spec.mk
@@ -12,13 +12,9 @@ endif
@@ -16,13 +16,9 @@ EMU = ${WINE} ${GPSIM}
 
 ifndef SDCC_BIN_PATH
   ifndef CROSSCOMPILING


@@ 3367,16 3395,16 @@ index a3dcc05..bef1c45 100644
 endif
 
 ifdef CROSSCOMPILING
@@ -26,7 +22,6 @@ ifdef CROSSCOMPILING
@@ -30,7 +26,6 @@ ifdef CROSSCOMPILING
 endif
 
 SDCCFLAGS += -mpic14 -pp16f877 --less-pedantic -Wl,-q
 SDCCFLAGS += -mpic14 -pp16f877 --less-pedantic
-SDCCFLAGS += --no-warn-non-free
 LINKFLAGS += libsdcc.lib libm.lib
 
 OBJEXT = .o
diff --git a/support/regression/ports/pic16/spec.mk b/support/regression/ports/pic16/spec.mk
index 1f94cde..f1ac726 100644
index 541608a..6e7238f 100644
--- a/support/regression/ports/pic16/spec.mk
+++ b/support/regression/ports/pic16/spec.mk
@@ -12,13 +12,9 @@ endif


@@ 3513,10 3541,10 @@ index 6db417a..4b35225 100755
   );
 
diff --git a/support/scripts/sdcc.nsi b/support/scripts/sdcc.nsi
index cebb8a6..778472a 100644
index 8309df1..c0cc223 100644
--- a/support/scripts/sdcc.nsi
+++ b/support/scripts/sdcc.nsi
@@ -480,11 +480,6 @@ ${Section} "SDCC include files" SEC05
@@ -491,11 +491,6 @@ ${Section} "SDCC include files" SEC05
 
   SetOutPath "$INSTDIR\include"
   File "${DEV_ROOT}\include\*.h"


@@ 3528,7 3556,7 @@ index cebb8a6..778472a 100644
 ${SectionEnd}
 
 ${Section} "SDCC DS390 library" SEC06
@@ -582,18 +577,12 @@ ${Section} "SDCC PIC16 library" SEC21
@@ -593,18 +588,12 @@ ${Section} "SDCC PIC16 library" SEC21
   SetOutPath "$INSTDIR\lib\pic16"
   File "${DEV_ROOT}\lib\pic16\*.o"
   File "${DEV_ROOT}\lib\pic16\*.lib"


@@ 3546,8 3574,8 @@ index cebb8a6..778472a 100644
-  File "${DEV_ROOT}\non-free\lib\pic14\*.lib"
 ${SectionEnd}
 
 ${Section} "SDCC STM8 small model library" SEC23
@@ -702,10 +691,6 @@ ${Section} "SDCC library sources" SEC25
 ${Section} "SDCC STM8 medium model library" SEC23
@@ -713,10 +702,6 @@ ${Section} "SDCC library sources" SEC25
   File "${DEV_ROOT}\lib\src\pic14\libsdcc\enhanced\*.inc"
 #  File "${DEV_ROOT}\lib\src\pic14\libsdcc\Makefile"
 


@@ 3558,7 3586,7 @@ index cebb8a6..778472a 100644
   SetOutPath "$INSTDIR\lib\src\pic14\libm"
 #  File "${DEV_ROOT}\lib\src\pic14\libm\*.c"
 
@@ -757,10 +742,6 @@ ${Section} "SDCC library sources" SEC25
@@ -768,10 +753,6 @@ ${Section} "SDCC library sources" SEC25
   File "${DEV_ROOT}\lib\src\pic16\libc\utils\*.S"
 #  File "${DEV_ROOT}\lib\src\pic16\libc\utils\Makefile"
 


@@ 3569,7 3597,7 @@ index cebb8a6..778472a 100644
   SetOutPath "$INSTDIR\lib\src\pic16\libio"
   File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore"
 #  File "${DEV_ROOT}\lib\src\pic16\libio\Makefile"
@@ -1126,13 +1107,9 @@ ${Section} Uninstall SECUNINSTALL
@@ -1137,13 +1118,9 @@ ${Section} Uninstall SECUNINSTALL
 
   Delete "$INSTDIR\lib\pic14\*.lib"
 


@@ 3583,7 3611,7 @@ index cebb8a6..778472a 100644
   Delete "$INSTDIR\lib\hc08\*.lib"
 
   Delete "$INSTDIR\lib\s08\*.lib"
@@ -1208,9 +1185,7 @@ ${Section} Uninstall SECUNINSTALL
@@ -1219,9 +1196,7 @@ ${Section} Uninstall SECUNINSTALL
   Delete "$INSTDIR\include\pic14\*.h"
   Delete "$INSTDIR\include\pic14\*.txt"
   Delete "$INSTDIR\include\pic14\*.inc"


@@ 3593,7 3621,7 @@ index cebb8a6..778472a 100644
   Delete "$INSTDIR\include\pic16\*.txt"
   Delete "$INSTDIR\include\mcs51\*.h"
   Delete "$INSTDIR\include\hc08\*.h"
@@ -1273,9 +1248,7 @@ ${Section} Uninstall SECUNINSTALL
@@ -1298,9 +1273,7 @@ ${Section} Uninstall SECUNINSTALL
   Delete "$INSTDIR\uninstall.exe"
 
   RMDir /r "$INSTDIR\lib\src\pic14"


@@ 3603,7 3631,7 @@ index cebb8a6..778472a 100644
   RMDir "$INSTDIR\lib\src\small"
   RMDir "$INSTDIR\lib\src\medium"
   RMDir "$INSTDIR\lib\src\large"
@@ -1303,12 +1276,9 @@ ${Section} Uninstall SECUNINSTALL
@@ -1328,12 +1301,9 @@ ${Section} Uninstall SECUNINSTALL
   RMDir "$INSTDIR\lib\src\mos6502"
   RMDir "$INSTDIR\lib\src\z80n"
   RMDir "$INSTDIR\lib\src"


@@ 3616,7 3644,7 @@ index cebb8a6..778472a 100644
   RMDir "$INSTDIR\lib\z80"
   RMDir "$INSTDIR\lib\z180"
   RMDir "$INSTDIR\lib\r2k"
@@ -1336,15 +1306,12 @@ ${Section} Uninstall SECUNINSTALL
@@ -1361,15 +1331,12 @@ ${Section} Uninstall SECUNINSTALL
   RMDir "$INSTDIR\lib\mos6502"
   RMDir "$INSTDIR\lib\z80n"
   RMDir "$INSTDIR\lib"


@@ 3632,7 3660,7 @@ index cebb8a6..778472a 100644
   RMDir "$INSTDIR\include\asm\mcs51"
   RMDir "$INSTDIR\include\asm\sm83"
   RMDir "$INSTDIR\include\asm\ds390"
@@ -1353,17 +1320,12 @@ ${Section} Uninstall SECUNINSTALL
@@ -1378,17 +1345,12 @@ ${Section} Uninstall SECUNINSTALL
   RMDir "$INSTDIR\include\asm"
   RMDir "$INSTDIR\include\z180"
   RMDir "$INSTDIR\include\pic14"

A gnu/packages/patches/xen-docs-use-predictable-ordering.patch => gnu/packages/patches/xen-docs-use-predictable-ordering.patch +34 -0
@@ 0,0 1,34 @@
From: Tobias Geerinckx-Rice <me@tobias.gr>
Date: Sun Sep 24 02:00:00 2023 +0200
Subject: xen: docs: Use predictable ordering.

What follows was taken verbatim from Debian.  See:
https://sources.debian.org/patches/xen/4.14.5%2B94-ge49571868d-1/

From: Maximilian Engelhardt <maxi@daemonizer.de>
Date: Fri, 18 Dec 2020 21:42:34 +0100
Subject: docs: use predictable ordering in generated documentation

When the seq number is equal, sort by the title to get predictable
output ordering. This is useful for reproducible builds.

Signed-off-by: Maximilian Engelhardt <maxi@daemonizer.de>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
(cherry picked from commit e18dadc5b709290b8038a1cacb52bc3b3b69cf21)
---
 docs/xen-headers | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/xen-headers b/docs/xen-headers
index 5415563..8c434d7 100755
--- a/docs/xen-headers
+++ b/docs/xen-headers
@@ -331,7 +331,7 @@ sub output_index () {
 <h2>Starting points</h2>
 <ul>
 END
-    foreach my $ic (sort { $a->{Seq} <=> $b->{Seq} } @incontents) {
+    foreach my $ic (sort { $a->{Seq} <=> $b->{Seq} or $a->{Title} cmp $b->{Title} } @incontents) {
         $o .= "<li><a href=\"$ic->{Href}\">$ic->{Title}</a></li>\n";
     }
     $o .= "</ul>\n";

A gnu/packages/patches/xen-remove-config.gz-timestamp.patch => gnu/packages/patches/xen-remove-config.gz-timestamp.patch +37 -0
@@ 0,0 1,37 @@
From: Tobias Geerinckx-Rice <me@tobias.gr>
Date: Sun Sep 24 02:00:00 2023 +0200
Subject: xen: docs: Use predictable ordering.

What follows was taken verbatim from Debian.  See:
https://sources.debian.org/patches/xen/4.14.5%2B94-ge49571868d-1/

From: =?utf-8?b?IkZyw6lkw6lyaWMgUGllcnJldCAoZmVwaXRyZSki?=
 <frederic.pierret@qubes-os.org>
Date: Wed, 4 Nov 2020 09:24:40 +0100
Subject: xen: don't have timestamp inserted in config.gz
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

This is for improving reproducible builds.

Signed-off-by: Frédéric Pierret (fepitre) <frederic.pierret@qubes-os.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
(cherry picked from commit 5816d327e44ab37ae08730f4c54a80835998f31f)
---
 xen/common/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/Makefile b/xen/common/Makefile
index 06881d0..32cd650 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -77,7 +77,7 @@ obj-$(CONFIG_HAS_DEVICE_TREE) += libfdt/
 
 CONF_FILE := $(if $(patsubst /%,,$(KCONFIG_CONFIG)),$(XEN_ROOT)/xen/)$(KCONFIG_CONFIG)
 config.gz: $(CONF_FILE)
-	gzip -c $< >$@
+	gzip -n -c $< >$@
 
 config_data.o: config.gz
 

R gnu/packages/patches/xpra-4.2-install_libs.patch => gnu/packages/patches/xpra-5.0-install_libs.patch +22 -9
@@ 1,18 1,32 @@
Distribution specific patch, not going upstream

This workaround for Gentoo interferes with our use of --no-compile during
the 'install stage.

--- a/setup.py	2022-01-04 10:10:05.039825000 +0100
+++ b/setup.py	2022-01-06 15:10:31.952656039 +0100
@@ -589,8 +589,6 @@
         })
diff --git a/setup.py b/setup.py
index e254bf99c..90db55c3f 100755
--- a/setup.py
+++ b/setup.py
@@ -663,8 +663,6 @@ if modules_ENABLED:
 # Utility methods for building with Cython
 
 def add_cython_ext(*args, **kwargs):
-    if "--no-compile" in sys.argv and not ("build" in sys.argv and "install" in sys.argv):
-        return
     assert cython_ENABLED, "cython compilation is disabled"
     if not cython_ENABLED:
         raise ValueError(f"cannot build {args}: cython compilation is disabled")
     if cython_tracing_ENABLED:
         kwargs["define_macros"] = [
@@ -1703,14 +1701,6 @@
@@ -1809,9 +1807,6 @@ else:
             if root_prefix.endswith("/usr"):
                 #ie: "/" or "/usr/src/rpmbuild/BUILDROOT/xpra-0.18.0-0.20160513r12573.fc23.x86_64/"
                 root_prefix = root_prefix[:-4]
-            for x in sys.argv:
-                if x.startswith("--root="):
-                    root_prefix = x[len("--root="):]
             print(f"install_data_override.run() root_prefix={root_prefix}")
             build_xpra_conf(root_prefix)
 
@@ -1955,13 +1950,6 @@ else:
             if uinput_ENABLED:
                 add_data_files("lib/udev/rules.d/", ["fs/lib/udev/rules.d/71-xpra-virtual-pointer.rules"])
 


@@ 23,7 37,6 @@ the 'install stage.
-    #otherwise we use the flags to skip pkgconfig
-    if ("--no-compile" in sys.argv or "--skip-build" in sys.argv) and not ("build" in sys.argv and "install" in sys.argv):
-        pkgconfig = no_pkgconfig
-
 
     if OSX and "py2app" in sys.argv:
         import py2app    #@UnresolvedImport
         assert py2app is not None

R gnu/packages/patches/xpra-4.2-systemd-run.patch => gnu/packages/patches/xpra-5.0-systemd-run.patch +17 -14
@@ 1,13 1,16 @@
Distriction specific patch, not going upstream

Disable systemd-run if the command is not found.

diff -ru xpra-4.2~/xpra/scripts/main.py xpra-4.2/xpra/scripts/main.py
--- xpra-4.2~/xpra/scripts/main.py	2021-06-06 08:51:13.756815842 -0700
+++ xpra-4.2/xpra/scripts/main.py	2021-06-06 16:07:13.371024486 -0700
@@ -331,23 +331,26 @@
     if not is_systemd_pid1():
         return False    # pragma: no cover
     #test it:
-    cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
diff --git a/xpra/scripts/main.py b/xpra/scripts/main.py
index 3813331a5..46e2c83a6 100755
--- a/xpra/scripts/main.py
+++ b/xpra/scripts/main.py
@@ -337,23 +337,26 @@ def use_systemd_run(s) -> bool:
     cmd = ["systemd-run", "--quiet"]
     if getuid()!=0:
         cmd += ["--user"]
-    cmd += ["--scope", "--", "true"]
-    proc = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=False)
     try:
-        proc.communicate(timeout=2)


@@ 15,13 18,13 @@ diff -ru xpra-4.2~/xpra/scripts/main.py xpra-4.2/xpra/scripts/main.py
-    except TimeoutExpired:  # pragma: no cover
-        r = None
-    if r is None:
+        cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
+        proc = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=False)
         try:
-        try:
-            proc.terminate()
-        except Exception:
-            pass
-        try:
+        cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
+        proc = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=False)
         try:
-            proc.communicate(timeout=1)
+            proc.communicate(timeout=2)
+            r = proc.returncode


@@ 41,5 44,5 @@ diff -ru xpra-4.2~/xpra/scripts/main.py xpra-4.2/xpra/scripts/main.py
+    except FileNotFoundError:
+        return False
 
 
 def run_mode(script_file, error_cb, options, args, mode, defaults):
 def verify_gir():
     try:

M gnu/packages/profiling.scm => gnu/packages/profiling.scm +92 -2
@@ 2,6 2,7 @@
;;; Copyright © 2017 Dave Love <fx@gnu.org>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2023 dan <i@dan.games>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 21,6 22,7 @@
(define-module (gnu packages profiling)
  #:use-module (guix packages)
  #:use-module (guix gexp)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:) ; avoid zlib, expat clashes
  #:use-module (guix download)
  #:use-module (guix utils)


@@ 28,22 30,28 @@
  #:use-module (gnu packages)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages base)      ;for "which"
  #:use-module (gnu packages bash)      ;for "which"
  #:use-module (gnu packages bison)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages documentation)
  #:use-module (gnu packages engineering)
  #:use-module (gnu packages fabric-management)
  #:use-module (gnu packages flex)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages gawk)
  #:use-module (gnu packages gcc)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages libunwind)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages mpi)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)
  #:use-module (gnu packages qt))
  #:use-module (gnu packages qt)
  #:use-module (gnu packages xdisorg))

;; Fixme: Separate out lib and fix resulting cycle errors; separate libpfm
;; output(?); build libmsr and add that component.


@@ 389,3 397,85 @@ high-performance computing (HPC) applications.")
    (license license:cpl1.0)))

(define-public scorep-openmpi (make-scorep openmpi))

(define-public tracy-wayland
  (package
    (name "tracy-wayland")
    (version "0.9.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/wolfpld/tracy")
             (commit (string-append "v" version))))
       (sha256
        (base32
         "1znw1r1c4vrb9vrsr08gcwynpjda8xxmb3923yykpymw2hsm0n9b"))
       (file-name (git-file-name "tracy" version))
       (modules '((guix build utils)))
       (snippet
        '(begin
           ;; XXX: Sadly, the ImGui loaders appear to have been customized by
           ;; the project and the build fails when using the 'imgui' Guix
           ;; package due to a missing GL_TEXTURE_WRAP_S definition, so keep
           ;; the bundled copy.

           ;; Unbundle Zstd.
           (delete-file-recursively "zstd")
           ;; Adjust the include directives.
           (substitute* (find-files "server" "\\.(c|h)pp$")
             (("#include \".*zstd/(zstd|zdict).h\"" _ header)
              (format #f "#include \"~a.h\"" header)))
           ;; De-register source files from Visual Code project.
           (substitute* "profiler/build/win32/Tracy.vcxproj"
             ((".*Include=\"..\\\\..\\\\..\\\\zstd\\\\.*") ""))))))
    ;; Note: There is also CMake and Meson support, but only to build the
    ;; tracy library, not the profiler command.
    (build-system gnu-build-system)
    (arguments
     (list
      #:tests? #f                       ;no test for the profiler
      #:make-flags
      #~(list (string-append "CC=" #$(cc-for-target))
              (string-append "CFLAGS=-lzstd"))
      #:phases
      #~(modify-phases %standard-phases
          (add-before 'build 'chdir
            (lambda _
              (chdir "profiler/build/unix")))
          (delete 'configure)           ;the profiler has no configure script
          (replace 'install
            (lambda _
              (let ((bin (string-append #$output "/bin"))
                    (tracy (string-append #$output "/bin/tracy")))
                (mkdir-p bin)
                (copy-file "Tracy-release" tracy)))))))
    (inputs (list capstone
                  dbus
                  freetype
                  libxkbcommon
                  mesa
                  wayland
                  `(,zstd "lib")))
    (native-inputs (list pkg-config))
    (home-page "https://github.com/wolfpld/tracy")
    (synopsis "Frame profiler")
    (description
     "A real time, nanosecond resolution, remote telemetry, hybrid frame and
sampling profiler for games and other applications.")
    (license license:bsd-3)))

(define-public tracy
  (package;xb
    (inherit tracy-wayland)
    (name "tracy")
    (arguments
     (substitute-keyword-arguments (package-arguments tracy-wayland)
       ((#:make-flags flags #~'())
        #~(append #$flags
                  ;; The LEGACY flag indicate we want to build tracy with glfw.
                  (list "LEGACY=1")))))
    (inputs (modify-inputs (package-inputs tracy-wayland)
              (delete "libxkbcommon" "wayland")
              (prepend glfw)))
    (synopsis "Frame profiler (X11 version)")))

M gnu/packages/python-crypto.scm => gnu/packages/python-crypto.scm +2 -2
@@ 1188,13 1188,13 @@ been constructed to maintain extensive documentation on how to use
(define-public python-pyotp
  (package
    (name "python-pyotp")
    (version "2.7.0")
    (version "2.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "pyotp" version))
       (sha256
        (base32 "1dbcgpf576kmrpkx3ly8jq4g5g22r9n1rra55c1xqxyzl2mrz66f"))))
        (base32 "0qvgsf86az9cqj6d8vim2shvyam89ik0p4sszysf7pfvw116csrl"))))
    (build-system python-build-system)
    (home-page "https://github.com/pyauth/pyotp")
    (synopsis "Python One Time Password Library")

M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +4 -4
@@ 813,7 813,7 @@ names for 256 color terminal setups.")
(define-public python-colorful
  (package
    (name "python-colorful")
    (version "0.5.4")
    (version "0.5.5")
    (source
     (origin
       (method git-fetch)   ; no tests data in PyPi package


@@ 822,7 822,7 @@ names for 256 color terminal setups.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1fcz5v8b318a3dsdha4c874jsf3wmcw3f25bv2csixclyzacli98"))))
        (base32 "0kyy9qhvrb5m9h8xmri7c88i0k1g5qc7017anw39gx44an7mn33y"))))
    (build-system pyproject-build-system)
    (native-inputs
     (list python-coverage python-flake8 python-pytest))


@@ 32599,13 32599,13 @@ than trying to just split strings.")
(define-public python-srsly
  (package
    (name "python-srsly")
    (version "2.4.7")
    (version "2.4.8")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "srsly" version))
              (sha256
               (base32
                "022x0djlkl6pgh9yrd4avlai1n6y4hxm9l1xnb6630kpi12wrhlk"))))
                "14ca3gwmhr24axxdhn73157wzzjkmi1s1ka91dz49hh9a2k9akdj"))))
    (build-system pyproject-build-system)
    (arguments
     (list

M gnu/packages/radio.scm => gnu/packages/radio.scm +49 -2
@@ 2499,7 2499,7 @@ voice formats.")
(define-public sdrangel
  (package
    (name "sdrangel")
    (version "7.10.0")
    (version "7.16.0")
    (source
     (origin
       (method git-fetch)


@@ 2508,7 2508,7 @@ voice formats.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0rl2qnc9s8cjwv77vfwgj66rz5zbxmixqh0gg6b29s4667pjvil6"))))
        (base32 "1c2pdxw2a3pysqlmr42gghg0ga33afwdp6wc97h7s6gwc5km6zlk"))))
    (build-system qt-build-system)
    (native-inputs
     (list doxygen graphviz pkg-config))


@@ 2535,6 2535,7 @@ voice formats.")
           qtbase-5
           qtcharts
           qtdeclarative-5
           qtgamepad
           qtlocation
           qtmultimedia-5
           qtquickcontrols2-5


@@ 2567,6 2568,11 @@ voice formats.")
                               #$(this-package-input "soapysdr")))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-unrecognized-compiler-option
           (lambda _
             (substitute* "cmake/Modules/CompilerOptions.cmake"
               (("-Wno-inconsistent-missing-override")
                "-fpermissive"))))
         (add-after 'unpack 'fix-CPU-extension-detection
           ;; ‘Fix’ in the static sense.  TODO: Make this -tune'able.
           (lambda _


@@ 2968,6 2974,47 @@ position fixes) the signals of the BeiDou, Galileo, GLONASS and GPS Global
Navigation Satellite System.")
    (license license:gpl3+)))

(define-public satdump
  (package
    (name "satdump")
    (version "1.1.0")
    (source
     ;; TODO: The sources embed some libraries (in src-core/libs).
     ;; Using regular packaged shared libraries instead will require big
     ;; changes in CMakeList files.
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/SatDump/SatDump")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0mz665h02v4hg0v6kb1b3lj7vd2kp7wgasasm10q6qwqr7c133p4"))))
    (build-system cmake-build-system)
    (native-inputs (list pkg-config))
    (inputs
     (list airspy
           airspyhf
           fftwf
           glew
           glfw
           hackrf
           libpng
           luajit
           nng
           portaudio
           rtl-sdr
           volk
           (list zstd "lib")))
    (arguments
     (list #:tests? #f)) ; No test suite
    (home-page "https://www.satdump.org/")
    (synopsis "Satellite data processing software")
    (description "SatDump is a generic satellite data processing software.
For example, it can decode the telemetry and images sent by some meteorological
satellites.")
    (license license:gpl3)))

(define-public qdmr
  (package
    (name "qdmr")

M gnu/packages/raspberry-pi.scm => gnu/packages/raspberry-pi.scm +1 -1
@@ 177,7 177,7 @@ used in the Raspberry Pi")
               #t))))))
    (native-inputs
     `(("binutils" ,(cross-binutils "arm-none-eabi"))
       ("gcc" ,gcc-arm-none-eabi-6)))
       ("gcc" ,(make-gcc-arm-none-eabi-6))))
    (inputs
     `())
    (synopsis "Raspberry Pi ARM bootloader")

M gnu/packages/rdesktop.scm => gnu/packages/rdesktop.scm +4 -2
@@ 55,6 55,7 @@
  #:use-module (gnu packages python)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages pulseaudio)
  #:use-module (gnu packages security-token)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages video)


@@ 95,7 96,7 @@ to remotely control a user's Windows desktop.")
(define-public freerdp
  (package
    (name "freerdp")
    (version "2.10.0")
    (version "2.11.1")
    (source
     (origin
       (method git-fetch)


@@ 104,7 105,7 @@ to remotely control a user's Windows desktop.")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0j5waq4h7l5f0vrh7wmrv6r27p537qwbg7ab8j0n0ia5p4nvgjp2"))))
        (base32 "1mxx711phzsaa6l022xnn41dq1315y81cgxka3rxy0fg638wipn7"))))
    (build-system cmake-build-system)
    (native-inputs
     (list docbook-xml


@@ 139,6 140,7 @@ to remotely control a user's Windows desktop.")
           openh264
           opensles
           openssl
           pcsc-lite ; for smartcard support
           pulseaudio
           zlib))
    (propagated-inputs (list libxkbcommon openssl wayland))

M gnu/packages/rust-apps.scm => gnu/packages/rust-apps.scm +97 -0
@@ 23,6 23,7 @@
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
;;; Copyright © 2023 Arnav Andrew Jose <arnav.jose@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 737,6 738,102 @@ replacement for i3status, written in pure Rust.  It provides a way to display
bar.  It is also compatible with sway.")
    (license license:gpl3)))

(define-public just
  (package
    (name "just")
    (version "1.14.0")
    (source (origin
              (method url-fetch)
              (uri (crate-uri "just" version))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32 "0kafd87zmjf7wswyiqakqd2r5b8q3a761ipsihmrg9wr57k5zlis"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-test-flags
       '("--release" "--"
         "--skip=functions::env_var_functions"
         "--skip=string::shebang_backtick")
       #:install-source? #f
       #:cargo-inputs
       (("rust-ansi-term" ,rust-ansi-term-0.12)
        ("rust-atty" ,rust-atty-0.2)
        ("rust-camino" ,rust-camino-1)
        ("rust-clap" ,rust-clap-2)
        ("rust-ctrlc" ,rust-ctrlc-3)
        ("rust-derivative" ,rust-derivative-2)
        ("rust-dotenvy" ,rust-dotenvy-0.15)
        ("rust-edit-distance" ,rust-edit-distance-2)
        ("rust-env-logger" ,rust-env-logger-0.10)
        ("rust-heck" ,rust-heck-0.4)
        ("rust-lexiclean" ,rust-lexiclean-0.0.1)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-log" ,rust-log-0.4)
        ("rust-regex" ,rust-regex-1)
        ("rust-serde" ,rust-serde-1)
        ("rust-serde-json" ,rust-serde-json-1)
        ("rust-sha2" ,rust-sha2-0.10)
        ("rust-similar" ,rust-similar-2)
        ("rust-snafu" ,rust-snafu-0.7)
        ("rust-strum" ,rust-strum-0.24)
        ("rust-target" ,rust-target-2)
        ("rust-tempfile" ,rust-tempfile-3)
        ("rust-typed-arena" ,rust-typed-arena-2)
        ("rust-unicode-width" ,rust-unicode-width-0.1)
        ("rust-uuid" ,rust-uuid-1))
       #:cargo-development-inputs
       (("rust-cradle" ,rust-cradle-0.2)
        ("rust-executable-path" ,rust-executable-path-1)
        ("rust-pretty-assertions" ,rust-pretty-assertions-1)
        ("rust-temptree" ,rust-temptree-0.2)
        ("rust-which" ,rust-which-4)
        ("rust-yaml-rust" ,rust-yaml-rust-0.4))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'replace-hardcoded-paths
           (lambda* (#:key inputs #:allow-other-keys)
             (substitute* (cons "src/justfile.rs"
                                (find-files "tests/" "\\.rs$"))
               (("/bin/sh")
                (search-input-file inputs "/bin/sh"))
               (("/usr/bin/env sh")
                (search-input-file inputs "/bin/sh"))
               (("/usr/bin/env")
                (search-input-file inputs "/bin/env"))
               (("/bin/echo")
                (search-input-file inputs "/bin/echo")))))
         (add-after 'install 'install-manpage
           (lambda* (#:key outputs #:allow-other-keys)
             (install-file "man/just.1"
                           (string-append (assoc-ref outputs "out")
                                          "/share/man/man1"))))
         (add-after 'install 'install-completions
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (share (string-append out "/share"))
                    (just (string-append out "/bin/just")))
               (mkdir-p (string-append share "/bash-completion/completions"))
               (with-output-to-file
                 (string-append share "/bash-completion/completions/just")
                 (lambda _ (invoke just "--completions" "bash")))
               (mkdir-p (string-append share "/fish/vendor_completions.d"))
               (with-output-to-file
                 (string-append share "/fish/vendor_completions.d/just.fish")
                 (lambda _ (invoke just "--completions" "fish")))
               (mkdir-p (string-append share "/zsh/site-functions"))
               (with-output-to-file
                 (string-append share "/zsh/site-functions/_just")
                 (lambda _ (invoke just "--completions" "zsh")))
               (mkdir-p (string-append share "/elvish/lib"))
               (with-output-to-file
                 (string-append share "/elvish/lib/just")
                 (lambda _ (invoke just "--completions" "elvish")))))))))
    (home-page "https://github.com/casey/just")
    (synopsis "Just a command runner")
    (description "This package provides @code{just}, a command runner.
@code{just} is a handy way to save and run project-specific commands.")
    (license license:cc0)))

(define-public maturin
  (package
    (name "maturin")

M gnu/packages/sssd.scm => gnu/packages/sssd.scm +2 -2
@@ 139,7 139,7 @@ fundamental object types for C.")
(define-public sssd
  (package
    (name "sssd")
    (version "2.9.1")
    (version "2.9.2")
    (source
     (origin
       (method git-fetch)


@@ 148,7 148,7 @@ fundamental object types for C.")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "159hpd49nq3256j46lanbycx8hrj517s1pvxrflxsdqcdyix59rr"))
        (base32 "17nhivmg5z9j3mxqmn21l8y56c6ibpglhlnvqxy8rmsp3z5h868b"))
       (patches (search-patches "sssd-system-directories.patch"))))
    (build-system gnu-build-system)
    (arguments

M gnu/packages/sync.scm => gnu/packages/sync.scm +2 -2
@@ 374,7 374,7 @@ silently and reliably flow across to every other.")
(define-public onedrive
  (package
    (name "onedrive")
    (version "2.4.23")
    (version "2.4.25")
    (source
      (origin
        (method git-fetch)


@@ 383,7 383,7 @@ silently and reliably flow across to every other.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32 "1nj4g1rbbg6g9kw1k89dmjg4mnyh5q1b3wbjhrayvnjmssx66yn8"))))
         (base32 "1i93mq4r9w8cqrdfsfv8wparfd3dbrppc5z04ab056545hk0x89k"))))
    (build-system gnu-build-system)
    (arguments
     (list

M gnu/packages/syncthing.scm => gnu/packages/syncthing.scm +2 -2
@@ 44,7 44,7 @@
(define-public syncthing
  (package
    (name "syncthing")
    (version "1.23.7")
    (version "1.24.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/syncthing/syncthing"


@@ 52,7 52,7 @@
                                  "/syncthing-source-v" version ".tar.gz"))
              (sha256
               (base32
                "1891dqcsg5r034bw19qjm6qg0zi1g0djcllp2c550zq7v1sdvn0q"))))
                "13v04slf231hd3rywyan0n7yyc94s34wfwnmwz8sfw4vgxk5k52a"))))
    (build-system go-build-system)
    ;; The primary Syncthing executable goes to "out", while the auxiliary
    ;; server programs and utility tools go to "utils".  This reduces the size

M gnu/packages/terminals.scm => gnu/packages/terminals.scm +4 -4
@@ 414,14 414,14 @@ combining, and so on, with a simple interface.")
(define-public mlterm
  (package
    (name "mlterm")
    (version "3.9.2")
    (version "3.9.3")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/mlterm/01release/mlterm-"
                           version "/mlterm-" version ".tar.gz"))
       (sha256
        (base32 "0br1sdpxw3r7qv814b3qjb8mpigljr9wd5c5422ah76f09zh0h5r"))))
        (base32 "1nah3fn055njwpr2nfl8zkr5r02n89mxxdxgcjyk9q8x74hngdxm"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f                      ; no tests


@@ 1487,7 1487,7 @@ terminal are replicated to the others.
(define-public tio
  (package
    (name "tio")
    (version "2.5")
    (version "2.7")
    (source
     (origin
       (method url-fetch)


@@ 1495,7 1495,7 @@ terminal are replicated to the others.
             "https://github.com/tio/tio/releases/download/v"
             version "/tio-" version ".tar.xz"))
       (sha256
        (base32 "19s41i8f3kxchlaibp7wkq8gqgbpfdn0srkf1wcfx357j3p54f86"))))
        (base32 "19fswmyiwlify269h6nwdlbnhq4q7i8442xg81jinb4chhsf93xz"))))
    (build-system meson-build-system)
    (native-inputs (list pkg-config))
    (inputs (list libinih))

M gnu/packages/text-editors.scm => gnu/packages/text-editors.scm +2 -2
@@ 1472,14 1472,14 @@ highlighting for dozens of languages.  Jed is very small and fast.")
(define-public xnedit
  (package
    (name "xnedit")
    (version "1.5.0")
    (version "1.5.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/xnedit/" name "-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "09wvhg7rywfj7njl2fkzdhgwlgxw358423yiv2ay3k5zhbysxfik"))))
                "14irfn9izkbd72yynfy634vc9pk2kmhkdmzb2w9al44wfzixlal3"))))

    (build-system gnu-build-system)
    (arguments

M gnu/packages/textutils.scm => gnu/packages/textutils.scm +4 -4
@@ 83,14 83,14 @@
(define-public dos2unix
  (package
    (name "dos2unix")
    (version "7.5.0")
    (version "7.5.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://waterlan.home.xs4all.nl/dos2unix/"
                           "dos2unix-" version ".tar.gz"))
       (sha256
        (base32 "1bwmxgb6z9pgaq1lqvjnhnijiiyxw293lk70ng164k913v802fvs"))))
        (base32 "05gwq7asks48l4iliw9cvbcaqa45yrkd2wb47zbb0ag0na5ph1ys"))))
    (build-system gnu-build-system)
    (arguments
     (list #:make-flags


@@ 692,7 692,7 @@ spreadsheets and outputs it in comma-separated-value format, and
(define-public utfcpp
  (package
    (name "utfcpp")
    (version "3.2.4")
    (version "3.2.5")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 709,7 709,7 @@ spreadsheets and outputs it in comma-separated-value format, and
                     "<ftest/ftest.h>"))))
              (sha256
               (base32
                "0p18cbdk57ilbgcgprgqp7fgysb5i0nidczbhc5rnxkiiw4jvxgn"))))
                "195n47dblx765xas54vkgyin3xsvfnvcdc614njzqmcxybfpvix2"))))
    (build-system cmake-build-system)
    (native-inputs (list ftest))
    (home-page "https://github.com/nemtrif/utfcpp")

M gnu/packages/tls.scm => gnu/packages/tls.scm +3 -2
@@ 426,6 426,7 @@ OpenSSL for TARGET."
  (package
    (name "openssl")
    (version "1.1.1q")
    (replacement openssl/fixed)
    (source (origin
              (method url-fetch)
              (uri (list (string-append "https://www.openssl.org/source/openssl-"


@@ 552,7 553,7 @@ OpenSSL for TARGET."
  (package
    (inherit openssl-1.1)
    (name "openssl")
    (version "1.1.1t")
    (version "1.1.1u")
    (source (origin
              (method url-fetch)
              (uri (list (string-append "https://www.openssl.org/source/openssl-"


@@ 565,7 566,7 @@ OpenSSL for TARGET."
              (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
              (sha256
               (base32
                "0fwxhlv7ary9nzg5mx07x1jj3wkbizxh56qy7l6bzp5iplj9pvld"))))))
                "1ipbcdlqyxbj5lagasrq2p6gn0036wq6hqp7gdnd1v1ya95xiy72"))))))

(define-public openssl-3.0
  (package

M gnu/packages/toolkits.scm => gnu/packages/toolkits.scm +4 -3
@@ 32,7 32,7 @@
(define-public imgui
  (package
    (name "imgui")
    (version "1.89.4")
    (version "1.89.9")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 41,7 41,7 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1j79gsg9i969slygrwm0dp5mkzagglawxxagjpi3009wyp6lj6l8"))
                "0db11pin6kdzyd07dnwch8sf0z3386h42ibki1lnzb2ln8m66kyj"))
              (modules '((guix build utils)))
              (snippet
               ;; Remove bundled fonts.


@@ 62,6 62,7 @@
      ;; it would fail with the "Too many vertices in ImDrawList using 16-bit
      ;; indices".
      #~(list "-DImDrawIdx=unsigned int"
              "-DIMGUI_ENABLE_FREETYPE"
              "-I" (string-append (getcwd) "/source")
              "-I" (search-input-directory %build-inputs "include/freetype2")
              "-g" "-O2" "-fPIC" "-shared"


@@ 122,7 123,7 @@
                (copy-recursively "examples"
                                  (string-append #$output:doc
                                                 "/share/imgui/examples"))))))))
    (inputs (list fontconfig glfw mesa sdl2))
    (inputs (list fontconfig freetype glfw mesa sdl2))
    (home-page "https://github.com/ocornut/imgui")
    (synopsis "Immediate-mode C++ GUI library with minimal dependencies")
    (description "@code{dear imgui} (also know as ImGui) is a graphical user

M gnu/packages/video.scm => gnu/packages/video.scm +25 -32
@@ 50,7 50,7 @@
;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org>
;;; Copyright © 2021, 2022, 2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 David Wilson <david@daviwil.com>
;;; Copyright © 2021,2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>


@@ 741,36 741,19 @@ stream decoding")
               (base32
                "1vkh19gb76agvh4h87ysbrgy82hrw88lnsvhynjf4vng629dmpgv"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("config" ,config)
       ("makeinfo" ,texinfo)))
    (inputs
     (list ncurses))
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'update-config-scripts
           (lambda* (#:key inputs native-inputs #:allow-other-keys)
             ;; Replace outdated config.guess and config.sub.
             (for-each (lambda (file)
                         (install-file
                          (search-input-file
                           (or native-inputs inputs)
                           (string-append "/bin/" file)) "."))
                       '("config.guess" "config.sub"))))
         (replace 'configure
                  (lambda* (#:key build inputs outputs #:allow-other-keys)
                    ;; This old `configure' script doesn't support
                    ;; variables passed as arguments.
                    (let ((out     (assoc-ref outputs "out"))
                          (ncurses (assoc-ref inputs "ncurses")))
                      (setenv "CONFIG_SHELL" (which "bash"))
                      (invoke "./configure"
                              "--disable-static"
                              (string-append "--prefix=" out)
                              (string-append "--build=" build)
                              (string-append "--with-ncurses="
                                             ncurses))))))))
     (list
      #:configure-flags
      #~(list "--disable-static"
              (string-append "--with-ncurses="
                             #$(this-package-input "ncurses")))
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'force-autoreconf
            (lambda _
              (delete-file "configure"))))))
    (native-inputs (list autoconf automake libtool texinfo))
    (inputs (list ncurses))
    (home-page "https://aa-project.sourceforge.net/aalib/")
    (synopsis "ASCII-art library")
    (description


@@ 2412,6 2395,7 @@ To load this plugin, specify the following option when starting mpv:
  (package
    (name "libvpx")
    (version "1.12.0")
    (replacement libvpx/fixed)
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 2450,6 2434,15 @@ To load this plugin, specify the following option when starting mpv:
    (license license:bsd-3)
    (home-page "https://www.webmproject.org/")))

(define libvpx/fixed
  (package
    (inherit libvpx)
    (source
     (origin
       (inherit (package-source libvpx))
       (patches (search-patches "libvpx-CVE-2016-2818.patch"
                                "libvpx-CVE-2023-5217.patch"))))))

(define-public orf-dl
  (let ((commit "2dbbe7ef4e0efe0f3c1d59c503108e22d9065999")
        (revision "1"))


@@ 2614,7 2607,7 @@ YouTube.com and many more sites.")
(define-public yt-dlp
  (package/inherit youtube-dl
    (name "yt-dlp")
    (version "2023.07.06")
    (version "2023.09.24")
    (source
     (origin
       (method git-fetch)


@@ 2623,7 2616,7 @@ YouTube.com and many more sites.")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "14g3qc3j4px5jiv292yj5hh8vxlnnd5bzvsq7h37jvhmrn5r4bsw"))))
        (base32 "15ngsg3cadf2bv700fa1k5az5xpsm0wqr0cixbz8fcbhwdflfq6f"))))
    (arguments
     (substitute-keyword-arguments (package-arguments youtube-dl)
       ((#:tests? _) (not (%current-target-system)))

M gnu/packages/virtualization.scm => gnu/packages/virtualization.scm +172 -183
@@ 164,14 164,14 @@
(define-public qemu
  (package
    (name "qemu")
    (version "8.1.0")
    (version "8.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://download.qemu.org/qemu-"
                           version ".tar.xz"))
       (sha256
        (base32 "0m8fbyr3xv6gi95ma0sksxfqmyj3pi4zcrgg5rvd8d73k08i033i"))
        (base32 "1vvxmd7xbkl083anpqm797m070qi8n5wc5qid0ppbyq0wpsjxkip"))
       (patches (search-patches "qemu-disable-some-qtests-tests.patch"
                                "qemu-fix-agent-paths.patch"))
       (modules '((guix build utils)))


@@ 2279,7 2279,7 @@ DOS or Microsoft Windows.")
(define-public xen
  (package
    (name "xen")
    (version "4.14.1")               ; please update the mini-os input as well
    (version "4.14.6")               ; please update the mini-os input as well
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 2288,196 2288,185 @@ DOS or Microsoft Windows.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1r90rvypw76ya9clqw5p02gm1k8hxz73f7gr95ca778nnzvb7xjw"))))
                "1cdzpxbihkdn4za8ly0lgkbxrafjzbxjflhfn83kyg4bam1vv7mn"))
              (patches
               (search-patches "xen-docs-use-predictable-ordering.patch"
                               "xen-remove-config.gz-timestamp.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       (list "--enable-rpath"
             "--disable-qemu-traditional" ; It tries to do "git clone"
             "--disable-rombios" ; would try to "git clone" via etherboot.
             ;; TODO: Re-enable stubdom (it's "more secure" to use it).
             "--disable-stubdom" ; tries to "git clone" old patched newlib.
             (string-append "--with-initddir="
                            (assoc-ref %outputs "out")
                            "/etc/init.d")
             (string-append "--with-system-qemu="
                            (assoc-ref %build-inputs "qemu")
                            "/bin/qemu-system-i386")
             (string-append "--with-system-seabios="
                            (assoc-ref %build-inputs "seabios")
                            "/share/firmware/bios.bin")
             (string-append "--with-system-ovmf="
                            (assoc-ref %build-inputs "ovmf")
                            "/share/firmware/ovmf_ia32.bin"))
       #:make-flags (list "-j" "1"
                          "XEN_BUILD_DATE=Thu Jan  1 01:00:01 CET 1970"
                          "XEN_BUILD_TIME=01:00:01"
                          "XEN_BUILD_HOST="
                          "ETHERBOOT_NICS="
                          "SMBIOS_REL_DATE=01/01/1970"
                          "VGABIOS_REL_DATE=01 Jan 1970"
                          ; QEMU_TRADITIONAL_LOC
                          ; QEMU_UPSTREAM_LOC
                          "SYSCONFIG_DIR=/tmp/etc/default"
                          (string-append "BASH_COMPLETION_DIR="
                                         (assoc-ref %outputs "out")
                                         "/etc/bash_completion.d")
                          (string-append "BOOT_DIR="
                                         (assoc-ref %outputs "out")
                                         "/boot")
                          (string-append "DEBUG_DIR="
                                         (assoc-ref %outputs "out")
                                         "/lib/debug")
                          (string-append "EFI_DIR="
                                         (assoc-ref %outputs "out")
                                         "/lib/efi") ; TODO lib64 ?
                          "MINIOS_UPSTREAM_URL="
                          ;(string-append "DISTDIR="
                          ;               (assoc-ref %outputs "out"))
)
       #:test-target "test"
       #:phases
       (modify-phases %standard-phases
        (add-after 'unpack 'unpack-mini-os
          (lambda* (#:key inputs #:allow-other-keys)
            (copy-recursively (assoc-ref inputs "mini-os") "extras/mini-os")
            #t))
        (add-after 'unpack-mini-os 'patch
          (lambda* (#:key inputs outputs #:allow-other-keys)
            (substitute* "tools/firmware/Rules.mk"
             (("override XEN_TARGET_ARCH = x86_32")
              (string-append "override XEN_TARGET_ARCH = x86_32
override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
             (("^CFLAGS =$")
              (string-append "CFLAGS=-I" (assoc-ref inputs "cross-libc")
                             "/include\n")))
            (substitute* "config/x86_32.mk"
             (("CFLAGS += -m32 -march=i686")
              (string-append "CFLAGS += -march=i686 -I"
                             (assoc-ref inputs "cross-libc")
                             "/include")))
            ;; /var is not in /gnu/store , so don't try to create it.
            (substitute* '("tools/Makefile"
                           "tools/xenstore/Makefile"
                           "tools/xenpaging/Makefile")
             (("\\$\\(INSTALL_DIR\\) .*XEN_(DUMP|LOG|RUN|LIB|PAGING)_DIR.*")
              "\n")
             (("\\$\\(INSTALL_DIR\\) .*XEN_(RUN|LIB)_STORED.*")
              "\n"))
            ;; Prevent xen from creating /etc .
            (substitute* "tools/examples/Makefile"
             ((" install-readmes") "")
             ((" install-configs") ""))
            ;; Set rpath.
            (substitute* "tools/pygrub/setup.py"
             (("library_dirs =")
              ; TODO: extra_link_args = ['-Wl,-rpath=/opt/foo'],
              (string-append "runtime_library_dirs = ['"
                             (assoc-ref outputs "out")
                             "/lib'],\nlibrary_dirs =")))

            ;; This needs to be quoted:
            ;; <https://lists.gnu.org/archive/html/guix-devel/2022-03/msg00113.html>.
            (substitute* "xen/arch/x86/xen.lds.S"
              ((".note.gnu.build-id")
               "\".note.gnu.build-id\""))))
        (add-before 'configure 'patch-xen-script-directory
          (lambda* (#:key outputs #:allow-other-keys)
            (substitute* '("configure"
                           "tools/configure"
                           "docs/configure")
             (("XEN_SCRIPT_DIR=.*")
              (string-append "XEN_SCRIPT_DIR="
                             (assoc-ref outputs "out")
                             "/etc/xen/scripts")))
            #t))
        (add-before 'configure 'set-environment-up
          (lambda* (#:key make-flags #:allow-other-keys)
             (define (cross? x)
               (string-contains x "cross-i686-linux"))
             (define (filter-environment! filter-predicate
                                          environment-variable-names)
               (for-each
                (lambda (env-name)
                  (let* ((env-value (getenv env-name))
                         (search-path (search-path-as-string->list env-value))
                         (new-search-path (filter filter-predicate
                                                  search-path))
                         (new-env-value (list->search-path-as-string
                                         new-search-path ":")))
                    (setenv env-name new-env-value)))
                environment-variable-names))
             (setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
             (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
             (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
             (filter-environment! cross?
              '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
                "CROSS_LIBRARY_PATH"))
             (filter-environment! (lambda (e) (not (cross? e)))
              '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
                "LIBRARY_PATH"))
             ;; Guix tries to be helpful and automatically adds
             ;; mini-os-git-checkout/include to the include path,
             ;; but actually we don't want it to be there (yet).
             (filter-environment! (lambda (e)
                                    (not
                                     (string-contains e
                                      "mini-os-git-checkout")))
              '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
                "LIBRARY_PATH"))
            (setenv "EFI_VENDOR" "guix")
             #t))
        (replace 'build
          (lambda* (#:key make-flags #:allow-other-keys)
            (apply invoke "make" "world" make-flags))))))
     (list
      #:configure-flags
      #~(list "--enable-rpath"
              "--disable-qemu-traditional" ; tries to "git clone"
              "--disable-rombios"       ; tries to "git clone" via etherboot
              ;; TODO: Re-enable stubdom (it's "more secure" to use it).
              "--disable-stubdom"    ; tries to "git clone" old patched newlib
              (string-append "--with-initddir=" #$output "/etc/init.d")
              (string-append "--with-system-qemu="
                             (search-input-file %build-inputs
                                                "bin/qemu-system-i386"))
              (string-append "--with-system-seabios="
                             (search-input-file %build-inputs
                                                "share/firmware/bios.bin"))
              (string-append "--with-system-ovmf="
                             (search-input-file %build-inputs
                                                "share/firmware/ovmf_ia32.bin")))
      #:make-flags
      #~(list "XEN_BUILD_DATE=Thu Jan  1 01:00:01 CET 1970"
              "XEN_BUILD_TIME=01:00:01"
              "XEN_BUILD_HOST="
              "ETHERBOOT_NICS="
              "SMBIOS_REL_DATE=01/01/1970"
              "VGABIOS_REL_DATE=01 Jan 1970"
              ;; QEMU_TRADITIONAL_LOC
              ;; QEMU_UPSTREAM_LOC
              "SYSCONFIG_DIR=/tmp/etc/default"
              (string-append "BASH_COMPLETION_DIR=" #$output
                             "/etc/bash_completion.d")
              (string-append "BOOT_DIR=" #$output "/boot")
              (string-append "DEBUG_DIR=" #$output "/lib/debug")
              (string-append "EFI_DIR=" #$output "/lib/efi")
              "MINIOS_UPSTREAM_URL=")
      #:test-target "test"
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'unpack-mini-os
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((mini-os (dirname (search-input-file inputs "minios.mk"))))
                (copy-recursively mini-os "extras/mini-os"))))
          (add-after 'unpack-mini-os 'patch
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "tools/firmware/Rules.mk"
                (("override XEN_TARGET_ARCH = x86_32" match)
                 (string-append match "\noverride CC = "
                                (search-input-file inputs
                                                   "bin/i686-linux-gnu-gcc")))
                (("^CFLAGS =$" match)
                 (string-append match " -I" (assoc-ref inputs "cross-libc")
                                "/include\n")))
              (substitute* "config/x86_32.mk"
                (("(CFLAGS += )-m32 -march=i686" _ match)
                 (string-append match "-march=i686 -I"
                                (assoc-ref inputs "cross-libc") "/include")))
              ;; /var is not in /gnu/store, so don't try to create it.
              (substitute* '("tools/Makefile"
                             "tools/xenstore/Makefile"
                             "tools/xenpaging/Makefile")
                (("\\$\\(INSTALL_DIR\\) .*XEN_(DUMP|LOG|RUN|LIB|PAGING)_DIR.*")
                 "\n")
                (("\\$\\(INSTALL_DIR\\) .*XEN_(RUN|LIB)_STORED.*") "\n"))
              ;; Prevent xen from creating /etc.
              (substitute* "tools/examples/Makefile"
                ((" install-(configs|readmes)") ""))
              ;; Set rpath.
              (substitute* "tools/pygrub/setup.py"
                (("library_dirs =" match)
                 ;; TODO: extra_link_args = ['-Wl,-rpath=/opt/foo'],
                 (string-append "runtime_library_dirs = ['" #$output "/lib'],"
                                "\n" match)))))
          (add-before 'configure 'patch-xen-script-directory
            (lambda _
              (substitute* '("configure"
                             "tools/configure"
                             "docs/configure")
                (("(XEN_SCRIPT_DIR=).*" _ match)
                 (string-append match #$output "/etc/xen/scripts")))))
          (add-before 'configure 'set-environment-up
            (lambda* (#:key make-flags #:allow-other-keys)
              (define (cross? x)
                (string-contains x "cross-i686-linux"))
              (define (filter-environment! filter-predicate
                                           environment-variable-names)
                (for-each
                 (lambda (env-name)
                   (let* ((env-value (getenv env-name))
                          (search-path (search-path-as-string->list env-value))
                          (new-search-path (filter filter-predicate
                                                   search-path))
                          (new-env-value (list->search-path-as-string
                                          new-search-path ":")))
                     (setenv env-name new-env-value)))
                 environment-variable-names))
              (setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
              (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
              (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
              (filter-environment! cross?
                                   '("CROSS_C_INCLUDE_PATH"
                                     "CROSS_CPLUS_INCLUDE_PATH"
                                     "CROSS_LIBRARY_PATH"))
              (filter-environment! (lambda (e) (not (cross? e)))
                                   '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
                                     "LIBRARY_PATH"))
              ;; Guix tries to be helpful and automatically adds
              ;; mini-os-git-checkout/include to the include path,
              ;; but actually we don't want it to be there (yet).
              (filter-environment! (lambda (e)
                                     (not
                                      (string-contains e
                                                       "mini-os-git-checkout")))
                                   '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
                                     "LIBRARY_PATH"))
              (setenv "EFI_VENDOR" "guix")))
          (replace 'build
            (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
              (apply invoke "make" "world"
                     "-j" (number->string
                           (if parallel-build? (parallel-job-count) 1))
                     make-flags)))
          (add-after 'install 'remove-cruft
            (lambda _
              (with-directory-excursion #$output
                ;; Delete useless (and irreproducible) build-time left-overs.
                (for-each delete-file
                          (find-files "share/doc" "^\\.deps$"))))))))
    (inputs
     `(("acpica" ,acpica) ; TODO: patch iasl invocation.
       ("bridge-utils" ,bridge-utils) ; TODO: patch invocations.
       ("glib" ,glib)
       ("iproute" ,iproute) ; TODO: patch invocations.
       ("libaio" ,libaio)
       ("libx11" ,libx11)
       ("yajl" ,yajl)
       ("ncurses" ,ncurses)
       ("openssl" ,openssl)
       ("ovmf" ,ovmf)
       ("pixman" ,pixman)
       ("qemu" ,qemu-minimal)
       ("seabios" ,seabios)
       ("util-linux" ,util-linux "lib") ; uuid
       ; TODO: ocaml-findlib, ocaml-nox.
       ("xz" ,xz) ; for liblzma
       ("zlib" ,zlib)))
     (list acpica                       ; TODO: patch iasl invocation
           bridge-utils                 ; TODO: patch invocations
           glib
           iproute                      ; TODO: patch invocations
           libaio
           libx11
           yajl
           ncurses
           openssl
           ovmf
           pixman
           qemu-minimal
           seabios
           `(,util-linux "lib")         ; uuid
           ;; TODO: ocaml-findlib, ocaml-nox.
           xz                           ; for liblzma
           zlib))
    (native-inputs
     `(("dev86" ,dev86)
       ("bison" ,bison)
       ("cmake" ,cmake-minimal)
       ("figlet" ,figlet)
       ("flex" ,flex)
       ("gettext" ,gettext-minimal)
       ("libnl" ,libnl)
       ("mini-os"
       ,(origin
     (list dev86
       bison
       cmake-minimal
       figlet
       flex
       gettext-minimal
       libnl
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://xenbits.xen.org/git-http/mini-os.git")
               ;; This corresponds to (string-append "xen-RELEASE-" version))
               ;; at time of packaging, but upstream has unfortunately modified
               ;; existing tags in the past.
               (commit "0b4b7897e08b967a09bed2028a79fabff82342dd")))
               ;; existing tags in the past.  Also, not all Xen releases get a
               ;; new tag.  See <https://xenbits.xen.org/gitweb/?p=mini-os.git>.
               (commit "f57858b7e8ef8dd48394dd08cec2bef3c9fb92f5")))
         (sha256
          (base32 "1i8pcl19n60i2m9vlg79q3nknpj209c9ic5x10wxaicx45kc107f"))
         (file-name "mini-os-git-checkout")))
       ("perl" ,perl)
       ; TODO: markdown
       ("pkg-config" ,pkg-config)
       ("python" ,python-2)
       ("wget" ,wget)
       ("cross-gcc" ,(cross-gcc "i686-linux-gnu"
                                #:xbinutils (cross-binutils "i686-linux-gnu")
                                #:libc (cross-libc "i686-linux-gnu")))
       ("cross-libc" ,(cross-libc "i686-linux-gnu")) ; header files
       ("cross-libc-static" ,(cross-libc "i686-linux-gnu") "static")))
          (base32 "04y7grxs47amvjcq1rq4jgk174rhid5m2z9w8wrv7rfd2xhazxy1"))
         (file-name (string-append name "-" version "-mini-os-git-checkout")))
       perl
       ;; TODO: markdown.
       pkg-config
       python-2
       wget
       (cross-gcc "i686-linux-gnu"
                  #:xbinutils (cross-binutils "i686-linux-gnu")
                  #:libc (cross-libc "i686-linux-gnu"))
       (cross-libc "i686-linux-gnu") ; header files
       `(,(cross-libc "i686-linux-gnu") "static")))
    (home-page "https://xenproject.org/")
    (synopsis "Xen Virtual Machine Monitor")
    (description "This package provides the Xen Virtual Machine Monitor

M gnu/packages/vnc.scm => gnu/packages/vnc.scm +3 -3
@@ 72,17 72,17 @@
(define-public remmina
  (package
    (name "remmina")
    (version "1.4.29")
    (version "1.4.32")
    (source
     (origin
       (method git-fetch)
       (uri
        (git-reference
         (url "https://gitlab.com/Remmina/Remmina")
         (url "https://gitlab.com/Remmina/Remmina.git")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "098f33v5qq6p7zjynj1pdllpmbxvqhfvwgvl9fjqyqfflsp7s7gh"))))
        (base32 "1gfmbcgvwakhy539hh2fpws3j7ljrfkckar5fx8sifig9n7wsm49"))))
    (build-system cmake-build-system)
    (arguments
     `(#:tests? #f                      ; No target

M gnu/packages/web.scm => gnu/packages/web.scm +17 -18
@@ 53,7 53,7 @@
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2021, 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2022 cage <cage-dev@twistfold.it>
;;; Copyright © 2022 Pradana Aumars <paumars@courrier.dev>


@@ 5010,7 5010,7 @@ Cloud.")
             bash-minimal))
      (propagated-inputs
       (list guix
             guile-fibers-1.3
             guile-fibers
             guile-json-4
             guile-email
             guile-prometheus


@@ 5134,21 5134,19 @@ It uses the uwsgi protocol for all the networking/interprocess communications.")
(define-public jq
  (package
    (name "jq")
    (version "1.6")
    (version "1.7")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://github.com/stedolan/jq"
       (uri (string-append "https://github.com/jqlang/jq"
                           "/releases/download/jq-" version
                           "/jq-" version ".tar.gz"))
       (sha256
        (base32 "0wmapfskhzfwranf6515nzmm84r7kwljgfs7dg6bjgxakbicis2x"))
        (base32 "0qnv8k9x8i6i24n9vx3cxgw0yjj1411silc4wksfcinrfmlhsaj0"))
       (modules '((guix build utils)))
       (snippet
        '(begin
           ;; Remove bundled onigurama.
           (delete-file-recursively "modules")
           #t))))
        ;; Remove bundled onigurama.
        '(delete-file-recursively "modules"))))
    (inputs
     (list oniguruma))
    (native-inputs


@@ 5161,7 5159,7 @@ It uses the uwsgi protocol for all the networking/interprocess communications.")
         (list valgrind)
         '())))
    (build-system gnu-build-system)
    (home-page "https://stedolan.github.io/jq/")
    (home-page "https://jqlang.github.io/jq/")
    (synopsis "Command-line JSON processor")
    (description "jq is like sed for JSON data – you can use it to slice and
filter and map and transform structured data with the same ease that sed, awk,


@@ 8707,7 8705,7 @@ of Geminispace, but it defaults to a specific domain.")
(define-public libzim
  (package
    (name "libzim")
    (version "8.0.0")
    (version "8.2.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 8715,7 8713,7 @@ of Geminispace, but it defaults to a specific domain.")
                    (commit version)))
              (sha256
               (base32
                "1a7wj8kmpx5aqx0wsfcnaqlfsf1gr66iqxyn24cgjnk4d1rjsahm"))
                "1g735aqw0vlxqgyjv02lvq24dr5shydp4y8mqianf8720s5fs73f"))
              (file-name (git-file-name name version))))
    (build-system meson-build-system)
    (arguments


@@ 8741,7 8739,7 @@ for ZIM files.")
(define-public kiwix-lib
  (package
    (name "kiwix-lib")
    (version "11.0.0")
    (version "13.0.0")
    (home-page "https://github.com/kiwix/kiwix-lib/")
    (source (origin
              (method git-fetch)


@@ 8750,7 8748,7 @@ for ZIM files.")
                    (commit version)))
              (sha256
               (base32
                "1w5dabzvd3cnhw064qf9166476fszkkxjcml21x35av0dcd1vlk6"))
                "0mvlppbj0mqn4ka3cfaaj1pvn062cxbgz01c0nq04x0mzq1xwh5w"))
              (file-name (git-file-name name version))))
    (build-system meson-build-system)
    (arguments


@@ 8786,7 8784,7 @@ It contains the code shared by all Kiwix ports.")
(define-public kiwix-desktop
  (package
    (name "kiwix-desktop")
    (version "2.2.2")
    (version "2.3.1")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 8795,7 8793,8 @@ It contains the code shared by all Kiwix ports.")
                    ".tar.gz"))
              (sha256
               (base32
                "0ani12d91azcwwys499848ws7rx0m7c23nalcm5fanjak76bg6n6"))))
                "0hlk05gcb3fmnxhwj6gan51v98rdq3iv2lklwbpmm1bazmz8i7br"))
              (patches (search-patches "kiwix-desktop-newer-libkiwix.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases


@@ 8840,14 8839,14 @@ offline (such as Wikipedia), without any access to Internet.")
(define-public kiwix-tools
  (package
    (name "kiwix-tools")
    (version "3.3.0")
    (version "3.5.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://download.kiwix.org/release/"
                                  "kiwix-tools/kiwix-tools-" version ".tar.xz"))
              (sha256
               (base32
                "07mj0lrznydhdbirybdyxswypr7hy290mjdv7lkjr6gxgdp29d37"))))
                "0q6b7viy1jr212q0glqid2hqxnsd2mxsx5gzcalkc4gb0bzgj32d"))))
    (build-system meson-build-system)
    (inputs
     (list curl

M gnu/packages/wine.scm => gnu/packages/wine.scm +2 -2
@@ 79,7 79,7 @@
(define-public wine-minimal
  (package
    (name "wine-minimal")
    (version "8.0")
    (version "8.16")
    (source
     (origin
       (method url-fetch)


@@ 91,7 91,7 @@
              (string-append "https://dl.winehq.org/wine/source/" dir
                             "wine-" version ".tar.xz")))
       (sha256
        (base32 "0bkr3klvjy8h4djddr31fvapsi9pc2rsiyhaa7j1lwpq704w4wh2"))))
        (base32 "1zgkqflqgl2y3a90f2nvcc1vhzr9ni0lps276553j8zgbqvnd0hn"))))
    (build-system gnu-build-system)
    (native-inputs (list bison flex))
    (inputs `())

M gnu/packages/wm.scm => gnu/packages/wm.scm +2 -2
@@ 786,7 786,7 @@ desktop environment.")
(define-public icewm
  (package
    (name "icewm")
    (version "3.4.1")
    (version "3.4.2")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 794,7 794,7 @@ desktop environment.")
                    version "/icewm-" version ".tar.lz"))
              (sha256
               (base32
                "0fr79i6r2sjr27lv4wik8lvcnrrapd28lzhy4gnqffzds0sqx64r"))))
                "1qki2r0x9d3yhxypa4i875qzr4dsjig6prs8pvj1w83yb0z4nk5n"))))
    (build-system gnu-build-system)
    (native-inputs (list pkg-config))
    (inputs (list fontconfig

M gnu/packages/xdisorg.scm => gnu/packages/xdisorg.scm +10 -10
@@ 326,7 326,7 @@ used to further tweak the behaviour of the different profiles.")
(define-public bemenu
  (package
    (name "bemenu")
    (version "0.6.15")
    (version "0.6.16")
    (source
     (origin
       (method git-fetch)


@@ 335,11 335,11 @@ used to further tweak the behaviour of the different profiles.")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1g4z1ml5ldk0hxpxs2pa091cpw0kry6cdr6n3dni1avimdm8vmw1"))))
        (base32 "0q3i9blcw5i793m1rxf5dqp773hssdpifrz820psr90x982vvmib"))))
    (build-system gnu-build-system)
    (arguments
     (list
      #:tests? #f
      #:tests? #f ; there are no tests
      #:make-flags
      #~(list (string-append "CC=" #$(cc-for-target))
              "CFLAGS=-O2 -fPIC"


@@ 1842,14 1842,14 @@ Saver extension) library.")
      (inputs
       (list libxt))
      (home-page "https://www.vergenet.net/~conrad/software/xsel/")
      (synopsis "Manipulate X selection")
      (synopsis "Manipulate X selection and/or clipboard from the command line")
      (description
       "XSel is a command-line program for getting and setting the contents of
the X selection.  Normally this is only accessible by manually highlighting
information and pasting it with the middle mouse button.
the X selection and/or clipboard.  Normally this is only accessible by manually
highlighting information and pasting it with the middle mouse button.

XSel reads from standard input and writes to standard output by default,
but can also follow a growing file, display contents, delete entries and more.")
XSel reads from standard input and writes to standard output by default, but can
also follow a growing file, display contents, delete entries and more.")
      (license (license:x11-style "file://COPYING"
                                  "See COPYING in the distribution.")))))



@@ 3575,7 3575,7 @@ keyboard input, mouse actions, etc.  programmatically or manually.")
(define-public wvkbd
  (package
    (name "wvkbd")
    (version "0.13")
    (version "0.14.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 3584,7 3584,7 @@ keyboard input, mouse actions, etc.  programmatically or manually.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "15jzmgydhbkdn1r885p9wm5sqnj4h7znkqk71f7d3x359l051sh7"))))
                "1aha9ylzbkhbf45172l3wyp65kqj6zs5gxqyj62ahj3gp944wmbb"))))
    (build-system gnu-build-system)
    (arguments
     (list #:tests? #f ;no tests

M gnu/packages/xorg.scm => gnu/packages/xorg.scm +8 -6
@@ 72,6 72,7 @@
  #:use-module (gnu packages bash)
  #:use-module (gnu packages bison)
  #:use-module (gnu packages check)
  #:use-module (gnu packages cups)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages emacs)
  #:use-module (gnu packages flex)


@@ 6110,16 6111,16 @@ basic eye-candy effects.")
(define-public xpra
  (package
    (name "xpra")
    (version "4.4.6")
    (version "5.0.2")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://www.xpra.org/src/xpra-"
                           version ".tar.xz"))
       (sha256
        (base32 "0d3s13wqbn9jwqp4i55mn4chgjkrckq3jx4jrq1bcjjz5agzfrq5"))
       (patches (search-patches "xpra-4.2-systemd-run.patch"
                                "xpra-4.2-install_libs.patch"))))
        (base32 "0gxv0h1spg2jl3g9cc6qxxkq6a7prmb92dqqwk0s6pvrj8w3izlk"))
       (patches (search-patches "xpra-5.0-systemd-run.patch"
                                "xpra-5.0-install_libs.patch"))))
    (build-system python-build-system)
    (inputs
     (list bash-minimal                 ; for wrap-program


@@ 6158,7 6159,8 @@ basic eye-candy effects.")
           python-dbus                  ; For desktop notifications.
           dbus                         ; For dbus-launch command.
           python-lz4                   ; Faster compression than zlib.
           python-netifaces))
           python-netifaces
           python-pycups))
    (native-inputs (list pkg-config pandoc python-cython))
    (arguments
     (list


@@ 6193,7 6195,7 @@ basic eye-candy effects.")
                 (format #f "~s" (search-input-file inputs "bin/xauth"))))
              ;; Fix directory of config files.
              (substitute* '("xpra/scripts/config.py"
                             "xpra/platform/xposix/paths.py")
                             "xpra/platform/posix/paths.py")
                (("\"/etc/xpra/?\"")
                 (string-append "\"" #$output "/etc/xpra/\"")))
              ;; XXX: Stolen from (gnu packages linux)

M guix/build/git.scm => guix/build/git.scm +42 -2
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2016, 2019, 2023 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 18,9 18,12 @@

(define-module (guix build git)
  #:use-module (guix build utils)
  #:autoload   (guix build download-nar) (download-nar)
  #:autoload   (guix swh) (%verify-swh-certificate? swh-download)
  #:use-module (srfi srfi-34)
  #:use-module (ice-9 format)
  #:export (git-fetch))
  #:export (git-fetch
            git-fetch-with-fallback))

;;; Commentary:
;;;


@@ 76,4 79,41 @@ recursively.  Return #t on success, #f otherwise."
      (delete-file-recursively ".git")
      #t)))


(define* (git-fetch-with-fallback url commit directory
                                  #:key (git-command "git") recursive?)
  "Like 'git-fetch', fetch COMMIT from URL into DIRECTORY, but fall back to
alternative methods when fetching from URL fails: attempt to download a nar,
and if that also fails, download from the Software Heritage archive."
  (or (git-fetch url commit directory
                 #:recursive? recursive?
                 #:git-command git-command)
      (download-nar directory)

      ;; As a last resort, attempt to download from Software Heritage.
      ;; Disable X.509 certificate verification to avoid depending
      ;; on nss-certs--we're authenticating the checkout anyway.
      ;; XXX: Currently recursive checkouts are not supported.
      (and (not recursive?)
           (parameterize ((%verify-swh-certificate? #f))
             (format (current-error-port)
                     "Trying to download from Software Heritage...~%")

             (swh-download url commit directory)
             (when (file-exists?
                    (string-append directory "/.gitattributes"))
               ;; Perform CR/LF conversion and other changes
               ;; specificied by '.gitattributes'.
               (invoke git-command "-C" directory "init")
               (invoke git-command "-C" directory "config" "--local"
                       "user.email" "you@example.org")
               (invoke git-command "-C" directory "config" "--local"
                       "user.name" "Your Name")
               (invoke git-command "-C" directory "add" ".")
               (invoke git-command "-C" directory "commit" "-am" "init")
               (invoke git-command "-C" directory "read-tree" "--empty")
               (invoke git-command "-C" directory "reset" "--hard")
               (delete-file-recursively
                (string-append directory "/.git")))))))

;;; git.scm ends here

M guix/config.scm.in => guix/config.scm.in +5 -1
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012-2016, 2018-2019, 2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Caleb Ristvedt <caleb.ristvedt@cune.org>
;;;
;;; This file is part of GNU Guix.


@@ 35,6 35,7 @@
            %config-directory

            %system
            %git
            %gzip
            %bzip2
            %xz))


@@ 109,6 110,9 @@
(define %system
  "@guix_system@")

(define %git
  "@GIT@")

(define %gzip
  "@GZIP@")


M guix/git-download.scm => guix/git-download.scm +78 -50
@@ 27,7 27,9 @@
  #:use-module (guix records)
  #:use-module (guix packages)
  #:use-module (guix modules)
  #:use-module ((guix derivations) #:select (raw-derivation))
  #:autoload   (guix build-system gnu) (standard-packages)
  #:autoload   (guix download) (%download-fallback-test)
  #:autoload   (git bindings)   (libgit2-init!)
  #:autoload   (git repository) (repository-open
                                 repository-close!


@@ 77,15 79,19 @@
  (let ((distro (resolve-interface '(gnu packages version-control))))
    (module-ref distro 'git-minimal)))

(define* (git-fetch ref hash-algo hash
                    #:optional name
                    #:key (system (%current-system)) (guile (default-guile))
                    (git (git-package)))
  "Return a fixed-output derivation that fetches REF, a <git-reference>
object.  The output is expected to have recursive hash HASH of type
HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
(define* (git-fetch/in-band ref hash-algo hash
                            #:optional name
                            #:key (system (%current-system))
                            (guile (default-guile))
                            (git (git-package)))
  "Return a fixed-output derivation that performs a Git checkout of REF, using
GIT and GUILE (thus, said derivation depends on GIT and GUILE).

This method is deprecated in favor of the \"builtin:git-download\" builder.
It will be removed when versions of guix-daemon implementing
\"builtin:git-download\" will be sufficiently widespread."
  (define inputs
    `(("git" ,git)
    `(("git" ,(or git (git-package)))

      ;; When doing 'git clone --recursive', we need sed, grep, etc. to be
      ;; available so that 'git submodule' works.


@@ 116,19 122,16 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
  (define modules
    (delete '(guix config)
            (source-module-closure '((guix build git)
                                     (guix build utils)
                                     (guix build download-nar)
                                     (guix swh)))))
                                     (guix build utils)))))

  (define build
    (with-imported-modules modules
      (with-extensions (list guile-json gnutls   ;for (guix swh)
      (with-extensions (list guile-json gnutls    ;for (guix swh)
                             guile-lzlib)
        #~(begin
            (use-modules (guix build git)
                         (guix build utils)
                         (guix build download-nar)
                         (guix swh)
                         ((guix build utils)
                          #:select (set-path-environment-variable))
                         (ice-9 match))

            (define recursive?


@@ 151,40 154,13 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
            (setvbuf (current-output-port) 'line)
            (setvbuf (current-error-port) 'line)

            (or (git-fetch (getenv "git url") (getenv "git commit")
                           #$output
                           #:recursive? recursive?
                           #:git-command "git")
                (download-nar #$output)

                ;; As a last resort, attempt to download from Software Heritage.
                ;; Disable X.509 certificate verification to avoid depending
                ;; on nss-certs--we're authenticating the checkout anyway.
                ;; XXX: Currently recursive checkouts are not supported.
                (and (not recursive?)
                     (parameterize ((%verify-swh-certificate? #f))
                       (format (current-error-port)
                               "Trying to download from Software Heritage...~%")

                       (swh-download (getenv "git url") (getenv "git commit")
                                     #$output)
                       (when (file-exists?
                              (string-append #$output "/.gitattributes"))
                         ;; Perform CR/LF conversion and other changes
                         ;; specificied by '.gitattributes'.
                         (invoke "git" "-C" #$output "init")
                         (invoke "git" "-C" #$output "config" "--local"
                                 "user.email" "you@example.org")
                         (invoke "git" "-C" #$output "config" "--local"
                                 "user.name" "Your Name")
                         (invoke "git" "-C" #$output "add" ".")
                         (invoke "git" "-C" #$output "commit" "-am" "init")
                         (invoke "git" "-C" #$output "read-tree" "--empty")
                         (invoke "git" "-C" #$output "reset" "--hard")
                         (delete-file-recursively
                          (string-append #$output "/.git"))))))))))

  (mlet %store-monad ((guile (package->derivation guile system)))
            (git-fetch-with-fallback (getenv "git url") (getenv "git commit")
                                     #$output
                                     #:recursive? recursive?
                                     #:git-command "git")))))

  (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
                                                  system)))
    (gexp->derivation (or name "git-checkout") build

                      ;; Use environment variables and a fixed script name so


@@ 192,7 168,11 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
                      ;; downloads.
                      #:script-name "git-download"
                      #:env-vars
                      `(("git url" . ,(git-reference-url ref))
                      `(("git url" . ,(match (%download-fallback-test)
                                        ('content-addressed-mirrors
                                         "https://example.org/does-not-exist")
                                        (_
                                         (git-reference-url ref))))
                        ("git commit" . ,(git-reference-commit ref))
                        ("git recursive?" . ,(object->string
                                              (git-reference-recursive? ref))))


@@ 207,6 187,54 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
                      #:recursive? #t
                      #:guile-for-build guile)))

(define* (git-fetch/built-in ref hash-algo hash
                             #:optional name
                             #:key (system (%current-system)))
  "Return a fixed-output derivation that performs a Git checkout of REF, using
the \"builtin:git-download\" derivation builder.

This is an \"out-of-band\" download in that the returned derivation does not
explicitly depend on Git, Guile, etc.  Instead, the daemon performs the
download by itself using its own dependencies."
  (raw-derivation (or name "git-checkout") "builtin:git-download" '()
                  #:system system
                  #:hash-algo hash-algo
                  #:hash hash
                  #:recursive? #t
                  #:env-vars
                  `(("url" . ,(object->string
                               (match (%download-fallback-test)
                                 ('content-addressed-mirrors
                                  "https://example.org/does-not-exist")
                                 (_
                                  (git-reference-url ref)))))
                    ("commit" . ,(git-reference-commit ref))
                    ("recursive?" . ,(object->string
                                      (git-reference-recursive? ref))))
                  #:leaked-env-vars '("http_proxy" "https_proxy"
                                      "LC_ALL" "LC_MESSAGES" "LANG"
                                      "COLUMNS")
                  #:local-build? #t))

(define built-in-builders*
  (store-lift built-in-builders))

(define* (git-fetch ref hash-algo hash
                    #:optional name
                    #:key (system (%current-system))
                    guile git)
  "Return a fixed-output derivation that fetches REF, a <git-reference>
object.  The output is expected to have recursive hash HASH of type
HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
  (mlet %store-monad ((builtins (built-in-builders*)))
    (if (member "git-download" builtins)
        (git-fetch/built-in ref hash-algo hash name
                            #:system system)
        (git-fetch/in-band ref hash-algo hash name
                           #:system system
                           #:guile guile
                           #:git git))))

(define (git-version version revision commit)
  "Return the version string for packages using git-download."
  ;; git-version is almost exclusively executed while modules are being loaded.

M guix/git.scm => guix/git.scm +2 -1
@@ 364,7 364,8 @@ definitely available in REPOSITORY, false otherwise."
  (match ref
    (('commit . (? commit-id? commit))
     (let ((oid (string->oid commit)))
       (->bool (commit-lookup repository oid))))
       (false-if-git-not-found
        (->bool (commit-lookup repository oid)))))
    ((or ('tag . str)
         ('tag-or-commit . str))
     (false-if-git-not-found

M guix/read-print.scm => guix/read-print.scm +4 -3
@@ 359,10 359,11 @@ expressions and blanks that were read."
  ;; the context in which they must appear.  This is similar to a special form
  ;; of 1, except that indent is 1 instead of 2 columns.
  (vhashq
   ('arguments '(package))
   ('sha256 '(origin source package))
   ('base32 '(sha256 origin))
   ('source '(package))
   ('git-reference '(uri origin source))
   ('sha256 '(origin source package))
   ('arguments '(package))
   ('list '(arguments package))
   ('search-paths '(package))
   ('native-search-paths '(package))
   ('search-path-specification '())

M guix/scripts/archive.scm => guix/scripts/archive.scm +1 -2
@@ 123,8 123,7 @@ Export/import one or more packages from/to the store.\n"))
                   (exit 0)))
         (option '(#\V "version") #f #f
                 (lambda args
                   (show-version-and-exit "guix build")))

                   (show-version-and-exit "guix archive")))
         (option '("export") #f #f
                 (lambda (opt name arg result)
                   (alist-cons 'export #t result)))

M guix/scripts/perform-download.scm => guix/scripts/perform-download.scm +47 -20
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016-2018, 2020, 2023 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 21,7 21,9 @@
  #:use-module (guix scripts)
  #:use-module (guix derivations)
  #:use-module ((guix store) #:select (derivation-path? store-path?))
  #:use-module (guix build download)
  #:autoload   (guix build download) (url-fetch)
  #:autoload   (guix build git) (git-fetch-with-fallback)
  #:autoload   (guix config) (%git)
  #:use-module (ice-9 match)
  #:export (guix-perform-download))



@@ 42,16 44,14 @@
    (module-use! module (resolve-interface '(guix base32)))
    module))

(define* (perform-download drv #:optional output
(define* (perform-download drv output
                           #:key print-build-trace?)
  "Perform the download described by DRV, a fixed-output derivation, to
OUTPUT.

Note: Unless OUTPUT is #f, we don't read the value of 'out' in DRV since the
actual output is different from that when we're doing a 'bmCheck' or
'bmRepair' build."
Note: OUTPUT may differ from the 'out' value of DRV, notably for 'bmCheck' or
'bmRepair' builds."
  (derivation-let drv ((url "url")
                       (output* "out")
                       (executable "executable")
                       (mirrors "mirrors")
                       (content-addressed-mirrors "content-addressed-mirrors")


@@ 59,15 59,10 @@ actual output is different from that when we're doing a 'bmCheck' or
    (unless url
      (leave (G_ "~a: missing URL~%") (derivation-file-name drv)))

    (let* ((output     (or output output*))
           (url        (call-with-input-string url read))
    (let* ((url        (call-with-input-string url read))
           (drv-output (assoc-ref (derivation-outputs drv) "out"))
           (algo       (derivation-output-hash-algo drv-output))
           (hash       (derivation-output-hash drv-output)))
      (unless (and algo hash)
        (leave (G_ "~a is not a fixed-output derivation~%")
               (derivation-file-name drv)))

      ;; We're invoked by the daemon, which gives us write access to OUTPUT.
      (when (url-fetch url output
                       #:print-build-trace? print-build-trace?


@@ 92,6 87,31 @@ actual output is different from that when we're doing a 'bmCheck' or
        (when (and executable (string=? executable "1"))
          (chmod output #o755))))))

(define* (perform-git-download drv output
                               #:key print-build-trace?)
  "Perform the download described by DRV, a fixed-output derivation, to
OUTPUT.

Note: OUTPUT may differ from the 'out' value of DRV, notably for 'bmCheck' or
'bmRepair' builds."
  (derivation-let drv ((url "url")
                       (commit "commit")
                       (recursive? "recursive?"))
    (unless url
      (leave (G_ "~a: missing Git URL~%") (derivation-file-name drv)))
    (unless commit
      (leave (G_ "~a: missing Git commit~%") (derivation-file-name drv)))

    (let* ((url        (call-with-input-string url read))
           (recursive? (and recursive?
                            (call-with-input-string recursive? read)))
           (drv-output (assoc-ref (derivation-outputs drv) "out"))
           (algo       (derivation-output-hash-algo drv-output))
           (hash       (derivation-output-hash drv-output)))
      (git-fetch-with-fallback url commit output
                               #:recursive? recursive?
                               #:git-command %git))))

(define (assert-low-privileges)
  (when (zero? (getuid))
    (leave (G_ "refusing to run with elevated privileges (UID ~a)~%")


@@ 120,13 140,20 @@ actual output is different from that when we're doing a 'bmCheck' or
    (match args
      (((? derivation-path? drv) (? store-path? output))
       (assert-low-privileges)
       (perform-download (read-derivation-from-file drv)
                         output
                         #:print-build-trace? print-build-trace?))
      (((? derivation-path? drv))                 ;backward compatibility
       (assert-low-privileges)
       (perform-download (read-derivation-from-file drv)
                         #:print-build-trace? print-build-trace?))
       (let* ((drv (read-derivation-from-file drv))
              (download (match (derivation-builder drv)
                          ("builtin:download" perform-download)
                          ("builtin:git-download" perform-git-download)
                          (unknown (leave (G_ "~a: unknown builtin builder")
                                          unknown))))
              (drv-output (assoc-ref (derivation-outputs drv) "out"))
              (algo       (derivation-output-hash-algo drv-output))
              (hash       (derivation-output-hash drv-output)))
         (unless (and hash algo)
           (leave (G_ "~a is not a fixed-output derivation~%")
                  (derivation-file-name drv)))

         (download drv output #:print-build-trace? print-build-trace?)))
      (("--version")
       (show-version-and-exit))
      (x

M guix/self.scm => guix/self.scm +9 -1
@@ 69,6 69,7 @@
      ("gzip"               . ,(ref 'compression 'gzip))
      ("bzip2"              . ,(ref 'compression 'bzip2))
      ("xz"                 . ,(ref 'compression 'xz))
      ("git-minimal"        . ,(ref 'version-control 'git-minimal))
      ("po4a"               . ,(ref 'gettext 'po4a))
      ("gettext-minimal"    . ,(ref 'gettext 'gettext-minimal))
      ("gcc-toolchain"      . ,(ref 'commencement 'gcc-toolchain))


@@ 826,6 827,9 @@ itself."
  (define guile-lzma
    (specification->package "guile-lzma"))

  (define git
    (specification->package "git-minimal"))

  (define dependencies
    (append-map transitive-package-dependencies
                (list guile-gcrypt guile-gnutls guile-git guile-avahi


@@ 999,6 1003,7 @@ itself."
                    => ,(make-config.scm #:gzip gzip
                                         #:bzip2 bzip2
                                         #:xz xz
                                         #:git git
                                         #:package-name
                                         %guix-package-name
                                         #:package-version


@@ 1104,7 1109,7 @@ itself."
    (%storedir . "/gnu/store")
    (%sysconfdir . "/etc")))

(define* (make-config.scm #:key gzip xz bzip2
(define* (make-config.scm #:key gzip xz bzip2 git
                          (package-name "GNU Guix")
                          (package-version "0")
                          (channel-metadata #f)


@@ 1134,6 1139,7 @@ itself."
                               %state-directory
                               %store-database-directory
                               %config-directory
                               %git
                               %gzip
                               %bzip2
                               %xz))


@@ 1176,6 1182,8 @@ itself."
                     ;; information is used by (guix describe).
                     '#$channel-metadata)

                   (define %git
                     #+(and git (file-append git "/bin/git")))
                   (define %gzip
                     #+(and gzip (file-append gzip "/bin/gzip")))
                   (define %bzip2

M nix/libstore/builtins.cc => nix/libstore/builtins.cc +3 -2
@@ 1,5 1,5 @@
/* GNU Guix --- Functional package management for GNU
   Copyright (C) 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
   Copyright (C) 2016-2019, 2023 Ludovic Courtès <ludo@gnu.org>

   This file is part of GNU Guix.



@@ 58,7 58,8 @@ static void builtinDownload(const Derivation &drv,

static const std::map<std::string, derivationBuilder> builtins =
{
    { "download", builtinDownload }
    { "download", builtinDownload },
    { "git-download", builtinDownload }
};

derivationBuilder lookupBuiltinBuilder(const std::string & name)

M nix/local.mk => nix/local.mk +2 -3
@@ 153,9 153,8 @@ systemdservicedir = $(libdir)/systemd/system
nodist_systemdservice_DATA =			\
  etc/gnu-store.mount				\
  etc/guix-daemon.service			\
  etc/guix-gc.service				\
  etc/guix-gc.timer				\
  etc/guix-publish.service
  etc/guix-publish.service			\
  etc/guix-gc.service

etc/%.mount: etc/%.mount.in	\
			 $(top_builddir)/config.status

M tests/builders.scm => tests/builders.scm +28 -1
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012-2015, 2018-2019, 2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
;;;
;;; This file is part of GNU Guix.


@@ 20,6 20,7 @@

(define-module (tests builders)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix build-system)
  #:use-module (guix build-system gnu)
  #:use-module (guix build gnu-build-system)


@@ 31,9 32,12 @@
  #:use-module (guix base32)
  #:use-module (guix derivations)
  #:use-module (gcrypt hash)
  #:use-module ((guix hash) #:select (file-hash*))
  #:use-module (guix tests)
  #:use-module (guix tests git)
  #:use-module (guix packages)
  #:use-module (gnu packages bootstrap)
  #:use-module ((ice-9 ftw) #:select (scandir))
  #:use-module (ice-9 match)
  #:use-module (ice-9 textual-ports)
  #:use-module (srfi srfi-1)


@@ 84,6 88,29 @@
    (and (file-exists? out)
         (valid-path? %store out))))

(test-equal "git-fetch, file URI"
  '("." ".." "a.txt" "b.scm")
  (let ((nonce (random-text)))
    (with-temporary-git-repository directory
        `((add "a.txt" ,nonce)
          (add "b.scm" "#t")
          (commit "Commit.")
          (tag "v1.0.0" "The tag."))
      (run-with-store %store
        (mlet* %store-monad ((hash
                              -> (file-hash* directory
                                             #:algorithm (hash-algorithm sha256)
                                             #:recursive? #t))
                             (drv (git-fetch
                                   (git-reference
                                    (url (string-append "file://" directory))
                                    (commit "v1.0.0"))
                                   'sha256 hash
                                   "git-fetch-test")))
          (mbegin %store-monad
            (built-derivations (list drv))
            (return (scandir (derivation->output-path drv)))))))))

(test-assert "gnu-build-system"
  (build-system? gnu-build-system))


M tests/channels.scm => tests/channels.scm +1 -6
@@ 50,7 50,7 @@
  #:use-module (ice-9 match))

(define (gpg+git-available?)
  (and (which (git-command))
  (and #t                                         ;'git' is always available
       (which (gpg-command)) (which (gpgconf-command))))

(define commit-id-string


@@ 196,7 196,6 @@
                                          "abc1234")))
                         instances)))))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-channel-instances #:validate-pull"
  'descendant



@@ 306,7 305,6 @@
               (depends? drv3
                         (list drv2 drv0) (list))))))))

(unless (which (git-command)) (test-skip 1))
(test-equal "channel-news, no news"
  '()
  (with-temporary-git-repository directory


@@ 318,7 316,6 @@
            (latest  (reference-name->oid repository "HEAD")))
        (channel-news-for-commit channel (oid->string latest))))))

(unless (which (git-command)) (test-skip 1))
(test-assert "channel-news, one entry"
  (with-temporary-git-repository directory
      `((add ".guix-channel"


@@ 406,7 403,6 @@
                         (channel-news-for-commit channel commit5 commit1))
                    '(#f "tag-for-first-news-entry")))))))

(unless (which (git-command)) (test-skip 1))
(test-assert "channel-news, annotated tag"
  (with-temporary-git-repository directory
      `((add ".guix-channel"


@@ 453,7 449,6 @@
                         (channel-news-for-commit channel commit2))
                    (list commit1)))))))

(unless (which (git-command)) (test-skip 1))
(test-assert "latest-channel-instances, missing introduction for 'guix'"
  (with-temporary-git-repository directory
      '((add "a.txt" "A")

M tests/derivations.scm => tests/derivations.scm +93 -1
@@ 24,10 24,15 @@
  #:use-module (guix utils)
  #:use-module ((gcrypt hash) #:prefix gcrypt:)
  #:use-module (guix base32)
  #:use-module ((guix git) #:select (with-repository))
  #:use-module (guix tests)
  #:use-module (guix tests git)
  #:use-module (guix tests http)
  #:use-module ((guix packages) #:select (package-derivation base32))
  #:use-module ((guix build utils) #:select (executable-file?))
  #:use-module ((guix hash) #:select (file-hash*))
  #:use-module ((git oid) #:select (oid->string))
  #:use-module ((git reference) #:select (reference-name->oid))
  #:use-module (gnu packages bootstrap)
  #:use-module ((gnu packages guile) #:select (guile-1.8))
  #:use-module (srfi srfi-1)


@@ 195,7 200,7 @@
                   (stat:ino (lstat file2))))))))

(test-equal "built-in-builders"
  '("download")
  '("download" "git-download")
  (built-in-builders %store))

(test-assert "unknown built-in builder"


@@ 290,6 295,93 @@
                         get-string-all)
                       text))))))

(test-equal "'git-download' built-in builder"
  `(("/a.txt" . "AAA")
    ("/b.scm" . "#t"))
  (let ((nonce (random-text)))
    (with-temporary-git-repository directory
        `((add "a.txt" "AAA")
          (add "b.scm" "#t")
          (commit ,nonce))
      (let* ((commit (with-repository directory repository
                       (oid->string
                        (reference-name->oid repository "HEAD"))))
             (drv (derivation %store "git-download"
                              "builtin:git-download" '()
                              #:env-vars
                              `(("url"
                                 . ,(object->string
                                     (string-append "file://" directory)))
                                ("commit" . ,commit))
                              #:hash-algo 'sha256
                              #:hash (file-hash* directory
                                                 #:algorithm
                                                 (gcrypt:hash-algorithm
                                                  gcrypt:sha256)
                                                 #:recursive? #t)
                              #:recursive? #t)))
        (build-derivations %store (list drv))
        (directory-contents (derivation->output-path drv) get-string-all)))))

(test-assert "'git-download' built-in builder, invalid hash"
  (with-temporary-git-repository directory
      `((add "a.txt" "AAA")
        (add "b.scm" "#t")
        (commit "Commit!"))
    (let* ((commit (with-repository directory repository
                     (oid->string
                      (reference-name->oid repository "HEAD"))))
           (drv (derivation %store "git-download"
                            "builtin:git-download" '()
                            #:env-vars
                            `(("url"
                               . ,(object->string
                                   (string-append "file://" directory)))
                              ("commit" . ,commit))
                            #:hash-algo 'sha256
                            #:hash (gcrypt:sha256 #vu8())
                            #:recursive? #t)))
      (guard (c ((store-protocol-error? c)
                 (string-contains (store-protocol-error-message c) "failed")))
        (build-derivations %store (list drv))
        #f))))

(test-assert "'git-download' built-in builder, invalid commit"
  (with-temporary-git-repository directory
      `((add "a.txt" "AAA")
        (add "b.scm" "#t")
        (commit "Commit!"))
    (let* ((drv (derivation %store "git-download"
                            "builtin:git-download" '()
                            #:env-vars
                            `(("url"
                               . ,(object->string
                                   (string-append "file://" directory)))
                              ("commit"
                               . "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
                            #:hash-algo 'sha256
                            #:hash (gcrypt:sha256 #vu8())
                            #:recursive? #t)))
      (guard (c ((store-protocol-error? c)
                 (string-contains (store-protocol-error-message c) "failed")))
        (build-derivations %store (list drv))
        #f))))

(test-assert "'git-download' built-in builder, not found"
  (let* ((drv (derivation %store "git-download"
                          "builtin:git-download" '()
                          #:env-vars
                          `(("url" . "file:///does-not-exist.git")
                            ("commit"
                             . "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
                          #:hash-algo 'sha256
                          #:hash (gcrypt:sha256 #vu8())
                          #:recursive? #t)))
    (guard (c ((store-protocol-error? c)
               (string-contains (store-protocol-error-message c) "failed")))
      (build-derivations %store (list drv))
      #f)))

(test-equal "derivation-name"
  "foo-0.0"
  (let ((drv (derivation %store "foo-0.0" %bash '())))

M tests/git-authenticate.scm => tests/git-authenticate.scm +0 -1
@@ 44,7 44,6 @@

(test-begin "git-authenticate")

(unless (which (git-command)) (test-skip 1))
(test-assert "unsigned commits"
  (with-temporary-git-repository directory
      '((add "a.txt" "A")

M tests/git.scm => tests/git.scm +0 -10
@@ 21,7 21,6 @@
  #:use-module (git)
  #:use-module (guix git)
  #:use-module (guix tests git)
  #:use-module (guix build utils)
  #:use-module ((guix utils) #:select (call-with-temporary-directory))
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64)


@@ 33,8 32,6 @@

(test-begin "git")

;; 'with-temporary-git-repository' relies on the 'git' command.
(unless (which (git-command)) (test-skip 1))
(test-assert "commit-difference, linear history"
  (with-temporary-git-repository directory
      '((add "a.txt" "A")


@@ 61,7 58,6 @@
             ;; empty list.
             (null? (commit-difference commit1 commit4)))))))

(unless (which (git-command)) (test-skip 1))
(test-assert "commit-difference, fork"
  (with-temporary-git-repository directory
      '((add "a.txt" "A")


@@ 101,7 97,6 @@
             (lset= eq? (commit-difference master4 master2)
                    (list master4 merge master3 devel1 devel2)))))))

(unless (which (git-command)) (test-skip 1))
(test-assert "commit-difference, excluded commits"
  (with-temporary-git-repository directory
      '((add "a.txt" "A")


@@ 126,7 121,6 @@
                    (list commit4))
             (null? (commit-difference commit4 commit1 (list commit5))))))))

(unless (which (git-command)) (test-skip 1))
(test-equal "commit-relation"
  '(self                                          ;master3 master3
    ancestor                                      ;master1 master3


@@ 166,7 160,6 @@
              (commit-relation master1 merge)
              (commit-relation merge master1))))))

(unless (which (git-command)) (test-skip 1))
(test-equal "commit-descendant?"
  '((master3 master3 => #t)
    (master1 master3 => #f)


@@ 216,7 209,6 @@
                  (master1 merge)
                  (merge master1)))))))

(unless (which (git-command)) (test-skip 1))
(test-equal "remote-refs"
  '("refs/heads/develop" "refs/heads/master"
    "refs/tags/v1.0" "refs/tags/v1.1")


@@ 231,7 223,6 @@
        (tag "v1.1" "release-1.1"))
    (remote-refs directory)))

(unless (which (git-command)) (test-skip 1))
(test-equal "remote-refs: only tags"
 '("refs/tags/v1.0" "refs/tags/v1.1")
  (with-temporary-git-repository directory


@@ 243,7 234,6 @@
        (tag "v1.1" "Release 1.1"))
    (remote-refs directory #:tags? #t)))

(unless (which (git-command)) (test-skip 1))
(test-assert "update-cached-checkout, tag"
  (call-with-temporary-directory
   (lambda (cache)

M tests/gnu-maintenance.scm => tests/gnu-maintenance.scm +7 -5
@@ 25,6 25,7 @@
  #:use-module (guix utils)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64)
  #:use-module ((web client) #:select (current-http-proxy))
  #:use-module (ice-9 match))

(test-begin "gnu-maintenance")


@@ 157,9 158,9 @@ submodules/qtbase-everywhere-src-6.5.2.tar.xz"
submodules/qtbase-everywhere-src-6.3.2.tar.xz" "6.3.2" #:to-version "6.5.2"))

(test-equal "rewrite-url, without to-version"
  "https://dist.libuv.org/dist/v1.46.0/libuv-v1.46.0.tar.gz"
  "http://dist.libuv.example.org/dist/v1.46.0/libuv-v1.46.0.tar.gz"
  (with-http-server
      ;; First reply, crawling https://dist.libuv.org/dist/.
      ;; First reply, crawling http://dist.libuv.example.org/dist/.
      `((200 "\
<!DOCTYPE html>
<html>


@@ 173,7 174,7 @@ submodules/qtbase-everywhere-src-6.3.2.tar.xz" "6.3.2" #:to-version "6.5.2"))
<a href=\"v1.46.0/\" title=\"v1.46.0/\">v1.46.0/</a>
</body>
</html>")
        ;; Second reply, crawling https://dist.libuv.org/dist/v1.46.0/.
        ;; Second reply, crawling http://dist.libuv.example.org/dist/v1.46.0/.
        (200 "\
<!DOCTYPE html>
<html>


@@ 190,7 191,8 @@ submodules/qtbase-everywhere-src-6.3.2.tar.xz" "6.3.2" #:to-version "6.5.2"))
   libuv-v1.46.0.tar.gz.sign</a>
</body>
</html>"))
    (rewrite-url "https://dist.libuv.org/dist/v1.45.0/libuv-v1.45.0.tar.gz"
                 "1.45.0")))
    (parameterize ((current-http-proxy (%local-url)))
      (rewrite-url "http://dist.libuv.example.org/dist/v1.45.0/libuv-v1.45.0.tar.gz"
                   "1.45.0"))))

(test-end)

M tests/guix-graph.sh => tests/guix-graph.sh +3 -3
@@ 1,5 1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2015-2016, 2019-2020, 2022 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2015-2016, 2019-2020, 2022-2023 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2019 Simon Tournier <zimon.toutoune@gmail.com>
#
# This file is part of GNU Guix.


@@ 86,8 86,8 @@ guix graph --path emacs vim && false

path="\
emacs
gnutls
p11-kit
cairo
gobject-introspection
libffi"
test "`guix graph --path emacs libffi | cut -d '@' -f1`" = "$path"


M tests/import-git.scm => tests/import-git.scm +0 -18
@@ 24,7 24,6 @@
  #:use-module (guix import git)
  #:use-module (guix git-download)
  #:use-module (guix tests git)
  #:use-module (guix build utils)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64))



@@ 46,7 45,6 @@
        (base32
         "0000000000000000000000000000000000000000000000000000"))))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: no custom prefix, suffix, and delimiter"
  "1.0.1"
  (with-temporary-git-repository directory


@@ 56,7 54,6 @@
    (let ((package (make-package directory "1.0.0")))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: custom prefix, no suffix and delimiter"
  "1.0.1"
  (with-temporary-git-repository directory


@@ 67,7 64,6 @@
                                 '((release-tag-prefix . "prefix-")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: custom suffix, no prefix and delimiter"
  "1.0.1"
  (with-temporary-git-repository directory


@@ 78,7 74,6 @@
                                 '((release-tag-suffix . "-suffix-[0-9]*")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: custom delimiter, no prefix and suffix"
  "2021.09.07"
  (with-temporary-git-repository directory


@@ 89,7 84,6 @@
                                 '((release-tag-version-delimiter . "-")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: empty delimiter, no prefix and suffix"
  "20210907"
  (with-temporary-git-repository directory


@@ 100,7 94,6 @@
                                 '((release-tag-version-delimiter . "")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: custom prefix and suffix, no delimiter"
  "2.0.0"
  (with-temporary-git-repository directory


@@ 112,7 105,6 @@
                                   (release-tag-suffix . "suffix-[0-9]")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: custom prefix, suffix, and delimiter"
  "2.0.0"
  (with-temporary-git-repository directory


@@ 125,7 117,6 @@
                                   (release-tag-version-delimiter . "_")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: only pre-releases available"
  #f
  (with-temporary-git-repository directory


@@ 135,7 126,6 @@
    (let ((package (make-package directory "1.0.0")))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: accept pre-releases"
  "2.0.0-rc1"
  (with-temporary-git-repository directory


@@ 146,7 136,6 @@
                                 '((accept-pre-releases? . #t)))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: accept pre-releases, and custom prefix"
  "2.0.0-rc1"
  (with-temporary-git-repository directory


@@ 158,7 147,6 @@
                                   (release-tag-prefix . "version-")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: accept pre-releases, and custom suffix"
  "2.0.0-rc1"
  (with-temporary-git-repository directory


@@ 170,7 158,6 @@
                                   (release-tag-suffix . "-suffix")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: accept pre-releases, delimiter conflicts with pre-release part"
  "2.0.0_alpha"
  (with-temporary-git-repository directory


@@ 182,7 169,6 @@
                                   (release-tag-version-delimiter . "_")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: accept pre-releases, and custom suffix and prefix"
  "2.0.0-alpha"
  (with-temporary-git-repository directory


@@ 195,7 181,6 @@
                                   (release-tag-suffix . "-suffix")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: accept pre-releases, and custom suffix, prefix, and delimiter"
  "2.0.0-alpha"
  (with-temporary-git-repository directory


@@ 209,7 194,6 @@
                                   (release-tag-version-delimiter . "-")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: accept pre-releases, no delimiter, and custom suffix, prefix"
  "2alpha"
  (with-temporary-git-repository directory


@@ 223,7 207,6 @@
                                   (release-tag-version-delimiter . "")))))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: no tags found"
  #f
  (with-temporary-git-repository directory


@@ 232,7 215,6 @@
    (let ((package (make-package directory "1.0.0")))
      (latest-git-tag-version package))))

(unless (which (git-command)) (test-skip 1))
(test-equal "latest-git-tag-version: no valid tags found"
  #f
  (with-temporary-git-repository directory

M tests/read-print.scm => tests/read-print.scm +13 -12
@@ 258,13 258,13 @@ mnopqrstuvwxyz.\")"

(test-pretty-print "\
(package
  ;; Here 'sha256', 'base32', and 'arguments' must be
  ;; Here 'source', 'sha256', and 'arguments' must be
  ;; immediately followed by a newline.
  (source (origin
            (method url-fetch)
            (sha256
             (base32
              \"not a real base32 string\"))))
  (source
   (origin
     (method url-fetch)
     (sha256
      (base32 \"not a real base32 string\"))))
  (arguments
   '(#:phases %standard-phases
     #:tests? #f)))")


@@ 274,12 274,13 @@ mnopqrstuvwxyz.\")"
(package
  (name \"keyword-value-same-line\")
  (arguments
   (list #:phases #~(modify-phases %standard-phases
                      (add-before 'x 'y
                        (lambda* (#:key inputs #:allow-other-keys)
                          (foo bar baz))))
         #:make-flags #~'(\"ANSWER=42\")
         #:tests? #f)))")
   (list
    #:phases #~(modify-phases %standard-phases
                 (add-before 'x 'y
                   (lambda* (#:key inputs #:allow-other-keys)
                     (foo bar baz))))
    #:make-flags #~'(\"ANSWER=42\")
    #:tests? #f)))")

(test-pretty-print "\
(let ((x 1)