diff options
92 files changed, 7318 insertions, 3888 deletions
diff --git a/Makefile.am b/Makefile.am index c3af23b68e..c0b2a3ee80 100644 --- a/Makefile.am +++ b/Makefile.am @@ -237,6 +237,7 @@ MODULES = \ guix/build/waf-build-system.scm \ guix/build/haskell-build-system.scm \ guix/build/julia-build-system.scm \ + guix/build/kconfig.scm \ guix/build/linux-module-build-system.scm \ guix/build/store-copy.scm \ guix/build/json.scm \ @@ -439,6 +440,8 @@ EXAMPLES = \ gnu/system/examples/desktop.tmpl \ gnu/system/examples/lightweight-desktop.tmpl \ gnu/system/examples/docker-image.tmpl \ + gnu/system/examples/raspberry-pi-64.tmpl \ + gnu/system/examples/raspberry-pi-64-nfs-root.tmpl \ gnu/system/examples/vm-image.tmpl GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go) diff --git a/doc/contributing.texi b/doc/contributing.texi index 40ae33ecac..6a8ffd6524 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -1089,11 +1089,16 @@ and then to browse them ``by hand'' using @code{car}, @code{cdr}, notably the fact that it is hard to read, error-prone, and a hindrance to proper type error reports. +@findex define-record-type* +@findex match-record +@cindex pattern matching Guix code should define appropriate data types (for instance, using @code{define-record-type*}) rather than abuse lists. In addition, it should use pattern matching, via Guile’s @code{(ice-9 match)} module, especially when matching lists (@pxref{Pattern Matching,,, guile, GNU -Guile Reference Manual}). +Guile Reference Manual}); pattern matching for records is better done +using @code{match-record} from @code{(guix records)}, which, unlike +@code{match}, verifies field names at macro-expansion time. @node Formatting Code @subsection Formatting Code diff --git a/doc/guix.texi b/doc/guix.texi index e547d469f4..a79b777826 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -18409,9 +18409,6 @@ udev rules can be provided as a list of files through the @var{rules} variable. The procedures @code{udev-rule}, @code{udev-rules-service} and @code{file->udev-rule} from @code{(gnu services base)} simplify the creation of such rule files. - -The @command{herd rules udev} command, as root, returns the name of the -directory containing all the active udev rules. @end deffn @deffn {Scheme Procedure} udev-rule [@var{file-name} @var{contents}] @@ -18940,9 +18937,8 @@ gexps to introduce job definitions that are passed to mcron ;; job's action as a Scheme procedure. #~(job '(next-hour '(3)) (lambda () - (execl (string-append #$findutils "/bin/updatedb") - "updatedb" - "--prunepaths=/tmp /var/tmp /gnu/store")) + (system* (string-append #$findutils "/bin/updatedb") + "--prunepaths=/tmp /var/tmp /gnu/store")) "updatedb")) (define garbage-collector-job @@ -18980,6 +18976,12 @@ the job would appear as ``Lambda function'' in the output of @command{herd schedule mcron}, which is not nearly descriptive enough! @end quotation +@quotation Tip +Avoid calling the Guile procedures @code{execl}, @code{execle} or +@code{execlp} inside a job specification, else mcron won't be able to +output the completion status of the job. +@end quotation + For more complex jobs defined in Scheme where you need control over the top level, for instance to introduce a @code{use-modules} form, you can move your code to a separate program using the @code{program-file} procedure of the @@ -19581,6 +19583,10 @@ This is the list of available plugins for virtual private networks (VPNs). An example of this is the @code{network-manager-openvpn} package, which allows NetworkManager to manage VPNs @i{via} OpenVPN. +@item @code{iwd?} (default: @code{#f}) +NetworkManager will use iwd as a backend for wireless networking if this +option is set to @code{#t}, otherwise it will use wpa-supplicant. + @end table @end deftp @@ -37991,8 +37997,9 @@ The type of a bootloader configuration declaration. @cindex BIOS, bootloader The bootloader to use, as a @code{bootloader} object. For now @code{grub-bootloader}, @code{grub-efi-bootloader}, -@code{grub-efi-netboot-bootloader}, @code{grub-efi-removable-bootloader}, -@code{extlinux-bootloader} and @code{u-boot-bootloader} are supported. +@code{grub-efi-removable-bootloader}, @code{grub-efi-netboot-bootloader}, +@code{grub-efi-netboot-removable-bootloader}, @code{extlinux-bootloader} +and @code{u-boot-bootloader} are supported. @cindex ARM, bootloaders @cindex AArch64, bootloaders @@ -38001,15 +38008,29 @@ modules. In particular, @code{(gnu bootloader u-boot)} contains definitions of bootloaders for a wide range of ARM and AArch64 systems, using the @uref{https://www.denx.de/wiki/U-Boot/, U-Boot bootloader}. +@vindex grub-bootloader +@code{grub-bootloader} allows you to boot in particular Intel-based machines +in ``legacy'' BIOS mode. + @vindex grub-efi-bootloader @code{grub-efi-bootloader} allows to boot on modern systems using the @dfn{Unified Extensible Firmware Interface} (UEFI). This is what you should use if the installation image contains a @file{/sys/firmware/efi} directory when you boot it on your system. -@vindex grub-bootloader -@code{grub-bootloader} allows you to boot in particular Intel-based machines -in ``legacy'' BIOS mode. +@vindex grub-efi-removable-bootloader +@code{grub-efi-removable-bootloader} allows you to boot your system from +removable media by writing the GRUB file to the UEFI-specification location of +@file{/EFI/BOOT/BOOTX64.efi} of the boot directory, usually @file{/boot/efi}. +This is also useful for some UEFI firmwares that ``forget'' their configuration +from their non-volatile storage. Like @code{grub-efi-bootloader}, this can only +be used if the @file{/sys/firmware/efi} directory is available. + +@quotation Note +This @emph{will} overwrite the GRUB file from any other operating systems that +also place their GRUB file in the UEFI-specification location; making them +unbootable. +@end quotation @vindex grub-efi-netboot-bootloader @code{grub-efi-netboot-bootloader} allows you to boot your system over network @@ -38018,9 +38039,10 @@ build a diskless Guix system. The installation of the @code{grub-efi-netboot-bootloader} generates the content of the TFTP root directory at @code{targets} (@pxref{Bootloader -Configuration, @code{targets}}), to be served by a TFTP server. You may -want to mount your TFTP server directories onto the @code{targets} to -move the required files to the TFTP server automatically. +Configuration, @code{targets}}) below the sub-directory @file{efi/Guix}, to be +served by a TFTP server. You may want to mount your TFTP server directories +onto the @code{targets} to move the required files to the TFTP server +automatically during installation. If you plan to use an NFS root file system as well (actually if you mount the store from an NFS share), then the TFTP server needs to serve the file @@ -38049,25 +38071,34 @@ this constellation the symlinks will work. For other constellations you will have to program your own bootloader installer, which then takes care to make necessary files from the store accessible through TFTP, for example by copying them into the TFTP root -directory to your @code{targets}. +directory for your @code{targets}. It is important to note that symlinks pointing outside the TFTP root directory may need to be allowed in the configuration of your TFTP server. Further the store link exposes the whole store through TFTP@. Both points need to be -considered carefully for security aspects. +considered carefully for security aspects. It is advised to disable any TFTP +write access! + +Please note, that this bootloader will not modify the ‘UEFI Boot Manager’ of +the system. Beside the @code{grub-efi-netboot-bootloader}, the already mentioned TFTP and NFS servers, you also need a properly configured DHCP server to make the booting over netboot possible. For all this we can currently only recommend you to look for instructions about @acronym{PXE, Preboot eXecution Environment}. -@vindex grub-efi-removable-bootloader -@code{grub-efi-removable-bootloader} allows you to boot your system from -removable media by writing the GRUB file to the UEFI-specification location of -@file{/EFI/BOOT/BOOTX64.efi} of the boot directory, usually @file{/boot/efi}. -This is also useful for some UEFI firmwares that ``forget'' their configuration -from their non-volatile storage. Like @code{grub-efi-bootloader}, this can only -be used if the @file{/sys/firmware/efi} directory is available. +If a local EFI System Partition (ESP) or a similar partition with a FAT +file system is mounted in @code{targets}, then symlinks cannot be +created. In this case everything will be prepared for booting from +local storage, matching the behavior of @code{grub-efi-bootloader}, with +the difference that all GRUB binaries are copied to @code{targets}, +necessary for booting over the network. + +@vindex grub-efi-netboot-removable-bootloader +@code{grub-efi-netboot-removable-bootloader} is identical to +@code{grub-efi-netboot-bootloader} with the exception that the +sub-directory @file{efi/boot} will be used instead of @file{efi/Guix} to +comply with the UEFI specification for removable media. @quotation Note This @emph{will} overwrite the GRUB file from any other operating systems that diff --git a/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-add-package b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-add-package new file mode 100644 index 0000000000..cc2dddb1e0 --- /dev/null +++ b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-add-package @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: guix-vc-commit-message-add-package +# key: add +# -- +gnu: Add ${1:`(when (string-match "\\+(define-public \\(\\S-+\\)" vc-patch-string) + (match-string-no-properties 1 vc-patch-string))`}. + +* `(car (log-edit-files))` ($1): New variable. +`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")` diff --git a/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-remove-package b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-remove-package new file mode 100644 index 0000000000..9ab4ce6156 --- /dev/null +++ b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-remove-package @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: guix-vc-commit-message-remove-package +# key: remove +# -- +gnu: Remove ${1:`(when (string-match "\\-(define-public \\(\\S-+\\)" vc-patch-string) + (match-string-no-properties 1 vc-patch-string))`}. + +* `(car (log-edit-files))` ($1): Delete variable. +`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")` diff --git a/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-rename-package b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-rename-package new file mode 100644 index 0000000000..89c85f8016 --- /dev/null +++ b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-rename-package @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: guix-vc-commit-message-rename-package +# key: rename +# -- +gnu: ${1:`(when (string-match "\\-(define-public \\(\\S-+\\)" vc-patch-string) + (match-string-no-properties 1 vc-patch-string)) + `}: Rename package to ${2:` + (when (string-match "\\+(define-public \\(\\S-+\\)" vc-patch-string) + (match-string-no-properties 1 vc-patch-string))`}. + +* `(car (log-edit-files))` ($1): Define in terms of +'deprecated-package'. +($2): New variable, formerly known as "$1". +`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")` diff --git a/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-update-package b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-update-package new file mode 100644 index 0000000000..b5e41709f5 --- /dev/null +++ b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-update-package @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# name: guix-vc-commit-message-update-package +# key: update +# -- + +gnu: ${1:`(when (string-match "^[ ]*(define-public \\(\\S-+\\)" vc-patch-string) + (match-string-no-properties 1 vc-patch-string))`}: Update to ${2:` + (when (string-match "^\\+[ ]*(version \"\\(.*\\)\"" vc-patch-string) + (match-string-no-properties 1 vc-patch-string))`}. + +* `(car (log-edit-files))` ($1): Update to $2.$0 +`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")` diff --git a/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-use-https-home-page b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-use-https-home-page new file mode 100644 index 0000000000..e0f170b015 --- /dev/null +++ b/etc/snippets/yas/log-edit-mode/guix-vc-commit-message-use-https-home-page @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: guix-vc-commit-message-use-https-home-page +# key: https +# -- +gnu: ${1:`(when (string-match "^[ ]*(define-public \\(\\S-+\\)" vc-patch-string) + (match-string-no-properties 1 vc-patch-string))`}: Use HTTPS home page URI. + +* `(car (log-edit-files))` ($1)[home-page]: Use HTTPS URI. +`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")` diff --git a/etc/teams.scm.in b/etc/teams.scm.in index c458b14e3b..f744204017 100644 --- a/etc/teams.scm.in +++ b/etc/teams.scm.in @@ -393,7 +393,8 @@ and Thunderbird." "The Racket language and Racket-based languages, Racket packages, Racket's variant of Chez Scheme, and development of a Racket build system and importer." - #:scope (list "gnu/packages/racket.scm"))) + #:scope (list "gnu/packages/chez.scm" + "gnu/packages/racket.scm"))) (define-member (person "Thiago Jung Bauermann" diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm index da65b9d5d5..2c36d8c6cf 100644 --- a/gnu/bootloader.scm +++ b/gnu/bootloader.scm @@ -322,26 +322,22 @@ instead~%"))) (force %bootloaders)) (leave (G_ "~a: no such bootloader~%") name))) -(define (efi-bootloader-profile files bootloader-package hooks) - "Creates a profile with BOOTLOADER-PACKAGE and a directory collection/ with -links to additional FILES from the store. This collection is meant to be used -by the bootloader installer. +(define (efi-bootloader-profile packages files hooks) + "Creates a profile from the lists of PACKAGES and FILES from the store. +This profile is meant to be used by the bootloader-installer. FILES is a list of file or directory names from the store, which will be -symlinked into the collection/ directory. If a directory name ends with '/', -then the directory content instead of the directory itself will be symlinked -into the collection/ directory. +symlinked into the profile. If a directory name ends with '/', then the +directory content instead of the directory itself will be symlinked into the +profile. -FILES may contain file like objects produced by functions like plain-file, +FILES may contain file like objects produced by procedures like plain-file, local-file, etc., or package contents produced with file-append. HOOKS lists additional hook functions to modify the profile." - (define (bootloader-collection manifest) + (define (efi-bootloader-profile-hook manifest) (define build - (with-imported-modules '((guix build utils) - (ice-9 ftw) - (srfi srfi-1) - (srfi srfi-26)) + (with-imported-modules '((guix build utils)) #~(begin (use-modules ((guix build utils) #:select (mkdir-p strip-store-file-name)) @@ -365,8 +361,7 @@ HOOKS lists additional hook functions to modify the profile." (define (name-is-store-entry? name) "Return #t if NAME is a direct store entry and nothing inside." (not (string-index (strip-store-file-name name) #\/))) - (let* ((collection (string-append #$output "/collection")) - (files '#$files) + (let* ((files '#$files) (directories (filter name-ends-with-/? files)) (names-from-directories (append-map (lambda (directory) @@ -374,11 +369,11 @@ HOOKS lists additional hook functions to modify the profile." directories)) (names (append names-from-directories (remove name-ends-with-/? files)))) - (mkdir-p collection) + (mkdir-p #$output) (if (every file-exists? names) (begin (for-each (lambda (name) - (symlink-to name collection + (symlink-to name #$output (if (name-is-store-entry? name) strip-store-file-name basename))) @@ -386,57 +381,63 @@ HOOKS lists additional hook functions to modify the profile." #t) #f))))) - (gexp->derivation "bootloader-collection" + (gexp->derivation "efi-bootloader-profile" build #:local-build? #t #:substitutable? #f #:properties `((type . profile-hook) - (hook . bootloader-collection)))) + (hook . efi-bootloader-profile-hook)))) - (profile (content (packages->manifest (list bootloader-package))) - (name "bootloader-profile") - (hooks (append (list bootloader-collection) hooks)) + (profile (content (packages->manifest packages)) + (name "efi-bootloader-profile") + (hooks (cons efi-bootloader-profile-hook hooks)) (locales? #f) (allow-collisions? #f) (relative-symlinks? #f))) -(define* (efi-bootloader-chain files - final-bootloader +(define* (efi-bootloader-chain final-bootloader #:key + (packages '()) + (files '()) (hooks '()) - installer) - "Define a bootloader chain with FINAL-BOOTLOADER as the final bootloader and -certain directories and files from the store given in the list of FILES. + installer + disk-image-installer) + "Define a chain of bootloaders with the FINAL-BOOTLOADER, optional PACKAGES, +and optional directories and files from the store given in the list of FILES. -FILES may contain file like objects produced by functions like plain-file, -local-file, etc., or package contents produced with file-append. They will be -collected inside a directory collection/ inside a generated bootloader profile, -which will be passed to the INSTALLER. +The package of the FINAL-BOOTLOADER and all PACKAGES and FILES will be placed +in an efi-bootloader-profile, which will be passed to the INSTALLER. + +FILES may contain file-like objects produced by procedures like plain-file, +local-file, etc., or package contents produced with file-append. If a directory name in FILES ends with '/', then the directory content instead -of the directory itself will be symlinked into the collection/ directory. +of the directory itself will be symlinked into the efi-bootloader-profile. The procedures in the HOOKS list can be used to further modify the bootloader profile. It is possible to pass a single function instead of a list. -If the INSTALLER argument is used, then this function will be called to install -the bootloader. Otherwise the installer of the FINAL-BOOTLOADER will be called." - (let* ((final-installer (or installer - (bootloader-installer final-bootloader))) - (profile (efi-bootloader-profile files - (bootloader-package final-bootloader) - (if (list? hooks) - hooks - (list hooks))))) - (bootloader - (inherit final-bootloader) - (package profile) - (installer - #~(lambda (bootloader target mount-point) - (#$final-installer bootloader target mount-point) - (copy-recursively - (string-append bootloader "/collection") - (string-append mount-point target) - #:follow-symlinks? #t - #:log (%make-void-port "w"))))))) +If the INSTALLER argument is used, then this gexp procedure will be called to +install the efi-bootloader-profile. Otherwise the installer of the +FINAL-BOOTLOADER will be called. + +If the DISK-IMAGE-INSTALLER is used, then this gexp procedure will be called +to install the efi-bootloader-profile into a disk image. Otherwise the +disk-image-installer of the FINAL-BOOTLOADER will be called." + (bootloader + (inherit final-bootloader) + (name "efi-bootloader-chain") + (package + (efi-bootloader-profile (cons (bootloader-package final-bootloader) + packages) + files + (if (list? hooks) + hooks + (list hooks)))) + (installer + (or installer + (bootloader-installer final-bootloader))) + (disk-image-installer + (or disk-image-installer + (bootloader-disk-image-installer final-bootloader))))) diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 7283257354..aab766fd6c 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -53,13 +53,14 @@ grub-theme-gfxmode install-grub-efi-removable - install-grub-efi-netboot + make-grub-efi-netboot-installer grub-bootloader grub-efi-bootloader grub-efi-removable-bootloader grub-efi32-bootloader grub-efi-netboot-bootloader + grub-efi-netboot-removable-bootloader grub-mkrescue-bootloader grub-minimal-bootloader @@ -353,7 +354,7 @@ code." ((or #f (? string?)) #~(format #f "search --file --set ~a" #$file))))) -(define* (grub-configuration-file config entries +(define* (make-grub-configuration grub config entries #:key (locale #f) (system (%current-system)) @@ -453,9 +454,7 @@ menuentry ~s { (define locale-config (let* ((entry (first all-entries)) (device (menu-entry-device entry)) - (mount-point (menu-entry-device-mount-point entry)) - (bootloader (bootloader-configuration-bootloader config)) - (grub (bootloader-package bootloader))) + (mount-point (menu-entry-device-mount-point entry))) #~(let ((locale #$(and locale (locale-definition-source (locale-name->definition locale)))) @@ -481,8 +480,6 @@ set lang=~a~%" (define keyboard-layout-config (let* ((layout (bootloader-configuration-keyboard-layout config)) - (grub (bootloader-package - (bootloader-configuration-bootloader config))) (keymap* (and layout (keyboard-layout-file layout #:grub grub))) (entry (first all-entries)) @@ -533,6 +530,16 @@ fi~%")))) #:options '(#:local-build? #t #:substitutable? #f))) +(define (grub-configuration-file config . args) + (let* ((bootloader (bootloader-configuration-bootloader config)) + (grub (bootloader-package bootloader))) + (apply make-grub-configuration grub config args))) + +(define (grub-efi-configuration-file . args) + (apply make-grub-configuration grub-efi args)) + +(define grub-cfg "/boot/grub/grub.cfg") + ;;; @@ -674,42 +681,31 @@ fi~%")))) ((target-arm?) "--target=arm-efi")) "--efi-directory" target-esp))))) -(define (install-grub-efi-netboot subdir) - "Define a grub-efi-netboot bootloader installer for installation in SUBDIR, -which is usually efi/Guix or efi/boot." - (let* ((system (string-split (nix-system->gnu-triplet - (or (%current-target-system) - (%current-system))) - #\-)) - (arch (first system)) - (boot-efi-link (match system - ;; These are the supportend systems and the names - ;; defined by the UEFI standard for removable media. - (("i686" _ ...) "/bootia32.efi") - (("x86_64" _ ...) "/bootx64.efi") - (("arm" _ ...) "/bootarm.efi") - (("aarch64" _ ...) "/bootaa64.efi") - (("riscv" _ ...) "/bootriscv32.efi") - (("riscv64" _ ...) "/bootriscv64.efi") - ;; Other systems are not supported, although defined. - ;; (("riscv128" _ ...) "/bootriscv128.efi") - ;; (("ia64" _ ...) "/bootia64.efi") - ((_ ...) #f))) - (core-efi (string-append - ;; This is the arch dependent file name of GRUB, e.g. - ;; i368-efi/core.efi or arm64-efi/core.efi. - (match arch - ("i686" "i386") - ("aarch64" "arm64") - ("riscv" "riscv32") - (_ arch)) - "-efi/core.efi"))) - (with-imported-modules - '((guix build union)) - #~(lambda (bootloader target mount-point) - "Install the BOOTLOADER, which must be the package grub, as e.g. -bootx64.efi or bootaa64.efi into SUBDIR, which is usually efi/Guix or efi/boot, -below the directory TARGET for the system whose root is mounted at MOUNT-POINT. +(define* (make-grub-efi-netboot-installer grub-efi grub-cfg subdir) + "Make a bootloader-installer for a grub-efi-netboot bootloader, which expects +its files in SUBDIR and its configuration file in GRUB-CFG. + +As a grub-efi-netboot package is already pre-installed by 'grub-mknetdir', the +installer basically copies all files from the bootloader-package (or profile) +into the bootloader-target directory. + +Additionally for network booting over TFTP, two relative symlinks to the store +and to the GRUB-CFG file are necessary. Due to this a TFTP root directory must +not be located on a FAT file-system. + +If the bootloader-target does not support symlinks, then it is assumed to be a +kind of EFI System Partition (ESP). In this case an intermediate configuration +file is created with the help of GRUB-EFI to load the GRUB-CFG. + +The installer is usable for any efi-bootloader-chain, which prepares the +bootloader-profile in a way ready for copying. + +The installer does not manipulate the system's 'UEFI Boot Manager'. + +The returned installer accepts the BOOTLOADER, TARGET and MOUNT-POINT +arguments. Its job is to copy the BOOTLOADER, which must be a pre-installed +grub-efi-netboot package with a SUBDIR like efi/boot or efi/Guix, below the +directory TARGET for the system whose root is mounted at MOUNT-POINT. MOUNT-POINT is the last argument in 'guix system init /etc/config.scm mnt/point' or '/' for other 'guix system' commands. @@ -719,17 +715,19 @@ bootloader-configuration in: (operating-system (bootloader (bootloader-configuration - (targets '(\"/boot\")) + (targets '(\"/boot/efi\")) …)) …) TARGET is required to be an absolute directory name, usually mounted via NFS, -and finally needs to be provided by a TFTP server as the TFTP root directory. +and finally needs to be provided by a TFTP server as +the TFTP root directory. +Usually the installer will be used to prepare network booting over TFTP. Then GRUB will load tftp://server/SUBDIR/grub.cfg and this file will instruct it to load more files from the store like tftp://server/gnu/store/…-linux…/Image. -To make this possible two symlinks will be created. The first symlink points +To make this possible two symlinks are created. The first symlink points relatively form MOUNT-POINT/TARGET/SUBDIR/grub.cfg to MOUNT-POINT/boot/grub/grub.cfg, and the second symlink points relatively from MOUNT-POINT/TARGET/%store-prefix to MOUNT-POINT/%store-prefix. @@ -739,34 +737,80 @@ paths on the TFTP server side are unknown. It is also important to note that both symlinks will point outside the TFTP root directory and that the TARGET/%store-prefix symlink makes the whole store -accessible via TFTP. Possibly the TFTP server must be configured -to allow accesses outside its TFTP root directory. This may need to be -considered for security aspects." - (use-modules ((guix build union) #:select (symlink-relative))) - (let* ((net-dir (string-append mount-point target "/")) - (sub-dir (string-append net-dir #$subdir "/")) - (store (string-append mount-point (%store-prefix))) - (store-link (string-append net-dir (%store-prefix))) - (grub-cfg (string-append mount-point "/boot/grub/grub.cfg")) - (grub-cfg-link (string-append sub-dir (basename grub-cfg))) - (boot-efi-link (string-append sub-dir #$boot-efi-link))) - ;; Prepare the symlink to the store. - (mkdir-p (dirname store-link)) - (false-if-exception (delete-file store-link)) - (symlink-relative store store-link) - ;; Prepare the symlink to the grub.cfg, which points into the store. - (mkdir-p (dirname grub-cfg-link)) - (false-if-exception (delete-file grub-cfg-link)) - (symlink-relative grub-cfg grub-cfg-link) - ;; Install GRUB, which refers to the grub.cfg, with support for - ;; encrypted partitions, - (setenv "GRUB_ENABLE_CRYPTODISK" "y") - (invoke/quiet (string-append bootloader "/bin/grub-mknetdir") - (string-append "--net-directory=" net-dir) - (string-append "--subdir=" #$subdir)) - ;; Prepare the bootloader symlink, which points to core.efi of GRUB. - (false-if-exception (delete-file boot-efi-link)) - (symlink #$core-efi boot-efi-link)))))) +accessible via TFTP. Possibly the TFTP server must be configured to allow +accesses outside its TFTP root directory. This all may need to be considered +for security aspects. It is advised to disable any TFTP write access! + +The installer can also be used to prepare booting from local storage, if the +underlying file-system, like FAT on an EFI System Partition (ESP), does not +support symlinks. In this case the MOUNT-POINT/TARGET/SUBDIR/grub.cfg will be +created with the help of GRUB-EFI to load the /boot/grub/grub.cfg file. A +symlink to the store is not needed in this case." + (with-imported-modules '((guix build union)) + #~(lambda (bootloader target mount-point) + ;; In context of a disk image creation TARGET will be #f and an + ;; installer is expected to do necessary installations on MOUNT-POINT, + ;; which will become the root file system. If TARGET is #f, this + ;; installer has nothing to do, as it only cares about the EFI System + ;; Partition (ESP). + (when target + (use-modules ((guix build union) #:select (symlink-relative)) + (ice-9 popen) + (ice-9 rdelim)) + (let* ((mount-point/target (string-append mount-point target "/")) + ;; When installing Guix, it is common to mount TARGET below + ;; MOUNT-POINT rather than the root directory. + (bootloader-target (if (file-exists? mount-point/target) + mount-point/target + target)) + (store (string-append mount-point (%store-prefix))) + (store-link (string-append bootloader-target (%store-prefix))) + (grub-cfg (string-append mount-point #$grub-cfg)) + (grub-cfg-link (string-append bootloader-target + #$subdir "/" + (basename grub-cfg)))) + ;; Copy the bootloader into the bootloader-target directory. + ;; Should we beforehand recursively delete any existing file? + (copy-recursively bootloader bootloader-target + #:follow-symlinks? #t + #:log (%make-void-port "w")) + ;; For TFTP we need to install additional relative symlinks. + ;; If we install on an EFI System Partition (ESP) or some other FAT + ;; file-system, then symlinks cannot be created and are not needed. + ;; Therefore we ignore exceptions when trying. + ;; Prepare the symlink to the grub.cfg. + (mkdir-p (dirname grub-cfg-link)) + (false-if-exception (delete-file grub-cfg-link)) + (if (unspecified? + (false-if-exception (symlink-relative grub-cfg grub-cfg-link))) + ;; Symlinks are supported. + (begin + ;; Prepare the symlink to the store. + (mkdir-p (dirname store-link)) + (false-if-exception (delete-file store-link)) + (symlink-relative store store-link)) + ;; Creating symlinks does not seem to be supported. Probably + ;; an ESP is used. Add a script to search and load the actual + ;; grub.cfg. + (let* ((probe #$(file-append grub-efi "/sbin/grub-probe")) + (port (open-pipe* OPEN_READ probe "--target=fs_uuid" + grub-cfg)) + (search-root + (match (read-line port) + ((? eof-object?) + ;; There is no UUID available. As a fallback search + ;; everywhere for the grub.cfg. + (string-append "search --file --set " #$grub-cfg)) + (fs-uuid + ;; The UUID to load the grub.cfg from is known. + (string-append "search --fs-uuid --set " fs-uuid)))) + (load-grub-cfg (string-append "configfile " #$grub-cfg))) + (close-pipe port) + (with-output-to-file grub-cfg-link + (lambda () + (display (string-join (list search-root + load-grub-cfg) + "\n"))))))))))) @@ -784,7 +828,7 @@ considered for security aspects." (package grub) (installer install-grub) (disk-image-installer install-grub-disk-image) - (configuration-file "/boot/grub/grub.cfg") + (configuration-file grub-cfg) (configuration-file-generator grub-configuration-file))) (define grub-minimal-bootloader @@ -794,11 +838,12 @@ considered for security aspects." (define grub-efi-bootloader (bootloader - (inherit grub-bootloader) + (name 'grub-efi) + (package grub-efi) (installer install-grub-efi) (disk-image-installer #f) - (name 'grub-efi) - (package grub-efi))) + (configuration-file grub-cfg) + (configuration-file-generator grub-configuration-file))) (define grub-efi-removable-bootloader (bootloader @@ -813,11 +858,22 @@ considered for security aspects." (name 'grub-efi32) (package grub-efi32))) -(define grub-efi-netboot-bootloader +(define (make-grub-efi-netboot-bootloader name subdir) (bootloader - (inherit grub-efi-bootloader) - (name 'grub-efi-netboot-bootloader) - (installer (install-grub-efi-netboot "efi/Guix")))) + (name name) + (package (make-grub-efi-netboot (symbol->string name) subdir)) + (installer (make-grub-efi-netboot-installer grub-efi grub-cfg subdir)) + (disk-image-installer #f) + (configuration-file grub-cfg) + (configuration-file-generator grub-efi-configuration-file))) + +(define grub-efi-netboot-bootloader + (make-grub-efi-netboot-bootloader 'grub-efi-netboot-bootloader + "efi/Guix")) + +(define grub-efi-netboot-removable-bootloader + (make-grub-efi-netboot-bootloader 'grub-efi-netboot-removable-bootloader + "efi/boot")) (define grub-mkrescue-bootloader (bootloader diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm index ad3c50d61e..e068ffc202 100644 --- a/gnu/build/hurd-boot.scm +++ b/gnu/build/hurd-boot.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. @@ -127,6 +127,9 @@ set." (define (translated? file-name) "Return true if a translator is installed on FILE-NAME." + ;; On GNU/Hurd, 'getxattr' in glibc opens the file without O_NOTRANS, and + ;; then, for "gnu.translator", it calls 'file_get_translator', resulting in + ;; EOPNOTSUPP (conversely, 'showtrans' opens the file with O_NOTRANS). (if (string-contains %host-type "linux-gnu") (passive-translator-xattr? file-name) (passive-translator-installed? file-name))) @@ -210,31 +213,34 @@ set." ;; 'fd_to_filename' in libc expects it. ("dev/fd" ("/hurd/magic" "--directory" "fd") #o555) - ("dev/tty1" ("/hurd/term" "/dev/tty1" "hurdio" "/dev/vcs/1/console") - #o666) - ("dev/tty2" ("/hurd/term" "/dev/tty2" "hurdio" "/dev/vcs/2/console") - #o666) - ("dev/tty3" ("/hurd/term" "/dev/tty3" "hurdio" "/dev/vcs/3/console") - #o666) - - ("dev/ptyp0" ("/hurd/term" "/dev/ptyp0" "pty-master" "/dev/ttyp0") - #o666) - ("dev/ptyp1" ("/hurd/term" "/dev/ptyp1" "pty-master" "/dev/ttyp1") - #o666) - ("dev/ptyp2" ("/hurd/term" "/dev/ptyp2" "pty-master" "/dev/ttyp2") - #o666) - - ("dev/ttyp0" ("/hurd/term" "/dev/ttyp0" "pty-slave" "/dev/ptyp0") - #o666) - ("dev/ttyp1" ("/hurd/term" "/dev/ttyp1" "pty-slave" "/dev/ptyp1") - #o666) - ("dev/ttyp2" ("/hurd/term" "/dev/ttyp2" "pty-slave" "/dev/ptyp2") - #o666))) + ;; Create a number of ttys; syslogd writes to tty12 by default. + ;; FIXME: Creating /dev/tty12 leads the console client to switch to + ;; tty12 when syslogd starts, which is confusing for users. Thus, do + ;; not create tty12. + ,@(map (lambda (n) + (let ((n (number->string n))) + `(,(string-append "dev/tty" n) + ("/hurd/term" ,(string-append "/dev/tty" n) + "hurdio" ,(string-append "/dev/vcs/" n "/console")) + #o666))) + (iota 11 1)) + + ,@(append-map (lambda (n) + (let ((n (number->string n))) + `((,(string-append "dev/ptyp" n) + ("/hurd/term" ,(string-append "/dev/ptyp" n) + "pty-master" ,(string-append "/dev/ttyp" n)) + #o666) + + (,(string-append "dev/ttyp" n) + ("/hurd/term" ,(string-append "/dev/ttyp" n) + "pty-slave" ,(string-append "/dev/ptyp" n)) + #o666)))) + (iota 10 0)))) (for-each scope-set-translator servers) (mkdir* "dev/vcs/1") (mkdir* "dev/vcs/2") - (mkdir* "dev/vcs/2") (rename-file (scope "dev/console") (scope "dev/console-")) (for-each scope-set-translator devices) diff --git a/gnu/home/services/mcron.scm b/gnu/home/services/mcron.scm index 1d294a997c..5f35bfe054 100644 --- a/gnu/home/services/mcron.scm +++ b/gnu/home/services/mcron.scm @@ -77,35 +77,35 @@ Each message is also prefixed by a timestamp by GNU Shepherd.")) (define shepherd-schedule-action (@@ (gnu services mcron) shepherd-schedule-action)) -(define home-mcron-shepherd-services - (match-lambda - (($ <home-mcron-configuration> mcron '()) ; no jobs to run - '()) - (($ <home-mcron-configuration> mcron jobs log? log-format) - (let ((files (job-files mcron jobs))) - (list (shepherd-service - (documentation "User cron jobs.") - (provision '(mcron)) - (modules `((srfi srfi-1) - (srfi srfi-26) - (ice-9 popen) ; for the 'schedule' action - (ice-9 rdelim) - (ice-9 match) - ,@%default-modules)) - (start #~(make-forkexec-constructor - (list (string-append #$mcron "/bin/mcron") - #$@(if log? - #~("--log" "--log-format" #$log-format) - #~()) - #$@files) - #:log-file (string-append - (or (getenv "XDG_LOG_HOME") - (format #f "~a/.local/var/log" - (getenv "HOME"))) - "/mcron.log"))) - (stop #~(make-kill-destructor)) - (actions - (list (shepherd-schedule-action mcron files))))))))) +(define (home-mcron-shepherd-services config) + (match-record config <home-mcron-configuration> + (mcron jobs log? log-format) + (if (null? jobs) + '() ;no jobs to run + (let ((files (job-files mcron jobs))) + (list (shepherd-service + (documentation "User cron jobs.") + (provision '(mcron)) + (modules `((srfi srfi-1) + (srfi srfi-26) + (ice-9 popen) ;for the 'schedule' action + (ice-9 rdelim) + (ice-9 match) + ,@%default-modules)) + (start #~(make-forkexec-constructor + (list (string-append #$mcron "/bin/mcron") + #$@(if log? + #~("--log" "--log-format" #$log-format) + #~()) + #$@files) + #:log-file (string-append + (or (getenv "XDG_LOG_HOME") + (format #f "~a/.local/var/log" + (getenv "HOME"))) + "/mcron.log"))) + (stop #~(make-kill-destructor)) + (actions + (list (shepherd-schedule-action mcron files))))))))) (define home-mcron-profile (compose list home-mcron-configuration-mcron)) diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm index 3e346c3813..b529c8e798 100644 --- a/gnu/home/services/shells.scm +++ b/gnu/home/services/shells.scm @@ -25,6 +25,7 @@ #:use-module (gnu packages bash) #:use-module (guix gexp) #:use-module (guix packages) + #:use-module (guix records) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 match) @@ -479,31 +480,30 @@ with text blocks from other extensions and the base service.") with text blocks from other extensions and the base service.")) (define (home-bash-extensions original-config extension-configs) - (match original-config - (($ <home-bash-configuration> _ _ environment-variables aliases - bash-profile bashrc bash-logout) - (home-bash-configuration - (inherit original-config) - (environment-variables - (append environment-variables - (append-map - home-bash-extension-environment-variables extension-configs))) - (aliases - (append aliases - (append-map - home-bash-extension-aliases extension-configs))) - (bash-profile - (append bash-profile - (append-map - home-bash-extension-bash-profile extension-configs))) - (bashrc - (append bashrc - (append-map - home-bash-extension-bashrc extension-configs))) - (bash-logout - (append bash-logout - (append-map - home-bash-extension-bash-logout extension-configs))))))) + (match-record original-config <home-bash-configuration> + (environment-variables aliases bash-profile bashrc bash-logout) + (home-bash-configuration + (inherit original-config) + (environment-variables + (append environment-variables + (append-map + home-bash-extension-environment-variables extension-configs))) + (aliases + (append aliases + (append-map + home-bash-extension-aliases extension-configs))) + (bash-profile + (append bash-profile + (append-map + home-bash-extension-bash-profile extension-configs))) + (bashrc + (append bashrc + (append-map + home-bash-extension-bashrc extension-configs))) + (bash-logout + (append bash-logout + (append-map + home-bash-extension-bash-logout extension-configs)))))) (define home-bash-service-type (service-type (name 'home-bash) diff --git a/gnu/home/services/xdg.scm b/gnu/home/services/xdg.scm index 63c6041cd4..865f8b81d7 100644 --- a/gnu/home/services/xdg.scm +++ b/gnu/home/services/xdg.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> +;;; Copyright © 2021, 2022 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; ;;; This file is part of GNU Guix. @@ -35,10 +35,24 @@ #:export (home-xdg-base-directories-service-type home-xdg-base-directories-configuration home-xdg-base-directories-configuration? + home-xdg-base-directories-configuration-cache-home + home-xdg-base-directories-configuration-config-home + home-xdg-base-directories-configuration-data-home + home-xdg-base-directories-configuration-state-home + home-xdg-base-directories-configuration-log-home + home-xdg-base-directories-configuration-runtime-dir home-xdg-user-directories-service-type home-xdg-user-directories-configuration home-xdg-user-directories-configuration? + home-xdg-user-directories-configuration-desktop + home-xdg-user-directories-configuration-documents + home-xdg-user-directories-configuration-download + home-xdg-user-directories-configuration-music + home-xdg-user-directories-configuration-pictures + home-xdg-user-directories-configuration-publicshare + home-xdg-user-directories-configuration-templates + home-xdg-user-directories-configuration-videos xdg-desktop-action xdg-desktop-entry @@ -383,25 +397,25 @@ configuration." (define (serialize-alist config) (generic-serialize-alist append format-config config)) - (define (serialize-xdg-desktop-action action) - (match action - (($ <xdg-desktop-action> action name config) - `(,(format #f "[Desktop Action ~a]\n" - (string-capitalize (maybe-object->string action))) - ,(format #f "Name=~a\n" name) - ,@(serialize-alist config))))) - - (match entry - (($ <xdg-desktop-entry> file name type config actions) - (list (if (string-suffix? file ".desktop") - file - (string-append file ".desktop")) - `("[Desktop Entry]\n" - ,(format #f "Name=~a\n" name) - ,(format #f "Type=~a\n" - (string-capitalize (symbol->string type))) - ,@(serialize-alist config) - ,@(append-map serialize-xdg-desktop-action actions)))))) + (define (serialize-xdg-desktop-action desktop-action) + (match-record desktop-action <xdg-desktop-action> + (action name config) + `(,(format #f "[Desktop Action ~a]\n" + (string-capitalize (maybe-object->string action))) + ,(format #f "Name=~a\n" name) + ,@(serialize-alist config)))) + + (match-record entry <xdg-desktop-entry> + (file name type config actions) + (list (if (string-suffix? file ".desktop") + file + (string-append file ".desktop")) + `("[Desktop Entry]\n" + ,(format #f "Name=~a\n" name) + ,(format #f "Type=~a\n" + (string-capitalize (symbol->string type))) + ,@(serialize-alist config) + ,@(append-map serialize-xdg-desktop-action actions))))) (define-configuration home-xdg-mime-applications-configuration (added diff --git a/gnu/local.mk b/gnu/local.mk index 08feab3e01..a109c52b54 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1345,6 +1345,7 @@ dist_patch_DATA = \ %D%/packages/patches/jami-fix-unit-tests-build.patch \ %D%/packages/patches/jami-libjami-headers-search.patch \ %D%/packages/patches/jami-no-webengine.patch \ + %D%/packages/patches/jami-sip-contacts.patch \ %D%/packages/patches/jami-sip-unregister.patch \ %D%/packages/patches/jami-xcb-link.patch \ %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch \ @@ -1822,6 +1823,7 @@ dist_patch_DATA = \ %D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \ %D%/packages/patches/ruby-sanitize-system-libxml.patch \ %D%/packages/patches/rustc-1.54.0-src.patch \ + %D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch \ %D%/packages/patches/rust-adblock-ignore-live-tests.patch \ %D%/packages/patches/i3status-rust-enable-unstable-features.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ @@ -1836,7 +1838,6 @@ dist_patch_DATA = \ %D%/packages/patches/sbcl-aserve-fix-rfe12668.patch \ %D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \ %D%/packages/patches/sbcl-clml-fix-types.patch \ - %D%/packages/patches/sbcl-fix-build-on-arm64-with-clisp-as-host.patch \ %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \ %D%/packages/patches/scalapack-gcc-10-compilation.patch \ %D%/packages/patches/scheme48-tests.patch \ @@ -1867,7 +1868,6 @@ dist_patch_DATA = \ %D%/packages/patches/spectre-meltdown-checker-find-kernel.patch \ %D%/packages/patches/sphinxbase-fix-doxygen.patch \ %D%/packages/patches/spice-vdagent-glib-2.68.patch \ - %D%/packages/patches/sssd-optional-systemd.patch \ %D%/packages/patches/sssd-system-directories.patch \ %D%/packages/patches/steghide-fixes.patch \ %D%/packages/patches/suitesparse-mongoose-cmake.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 99231a710e..b1f928014e 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1175,7 +1175,7 @@ would need and has several interesting built-in capabilities.") (define-public netcat-openbsd (package (name "netcat-openbsd") - (version "1.218-5") + (version "1.219-1") (source (origin (method git-fetch) (uri (git-reference @@ -1184,7 +1184,7 @@ would need and has several interesting built-in capabilities.") (file-name (git-file-name name version)) (sha256 (base32 - "0hpbmz9m2q22a6qgbn9590z2x96xgffim8g0m1v47mariz3pqhlc")))) + "1fhrmnbdl6bgsjk02vi78zy9i486mmniymbbbhdkzl8zfjbjkpxc")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no test suite diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm index 8a899f0020..7e36bbcc71 100644 --- a/gnu/packages/assembly.scm +++ b/gnu/packages/assembly.scm @@ -144,8 +144,10 @@ debugging information in STABS, DWARF 2, and CodeView 8 formats.") (build-system gnu-build-system) (native-inputs (list zlib)) (arguments - ;; Some tests fail when run in parallel. - `(#:parallel-tests? #f)) + `(#:configure-flags + (list "--disable-static") + ;; Some tests fail when run in parallel. + #:parallel-tests? #f)) (synopsis "Library for generating assembly code at runtime") (description "GNU Lightning is a library that generates assembly language code at diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index 439fdf72a8..759ccbec9e 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -89,6 +89,58 @@ #:use-module (ice-9 match) #:use-module (srfi srfi-1)) +(define-public alfa + (package + (name "alfa") + (version "2.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rwesson/ALFA") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0aqxqar36822mh373awsl79j7zn8vik4yddyydsxv0c76gn4i2k3")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + (list #:parallel-build? #f + #:make-flags #~(list (string-append "PREFIX=" + #$output) + (string-append "VERSION=" + #$version)) + #:phases #~(modify-phases %standard-phases + (delete 'configure) + (delete 'check) + (add-after 'install 'post-install-check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "make" "fittest"))))))) + (inputs (list cfitsio gfortran)) + (home-page "https://nebulousresearch.org/codes/alfa/") + (synopsis "Automated line fitting algorithm") + (description + "This package provides @acronym{ALFA, Automatic line fitting algorithm}, +which can identify and fit hundreds of lines in emission line spectra in just a +few seconds with following features: +@itemize + +@item A population of synthetic spectra is generated using a reference line +catalogue. + +@item The goodness of fit for each synthetic spectrum is calculated. The best +sets of parameters are retained and the rest discarded. + +@item A new population of synthetic spectra is obtained by averaging pairs of +the best performers. + +@item A small fraction of the parameters of the lines in the new generation are +randomly altered. + +@item The process repeats until a good fit is obtained. +@end itemize") + (license license:gpl3))) + (define-public aocommon (let ((commit "7329a075271edab8f6264db649e81e62b2b6ae5e") (revision "1")) @@ -1873,7 +1925,7 @@ It can be used to calculate the trajectory of satellites.") (native-inputs (list boost pkg-config)) (inputs - (list cfitsio freeimage glew wxwidgets)) + (list cfitsio freeimage glew wxwidgets-3.0)) (home-page "https://github.com/GreatAttractor/imppg") (synopsis "Astronomical Image Post-Proccessor (ImPPG)") (description diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 466dd65a1f..42a0608073 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -892,7 +892,7 @@ engineers, musicians, soundtrack editors and composers.") #t)))) (build-system cmake-build-system) (inputs - (list wxwidgets-3.1 + (list wxwidgets gtk+ alsa-lib jack-1 diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 67708138a6..00d95e7b3d 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -1088,14 +1088,14 @@ interactive mode.") (define-public btrbk (package (name "btrbk") - (version "0.32.4") + (version "0.32.5") (source (origin (method url-fetch) (uri (string-append "https://digint.ch/download/btrbk/releases/" "btrbk-" version ".tar.xz")) (sha256 (base32 - "1nl6cbzqkc2srwi1428vijq69rp5cdx7484zcx61ph0rnhg9srfc")))) + "1d4zqf5klad55gdzzldipsjrhpprixzjmn03g66df5h2d28l1zpi")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index bb319a13e5..c62c5970b8 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -2454,13 +2454,13 @@ plants. The method has been specifically designed to: (define-public r-alpine (package (name "r-alpine") - (version "1.22.0") + (version "1.24.0") (source (origin (method url-fetch) (uri (bioconductor-uri "alpine" version)) (sha256 (base32 - "1nl1hxwakh5m9rqm3ksn2jzknsj9xnwl51bmc30knknm4q35wdv9")))) + "0rjnwljh4c2f7ml0m14pllns4pvyjwwf23qsn6zjygm5x04bapf0")))) (properties `((upstream-name . "alpine"))) (build-system r-build-system) (propagated-inputs @@ -4216,18 +4216,19 @@ mapping.") (define-public r-nmf (package (name "r-nmf") - (version "0.24.0") + (version "0.25") (source (origin (method url-fetch) (uri (cran-uri "NMF" version)) (sha256 (base32 - "14yxra6in5c1md5nr75y8cdmh9pg0lxqabqflvlhgg1vbg9i2628")))) + "0kdl7yz4v7pms6y2lff4x5w7pwkx54488qx0v539qmvcbxv1if98")))) (properties `((upstream-name . "NMF"))) (build-system r-build-system) (propagated-inputs (list r-cluster + r-codetools r-biobase r-biocmanager r-bigmemory ; suggested @@ -4238,7 +4239,6 @@ mapping.") r-foreach r-ggplot2 r-gridbase - r-pkgmaker r-rcolorbrewer r-registry r-reshape2 @@ -4787,13 +4787,13 @@ only one command.") (define-public r-biocparallel (package (name "r-biocparallel") - (version "1.32.1") + (version "1.32.3") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocParallel" version)) (sha256 (base32 - "1fkfbs0n0sdssli7ibrswkfag080kgv8n1zf6ssxx729g1fz3m3h")))) + "0z2g3p6ip4g865na9bmqaa7w2s52769pmjr3hpiv6x8bhifh3nm5")))) (properties `((upstream-name . "BiocParallel"))) (build-system r-build-system) @@ -6010,6 +6010,42 @@ reduction (between group analysis) and joint dimension reduction of two datasets (coinertia analysis).") (license license:artistic2.0))) +(define-public r-metaneighbor + (package + (name "r-metaneighbor") + (version "1.18.0") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "MetaNeighbor" version)) + (sha256 + (base32 + "1gjjp5qlmv26sd3fvrd8cgv3invckxr8ldjpizpqm4mxjzifxwpm")))) + (properties `((upstream-name . "MetaNeighbor"))) + (build-system r-build-system) + (propagated-inputs + (list r-beanplot + r-dplyr + r-ggplot2 + r-gplots + r-igraph + r-matrix + r-matrixstats + r-rcolorbrewer + r-singlecellexperiment + r-summarizedexperiment + r-tibble + r-tidyr)) + (native-inputs (list r-knitr)) + (home-page "https://bioconductor.org/packages/MetaNeighbor") + (synopsis "Single cell replicability analysis") + (description + "This package implements a method to rapidly assess cell type identity using +both functional and random gene sets and it allows users to quantify cell type +replicability across datasets using neighbor voting. @code{MetaNeighbor} works +on the basis that cells of the same type should have more similar gene expression +profiles than cells of different types.") + (license license:expat))) + (define-public r-methylkit (package (name "r-methylkit") @@ -8765,6 +8801,41 @@ representations of analysis results in order to provide additional information.") (license license:lgpl3))) +(define-public r-glmgampoi + (package + (name "r-glmgampoi") + (version "1.10.0") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "glmGamPoi" version)) + (sha256 + (base32 + "12jbqigg4k2ngrk2anbrrxrwkp57bbzdz492lg8lc6w1gygp5yip")))) + (properties `((upstream-name . "glmGamPoi"))) + (build-system r-build-system) + (propagated-inputs + (list r-beachmat + r-biocgenerics + r-delayedarray + r-delayedmatrixstats + r-hdf5array + r-matrixgenerics + r-matrixstats + r-rcpp + r-rcpparmadillo + r-rlang + r-singlecellexperiment + r-summarizedexperiment)) + (native-inputs (list r-knitr)) + (home-page "https://github.com/const-ae/glmGamPoi") + (synopsis "Fit a Gamma-Poisson Generalized Linear Model") + (description + "Fit linear models to overdispersed count data. The package can estimate +the overdispersion and fit repeated models for matrix input. It is designed +to handle large input datasets as they typically occur in single cell RNA-seq +experiments.") + (license license:gpl3))) + (define-public r-rots (package (name "r-rots") @@ -17820,14 +17891,14 @@ the Bioconductor project.") (define-public r-biodb (package (name "r-biodb") - (version "1.6.0") + (version "1.6.1") (source (origin (method url-fetch) (uri (bioconductor-uri "biodb" version)) (sha256 (base32 - "08ahz3v2xbhwfh89dbnhhcdm0x5qv4hibi8wknlqf5x8gqm5j5w6")))) + "0mbqsias2ajw29d1wgl10y2cjqv3slrsgifccz0kh9l5r6bk28vz")))) (properties `((upstream-name . "biodb"))) (build-system r-build-system) (propagated-inputs diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 6c6ff3e25a..c3cdbb9e66 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -57,6 +57,7 @@ #:use-module (guix build-system meson) #:use-module (guix build-system ocaml) #:use-module (guix build-system perl) + #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix build-system qt) #:use-module (guix build-system r) @@ -10601,6 +10602,102 @@ traditional read alignments) and massively-parallel stochastic collapsed variational inference.") (license license:gpl3+))) +(define-public python-fanc + (package + (name "python-fanc") + (version "0.9.25") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vaquerizaslab/fanc") + ;; There are no tags. This commit corresponds to + ;; version 0.9.25. + (commit "e2205346c13ea5349681dff21adeb271d4ea5261"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rxq24p852iiayi0083fyigvc30as695rha71q6xd4s2ij1k9mqi")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + '(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv" + "-k" + ;; XXX: These all fail because they fail to read + ;; the included test_{cooler,juicer}.hic files. + (string-append "not test_edges_iter" + " and not test_get_edges_uncorrected" + " and not test_get_edges")))))))) + (propagated-inputs + (list python-biopython + python-cooler + python-deprecated + python-future + python-genomic-regions + python-gridmap + python-h5py + python-intervaltree + python-matplotlib + python-msgpack + python-msgpack-numpy + python-numpy + python-pandas + python-pillow + python-progressbar2 + python-pybedtools + python-pybigwig + python-pysam + python-pytest + python-pyyaml + python-scikit-image + python-scikit-learn + python-scipy + python-seaborn + python-tables)) + (native-inputs + (list python-cython)) + (home-page "https://github.com/vaquerizaslab/fanc") + (synopsis "Framework for the analysis of C-data") + (description + "FAN-C provides a pipeline for analysing Hi-C data starting at +mapped paired-end sequencing reads.") + (license license:gpl3+))) + +(define-public python-genomic-regions + (package + (name "python-genomic-regions") + (version "0.0.10") + (source (origin + (method url-fetch) + (uri (pypi-uri "genomic_regions" version)) + (sha256 + (base32 + "0hz811iyd1prml1r90qyzimmwyjwycwkjqw4vnl12bxy61rfzjz5")))) + (build-system pyproject-build-system) + (propagated-inputs + (list python-future + python-intervaltree + python-numpy + python-pandas + python-pybedtools + python-pybigwig + python-pytest + python-msgpack-numpy + python-cython + python-msgpack + python-pysam)) + (home-page "https://pypi.org/project/genomic-regions/") + (synopsis "Consistently handle genomic regions") + (description "This package aims to simplify working with genomic region / +interval data by providing a common interface that lets you access a wide +selection of file types and formats for handling genomic region data---all +using the same syntax.") + (license license:expat))) + (define-public python-loompy (package (name "python-loompy") diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 210bc30536..8888c51736 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> +;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -67,13 +68,17 @@ #:use-module (gnu packages virtualization) #:use-module (gnu packages xorg) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) + #:use-module (ice-9 optargs) + #:use-module (ice-9 match) #:use-module (ice-9 regex)) (define unifont @@ -92,22 +97,22 @@ (name "grub") (version "2.06") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/grub/grub-" version ".tar.xz")) - (sha256 - (base32 - "1qbycnxkx07arj9f2nlsi9kp0dyldspbv07ysdyd34qvz55a97mp")) - (patches (search-patches - "grub-efi-fat-serial-number.patch" - "grub-setup-root.patch")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Adjust QEMU invocation to not use a deprecated device - ;; name that was removed in QEMU 6.0. Remove for >2.06. - (substitute* "tests/ahci_test.in" - (("ide-drive") - "ide-hd")))))) + (method url-fetch) + (uri (string-append "mirror://gnu/grub/grub-" version ".tar.xz")) + (sha256 + (base32 + "1qbycnxkx07arj9f2nlsi9kp0dyldspbv07ysdyd34qvz55a97mp")) + (patches (search-patches + "grub-efi-fat-serial-number.patch" + "grub-setup-root.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Adjust QEMU invocation to not use a deprecated device + ;; name that was removed in QEMU 6.0. Remove for >2.06. + (substitute* "tests/ahci_test.in" + (("ide-drive") + "ide-hd")))))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -117,65 +122,62 @@ (list "PYTHON=true") ;; Grub fails to load modules stripped with --strip-unneeded. #:strip-flags '("--strip-debug" "--enable-deterministic-archives") - #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-stuff - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (substitute* "grub-core/Makefile.in" - (("/bin/sh") (which "sh"))) - - ;; Give the absolute file name of 'mdadm', used to - ;; determine the root file system when it's a RAID - ;; device. Failing to do that, 'grub-probe' silently - ;; fails if 'mdadm' is not in $PATH. - (when (assoc-ref inputs "mdadm") - (substitute* "grub-core/osdep/linux/getroot.c" - (("argv\\[0\\] = \"mdadm\"") - (string-append "argv[0] = \"" - (assoc-ref inputs "mdadm") - "/sbin/mdadm\"")))) - - ;; Make the font visible. - (copy-file (assoc-ref (or native-inputs inputs) - "unifont") - "unifont.bdf.gz") - (system* "gunzip" "unifont.bdf.gz") - - ;; Give the absolute file name of 'ckbcomp'. - (substitute* "util/grub-kbdcomp.in" - (("^ckbcomp ") - (string-append - (search-input-file inputs "/bin/ckbcomp") - " "))))) - (add-after 'unpack 'set-freetype-variables - ;; These variables need to be set to the native versions - ;; of the dependencies because they are used to build - ;; programs which are executed during build time. - (lambda* (#:key native-inputs #:allow-other-keys) - (when (assoc-ref native-inputs "freetype") - (let ((freetype (assoc-ref native-inputs "freetype"))) - (setenv "BUILD_FREETYPE_LIBS" - (string-append "-L" freetype - "/lib -lfreetype")) - (setenv "BUILD_FREETYPE_CFLAGS" - (string-append "-I" freetype - "/include/freetype2")))) - #t)) - (add-before 'check 'disable-flaky-test - (lambda _ - ;; This test is unreliable. For more information, see: - ;; <https://bugs.gnu.org/26936>. - (substitute* "Makefile.in" - (("grub_cmd_date grub_cmd_set_date grub_cmd_sleep") - "grub_cmd_date grub_cmd_sleep")) - #t)) - (add-before 'check 'disable-pixel-perfect-test - (lambda _ - ;; This test compares many screenshots rendered with an - ;; older Unifont (9.0.06) than that packaged in Guix. - (substitute* "Makefile.in" - (("test_unset grub_func_test") - "test_unset")) - #t))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-stuff + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (substitute* "grub-core/Makefile.in" + (("/bin/sh") (which "sh"))) + + ;; Give the absolute file name of 'mdadm', used to determine the + ;; root file system when it's a RAID device. Failing to do that, + ;; 'grub-probe' silently fails if 'mdadm' is not in $PATH. + (when (assoc-ref inputs "mdadm") + (substitute* "grub-core/osdep/linux/getroot.c" + (("argv\\[0\\] = \"mdadm\"") + (string-append "argv[0] = \"" + (assoc-ref inputs "mdadm") + "/sbin/mdadm\"")))) + + ;; Make the font visible. + (copy-file (assoc-ref (or native-inputs inputs) + "unifont") + "unifont.bdf.gz") + (system* "gunzip" "unifont.bdf.gz") + + ;; Give the absolute file name of 'ckbcomp'. + (substitute* "util/grub-kbdcomp.in" + (("^ckbcomp ") + (string-append + (search-input-file inputs "/bin/ckbcomp") + " "))))) + (add-after 'unpack 'set-freetype-variables + ;; These variables need to be set to the native versions of the + ;; dependencies because they are used to build programs which are + ;; executed during build time. + (lambda* (#:key native-inputs #:allow-other-keys) + (when (assoc-ref native-inputs "freetype") + (let ((freetype (assoc-ref native-inputs "freetype"))) + (setenv "BUILD_FREETYPE_LIBS" + (string-append "-L" freetype + "/lib -lfreetype")) + (setenv "BUILD_FREETYPE_CFLAGS" + (string-append "-I" freetype + "/include/freetype2")))))) + (add-before 'check 'disable-flaky-test + (lambda _ + ;; This test is unreliable. For more information, see: + ;; <https://bugs.gnu.org/26936>. + (substitute* "Makefile.in" + (("grub_cmd_date grub_cmd_set_date grub_cmd_sleep") + "grub_cmd_date grub_cmd_sleep")))) + (add-before 'check 'disable-pixel-perfect-test + (lambda _ + ;; This test compares many screenshots rendered with an older + ;; Unifont (9.0.06) than that packaged in Guix. + (substitute* "Makefile.in" + (("test_unset grub_func_test") + "test_unset"))))) ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling. #:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system) (%current-system))) @@ -222,19 +224,19 @@ ("flex" ,flex) ("texinfo" ,texinfo) ("help2man" ,help2man) - ("freetype" ,freetype) ; native version needed for build-grub-mkfont + ("freetype" ,freetype) ;native version needed for build-grub-mkfont ;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils ;; capable of assembling 64-bit instructions. However, our default ;; binutils on 32-bit x86 is not 64-bit capable. ,@(if (string-match "^i[3456]86-" (%current-system)) (let ((binutils (package/inherit - binutils - (name "binutils-i386") - (arguments - (substitute-keyword-arguments (package-arguments binutils) - ((#:configure-flags flags ''()) - `(cons "--enable-64-bit-bfd" ,flags))))))) + binutils + (name "binutils-i386") + (arguments + (substitute-keyword-arguments (package-arguments binutils) + ((#:configure-flags flags ''()) + `(cons "--enable-64-bit-bfd" ,flags))))))) `(("ld-wrapper" ,(make-ld-wrapper "ld-wrapper-i386" #:binutils binutils)) ("binutils" ,binutils))) @@ -342,21 +344,21 @@ menu to select one of the installed operating systems.") `(,@(substitute-keyword-arguments (package-arguments grub-efi) ((#:configure-flags flags ''()) `(cons* - ,@(cond ((target-x86?) '("--target=i386")) - ((target-aarch64?) - (list "--target=arm" - (string-append "TARGET_CC=" - (cc-for-target "arm-linux-gnueabihf")))) - ((target-arm?) '("--target=arm")) - (else '())) - ,flags))))) + ,@(cond ((target-x86?) '("--target=i386")) + ((target-aarch64?) + (list "--target=arm" + (string-append "TARGET_CC=" + (cc-for-target "arm-linux-gnueabihf")))) + ((target-arm?) '("--target=arm")) + (else '())) + ,flags))))) (native-inputs (if (target-aarch64?) - (modify-inputs (package-native-inputs grub-efi) - (prepend - (cross-gcc "arm-linux-gnueabihf") - (cross-binutils "arm-linux-gnueabihf"))) - (package-native-inputs grub-efi))))) + (modify-inputs (package-native-inputs grub-efi) + (prepend + (cross-gcc "arm-linux-gnueabihf") + (cross-binutils "arm-linux-gnueabihf"))) + (package-native-inputs grub-efi))))) ;; Because grub searches hardcoded paths it's easiest to just build grub ;; again to make it find both grub-pc and grub-efi. There is a command @@ -392,6 +394,92 @@ menu to select one of the installed operating systems.") (scandir input-dir)) #t))))))))) +(define-public (make-grub-efi-netboot name subdir) + "Make a grub-efi-netboot package named NAME, which will be able to boot over +network via TFTP by accessing its files in the SUBDIR of a TFTP root directory. +This package is also able to boot from local storage devices. + +A bootloader-installer basically needs to copy the package content into the +bootloader-target directory, which will usually be the TFTP root, as +'grub-mknetdir' will be invoked already during the package creation. + +Alternatively the bootloader-target directory can be a mounted EFI System +Partition (ESP), or a similar partition with a FAT file system, for booting +from local storage devices. + +The name of the GRUB EFI binary will conform to the UEFI specification for +removable media. Depending on the system it will be e.g. bootx64.efi or +bootaa64.efi below SUBDIR. + +The SUBDIR argument needs to be set to \"efi/boot\" to create a package which +conforms to the UEFI specification for removable media. + +The SUBDIR argument defaults to \"efi/Guix\", as it is also the case for +'grub-efi-bootloader'." + (package + (name name) + (version (package-version grub-efi)) + ;; Source is not needed, but it cannot be omitted. + (source #f) + (build-system trivial-build-system) + (arguments + (let* ((system (string-split (nix-system->gnu-triplet + (or (%current-target-system) + (%current-system))) + #\-)) + (arch (first system)) + (boot-efi + (match system + ;; These are the supportend systems and the names defined by + ;; the UEFI standard for removable media. + (("i686" _ ...) "/bootia32.efi") + (("x86_64" _ ...) "/bootx64.efi") + (("arm" _ ...) "/bootarm.efi") + (("aarch64" _ ...) "/bootaa64.efi") + (("riscv" _ ...) "/bootriscv32.efi") + (("riscv64" _ ...) "/bootriscv64.efi") + ;; Other systems are not supported, although defined. + ;; (("riscv128" _ ...) "/bootriscv128.efi") + ;; (("ia64" _ ...) "/bootia64.efi") + ((_ ...) #f))) + (core-efi (string-append + ;; This is the arch dependent file name of GRUB, e.g. + ;; i368-efi/core.efi or arm64-efi/core.efi. + (match arch + ("i686" "i386") + ("aarch64" "arm64") + ("riscv" "riscv32") + (_ arch)) + "-efi/core.efi"))) + (list + #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils)) + (let* ((bootloader #$(this-package-input "grub-efi")) + (net-dir #$output) + (sub-dir (string-append net-dir "/" #$subdir "/")) + (boot-efi (string-append sub-dir #$boot-efi)) + (core-efi (string-append sub-dir #$core-efi))) + ;; Install GRUB, which refers to the grub.cfg, with support for + ;; encrypted partitions, + (setenv "GRUB_ENABLE_CRYPTODISK" "y") + (invoke/quiet (string-append bootloader "/bin/grub-mknetdir") + (string-append "--net-directory=" net-dir) + (string-append "--subdir=" #$subdir) + ;; These modules must be pre-loaded to allow booting + ;; from an ESP or a similar partition with a FAT + ;; file system. + (string-append "--modules=part_msdos part_gpt fat")) + ;; Move GRUB's core.efi to the removable media name. + (false-if-exception (delete-file boot-efi)) + (rename-file core-efi boot-efi)))))) + (inputs (list grub-efi)) + (synopsis (package-synopsis grub-efi)) + (description (package-description grub-efi)) + (home-page (package-home-page grub-efi)) + (license (package-license grub-efi)))) + (define-public syslinux (let ((commit "bb41e935cc83c6242de24d2271e067d76af3585c")) (package @@ -481,14 +569,14 @@ menu to select one of the installed operating systems.") (build-system gnu-build-system) (native-inputs (append - (list bison - flex - libyaml - pkg-config - swig) - (if (member (%current-system) (package-supported-systems valgrind)) - (list valgrind) - '()))) + (list bison + flex + libyaml + pkg-config + swig) + (if (member (%current-system) (package-supported-systems valgrind)) + (list valgrind) + '()))) (inputs (list python)) (arguments @@ -545,7 +633,7 @@ tree binary files. These are board description files used by Linux and BSD.") (name "u-boot") (version "2022.04") (source (origin - (patches + (patches (list %u-boot-rockchip-inno-usb-patch %u-boot-allow-disabling-openssl-patch %u-boot-sifive-prevent-relocating-initrd-fdt @@ -594,12 +682,12 @@ also initializes the boards (RAM etc).") (add-after 'unpack 'patch (lambda* (#:key inputs #:allow-other-keys) (substitute* "Makefile" - (("/bin/pwd") (which "pwd")) - (("/bin/false") (which "false"))) + (("/bin/pwd") (which "pwd")) + (("/bin/false") (which "false"))) (substitute* "tools/dtoc/fdt_util.py" - (("'cc'") "'gcc'")) + (("'cc'") "'gcc'")) (substitute* "tools/patman/test_util.py" - ;; python3-coverage is simply called coverage in guix. + ;; python3-coverage is simply called coverage in guix. (("python3-coverage") "coverage") ;; Don't require 100% coverage since it's brittle and can @@ -607,40 +695,40 @@ also initializes the boards (RAM etc).") (("raise ValueError\\('Test coverage failure'\\)") "print('Continuing anyway since Guix does not care :O')")) (substitute* "test/run" - ;; Make it easier to find test failures. - (("#!/bin/bash") "#!/bin/bash -x") - ;; This test would require git. - (("\\./tools/patman/patman") (which "true")) - ;; FIXME: test fails, needs further investiation - (("run_test \"binman\"") "# run_test \"binman\"") - ;; FIXME: test_spl fails, needs further investiation - (("test_ofplatdata or test_handoff or test_spl") + ;; Make it easier to find test failures. + (("#!/bin/bash") "#!/bin/bash -x") + ;; This test would require git. + (("\\./tools/patman/patman") (which "true")) + ;; FIXME: test fails, needs further investiation + (("run_test \"binman\"") "# run_test \"binman\"") + ;; FIXME: test_spl fails, needs further investiation + (("test_ofplatdata or test_handoff or test_spl") "test_ofplatdata or test_handoff") - ;; FIXME: code coverage not working - (("run_test \"binman code coverage\"") - "# run_test \"binman code coverage\"") - ;; This test would require internet access. - (("\\./tools/buildman/buildman") (which "true"))) + ;; FIXME: code coverage not working + (("run_test \"binman code coverage\"") + "# run_test \"binman code coverage\"") + ;; This test would require internet access. + (("\\./tools/buildman/buildman") (which "true"))) (substitute* "test/py/tests/test_sandbox_exit.py" - (("def test_ctrl_c") - "@pytest.mark.skip(reason='Guix has problems with SIGINT') + (("def test_ctrl_c") + "@pytest.mark.skip(reason='Guix has problems with SIGINT') def test_ctrl_c")) ;; Test against the tools being installed rather than tools built ;; for "sandbox" target. (substitute* "test/image/test-imagetools.sh" (("BASEDIR=sandbox") "BASEDIR=.")) (for-each (lambda (file) - (substitute* file - ;; Disable features that require OpenSSL due - ;; to GPL/Openssl license incompatibilities. - ;; See https://bugs.gnu.org/34717 for - ;; details. - (("CONFIG_FIT_SIGNATURE=y") - "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n\nCONFIG_TOOLS_LIBCRYPTO=n") - ;; This test requires a sound system, which is un-used - ;; in u-boot-tools. - (("CONFIG_SOUND=y") "CONFIG_SOUND=n"))) - (find-files "configs" "sandbox_.*defconfig$|tools-only_defconfig")) + (substitute* file + ;; Disable features that require OpenSSL due + ;; to GPL/Openssl license incompatibilities. + ;; See https://bugs.gnu.org/34717 for + ;; details. + (("CONFIG_FIT_SIGNATURE=y") + "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n\nCONFIG_TOOLS_LIBCRYPTO=n") + ;; This test requires a sound system, which is un-used + ;; in u-boot-tools. + (("CONFIG_SOUND=y") "CONFIG_SOUND=n"))) + (find-files "configs" "sandbox_.*defconfig$|tools-only_defconfig")) #t)) (replace 'configure (lambda* (#:key make-flags #:allow-other-keys) @@ -668,28 +756,37 @@ def test_ctrl_c")) "tools/env/fw_printenv" "tools/sunxi-spl-image-builder")) #t))) - (delete 'check) - (add-after 'install 'check - (lambda* (#:key make-flags test-target #:allow-other-keys) - (invoke "test/image/test-imagetools.sh"))) - ;; Only run full test suite on x86_64 systems, as many tests - ;; assume x86_64. - ,@(if (string-match "^x86_64-linux" - (or (%current-target-system) - (%current-system))) - '((add-after 'check 'check-x86 - (lambda* (#:key make-flags test-target #:allow-other-keys) - (apply invoke "make" "mrproper" make-flags) - (setenv "SDL_VIDEODRIVER" "dummy") - (setenv "PAGER" "cat") - (apply invoke "make" test-target make-flags)))) - '())))) - (description "U-Boot is a bootloader used mostly for ARM boards. It -also initializes the boards (RAM etc). This package provides its -board-independent tools."))) - -(define-public (make-u-boot-package board triplet) - "Returns a u-boot package for BOARD cross-compiled for TRIPLET." + (delete 'check) + (add-after 'install 'check + (lambda* (#:key make-flags test-target #:allow-other-keys) + (invoke "test/image/test-imagetools.sh"))) + ;; Only run full test suite on x86_64 systems, as many tests + ;; assume x86_64. + ,@(if (string-match "^x86_64-linux" + (or (%current-target-system) + (%current-system))) + '((add-after 'check 'check-x86 + (lambda* (#:key make-flags test-target #:allow-other-keys) + (apply invoke "make" "mrproper" make-flags) + (setenv "SDL_VIDEODRIVER" "dummy") + (setenv "PAGER" "cat") + (apply invoke "make" test-target make-flags)))) + '())))) + (description (string-append + (package-description u-boot) + " This package provides board-independent tools " + "of U-Boot.")))) + +(define*-public (make-u-boot-package board triplet + #:key + defconfig + configs + name-suffix + append-description) + "Return a U-Boot package for BOARD cross-compiled for TRIPLET with the +optional DEFCONFIG file and optional configuration changes from CONFIGS. +NAME-SUFFIX is appended to the package name, while APPEND-DESCRIPTION is +appended to the package description." (let ((same-arch? (lambda () (string=? (%current-system) (gnu-triplet->nix-system triplet))))) @@ -697,33 +794,51 @@ board-independent tools."))) (inherit u-boot) (name (string-append "u-boot-" (string-replace-substring (string-downcase board) - "_" "-"))) + "_" "-") + (or name-suffix ""))) + (description (if append-description + (string-append (package-description u-boot) + "\n\n" append-description) + (package-description u-boot))) (native-inputs `(,@(if (not (same-arch?)) - `(("cross-gcc" ,(cross-gcc triplet)) - ("cross-binutils" ,(cross-binutils triplet))) - `()) + `(("cross-gcc" ,(cross-gcc triplet)) + ("cross-binutils" ,(cross-binutils triplet))) + `()) ,@(package-native-inputs u-boot))) (arguments `(#:modules ((ice-9 ftw) (srfi srfi-1) - (guix build utils) - (guix build gnu-build-system)) + (guix build gnu-build-system) + (guix build kconfig) + (guix build utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build kconfig)) #:test-target "test" #:make-flags (list "HOSTCC=gcc" ,@(if (not (same-arch?)) - `((string-append "CROSS_COMPILE=" ,triplet "-")) - '())) + `((string-append "CROSS_COMPILE=" ,triplet "-")) + '())) #:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key outputs make-flags #:allow-other-keys) - (let ((config-name (string-append ,board "_defconfig"))) - (if (file-exists? (string-append "configs/" config-name)) - (apply invoke "make" `(,@make-flags ,config-name)) + (let* ((config-name (string-append ,board "_defconfig")) + (config-file (string-append "configs/" config-name)) + (defconfig ,defconfig) + (configs ',configs)) + (when defconfig + ;; Replace the board-specific defconfig with the given one. + (copy-file defconfig config-file)) + (if (file-exists? config-file) + (begin + (when configs + (modify-defconfig config-file configs)) + (apply invoke "make" `(,@make-flags ,config-name)) + (verify-config ".config" config-file)) (begin - (display "Invalid board name. Valid board names are:" + (display "invalid board name; valid board names are:" (current-error-port)) (let ((suffix-len (string-length "_defconfig")) (entries (scandir "configs"))) @@ -734,7 +849,7 @@ board-independent tools."))) (string-drop-right file-name suffix-len)))) (sort entries string-ci<))) - (error "Invalid boardname ~s." ,board)))))) + (error "invalid boardname ~s" ,board)))))) (add-after 'configure 'disable-tools-libcrypto ;; Disable libcrypto due to GPL and OpenSSL license ;; incompatibilities @@ -775,52 +890,37 @@ board-independent tools."))) (make-u-boot-package "malta" "mips64el-linux-gnuabi64")) (define-public u-boot-am335x-boneblack - (let ((base (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf"))) - (package - (inherit base) - (name "u-boot-am335x-boneblack") - (description "U-Boot is a bootloader used mostly for ARM boards. It -also initializes the boards (RAM etc). - -This U-Boot is built for the BeagleBone Black, which was removed upstream, -adjusted from the am335x_evm build with several device trees removed so that -it fits within common partitioning schemes.") - (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'patch-defconfig - ;; Patch out other devicetrees to build image small enough to - ;; fit within typical partitioning schemes where the first - ;; partition begins at sector 2048. - (lambda _ - (substitute* "configs/am335x_evm_defconfig" - (("CONFIG_OF_LIST=.*$") "CONFIG_OF_LIST=\"am335x-evm am335x-boneblack\"\n")) - #t))))))))) + (make-u-boot-package + "am335x_evm" "arm-linux-gnueabihf" + ;; Patch out other device trees to build an image small enough to fit + ;; within typical partitioning schemes where the first partition begins at + ;; sector 2048. + #:configs '("CONFIG_OF_LIST=\"am335x-evm am335x-boneblack\"") + #:name-suffix "-boneblack" + #:append-description "This U-Boot is built for the BeagleBone Black, which +was removed upstream, adjusted from the am335x_evm build with several device +trees removed so that it fits within common partitioning schemes.")) (define-public u-boot-am335x-evm (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf")) -(define-public (make-u-boot-sunxi64-package board triplet) - (let ((base (make-u-boot-package board triplet))) +(define*-public (make-u-boot-sunxi64-package board triplet + #:key defconfig configs) + (let ((base (make-u-boot-package + board triplet #:defconfig defconfig #:configs configs))) (package (inherit base) (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'set-environment - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (let ((bl31 - (string-append - (assoc-ref (or native-inputs inputs) "firmware") - "/bl31.bin"))) - (setenv "BL31" bl31) - ;; This is necessary when we're using the bundled dtc. - ;(setenv "PATH" (string-append (getenv "PATH") ":" - ; "scripts/dtc")) - ) - #t)))))) + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'set-environment + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((bl31 + (string-append + (assoc-ref (or native-inputs inputs) "firmware") + "/bl31.bin"))) + (setenv "BL31" bl31)))))))) (native-inputs `(("firmware" ,arm-trusted-firmware-sun50i-a64) ,@(package-native-inputs base)))))) @@ -832,20 +932,11 @@ it fits within common partitioning schemes.") (make-u-boot-sunxi64-package "pine64-lts" "aarch64-linux-gnu")) (define-public u-boot-pinebook - (let ((base (make-u-boot-sunxi64-package "pinebook" "aarch64-linux-gnu"))) - (package - (inherit base) - (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'patch-pinebook-config - ;; Fix regression with LCD video output introduced in 2020.01 - ;; https://patchwork.ozlabs.org/patch/1225130/ - (lambda _ - (substitute* "configs/pinebook_defconfig" - (("CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y") "CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y\nCONFIG_VIDEO_BPP32=y")) - #t))))))))) + (make-u-boot-sunxi64-package + "pinebook" "aarch64-linux-gnu" + ;; Fix regression with LCD video output introduced in 2020.01 + ;; https://patchwork.ozlabs.org/patch/1225130/ + #:configs '("CONFIG_VIDEO_BPP32=y"))) (define-public u-boot-bananapi-m2-ultra (make-u-boot-package "Bananapi_M2_Ultra" "arm-linux-gnueabihf")) @@ -861,7 +952,14 @@ it fits within common partitioning schemes.") (define-public u-boot-nintendo-nes-classic-edition (let ((base (make-u-boot-package "Nintendo_NES_Classic_Edition" - "arm-linux-gnueabihf"))) + "arm-linux-gnueabihf" + #:append-description "This version is for +the Nintendo NES Classic Edition. It is assumed that you have added a serial +port to pins PB0 and PB1 as described on +@url{https://linux-sunxi.org/Nintendo_NES_Classic_Edition}. + +In order to use FEL mode on the device, hold the Reset button on the +device while it's being turned on (and a while longer)."))) (package (inherit base) ;; Starting with 2019.01, FEL doesn't work anymore on A33. @@ -875,16 +973,7 @@ it fits within common partitioning schemes.") (base32 "0znkwljfwwn4y7j20pzz4ilqw8znphrfxns0x1lwdzh3xbr96z3k")) (patches (search-patches - "u-boot-nintendo-nes-serial.patch")))) - (description "U-Boot is a bootloader used mostly for ARM boards. It -also initializes the boards (RAM etc). - -This version is for the Nintendo NES Classic Edition. It is assumed that -you have added a serial port to pins PB0 and PB1 as described on -@url{https://linux-sunxi.org/Nintendo_NES_Classic_Edition}. - -In order to use FEL mode on the device, hold the Reset button on the -device while it's being turned on (and a while longer).") + "u-boot-nintendo-nes-serial.patch")))) (native-inputs `(("python" ,python-2) ,@(package-native-inputs base)))))) @@ -896,25 +985,14 @@ device while it's being turned on (and a while longer).") (make-u-boot-package "mx6cuboxi" "arm-linux-gnueabihf")) (define-public u-boot-novena - (let ((base (make-u-boot-package "novena" "arm-linux-gnueabihf"))) - (package - (inherit base) - (description "U-Boot is a bootloader used mostly for ARM boards. It -also initializes the boards (RAM etc). - -This U-Boot is built for Novena. Be advised that this version, contrary -to Novena upstream, does not load u-boot.img from the first partition.") - (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'patch-novena-defconfig - ;; Patch configuration to disable loading u-boot.img from FAT partition, - ;; allowing it to be installed at a device offset. - (lambda _ - (substitute* "configs/novena_defconfig" - (("CONFIG_SPL_FS_FAT=y") "# CONFIG_SPL_FS_FAT is not set")) - #t))))))))) + (make-u-boot-package + "novena" "arm-linux-gnueabihf" + ;; Patch configuration to disable loading u-boot.img from FAT partition, + ;; allowing it to be installed at a device offset. + #:configs '("# CONFIG_SPL_FS_FAT is not set") + #:append-description "This U-Boot is built for Novena. Be advised that this +version, contrary to Novena upstream, does not load u-boot.img from the first +partition.")) (define-public u-boot-cubieboard (make-u-boot-package "Cubieboard" "arm-linux-gnueabihf")) @@ -927,16 +1005,16 @@ to Novena upstream, does not load u-boot.img from the first partition.") (package (inherit base) (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'set-environment - (lambda* (#:key inputs #:allow-other-keys) - (setenv "BL31" - (search-input-file inputs "/bl31.elf")))) - ;; Phases do not succeed on the bl31 ELF. - (delete 'strip) - (delete 'validate-runpath))))) + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'set-environment + (lambda* (#:key inputs #:allow-other-keys) + (setenv "BL31" + (search-input-file inputs "/bl31.elf")))) + ;; Phases do not succeed on the bl31 ELF. + (delete 'strip) + (delete 'validate-runpath))))) (native-inputs `(("firmware" ,arm-trusted-firmware-rk3399) ,@(package-native-inputs base)))))) @@ -988,65 +1066,62 @@ to Novena upstream, does not load u-boot.img from the first partition.") (package (inherit base) (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'set-environment - (lambda* (#:key inputs #:allow-other-keys) - (setenv "BL31" (search-input-file inputs "/bl31.elf")))) - ;; Phases do not succeed on the bl31 ELF. - (delete 'strip) - (delete 'validate-runpath))))) + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'set-environment + (lambda* (#:key inputs #:allow-other-keys) + (setenv "BL31" (search-input-file inputs "/bl31.elf")))) + ;; Phases do not succeed on the bl31 ELF. + (delete 'strip) + (delete 'validate-runpath))))) (native-inputs `(("firmware" ,arm-trusted-firmware-rk3399) ,@(package-native-inputs base)))))) (define-public u-boot-rockpro64-rk3399 - (let ((base (make-u-boot-package "rockpro64-rk3399" "aarch64-linux-gnu"))) + (let ((base (make-u-boot-package "rockpro64-rk3399" "aarch64-linux-gnu" + #:configs '("CONFIG_USB=y" + "CONFIG_AHCI=y" + "CONFIG_AHCI_PCI=y" + "CONFIG_SATA=y" + "CONFIG_SATA_SIL=y" + "CONFIG_SCSI=y" + "CONFIG_SCSI_AHCI=y" + "CONFIG_DM_SCSI=y")))) (package (inherit base) (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'set-environment - (lambda* (#:key inputs #:allow-other-keys) - (setenv "BL31" - (search-input-file inputs "/bl31.elf")))) - (add-after 'unpack 'patch-config - (lambda _ - (substitute* "configs/rockpro64-rk3399_defconfig" - (("CONFIG_USB=y") "\ -CONFIG_USB=y -CONFIG_AHCI=y -CONFIG_AHCI_PCI=y -CONFIG_SATA=y -CONFIG_SATA_SIL=y -CONFIG_SCSI=y -CONFIG_SCSI_AHCI=y -CONFIG_DM_SCSI=y -")) - (substitute* "include/config_distro_bootcmd.h" - (("\"scsi_need_init=false") - "\"setenv scsi_need_init false") - (("#define BOOTENV_SET_SCSI_NEED_INIT \"scsi_need_init=;") - "#define BOOTENV_SET_SCSI_NEED_INIT \"setenv scsi_need_init;")) - (substitute* "include/configs/rockchip-common.h" - (("#define BOOT_TARGET_DEVICES\\(func\\)") - " + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'set-environment + (lambda* (#:key inputs #:allow-other-keys) + (setenv "BL31" + (search-input-file inputs "/bl31.elf")))) + (add-after 'unpack 'patch-header + (lambda _ + (substitute* "include/config_distro_bootcmd.h" + (("\"scsi_need_init=false") + "\"setenv scsi_need_init false") + (("#define BOOTENV_SET_SCSI_NEED_INIT \"scsi_need_init=;") + "#define BOOTENV_SET_SCSI_NEED_INIT \"setenv scsi_need_init;")) + (substitute* "include/configs/rockchip-common.h" + (("#define BOOT_TARGET_DEVICES\\(func\\)") + " #if CONFIG_IS_ENABLED(CMD_SCSI) #define BOOT_TARGET_SCSI(func) func(SCSI, scsi, 0) #else #define BOOT_TARGET_SCSI(func) #endif #define BOOT_TARGET_DEVICES(func)") - (("BOOT_TARGET_NVME\\(func\\) \\\\") - "\ + (("BOOT_TARGET_NVME\\(func\\) \\\\") + "\ BOOT_TARGET_NVME(func) \\ BOOT_TARGET_SCSI(func) \\")))) - ;; Phases do not succeed on the bl31 ELF. - (delete 'strip) - (delete 'validate-runpath))))) + ;; Phases do not succeed on the bl31 ELF. + (delete 'strip) + (delete 'validate-runpath))))) (native-inputs `(("firmware" ,arm-trusted-firmware-rk3399) ,@(package-native-inputs base)))))) @@ -1056,20 +1131,132 @@ BOOT_TARGET_NVME(func) \\ (package (inherit base) (arguments - (substitute-keyword-arguments (package-arguments base) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'set-environment - (lambda* (#:key inputs #:allow-other-keys) - (setenv "BL31" - (search-input-file inputs "/bl31.elf")))) - ;; Phases do not succeed on the bl31 ELF. - (delete 'strip) - (delete 'validate-runpath))))) + (substitute-keyword-arguments (package-arguments base) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'set-environment + (lambda* (#:key inputs #:allow-other-keys) + (setenv "BL31" + (search-input-file inputs "/bl31.elf")))) + ;; Phases do not succeed on the bl31 ELF. + (delete 'strip) + (delete 'validate-runpath))))) (native-inputs `(("firmware" ,arm-trusted-firmware-rk3399) ,@(package-native-inputs base)))))) +(define*-public (make-u-boot-bin-package u-boot-package + #:key + (u-boot-bin "u-boot.bin")) + "Return a package with a single U-BOOT-BIN file from the U-BOOT-PACKAGE. +The package name will be that of the U-BOOT package suffixed with \"-bin\"." + (package + (name (string-append (package-name u-boot-package) "-bin")) + (version (package-version u-boot-package)) + (source #f) + (build-system trivial-build-system) + (arguments + (list + #:builder + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (mkdir #$output) + (symlink (search-input-file %build-inputs + (string-append "libexec/" #$u-boot-bin)) + (string-append #$output "/" #$u-boot-bin)))))) + (inputs (list u-boot-package)) + (home-page (package-home-page u-boot-package)) + (synopsis (package-synopsis u-boot-package)) + (description (string-append + (package-description u-boot-package) + "\n\n" + (format #f + "This package only contains the file ~a." + u-boot-bin))) + (license (package-license u-boot-package)))) + +(define-public %u-boot-rpi-efi-configs + '("CONFIG_OF_EMBED" + "CONFIG_OF_BOARD=y")) + +(define %u-boot-rpi-description-32-bit + "This is a 32-bit build of U-Boot.") + +(define %u-boot-rpi-description-64-bit + "This is a common 64-bit build of U-Boot for all 64-bit capable Raspberry Pi +variants.") + +(define %u-boot-rpi-efi-description + "It allows network booting and uses the device-tree from the firmware, +allowing the usage of overlays. It can act as an EFI firmware for the +grub-efi-netboot-removable-bootloader.") + +(define %u-boot-rpi-efi-description-32-bit + (string-append %u-boot-rpi-efi-description " " + %u-boot-rpi-description-32-bit)) + +(define-public u-boot-rpi-2 + (make-u-boot-package "rpi_2" "arm-linux-gnueabihf" + #:append-description %u-boot-rpi-description-32-bit)) + +(define-public u-boot-rpi-3-32b + (make-u-boot-package "rpi_3_32b" "arm-linux-gnueabihf" + #:append-description %u-boot-rpi-description-32-bit)) + +(define-public u-boot-rpi-4-32b + (make-u-boot-package "rpi_4_32b" "arm-linux-gnueabihf" + #:append-description %u-boot-rpi-description-32-bit)) + +(define-public u-boot-rpi-arm64 + (make-u-boot-package "rpi_arm64" "aarch64-linux-gnu" + #:append-description %u-boot-rpi-description-64-bit)) + +(define-public u-boot-rpi-2-efi + (make-u-boot-package "rpi_2" "arm-linux-gnueabihf" + #:name-suffix "-efi" + #:configs %u-boot-rpi-efi-configs + #:append-description %u-boot-rpi-efi-description-32-bit)) + +(define-public u-boot-rpi-3-32b-efi + (make-u-boot-package "rpi_3_32b" "arm-linux-gnueabihf" + #:name-suffix "-efi" + #:configs %u-boot-rpi-efi-configs + #:append-description %u-boot-rpi-efi-description-32-bit)) + +(define-public u-boot-rpi-4-32b-efi + (make-u-boot-package "rpi_4_32b" "arm-linux-gnueabihf" + #:name-suffix "-efi" + #:configs %u-boot-rpi-efi-configs + #:append-description %u-boot-rpi-efi-description-32-bit)) + +(define-public u-boot-rpi-arm64-efi + (make-u-boot-package "rpi_arm64""aarch64-linux-gnu" + #:name-suffix "-efi" + #:configs %u-boot-rpi-efi-configs + #:append-description (string-append + %u-boot-rpi-efi-description " " + %u-boot-rpi-description-64-bit))) + +(define-public u-boot-rpi-2-bin (make-u-boot-bin-package u-boot-rpi-2)) + +(define-public u-boot-rpi-3_32b-bin (make-u-boot-bin-package u-boot-rpi-3-32b)) + +(define-public u-boot-rpi-4_32b-bin (make-u-boot-bin-package u-boot-rpi-4-32b)) + +(define-public u-boot-rpi-arm64-bin (make-u-boot-bin-package u-boot-rpi-arm64)) + +(define-public u-boot-rpi-2-efi-bin (make-u-boot-bin-package u-boot-rpi-2-efi)) + +(define-public u-boot-rpi-3-32b-efi-bin + (make-u-boot-bin-package u-boot-rpi-3-32b-efi)) + +(define-public u-boot-rpi-4-32b-efi-bin + (make-u-boot-bin-package u-boot-rpi-4-32b-efi)) + +(define-public u-boot-rpi-arm64-efi-bin + (make-u-boot-bin-package u-boot-rpi-arm64-efi)) + (define-public vboot-utils (package (name "vboot-utils") diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm index 8627f699a1..6c1350c44f 100644 --- a/gnu/packages/build-tools.scm +++ b/gnu/packages/build-tools.scm @@ -204,8 +204,8 @@ programs and other files depend.") (license license:bsd-3))) (define-public gn - (let ((commit "e327ffdc503815916db2543ec000226a8df45163") - (revision "1819")) ;as returned by `git describe`, used below + (let ((commit "1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41") + (revision "2072")) ;as returned by `git describe`, used below (package (name "gn") (version (git-version "0.0" revision commit)) @@ -215,49 +215,56 @@ programs and other files depend.") (uri (git-reference (url home-page) (commit commit))) (sha256 (base32 - "0kvlfj3www84zp1vmxh76x8fdjm9hyk8lkh2vdsidafpmm75fphr")) + "02621c9nqpr4pwcapy31x36l5kbyd0vdgd0wdaxj5p8hrxk67d6b")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'configure 'set-build-environment - (lambda _ - (setenv "CC" "gcc") (setenv "CXX" "g++") - (setenv "AR" "ar"))) - (replace 'configure - (lambda _ - (invoke "python" "build/gen.py" - "--no-last-commit-position"))) - (add-after 'configure 'create-last-commit-position - (lambda _ - ;; Create "last_commit_position.h" to avoid a dependency - ;; on 'git' (and the checkout..). - (call-with-output-file "out/last_commit_position.h" - (lambda (port) - (format port - (string-append - "#define LAST_COMMIT_POSITION_NUM ~a\n" - "#define LAST_COMMIT_POSITION \"~a (~a)\"\n") - ,revision ,revision ,(string-take commit 8)))))) - (replace 'build - (lambda _ - (invoke "ninja" "-C" "out" "gn" - "-j" (number->string (parallel-job-count))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (begin - (invoke "ninja" "-C" "out" "gn_unittests" - "-j" (number->string (parallel-job-count))) - (invoke "./out/gn_unittests")) - (format #t "test suite not run~%")))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (install-file "out/gn" (string-append out "/bin")))))))) + (list #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'set-build-environment + (lambda _ + (setenv "CC" "gcc") + (setenv "CXX" "g++") + (setenv "AR" "ar"))) + (replace 'configure + (lambda _ + (invoke "python" "build/gen.py" + "--no-last-commit-position"))) + (add-after 'configure 'create-last-commit-position + (lambda _ + ;; Mimic GenerateLastCommitPosition from gen.py. + (call-with-output-file "out/last_commit_position.h" + (lambda (port) + (format port + "// Generated by Guix. + +#ifndef OUT_LAST_COMMIT_POSITION_H_ +#define OUT_LAST_COMMIT_POSITION_H_ + +#define LAST_COMMIT_POSITION_NUM ~a +#define LAST_COMMIT_POSITION \"~a (~a)\" + +#endif // OUT_LAST_COMMIT_POSITION_H_ +" + #$revision #$revision + #$(string-take commit 12)))))) + (replace 'build + (lambda _ + (invoke "ninja" "-C" "out" "gn" + "-j" (number->string (parallel-job-count))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (begin + (invoke "ninja" "-C" "out" "gn_unittests" + "-j" (number->string (parallel-job-count))) + (invoke "./out/gn_unittests")) + (format #t "test suite not run~%")))) + (replace 'install + (lambda _ + (install-file "out/gn" (string-append #$output "/bin"))))))) (native-inputs - `(("ninja" ,ninja) - ("python" ,python-wrapper))) + (list ninja python-wrapper)) (synopsis "Generate Ninja build files") (description "GN is a tool that collects information about a project from @file{.gn} diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 0467e6b1c9..80267b939b 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -516,7 +516,7 @@ capacity is user-selectable.") #t))) #:tests? #f)) ; No tests. (inputs ; TODO package bundled wxvillalib - `(("wxwidgets" ,wxwidgets-3.1) + `(("wxwidgets" ,wxwidgets) ("wssvg" ,wxsvg) ("dbus" ,dbus) ("cdrtools" ,cdrtools) diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index e0a9f5fbad..837a2a7593 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -183,11 +183,11 @@ "third_party/libaddressinput" ;ASL2.0 "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0" "third_party/libaom/source/libaom/third_party/fastfeat" ;BSD-3 + "third_party/libaom/source/libaom/third_party/SVT-AV1" ;BSD-3 "third_party/libaom/source/libaom/third_party/vector" ;Expat "third_party/libaom/source/libaom/third_party/x86inc" ;ISC "third_party/libjxl" ;ASL2.0 "third_party/libgav1" ;ASL2.0 - "third_party/libgifcodec" ;MPL1.1/GPL2+/LGPL2.1+, BSD-3, BSD-2 "third_party/libjingle_xmpp" ;BSD-3 "third_party/libphonenumber" ;ASL2.0 "third_party/libsecret" ;LGPL2.1+ @@ -273,7 +273,7 @@ "third_party/utf" ;Expat "third_party/vulkan-deps" ;ASL2.0, BSD-3, Expat "third_party/vulkan_memory_allocator" ;Expat - "third_party/wayland/protocol" ;Expat + "third_party/wayland/src/protocol" ;Expat "third_party/wayland/stubs" ;BSD-3, Expat "third_party/wayland/wayland_scanner_wrapper.py" ;BSD-3 "third_party/wayland-protocols" ;Expat @@ -317,10 +317,10 @@ ;; run the Blink performance tests, just remove everything to save ~70MiB. '("third_party/blink/perf_tests")) -(define %chromium-version "107.0.5304.121") +(define %chromium-version "108.0.5359.71") (define %ungoogled-revision (string-append %chromium-version "-1")) (define %debian-revision "debian/102.0.5005.61-1") -(define %arch-revision "6afedb08139b97089ce8ef720ece5cd14c83948c") +(define %arch-revision "4de5019014aeb77187a517c5ca6db8723d622a40") (define %ungoogled-origin (origin @@ -330,7 +330,7 @@ (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision)) (sha256 (base32 - "1ns664y7qx0ry8hg8r704z64jmx8j6rpxn2lkliv0xjfwlrbbfx3")))) + "1309rz06s7fw9p7h5968nk23rbsyfhqm5znqrw6nh24qdbg6z3zx")))) (define %debian-origin (origin @@ -360,9 +360,6 @@ "system/zlib.patch" "system/openjpeg.patch"))) -(define %gcc-patches - '()) - (define (arch-patch revision name hash) (origin (method url-fetch) @@ -376,10 +373,12 @@ (arch-patch %arch-revision "REVERT-roll-src-third_party-ffmpeg-m102.patch" "0i7crn6fcwq09kd6a4smqnffaldyv61lmv2p0drcnpfrwalmkprh") (arch-patch %arch-revision "REVERT-roll-src-third_party-ffmpeg-m106.patch" - "0li10cvxnppmmmsc7w77b1s7z02s5bzd39zsal9x768708fx64jc") - ;; Fix crash when using Global Media Controls. - (arch-patch %arch-revision "REVERT-enable-GlobalMediaControlsCastStartStop.patch" - "1ilsw421lylkjnq3lvc607bdx7cvwlish8qzgwx9s84l4hzv37vp"))) + "0li10cvxnppmmmsc7w77b1s7z02s5bzd39zsal9x768708fx64jc"))) + +(define %arch-patches + (list + (arch-patch %arch-revision "disable-GlobalMediaControlsCastStartStop.patch" + "00m361ka38d60zpbss7qnfw80vcwnip2pjcz3wf46wd2sqi1nfvz"))) (define %guix-patches (list (local-file @@ -398,6 +397,9 @@ (assume-valid-file-name (search-patch "ungoogled-chromium-system-nspr.patch"))))) +(define %patches + (append %debian-patches %arch-patches %guix-patches)) + ;; This is a source 'snippet' that does the following: ;; *) Applies various patches for unbundling purposes and libstdc++ compatibility. ;; *) Runs the ungoogled patch-, domain substitution-, and scrubbing scripts. @@ -419,8 +421,7 @@ (for-each (lambda (patch) (invoke "patch" "-p1" "--force" "--input" patch "--no-backup-if-mismatch")) - (append '#+%debian-patches '#+%guix-patches - '#+%gcc-patches)) + '#+%patches) ;; These patches are "reversed", i.e. their changes should be undone. (for-each (lambda (patch) @@ -495,7 +496,7 @@ %chromium-version ".tar.xz")) (sha256 (base32 - "12z0fhgxcsdkf6shnsg9maj3v901226cjcy8y2x8m88maw2apc0j")) + "0pgzf6xrd71is1dld1arhq366vjp8p54x75zyx6y7vcjqj0a0v6b")) (modules '((guix build utils))) (snippet (force ungoogled-chromium-snippet)))) (build-system gnu-build-system) @@ -561,7 +562,7 @@ "use_system_libjpeg=true" "use_system_libopenjpeg2=true" "use_system_libpng=true" - "use_system_libwayland_server=true" + "use_system_libwayland=true" "use_system_wayland_scanner=true" (string-append "system_wayland_scanner_path=\"" (search-input-file %build-inputs @@ -613,11 +614,12 @@ #~(modify-phases %standard-phases (add-after 'unpack 'patch-stuff (lambda* (#:key inputs #:allow-other-keys) - (let ((openjpeg (search-input-directory - inputs "include/openjpeg-2.4"))) + (let* ((libopenjp2 (search-input-file inputs "lib/libopenjp2.so")) + (openjpeg (dirname (dirname libopenjp2)))) (substitute* "third_party/pdfium/BUILD.gn" ;; This include path is added by Debians openjpeg patch. - (("/usr/include/openjpeg-2.4") openjpeg)) + (("/usr/include/openjpeg-") + (string-append openjpeg "/include/openjpeg-"))) ;; Adjust minizip header inclusions. (substitute* (find-files "third_party/tflite_support\ @@ -910,7 +912,7 @@ gdk-pixbuf glib gtk+ - harfbuzz-3 + harfbuzz-5 icu4c-71 jsoncpp lcms diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 1bbbb1e2fe..0ed978a768 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -391,7 +391,7 @@ features that are not supported by the standard @code{stdio} implementation.") (define-public universal-ctags (package (name "universal-ctags") - (version "5.9.20220807.0") + (version "5.9.20221127.0") (source (origin (method git-fetch) @@ -401,7 +401,7 @@ features that are not supported by the standard @code{stdio} implementation.") (file-name (git-file-name name version)) (sha256 (base32 - "1wjj6hlda7xyjm8yrl2zz74ks7azymm9yyrpz36zxxpx2scf6lsk")) + "0nvkx5j2vyzjf935a2s5w56gamlr6f12jy1x38bkqz78p5l0d3ja")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index f60ed4f597..d2a1ed36f7 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -1127,7 +1127,7 @@ tarballs.") (define-public libjcat (package (name "libjcat") - (version "0.1.11") + (version "0.1.12") (source (origin (method git-fetch) @@ -1137,7 +1137,7 @@ tarballs.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "08zywwhm9q8m8v17w2mp23w3w93p40ir1w4x18zrlbhs10xnhiys")))) + (base32 "0fbcmnpc0y7s2ls3q829dv3ardhv0m5gxqqmbn0dnkzgkh42vv7p")))) (build-system meson-build-system) (native-inputs (list gobject-introspection help2man pkg-config)) @@ -2695,7 +2695,7 @@ to their original, binary CD format.") (define-public libdeflate (package (name "libdeflate") - (version "1.12") + (version "1.14") (source (origin (method git-fetch) (uri (git-reference @@ -2704,7 +2704,7 @@ to their original, binary CD format.") (file-name (git-file-name name version)) (sha256 (base32 - "16n9232zjavcp5wp17cx0gh2v7gipxpncsha05j3ybajfs7g88jv")))) + "09y69mnbv3mprgjp53zvin5zqznqajginrk5b25xmi9y0b83bns8")))) (build-system gnu-build-system) (arguments (list #:make-flags diff --git a/gnu/packages/cook.scm b/gnu/packages/cook.scm index 7a064480d4..584f561ceb 100644 --- a/gnu/packages/cook.scm +++ b/gnu/packages/cook.scm @@ -24,8 +24,8 @@ #:use-module (guix download) #:use-module (gnu packages ed) #:use-module (gnu packages bison) - #:use-module (gnu packages groff) #:use-module (gnu packages compression) + #:use-module (gnu packages groff) #:use-module (guix build-system gnu)) (define-public cook @@ -70,7 +70,7 @@ (setenv "SH" (which "sh")) #t))))) - (native-inputs (list bison + (native-inputs (list bison-3.0 ;; For building the documentation: groff ;; For the tests: diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index ad0657ef3b..5c5258d6e0 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -307,14 +307,14 @@ etc.") (define-public r-datawizard (package (name "r-datawizard") - (version "0.6.3") + (version "0.6.4") (source (origin (method url-fetch) (uri (cran-uri "datawizard" version)) (sha256 (base32 - "0cn9ixljf4l333d401pz5rcwqkzpl6d90as153j1wrkz9rjzm6i7")))) + "0iv3h08bzmijrxyv2jz70jf53i2bk14kh0vq9a93fms5z08jv19p")))) (properties `((upstream-name . "datawizard"))) (build-system r-build-system) (propagated-inputs @@ -710,13 +710,13 @@ can read and write both the metadata and the cell data in a Sheet.") (define-public r-proj4 (package (name "r-proj4") - (version "1.0-11") + (version "1.0-12") (source (origin (method url-fetch) (uri (cran-uri "proj4" version)) (sha256 (base32 - "07fil52jswbg2h807cd82m2wlm5j2fb891ifri9ms037099qdwf5")))) + "1y3n6zjc4s78pagq5f2x9sdfjg5x5nwnhq67jd06fndlsma8mssa")))) (properties `((upstream-name . "proj4"))) (build-system r-build-system) (inputs (list proj-7 zlib)) @@ -931,14 +931,14 @@ similar rank-based tests for equal probability distributions due to Neuhauser (define-public r-v8 (package (name "r-v8") - (version "4.2.1") + (version "4.2.2") (source (origin (method url-fetch) (uri (cran-uri "V8" version)) (sha256 (base32 - "1w1zihmhrygn2i674wimbv7xqjnwlld4x3ndvh5dl4cdg7s1m24r")))) + "0friwpw3cbg40hfsqnlp8g3a6l4zhfag6lh005ya6dw634kkarah")))) (properties `((upstream-name . "V8"))) (build-system r-build-system) (arguments @@ -1076,6 +1076,32 @@ size and can be easily tested locally before being sent to a remote.") the system clipboards.") (license license:gpl3))) +(define-public r-clock + (package + (name "r-clock") + (version "0.6.1") + (source (origin + (method url-fetch) + (uri (cran-uri "clock" version)) + (sha256 + (base32 + "00hp7k24d599dzkzhhb6xky2pj6xaggdfwgviyb3i592v1gkh37q")))) + (properties `((upstream-name . "clock"))) + (build-system r-build-system) + (propagated-inputs (list r-cpp11 r-rlang r-tzdb r-vctrs)) + (native-inputs (list r-knitr)) + (home-page "https://clock.r-lib.org") + (synopsis "Date-Time types and tools") + (description + "This package provides a comprehensive library for date-time +manipulations using a new family of orthogonal date-time +classes (durations, time points, zoned-times, and calendars) that +partition responsibilities so that the complexities of time zones are +only considered when they are really needed. Capabilities include: +date-time parsing, formatting, arithmetic, extraction and updating of +components, and rounding.") + (license license:expat))) + (define-public r-clvalid (package (name "r-clvalid") @@ -1101,13 +1127,13 @@ BSI. Further information can be found in Brock, G et al. (2008) <doi: (define-public r-dlm (package (name "r-dlm") - (version "1.1-5") + (version "1.1-6") (source (origin (method url-fetch) (uri (cran-uri "dlm" version)) (sha256 - (base32 "1aksm66sfa7ipl5xgs4j5giac7q2m744wjl40mva56xn6i674h4r")))) + (base32 "0mxfakryagyg2idjhw1ydp4xqk57s3z17cv69hj16lisx8q43pc9")))) (properties `((upstream-name . "dlm"))) (build-system r-build-system) (home-page "https://cran.r-project.org/package=dlm") @@ -1783,13 +1809,13 @@ control over dimensions and appearance.") (define-public r-philentropy (package (name "r-philentropy") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) (uri (cran-uri "philentropy" version)) (sha256 (base32 - "1dpf4hfflp4mcql4na46wzcq1flabkipiwyycz9wj5xbxlmcz2hk")))) + "1dw46p2bk68hqbc44629lywg5r1mdaz37ahccgmsx07fg8rf4wnf")))) (properties `((upstream-name . "philentropy"))) (build-system r-build-system) (propagated-inputs (list r-kernsmooth r-poorman r-rcpp)) @@ -2417,14 +2443,14 @@ same time tries to group instances from the same class together.") (define-public r-callr (package (name "r-callr") - (version "3.7.2") + (version "3.7.3") (source (origin (method url-fetch) (uri (cran-uri "callr" version)) (sha256 (base32 - "01q3b0w1cbrryvv1dwvnyd3j1f09xmhnwg1wskc51r3r4qhqmnhj")))) + "0knh5yxhxwjz96kbjrq524w4j8cac10k6mghhmblq79s0zgzwysn")))) (build-system r-build-system) (propagated-inputs (list r-r6 r-processx)) @@ -2512,17 +2538,40 @@ supported for the trees and a test for parameter heterogeneity is provided for the personalised models.") (license license:gpl2+))) +(define-public r-modelenv + (package + (name "r-modelenv") + (version "0.1.0") + (source (origin + (method url-fetch) + (uri (cran-uri "modelenv" version)) + (sha256 + (base32 + "18wgl3hslvwq4z8ab91514p5nhzxzb727s61ccawvx3ixfjfrid4")))) + (properties `((upstream-name . "modelenv"))) + (build-system r-build-system) + (propagated-inputs (list r-glue r-rlang r-tibble r-vctrs)) + (home-page "https://github.com/tidymodels/modelenv") + (synopsis "Tools for registering models for use in tidymodels") + (description + "This is a developer-focused, low dependency package in +@code{tidymodels} that provides functions to register how models are +to be used. Functions to register models are complimented with +accessor functions to retrieve registered model information to aid in +model fitting and error handling.") + (license license:expat))) + (define-public r-modelr (package (name "r-modelr") - (version "0.1.9") + (version "0.1.10") (source (origin (method url-fetch) (uri (cran-uri "modelr" version)) (sha256 (base32 - "1jd9vxirj5ii4ac0ka07g0rcq1c8yqv06jg27nmvp5a6kvlgvs8h")))) + "0qqgdb7gpb1h9lf5zijg51gd0qmbzj8f37aykhv1w633cglacick")))) (build-system r-build-system) (propagated-inputs (list r-broom @@ -2657,13 +2706,13 @@ in systems and applications.") (define-public r-servr (package (name "r-servr") - (version "0.24") + (version "0.25") (source (origin (method url-fetch) (uri (cran-uri "servr" version)) (sha256 (base32 - "11x0857m3xzdbzr4z0vx4fcdk36arfagyf2qgamvprich0qisknr")))) + "0g77lpyfjaibcpqb3z723z1p82msjdnc74f2n5l740z91560vbp6")))) (build-system r-build-system) (propagated-inputs (list r-httpuv r-jsonlite r-mime r-xfun)) @@ -2997,14 +3046,14 @@ jQuery.") (define-public r-sass (package (name "r-sass") - (version "0.4.2") + (version "0.4.4") (source (origin (method url-fetch) (uri (cran-uri "sass" version)) (sha256 (base32 - "0iln5ky6k1ix0gddlyw4rr2953kc499x66bcyi9yiyp91nfh82dl")))) + "0hk5svmpbhx9q3ni3qll2pa7q3pfc0zxv616kp62r6vakn1az16j")))) (properties `((upstream-name . "sass"))) (build-system r-build-system) (propagated-inputs @@ -3059,14 +3108,14 @@ expression estimates for all genes.") (define-public r-bslib (package (name "r-bslib") - (version "0.4.0") + (version "0.4.1") (source (origin (method url-fetch) (uri (cran-uri "bslib" version)) (sha256 (base32 - "1hkmaj0mpygbf6qr1955biv9z4q3khflyqi5x0c3dwi6qz74xspv")) + "0bz6w34shk2pijq5hvjv2bg8xhhg4yazn4wcix7436yi9k41zgaf")) (snippet '(for-each delete-file '("inst/lib/bs-a11y-p/plugins/js/bootstrap-accessibility.min.js" @@ -3830,14 +3879,14 @@ files). It currently supports linked brushing and filtering.") (define-public r-rook (package (name "r-rook") - (version "1.1-1") + (version "1.2") (source (origin (method url-fetch) (uri (cran-uri "Rook" version)) (sha256 (base32 - "00s9a0kr9rwxvlq433daxjk4ji8m0w60hjdprf502msw9kxfrx00")))) + "0qjziszrrwsp1mbykps3yf5r98q83cyd4jzpgi7gvbsd2ssy96n7")))) (properties `((upstream-name . "Rook"))) (build-system r-build-system) (propagated-inputs (list r-brew)) @@ -3981,16 +4030,16 @@ complex non-linear objective function with a very large number of optima.") (define-public r-geosphere (package (name "r-geosphere") - (version "1.5-14") + (version "1.5-18") (source (origin (method url-fetch) (uri (cran-uri "geosphere" version)) (sha256 (base32 - "0bg4vfmrw140j2ax0p6bflvb77w03ir39wa87l96rj473jpa9hzj")))) + "1h6sqvxwxv22js6hz4s8sjk50ygw0y34icbbbdb2v36ca3q6zzwr")))) (build-system r-build-system) - (propagated-inputs (list r-sp)) + (propagated-inputs (list r-rcpp r-sp)) (home-page "https://cran.r-project.org/web/packages/geosphere") (synopsis "Spherical trigonometry") (description "This package computes spherical trigonometry for geographic @@ -4001,14 +4050,14 @@ applications. That is, compute distances and related measures for angular (define-public r-jpeg (package (name "r-jpeg") - (version "0.1-9") + (version "0.1-10") (source (origin (method url-fetch) (uri (cran-uri "jpeg" version)) (sha256 (base32 - "0wihj538wdnr71wdldym83qadb4kh68a6rkallwbh2f25r27b881")))) + "1jkqj58hj33ar9wyl7c1cnj3h42icq7crmjk93n933q8qc4zdnf8")))) (build-system r-build-system) (inputs (list libjpeg-turbo)) (home-page "https://www.rforge.net/jpeg/") @@ -4021,17 +4070,18 @@ files and in-memory raw vectors.") (define-public r-ggmap (package (name "r-ggmap") - (version "3.0.0") + (version "3.0.1") (source (origin (method url-fetch) (uri (cran-uri "ggmap" version)) (sha256 (base32 - "13dmzl6z62pzjiffilarkji46vy0sacxa8a7mhrhc3biq3ylzhln")))) + "0pg38zyxv1j6mwdwdqljynqrg7zjwqpsh65xdwmvbl0zgxa4p0pw")))) (build-system r-build-system) (propagated-inputs (list r-bitops + r-cli r-digest r-dplyr r-ggplot2 @@ -4043,7 +4093,7 @@ files and in-memory raw vectors.") r-png r-purrr r-rgooglemaps - r-rjson + r-rlang r-scales r-stringr r-tibble @@ -4420,13 +4470,13 @@ processes. Most of its code is based on the @code{psutil} Python package.") (define-public r-pkgbuild (package (name "r-pkgbuild") - (version "1.3.1") + (version "1.4.0") (source (origin (method url-fetch) (uri (cran-uri "pkgbuild" version)) (sha256 - (base32 "0j6v5nbp8kg1m3j999gd1qsbdmqcqm1mf28ngmm177miwv8q4skw")))) + (base32 "1mjyln5njbvi0k97w8az2v5klmas6pqiz68mlylfll4nr503qzrm")))) (build-system r-build-system) (propagated-inputs (list r-callr @@ -4434,6 +4484,7 @@ processes. Most of its code is based on the @code{psutil} Python package.") r-crayon r-desc r-prettyunits + r-processx r-r6 r-rprojroot r-withr)) @@ -4448,14 +4499,14 @@ is configured appropriately so R can use them.") (define-public r-pkgload (package (name "r-pkgload") - (version "1.3.1") + (version "1.3.2") (source (origin (method url-fetch) (uri (cran-uri "pkgload" version)) (sha256 (base32 - "16k7n5hrwkzdwm54qyf5p6d1v5rf6vq688x48iylw6bygc6vgf66")))) + "0bvbnj98b1yaiksdmfi017g2w3229a5pcsnpjamzrvpy5c1rml9m")))) (build-system r-build-system) (propagated-inputs (list r-cli @@ -5116,13 +5167,13 @@ most popular ones.") (define-public r-sp (package (name "r-sp") - (version "1.5-0") + (version "1.5-1") (source (origin (method url-fetch) (uri (cran-uri "sp" version)) (sha256 - (base32 "077q1wh9ihhcn1338xspnd90hy16ljxsav1xcrxdxj4fyynhd6lk")))) + (base32 "1pr9yb2wqapyizdfpi7zqd4a5b40q58czbfj6svvp2fkh6sfmfb9")))) (build-system r-build-system) (propagated-inputs (list r-lattice)) @@ -5321,14 +5372,14 @@ spreadsheet software.") (define-public r-extremes (package (name "r-extremes") - (version "2.1-2") + (version "2.1-3") (source (origin (method url-fetch) (uri (cran-uri "extRemes" version)) (sha256 (base32 - "19q560prq02h3bwk01jb68693qb5bhsv8wiqhia7v5knm34qv8x7")))) + "0h1w177vz3z58vbqrfbiqapf9z2qsd7gcbv8fnbyn0i5akfz1k71")))) (properties `((upstream-name . "extRemes"))) (build-system r-build-system) (propagated-inputs @@ -5888,6 +5939,31 @@ techniques from R packages and provides a common interface for calling the methods.") (license license:gpl3))) +(define-public r-timechange + (package + (name "r-timechange") + (version "0.1.1") + (source (origin + (method url-fetch) + (uri (cran-uri "timechange" version)) + (sha256 + (base32 + "0w3zbmzhg3zr5d9aa83kmr6gyhk75l7jysa7zs0pnz9x4ffr20w5")))) + (properties `((upstream-name . "timechange"))) + (build-system r-build-system) + (propagated-inputs (list r-cpp11)) + (home-page "https://github.com/vspinu/timechange/") + (synopsis "Efficient manipulation of Date-Times") + (description + "This package provides efficient routines for manipulation of +date-time objects while accounting for time-zones and daylight saving +times. The package includes utilities for updating of date-time +components (year, month, day etc.), modification of time-zones, +rounding of date-times, period addition and subtraction etc. Parts of +the CCTZ source code, released under the Apache 2.0 License, are +included in this package.") + (license license:gpl3))) + (define-public r-timedate (package (name "r-timedate") @@ -5912,14 +5988,14 @@ calendar objects.") (define-public r-magic (package (name "r-magic") - (version "1.6-0") + (version "1.6-1") (source (origin (method url-fetch) (uri (cran-uri "magic" version)) (sha256 (base32 - "1gybia2aq80ldk1d845y5srncfzbbmpqhgl7vfaz7qqqjs6d85j5")))) + "0xkrrg5qk62pfqx0avijdjaljzslpwd0hv2m52qnqwrbx5xfqyfa")))) (build-system r-build-system) (propagated-inputs (list r-abind)) @@ -6235,17 +6311,18 @@ provides a one-row summary of model-level statistics.") (define-public r-recipes (package (name "r-recipes") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (cran-uri "recipes" version)) (sha256 (base32 - "03k7spw5vivj35lwqj8xj259smgc04qxkdimk5ck9yj656d5lyqs")))) + "0pi7j1jj5dmc5kzx6zkm691xya7dw4fn8c8nb2x3gs8mp14spzhg")))) (build-system r-build-system) (propagated-inputs (list r-cli + r-clock r-dplyr r-ellipsis r-generics @@ -6305,14 +6382,14 @@ for certain use cases.") (define-public r-ggrepel (package (name "r-ggrepel") - (version "0.9.1") + (version "0.9.2") (source (origin (method url-fetch) (uri (cran-uri "ggrepel" version)) (sha256 (base32 - "1z5xyr5f4aryy0v1gzz9m8m4s5fzzwbrf0fxll1nbflr8xnr3yr9")))) + "123lh86qs7w1i3v8i1a08jxlwx4sy32bpznyclm8wlkph728hc0a")))) (build-system r-build-system) (propagated-inputs (list r-ggplot2 r-rcpp r-rlang r-scales)) @@ -6378,13 +6455,13 @@ color labels, layout, etc.") (define-public r-stringdist (package (name "r-stringdist") - (version "0.9.9") + (version "0.9.10") (source (origin (method url-fetch) (uri (cran-uri "stringdist" version)) (sha256 - (base32 "0pkggr25azadczhnsxc9wh1753wigf3wijyvwfc2ip5a42c1f55x")))) + (base32 "1s3cy2q6l4ppgslwfbfydi5f3kzshfhzkb25gz546n7jgw5jxm3g")))) (build-system r-build-system) (home-page "https://github.com/markvanderloo/stringdist") (synopsis "Approximate string matching and string distance functions") @@ -6474,17 +6551,17 @@ response matrices.") (define-public r-ordinal (package (name "r-ordinal") - (version "2019.12-10") + (version "2022.11-16") (source (origin (method url-fetch) (uri (cran-uri "ordinal" version)) (sha256 (base32 - "09bpmjmbf4x82kgf6bm4bkncq2apdv9mk20zj4zgma2jx2vyfhbs")))) + "14yld28vjmvxbwz6mapfri4vrj3nsf9p73fn2z80j6jkz8fsv22l")))) (build-system r-build-system) (propagated-inputs - (list r-mass r-matrix r-numderiv r-ucminf)) + (list r-mass r-matrix r-nlme r-numderiv r-ucminf)) (home-page "https://github.com/runehaubo/ordinal") (synopsis "Regression models for ordinal data") (description @@ -6568,14 +6645,14 @@ analysis of multiply imputed data sets.") (define-public r-mice (package (name "r-mice") - (version "3.14.0") + (version "3.15.0") (source (origin (method url-fetch) (uri (cran-uri "mice" version)) (sha256 (base32 - "01fnfrr7adp29s5kic95r9q0rdznkz2pjmziyimnrqzyicyvfyzq")))) + "0yz88b40mpn24z40yfpxrkwrsxk362gwks3v5x69rkix1qkdsr1x")))) (build-system r-build-system) (propagated-inputs (list r-broom @@ -6585,8 +6662,7 @@ analysis of multiply imputed data sets.") r-lattice r-rcpp r-rlang - r-tidyr - r-withr)) + r-tidyr)) (home-page "https://cran.r-project.org/web/packages/mice/") (synopsis "Multivariate imputation by chained equations") (description @@ -7325,13 +7401,13 @@ iVAT).") (define-public r-xfun (package (name "r-xfun") - (version "0.34") + (version "0.35") (source (origin (method url-fetch) (uri (cran-uri "xfun" version)) (sha256 - (base32 "0gc5lbk73bf0yhvc7wwz7hbq39hvphd8xdsgwi2c125rxcgnrrsh")))) + (base32 "04x6y7f3f105fzxn2kzmvfz0zqf2v28g8aqnsln6q9n4lm74vz45")))) (build-system r-build-system) ;; knitr itself depends on xfun #; @@ -7412,14 +7488,14 @@ estimated from a given sample.") (define-public r-vctrs (package (name "r-vctrs") - (version "0.5.0") + (version "0.5.1") (source (origin (method url-fetch) (uri (cran-uri "vctrs" version)) (sha256 (base32 - "11pnblg2fpa3lr5hbiyw6w7wvlkdvqw35wxrkffcxnlxqc9jwdvw")))) + "01yv85rjpn9cz4473m768awrcaif51ffjh29p097c7pj2zvq4ya9")))) (build-system r-build-system) (propagated-inputs (list r-cli r-glue r-lifecycle r-rlang)) @@ -9740,14 +9816,14 @@ Python's @url{https://github.com/ActiveState/appdirs,Appdirs} to R.") (define-public r-rastervis (package (name "r-rastervis") - (version "0.51.2") + (version "0.51.4") (source (origin (method url-fetch) (uri (cran-uri "rasterVis" version)) (sha256 (base32 - "0kgg6cm7xjqya2d46w0i1i1wjpkb8f99lyqy7rgwa7l9xmwzj5n1")))) + "1z4vwjmx8n01jc2ypqs1pmx70rc3pjaz3ahk8j8zcif40v0qgy6i")))) (properties `((upstream-name . "rasterVis"))) (build-system r-build-system) (propagated-inputs @@ -9822,14 +9898,14 @@ reproducible.") (define-public r-learnr (package (name "r-learnr") - (version "0.11.1") + (version "0.11.2") (source (origin (method url-fetch) (uri (cran-uri "learnr" version)) (sha256 (base32 - "1p3943hv3ybmbcyfbxidd55dripi0570pf5l51hwz9r3635cx3zs")))) + "1w8lcghnqvmggfp90hdpcjflvnxyp5shfk48vq5s4kci8414dm6j")))) (build-system r-build-system) (native-inputs (list r-knitr)) (propagated-inputs @@ -10113,14 +10189,14 @@ and adds the annotation to the plot.") (define-public r-rstatix (package (name "r-rstatix") - (version "0.7.0") + (version "0.7.1") (source (origin (method url-fetch) (uri (cran-uri "rstatix" version)) (sha256 (base32 - "0330y8iziffqg8j9j5h9zv4qcdyf8ybhmzxrr9fzq9nc6bf1gbm5")))) + "0c001w1mj8jw7gzmix90wzzb9kj45q173mzl7pmvykm77zpn61ak")))) (properties `((upstream-name . "rstatix"))) (build-system r-build-system) (propagated-inputs @@ -10150,14 +10226,14 @@ matrix.") (define-public r-ggpubr (package (name "r-ggpubr") - (version "0.4.0") + (version "0.5.0") (source (origin (method url-fetch) (uri (cran-uri "ggpubr" version)) (sha256 (base32 - "0x86lmghr25k8w90yrp360dn42dhp5cjvjpdiv2s2gxfn701xcmb")))) + "0fbm3rcpsabb7j7sdr69scqiq1bnx2623ji9ap9v4rmqqy8s08gv")))) (build-system r-build-system) (propagated-inputs (list r-cowplot @@ -10530,14 +10606,14 @@ hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.") (define-public r-rbibutils (package (name "r-rbibutils") - (version "2.2.9") + (version "2.2.10") (source (origin (method url-fetch) (uri (cran-uri "rbibutils" version)) (sha256 (base32 - "11pzbqykmn7m9gp5jspfcj6vij865wqf9ry6m3jkihvfj7zhfb5j")))) + "1xqpij07d19nvg18kyikpm37r3fharkdmxzm0cjddmqwv757lim6")))) (properties `((upstream-name . "rbibutils"))) (build-system r-build-system) (home-page "https://geobosh.github.io/rbibutils/") @@ -10704,14 +10780,14 @@ or missing responses.") (define-public r-acdm (package (name "r-acdm") - (version "1.0.4.1") + (version "1.0.4.2") (source (origin (method url-fetch) (uri (cran-uri "ACDm" version)) (sha256 (base32 - "129ykw0j8z30mr4c01qzx6qy6h4bl87zxvmps0vkh8cqb7akninq")))) + "00i33b76gqllyc6ywwwrgyjvxfspqb3jf52b9sjaazlfwgn5xyjf")))) (properties `((upstream-name . "ACDm"))) (build-system r-build-system) (propagated-inputs @@ -10814,14 +10890,14 @@ Decomposition in R (Beaton et al 2014) <doi:10.1016/j.csda.2013.11.006>.") (define-public r-insight (package (name "r-insight") - (version "0.18.6") + (version "0.18.8") (source (origin (method url-fetch) (uri (cran-uri "insight" version)) (sha256 (base32 - "1bhwfx75lnjrvn6byl2dn8fzfh2in2msghxwyy9jwpvnxk4c63db")))) + "01bm7w8f80i550gwv41kakaxp0d5a2pqa2s3ihz36snkczmdlapm")))) (build-system r-build-system) (native-inputs (list r-knitr)) @@ -10950,14 +11026,14 @@ functions.") (define-public r-flextable (package (name "r-flextable") - (version "0.8.2") + (version "0.8.3") (source (origin (method url-fetch) (uri (cran-uri "flextable" version)) (sha256 (base32 - "054rkx98qhwp8i4fj9jkv5297sc4g193wfs6b537q62iyqmcjlx3")))) + "0fqc0zq1w7fdnql2m96g0rpichfpwrhyinnld29ddaw0d742gfj5")))) (build-system r-build-system) (propagated-inputs (list r-base64enc @@ -11713,13 +11789,13 @@ ABC algorithms.") (define-public r-abctools (package (name "r-abctools") - (version "1.1.3") + (version "1.1.4") (source (origin (method url-fetch) (uri (cran-uri "abctools" version)) (sha256 - (base32 "07s9dg10i8lsxl73b4n2hynca2fjgb0ykb0dz8c3zv6cgw3cyx97")))) + (base32 "02c473fqj7yd27flma2x7flqzqbrnba2xfcjy466nww0sm1vvhjg")))) (build-system r-build-system) (propagated-inputs (list r-abc r-abind r-hmisc r-plyr)) @@ -11735,16 +11811,16 @@ and coverage methods to tune the choice of threshold.") (define-public r-ggstance (package (name "r-ggstance") - (version "0.3.5") + (version "0.3.6") (source (origin (method url-fetch) (uri (cran-uri "ggstance" version)) (sha256 - (base32 "0jz9vvnmcc6a38n8nzr458r65sna23bgn5r8mxdhzdlyqibihr7d")))) + (base32 "0wk3gbi5365sndi02gwd4c33vcrj5p8cfwakwjg010y5hgxx96nd")))) (build-system r-build-system) (propagated-inputs - (list r-ggplot2 r-plyr r-rlang r-withr)) + (list r-cli r-ggplot2 r-plyr r-rlang r-withr)) (home-page "https://cran.r-project.org/web/packages/ggstance/") (synopsis "Horizontal and vertical versions of @code{r-ggplot2}") (description @@ -11807,14 +11883,14 @@ repeated measures data, respectively.") (define-public r-gam (package (name "r-gam") - (version "1.20.2") + (version "1.22") (source (origin (method url-fetch) (uri (cran-uri "gam" version)) (sha256 (base32 - "1ndgnaq5fk1w6l6z93w5gd22887yxkykrchbdbx366qmz8v8wcyg")))) + "0gyrg73f63ccars1639n0gv6cnh8ixp7p7lgdxb2yjl240lk0c9i")))) (properties `((upstream-name . "gam"))) (build-system r-build-system) (propagated-inputs @@ -12077,14 +12153,14 @@ used to teach mathematics, statistics, computation and modeling.") (define-public r-raster (package (name "r-raster") - (version "3.6-3") + (version "3.6-11") (source (origin (method url-fetch) (uri (cran-uri "raster" version)) (sha256 (base32 - "1in3n0hqzcdhibjl3y82nwn6m6wcv4k3l6s2jw57jn32qgvy01lz")))) + "1arvmhf3ijzh3aanw8n6mdnwk4h26axsxpszvr5g43l7g5vfmggf")))) (build-system r-build-system) (propagated-inputs (list r-rcpp r-sp r-terra)) @@ -12655,13 +12731,13 @@ multiple-imputation datasets.") (define-public r-mixsqp (package (name "r-mixsqp") - (version "0.3-43") + (version "0.3-48") (source (origin (method url-fetch) (uri (cran-uri "mixsqp" version)) (sha256 (base32 - "1qics04w0swyp216d6g8dmsph8q2kpadpacp66h2qih3521js12q")))) + "02cjg33m5iqziyy0xi11wvbm5qnlgfy51r1dbpjzyhqsrv1dfx48")))) (properties `((upstream-name . "mixsqp"))) (build-system r-build-system) (propagated-inputs @@ -13242,14 +13318,14 @@ correlation, censored, ordered and multivariate problems.") (define-public r-bayesplot (package (name "r-bayesplot") - (version "1.9.0") + (version "1.10.0") (source (origin (method url-fetch) (uri (cran-uri "bayesplot" version)) (sha256 (base32 - "0hqy597ang53phxnl084hak35ffqz9lw9hygax7370gpkjws908a")))) + "1zqka7lg7a6ccli1yzhk1n13vbrlp8m0kjxmykjqmkz438mvjk5v")))) (build-system r-build-system) (inputs (list pandoc)) @@ -13305,17 +13381,18 @@ detection, parallelism through BLAS and parallel user templates.") (define-public r-sjstats (package (name "r-sjstats") - (version "0.18.1") + (version "0.18.2") (source (origin (method url-fetch) (uri (cran-uri "sjstats" version)) (sha256 - (base32 "1cv80yjnyh6qihxf57zivihhia20gibr5f03x8aspy6382wnwlka")))) + (base32 "0a1y6bqyvgs0avzasr8g6vwcxcnj4d9g0rfz2qiznwadpjzqw66h")))) (build-system r-build-system) (propagated-inputs (list r-bayestestr r-broom + r-datawizard r-dplyr r-effectsize r-emmeans @@ -13348,14 +13425,14 @@ models.") (define-public r-glmmtmb (package (name "r-glmmtmb") - (version "1.1.4") + (version "1.1.5") (source (origin (method url-fetch) (uri (cran-uri "glmmTMB" version)) (sha256 (base32 - "1ldly6qn8iwqr41ndqlwsdz4v2n36giavsmx33vybn9g7r2fq4m7")))) + "1yh8q0l3l8hm408k8khjj1hff3nkqx0wq6a41fddwfmrq1alfjrk")))) (properties `((upstream-name . "glmmTMB"))) (build-system r-build-system) (propagated-inputs @@ -13408,14 +13485,14 @@ ROPE percentage and pd).") (define-public r-performance (package (name "r-performance") - (version "0.10.0") + (version "0.10.1") (source (origin (method url-fetch) (uri (cran-uri "performance" version)) (sha256 (base32 - "15yx75y17h3l1v7jpp8zbygy64lz7kds5yrgd7wrzw56564d2rhb")))) + "1m2zzznfbla8qdm0kxbj5vp431kpygpi4d70042hkg1ly3fyg7pz")))) (build-system r-build-system) (propagated-inputs (list r-bayestestr r-datawizard r-insight)) @@ -13488,13 +13565,13 @@ conversion of indices such as Cohen's d, r, odds, etc.") (define-public r-sjplot (package (name "r-sjplot") - (version "2.8.11") + (version "2.8.12") (source (origin (method url-fetch) (uri (cran-uri "sjPlot" version)) (sha256 - (base32 "05iimcf1if1cx9bmsjb6f5gcq58hjiw10vx7kqd4nqnyhzcvy8yr")))) + (base32 "0g6r4p1r70jjzw74177kxcx2br2n206jwlqazw0vxcsbffb8a411")))) (properties `((upstream-name . "sjPlot"))) (build-system r-build-system) (propagated-inputs @@ -14550,13 +14627,13 @@ isosurfaces.") (define-public r-ks (package (name "r-ks") - (version "1.13.5") + (version "1.14.0") (source (origin (method url-fetch) (uri (cran-uri "ks" version)) (sha256 - (base32 "05bqrjkbx2kn5aax0hy3xd6pf7nxka9bm1sp8ll1cc2gf1nx1i6i")))) + (base32 "14a3pcxxcsfkqz5j6n2wlxkp0gsdp5mzdq7ipcjb65q2gdmwbf9d")))) (build-system r-build-system) (propagated-inputs (list r-fnn @@ -14727,14 +14804,14 @@ al. (2010) <DOI:10.1016/j.neuroimage.2010.04.241>, Tabelow and Polzehl (2011) (define-public r-fmsb (package (name "r-fmsb") - (version "0.7.3") + (version "0.7.4") (source (origin (method url-fetch) (uri (cran-uri "fmsb" version)) (sha256 (base32 - "1gi94xr0b1yk9xzwfprfafxi25yic1lcivd66p73n6iqfzdaimbk")))) + "1rmmvx38rmamiw0ajqhlksgxj6fgm8ymq903yxqq2bzxx8fhj5n2")))) (build-system r-build-system) (home-page "http://minato.sip21c.org/msb/") (synopsis "Functions for medical statistics book with demographic data") @@ -15628,14 +15705,14 @@ and compatibility with @code{ape} objects.") (define-public r-rnifti (package (name "r-rnifti") - (version "1.4.2") + (version "1.4.3") (source (origin (method url-fetch) (uri (cran-uri "RNifti" version)) (sha256 (base32 - "1zr9g102zhb1h6a06p141g1jq0ik94kah8r3z3q2zharj30y2waz")))) + "1w627brzag9laxsfrr1kxh07glycl8l1n5xf5frn8m0jzvrn3d50")))) (properties `((upstream-name . "RNifti"))) (build-system r-build-system) (inputs (list zlib)) @@ -15671,13 +15748,13 @@ creating color scales and calculating color distances.") (define-public r-ore (package (name "r-ore") - (version "1.7.1.1") + (version "1.7.2.1") (source (origin (method url-fetch) (uri (cran-uri "ore" version)) (sha256 - (base32 "0rs5r5h11x4l4nsbl4xqzbl4ahajd5374fq05abcmfjnjr9j64w5")))) + (base32 "104506x9x14bs8lfhydwpgdh4qws2vqkvyy6xrlrviqlll6qbjgg")))) (build-system r-build-system) (home-page "https://github.com/jonclayden/ore") (synopsis "R interface to the Onigmo regular expression library") @@ -16067,14 +16144,14 @@ preparing, executing, and processing HTTP requests.") (define-public r-gmp (package (name "r-gmp") - (version "0.6-7") + (version "0.6-8") (source (origin (method url-fetch) (uri (cran-uri "gmp" version)) (sha256 (base32 - "119z6q3xca1ysdpjfmq3crplj355vlwggxvqh2gs4yi63xlzwcv3")))) + "0fba80f28fcb2w2spiy6wg7dr5cz7w6gf9z3yrkc6p60zbxdaccf")))) (build-system r-build-system) (arguments '(#:phases @@ -17103,14 +17180,14 @@ subsetting.") (define-public r-globals (package (name "r-globals") - (version "0.16.1") + (version "0.16.2") (source (origin (method url-fetch) (uri (cran-uri "globals" version)) (sha256 (base32 - "158y39qv99f1kc2i7w8d4lm2ls96plb43fzamz31im9xb9bkmxpp")))) + "02kpdlrx1bannaixz03c0f7bii9g36iy2nw779mfgi56byljcb38")))) (build-system r-build-system) (propagated-inputs (list r-codetools)) @@ -17155,14 +17232,14 @@ port-forwarding to your local computer.") (define-public r-future (package (name "r-future") - (version "1.28.0") + (version "1.29.0") (source (origin (method url-fetch) (uri (cran-uri "future" version)) (sha256 (base32 - "1xhv0nf97yxxxsmxczyqqbnb4yn5sfn5vzvhm9dmw9csrmmadpbg")))) + "0ws3jp82qjpnvgn5xrxdq7hg7r97rkylj329f9jqr69g3paiyvc5")))) (build-system r-build-system) (arguments `(#:phases @@ -17190,14 +17267,14 @@ the local machine to, say, distributed processing on a remote compute cluster.") (define-public r-future-apply (package (name "r-future-apply") - (version "1.9.1") + (version "1.10.0") (source (origin (method url-fetch) (uri (cran-uri "future.apply" version)) (sha256 (base32 - "0cr141mamjxby79sww02493yal9lahslvp3a3ic7f856rbawq8jg")))) + "1all7ri4nsjxfakw8pssif22j33ch1nhw3sc0raqrzhj93c2vsfy")))) (properties `((upstream-name . "future.apply"))) (build-system r-build-system) (arguments @@ -17323,14 +17400,14 @@ chosen parallel environment and associated foreach backend.") (define-public r-blockmodeling (package (name "r-blockmodeling") - (version "1.1.3") + (version "1.1.4") (source (origin (method url-fetch) (uri (cran-uri "blockmodeling" version)) (sha256 (base32 - "19mxmxsnl6rrh85p0sak91vcaw4dz2cnm70hdzfwnvdrr695yw2z")))) + "1f6jx8pwp3pnhs4wwxdrd1ska3h4w2423dpd11illxfajvnigkk9")))) (build-system r-build-system) (propagated-inputs (list r-matrix)) @@ -18112,14 +18189,14 @@ running IRkernel session.") (define-public r-irkernel (package (name "r-irkernel") - (version "1.3") + (version "1.3.1") (source (origin (method url-fetch) (uri (cran-uri "IRkernel" version)) (sha256 (base32 - "00qrmsywpzw2hfp88020zjaijma7q4hqm9h2cz53rywdjzywnzss")))) + "03343ds7sprql1c6h41dibk40rc3225mzxca452ns967fyhy71ii")))) (properties `((upstream-name . "IRkernel"))) (build-system r-build-system) (arguments @@ -18520,14 +18597,14 @@ barplots or heatmaps.") (define-public r-seqinr (package (name "r-seqinr") - (version "4.2-16") + (version "4.2-23") (source (origin (method url-fetch) (uri (cran-uri "seqinr" version)) (sha256 (base32 - "0cj07b7km5mla63qhbkxg1mnqq6vh79lsyyfpnbm29gw68w2bwy4")))) + "14zv47cdrx9rpyxzccyikp0zxvcqrviw7bid0qhiixvji4bp88dg")))) (build-system r-build-system) (propagated-inputs (list r-ade4 r-segmented)) @@ -18617,14 +18694,14 @@ univariate class intervals for mapping or other graphics purposes.") (define-public r-spdata (package (name "r-spdata") - (version "2.2.0") + (version "2.2.1") (source (origin (method url-fetch) (uri (cran-uri "spData" version)) (sha256 (base32 - "07whxr039cxvk2nn65jada3i8vqqw34lgca9j17ah8chy9r0m73f")))) + "1ddkk8c4dblv5p2rqvqx8b89k8pazvvq48rlw661vf2iwwvm8d2m")))) (properties `((upstream-name . "spData"))) (build-system r-build-system) (propagated-inputs @@ -18717,14 +18794,14 @@ high-performance functions are provided here.") (define-public r-s2 (package (name "r-s2") - (version "1.1.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (cran-uri "s2" version)) (sha256 (base32 - "05n459rp5b1wk826sq3c5d2z1xwgkpfp8m1jnfshvs4gadlfkap3")))) + "07c9f8ghfjqdjcw50by3y4j8nbsmmcwd4a3vpcwsxr4mvybckq0w")))) (properties `((upstream-name . "s2"))) (build-system r-build-system) (arguments @@ -18758,14 +18835,14 @@ information about geometries.") (define-public r-sf (package (name "r-sf") - (version "1.0-8") + (version "1.0-9") (source (origin (method url-fetch) (uri (cran-uri "sf" version)) (sha256 (base32 - "0cl7m47ar3iw95rpwpmjl23frdbscxa15q39mlzmwswxwy871p1x")))) + "0fq1v2ksnllyd5yx7ch8f298aqiys4v6xacswy0h4xb418dcgh45")))) (build-system r-build-system) (inputs (list gdal geos proj sqlite zlib)) @@ -18994,13 +19071,13 @@ either PDF/EPS files.") (define-public r-polspline (package (name "r-polspline") - (version "1.1.20") + (version "1.1.22") (source (origin (method url-fetch) (uri (cran-uri "polspline" version)) (sha256 - (base32 "1dd1jwiaglkkhajzvqfkd1x5r3wzjlk5ww0yxzmns0s1kr74i4k9")))) + (base32 "0ys5sxr5q55ip49dsc3kbgcr3bn9dj5bblmshwm4jz8d0a7ikwmj")))) (build-system r-build-system) (native-inputs (list gfortran)) (home-page "https://cran.r-project.org/web/packages/polspline/") @@ -19099,14 +19176,14 @@ include (define-public r-haplo-stats (package (name "r-haplo-stats") - (version "1.8.9") + (version "1.9.2") (source (origin (method url-fetch) (uri (cran-uri "haplo.stats" version)) (sha256 (base32 - "0np9kw4f30xbvwr4f79g909ilis5n273ridmlwyzjxiskiry6mx0")))) + "1397rxcqqz29yaf3f2gphg1jhmfw3wvvjvqk7cz01jdh3pihdh56")))) (properties `((upstream-name . "haplo.stats"))) (build-system r-build-system) (propagated-inputs @@ -19147,14 +19224,14 @@ lines. It includes maximum likelihood and Bayesian tools.") (define-public r-ibdreg (package (name "r-ibdreg") - (version "0.3.6") + (version "0.3.8") (source (origin (method url-fetch) (uri (cran-uri "ibdreg" version)) (sha256 (base32 - "1x8z0vr2cmdks12hxfm0wwxskb0cr669w5j5rpa2ln8q704yy41g")))) + "0c4svyfd7xjx9k6pl40l7y9rc67zschs0nz1l386xi1m7arsp44n")))) (build-system r-build-system) (home-page "https://www.mayo.edu/research/labs/\ statistical-genetics-genetic-epidemiology/software") @@ -19260,13 +19337,13 @@ SELECT or UPDATE queries to an end-point.") (define-public r-bookdown (package (name "r-bookdown") - (version "0.29") + (version "0.30") (source (origin (method url-fetch) (uri (cran-uri "bookdown" version)) (sha256 (base32 - "08zpky94bdbjsbhi90pymxpczpfkjxwbx7p1v7ip8raw9b23skjv")))) + "1i54sbrdv2c9l6pcm3229wlwdnhn0x6f2918adszm5k8qdp0h74i")))) (build-system r-build-system) (propagated-inputs (list r-htmltools @@ -20331,13 +20408,13 @@ analysis.") (define-public r-png (package (name "r-png") - (version "0.1-7") + (version "0.1-8") (source (origin (method url-fetch) (uri (cran-uri "png" version)) (sha256 (base32 - "0g2mcp55lvvpx4kd3mn225mpbxqcq73wy5qx8b4lyf04iybgysg2")))) + "077nca3x0l6mq2g6izknzcn994bqs3nfqk7wscrjbfk2dnxzldjs")))) (build-system r-build-system) (inputs (list libpng zlib)) @@ -20376,14 +20453,14 @@ function for computing a matrix of correlation p-values.") (define-public r-ggfun (package (name "r-ggfun") - (version "0.0.7") + (version "0.0.9") (source (origin (method url-fetch) (uri (cran-uri "ggfun" version)) (sha256 (base32 - "0x71p3mm0sw72hv92368wy2yiy7zv826p3kddpwndqv1bywmyfx8")))) + "04kn367mzgrfwnwz97vw5jqp2kig94hmxmhyyic7ddvk3sfhwx2w")))) (properties `((upstream-name . "ggfun"))) (build-system r-build-system) (propagated-inputs @@ -20716,14 +20793,14 @@ external dependencies. This package has is implemented purely in R.") (define-public r-aplot (package (name "r-aplot") - (version "0.1.8") + (version "0.1.9") (source (origin (method url-fetch) (uri (cran-uri "aplot" version)) (sha256 (base32 - "17256cdn46cii97s0h2zmah9vs116ybnih78734lpkn7kmvdfcfr")))) + "04mv2jhkk47sqmm69dbcmy84han2k19sv6vnmk572xbm19i661xg")))) (properties `((upstream-name . "aplot"))) (build-system r-build-system) (propagated-inputs @@ -20939,14 +21016,14 @@ Row} (CSR) format.") (define-public r-text2vec (package (name "r-text2vec") - (version "0.6.2") + (version "0.6.3") (source (origin (method url-fetch) (uri (cran-uri "text2vec" version)) (sha256 (base32 - "1as58w1hb6h0hpncwcr2nx9a8bj5fy6bfllx2a8ck8hal764iach")))) + "1hi7ydb7xkgbff4lwnnz1biyl8m90w16hn3x5rrzvscvm53sj4y7")))) (properties `((upstream-name . "text2vec"))) (build-system r-build-system) (propagated-inputs @@ -21141,14 +21218,14 @@ batch correction, and data correction.") (define-public r-styler (package (name "r-styler") - (version "1.8.0") + (version "1.8.1") (source (origin (method url-fetch) (uri (cran-uri "styler" version)) (sha256 (base32 - "1iw4nj68aj4psysrpyy7s6g3r3vhpfk8s05n6d20m2qmmk0p92sg")))) + "1sc1xr9pfrbd2yyzyyxpj8dd81djmsr00gxgr0mr18habyl5yl0m")))) (build-system r-build-system) ;; This is needed by R.cache. (arguments @@ -21277,14 +21354,14 @@ experiments in a well-organized and reproducible way.") (define-public r-clue (package (name "r-clue") - (version "0.3-62") + (version "0.3-63") (source (origin (method url-fetch) (uri (cran-uri "clue" version)) (sha256 (base32 - "1lhybs6rhq8zs7q15ahng7c93liiygr64i2zwg3ya6maqji3ynjp")))) + "0c402fb3r1cxd0j6ikjhssq2k22lbnsq4k7vjpgvyx4a4ly2h4yr")))) (build-system r-build-system) (propagated-inputs (list r-cluster)) (home-page "https://cran.r-project.org/web/packages/clue/") @@ -21532,14 +21609,14 @@ includes data sets from oceanography.") (define-public r-ggfortify (package (name "r-ggfortify") - (version "0.4.14") + (version "0.4.15") (source (origin (method url-fetch) (uri (cran-uri "ggfortify" version)) (sha256 (base32 - "038m74azpy43869ax1yi6wxbl1kr59iaxl8raiikjg749vcx6njw")))) + "1cfwv8jjy1yk0l5wnp48ql1javvrzq1wnh1lv49xp6rynz00lxm8")))) (build-system r-build-system) (propagated-inputs (list r-dplyr @@ -22100,14 +22177,14 @@ be used further by e.g. graphic devices.") (define-public r-graphlayouts (package (name "r-graphlayouts") - (version "0.8.3") + (version "0.8.4") (source (origin (method url-fetch) (uri (cran-uri "graphlayouts" version)) (sha256 (base32 - "08a4cpy0n90hw8xzmxck13hp76yh40r0njb2m7mwdldljkbybr7r")))) + "1zch8v0fc9lrm1pklcvi7g4g7zmqq3gxprm7pbdx018b35z8z3bp")))) (properties `((upstream-name . "graphlayouts"))) (build-system r-build-system) (propagated-inputs @@ -22125,14 +22202,14 @@ emphasize hidden group structures in networks or focus on specific nodes.") (define-public r-terra (package (name "r-terra") - (version "1.6-17") + (version "1.6-41") (source (origin (method url-fetch) (uri (cran-uri "terra" version)) (sha256 (base32 - "00mwigymvsqf7r3swbkdw8fwqzr05ddk84fhyhr16lfa4118z26v")))) + "0n0si3b6l88w0svvpc999slqack1djdd96jc0m8fdkwp0nwi3hkc")))) (properties `((upstream-name . "terra"))) (build-system r-build-system) (inputs @@ -22221,14 +22298,14 @@ cell RNA-seq experiments.") (define-public r-assertr (package (name "r-assertr") - (version "2.8") + (version "3.0.0") (source (origin (method url-fetch) (uri (cran-uri "assertr" version)) (sha256 (base32 - "00764vv86r3bn4r85in4w637harffyw605fgq0dj6mrbrwcfb650")))) + "1wi3mz968clvwqg6mbm32zhj4vyfskklk72b4028cjsfdry6bpfp")))) (build-system r-build-system) (propagated-inputs (list r-dplyr r-mass r-rlang)) @@ -22246,14 +22323,14 @@ in pipelines.") (define-public r-parameters (package (name "r-parameters") - (version "0.19.0") + (version "0.20.0") (source (origin (method url-fetch) (uri (cran-uri "parameters" version)) (sha256 (base32 - "10cl8vgcjncnry6qkkr41yyh8ngxxn81hwqqqix9g7pwpbf3c2mf")))) + "16y92q4h385sqc7xgdcrdmdvw0l8plxxbhcdsnx4gqqgm8di9l9p")))) (properties `((upstream-name . "parameters"))) (build-system r-build-system) (propagated-inputs @@ -22274,13 +22351,13 @@ effect size.") (define-public r-rgdal (package (name "r-rgdal") - (version "1.5-32") + (version "1.6-2") (source (origin (method url-fetch) (uri (cran-uri "rgdal" version)) (sha256 - (base32 "1vbkyhw8nd7dw1r53qisphav31x6zvpbzilvnlvbjbj9hzhs90s5")))) + (base32 "0g83r9lzq79hs7mk31kqym1sjqnmk53j3nikrn2vk257v854pavy")))) (properties `((upstream-name . "rgdal"))) (build-system r-build-system) (inputs @@ -23385,14 +23462,14 @@ facilitates insertion into pipelines, and content inspection.") (define-public r-rngwell (package (name "r-rngwell") - (version "0.10-7") + (version "0.10-8") (source (origin (method url-fetch) (uri (cran-uri "rngWELL" version)) (sha256 (base32 - "0f1dxxaimfb0fww8ym9ciqf6q760ai46wxldl37m5mfpd57ca00c")))) + "0ad1mz11l27h6apil2hd7gwz5zhi9jkjrk2jnhbkd8d0wz9g0sis")))) (properties `((upstream-name . "rngWELL"))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/rngWELL/") @@ -23430,14 +23507,14 @@ and prints vectorized images.") (define-public r-randtoolbox (package (name "r-randtoolbox") - (version "2.0.2") + (version "2.0.3") (source (origin (method url-fetch) (uri (cran-uri "randtoolbox" version)) (sha256 (base32 - "0mvafd2gm1jpg19gdn6bw8668pqghi0xmcb56rl4fwamg8jg09xn")))) + "0i23wj9nmsfy3x2yzlfadzrvil2yhcrxs6qxrykrqs15r9jwx3hm")))) (properties `((upstream-name . "randtoolbox"))) (build-system r-build-system) (propagated-inputs @@ -23589,14 +23666,14 @@ models.") (define-public r-gamlss (package (name "r-gamlss") - (version "5.4-3") + (version "5.4-10") (source (origin (method url-fetch) (uri (cran-uri "gamlss" version)) (sha256 (base32 - "0xih19zqgpjl5qv5j38ana6x29y84shn2jfl2lk4kaw3q7yx86b6")))) + "1cm0rvihniad309j26ll8kabndqzs3wdh5dak70b60z4kljrfx4c")))) (properties `((upstream-name . "gamlss"))) (build-system r-build-system) (propagated-inputs @@ -25669,14 +25746,14 @@ automatically show a loader when the output is (re)calculating.") (define-public r-rsvg (package (name "r-rsvg") - (version "2.3.2") + (version "2.4.0") (source (origin (method url-fetch) (uri (cran-uri "rsvg" version)) (sha256 (base32 - "1lx84x5dnxj1xdsidwfg9i6fkay7ldarwrbg0gl0f02wajf8ifsz")))) + "1schf5gfqzvwmaigdsic5va9bbk9ycvcisiyll8xjjw116y9cxyb")))) (properties `((upstream-name . "rsvg"))) (build-system r-build-system) (inputs @@ -25982,14 +26059,14 @@ Raftery, Appl.Statistics, 1989); it includes inference and basic methods.") (define-public r-forecast (package (name "r-forecast") - (version "8.18") + (version "8.19") (source (origin (method url-fetch) (uri (cran-uri "forecast" version)) (sha256 (base32 - "1pfq2b1ppkbg3a9bag4jrfsjclf0c7mdqbhf1l08h6fqv6lbl82r")))) + "1l3mdldghsf319fh8gx81w8f5i5mnrcn70rjjylzk4j8n7gicpih")))) (properties `((upstream-name . "forecast"))) (build-system r-build-system) (propagated-inputs @@ -26331,14 +26408,14 @@ errors; tetrachoric and biserial correlations are special cases.") (define-public r-msm (package (name "r-msm") - (version "1.6.9") + (version "1.7") (source (origin (method url-fetch) (uri (cran-uri "msm" version)) (sha256 (base32 - "08vhazswyxr3y1zb9y60mbg3bappzlizxml8s08p65mh82xxkz5f")))) + "1c0dvmrjxx551n207fq4yjr56rdchaf1zzldxx4rx4b6g7jgi2bz")))) (properties `((upstream-name . "msm"))) (build-system r-build-system) (propagated-inputs @@ -27474,14 +27551,14 @@ linear systems can be manageable using the @code{Matrix} package along with (define-public r-zvcv (package (name "r-zvcv") - (version "2.1.1") + (version "2.1.2") (source (origin (method url-fetch) (uri (cran-uri "ZVCV" version)) (sha256 (base32 - "0gc76j9i8fkm2v638nyzzb1qxl4zmapbspkkaffb8gi5qyjja448")))) + "0ws0v7i6r7skb8lv6j718k29v5qsy1b007jxidv81iv0jcz9zfpy")))) (properties `((upstream-name . "ZVCV"))) (build-system r-build-system) (propagated-inputs @@ -27704,13 +27781,13 @@ appropriate dog and cat images for many status codes.") (define-public r-latex2exp (package (name "r-latex2exp") - (version "0.9.5") + (version "0.9.6") (source (origin (method url-fetch) (uri (cran-uri "latex2exp" version)) (sha256 (base32 - "153br3xflvnnxqhkhm1wgwb2664bw08alhslgdcgjdk73clafhla")))) + "1jp0l0hi5kv4yh28qg2yj2z5fj33gnfvdz2g2v4ibn516fj2d636")))) (build-system r-build-system) (propagated-inputs (list r-stringr r-magrittr)) @@ -27726,13 +27803,13 @@ rendered as text, axis labels, etc. throughout R's plotting system.") (define-public r-oai (package (name "r-oai") - (version "0.3.2") + (version "0.4.0") (source (origin (method url-fetch) (uri (cran-uri "oai" version)) (sha256 (base32 - "1zcbcxhw692s0y6izvwazyzhgx0iwsxsbcan2nk0mb7n11p7bypb")))) + "0czf8f2qcjl9lh48svicpis09d3iwz9cndfm7hq8wlz5dl3dwh7m")))) (build-system r-build-system) (propagated-inputs (list r-xml2 r-httr r-plyr r-stringr r-tibble)) @@ -28232,14 +28309,14 @@ here.") (define-public r-projpred (package (name "r-projpred") - (version "2.2.1") + (version "2.2.2") (source (origin (method url-fetch) (uri (cran-uri "projpred" version)) (sha256 (base32 - "1bbjrjaj6zzb1ph69x16i40fj2j6cg8vzmmw2rchsn0ygphaq9b8")))) + "0fycjmaqbcr3vp5708003flvi9ny4z04acgbcfly1ird0kcw9s3v")))) (properties `((upstream-name . "projpred"))) (build-system r-build-system) (propagated-inputs @@ -28249,6 +28326,7 @@ here.") r-lme4 r-loo r-magrittr + r-mass r-mgcv r-mvtnorm r-rcpp @@ -28486,14 +28564,14 @@ amounts of memory.") (define-public r-boruta (package (name "r-boruta") - (version "7.0.0") + (version "8.0.0") (source (origin (method url-fetch) (uri (cran-uri "Boruta" version)) (sha256 (base32 - "0y2w4wb45kfnzrxcrdsiwgal9fsnlr3wad1sqdc70qv8gp921xbg")))) + "1irx7qg1sw69ggsk4jgxfd3pp741kd944fipnda1qbcbphg5prrq")))) (properties `((upstream-name . "Boruta"))) (build-system r-build-system) (propagated-inputs (list r-ranger)) @@ -28898,13 +28976,13 @@ doi.org/10.1007/s10115-013-0679-x} for details.") (define-public r-memuse (package (name "r-memuse") - (version "4.2-1") + (version "4.2-2") (source (origin (method url-fetch) (uri (cran-uri "memuse" version)) (sha256 (base32 - "1wvwnjaaiv2647561z2b55dss35033ildx4kk8hzxfzgsjmdpsgm")))) + "1rdp8wi9sd03qdak7mifvdc1szgk0fdzmhbikdfsza8xshm2pp33")))) (properties `((upstream-name . "memuse"))) (build-system r-build-system) (home-page "https://github.com/shinra-dev/memuse") @@ -29025,6 +29103,90 @@ arrays collapsed in specific extents by summing along the appropriate diagonals. This package allows you to compute the tensor product of arrays.") (license license:gpl2+))) +(define-public r-spatstat-explore + (package + (name "r-spatstat-explore") + (version "3.0-5") + (source (origin + (method url-fetch) + (uri (cran-uri "spatstat.explore" version)) + (sha256 + (base32 + "0qn8dmymbnh9vdw0hysijkk2nwz5q69i62smpp8f3wy3z898lhwz")))) + (properties `((upstream-name . "spatstat.explore"))) + (build-system r-build-system) + (propagated-inputs + (list r-abind + r-goftest + r-matrix + r-nlme + r-spatstat-data + r-spatstat-geom + r-spatstat-random + r-spatstat-sparse + r-spatstat-utils)) + (home-page "https://spatstat.org/") + (synopsis "Exploratory data analysis for the spatstat family") + (description + "This package implements functionality for exploratory data +analysis and nonparametric analysis of spatial data, mainly spatial +point patterns, in the @code{spatstat} family of packages. Methods +include quadrat counts, K-functions and their simulation envelopes, +nearest neighbour distance and empty space statistics, Fry plots, pair +correlation function, kernel smoothed intensity, relative risk +estimation with cross-validated bandwidth selection, mark correlation +functions, segregation indices, mark dependence diagnostics, and +kernel estimates of covariate effects. Formal hypothesis tests of +random pattern (chi-squared, Kolmogorov-Smirnov, Monte Carlo, +Diggle-Cressie-Loosmore-Ford, Dao-Genton, two-stage Monte Carlo) and +tests for covariate effects (Cox-Berman-Waller-Lawson, +Kolmogorov-Smirnov, ANOVA) are also supported.") + (license license:gpl2+))) + +(define-public r-spatstat-model + (package + (name "r-spatstat-model") + (version "3.0-2") + (source (origin + (method url-fetch) + (uri (cran-uri "spatstat.model" version)) + (sha256 + (base32 + "0a6lf5y0k13h60s0lnwwfrmxswl7avcg4fhqmha1nmycidhga8z9")))) + (properties `((upstream-name . "spatstat.model"))) + (build-system r-build-system) + (propagated-inputs + (list r-abind + r-goftest + r-matrix + r-mgcv + r-nlme + r-rpart + r-spatstat-data + r-spatstat-explore + r-spatstat-geom + r-spatstat-random + r-spatstat-sparse + r-spatstat-utils + r-tensor)) + (home-page "https://spatstat.org/") + (synopsis "Parametric statistical modelling for the spatstat family") + (description + "This package implements functionality for exploratory data +analysis and nonparametric analysis of spatial data, mainly spatial +point patterns, in the spatstat family of packages. Methods include +quadrat counts, K-functions and their simulation envelopes, nearest +neighbour distance and empty space statistics, Fry plots, pair +correlation function, kernel smoothed intensity, relative risk +estimation with cross-validated bandwidth selection, mark correlation +functions, segregation indices, mark dependence diagnostics, and +kernel estimates of covariate effects. Formal hypothesis tests of +random pattern (chi-squared, Kolmogorov-Smirnov, Monte Carlo, +Diggle-Cressie-Loosmore-Ford, Dao-Genton, two-stage Monte Carlo) and +tests for covariate effects (Cox-Berman-Waller-Lawson, +Kolmogorov-Smirnov, ANOVA) are also supported.") + (license license:gpl2+))) + (define-public r-spatstat-utils (package (name "r-spatstat-utils") @@ -29151,22 +29313,23 @@ user-level code from spatstat, except for the code for linear networks.") (define-public r-spatstat-linnet (package (name "r-spatstat-linnet") - (version "2.3-2") + (version "3.0-3") (source (origin (method url-fetch) (uri (cran-uri "spatstat.linnet" version)) (sha256 (base32 - "0y1py6x0xbw4ad3pjwcspi4ysgfh61f5fd79787zzgyyh2va8y4w")))) + "1y9crkj9sa1hnfsfkyyq8zv6fgafv07b8w0y01qps1rd6virnns0")))) (properties `((upstream-name . "spatstat.linnet"))) (build-system r-build-system) (propagated-inputs (list r-matrix - r-spatstat-core r-spatstat-data + r-spatstat-explore r-spatstat-geom + r-spatstat-model r-spatstat-random r-spatstat-sparse r-spatstat-utils)) @@ -29180,13 +29343,13 @@ for spatial data on a linear network.") (define-public r-spatstat-random (package (name "r-spatstat-random") - (version "2.2-0") + (version "3.0-1") (source (origin (method url-fetch) (uri (cran-uri "spatstat.random" version)) (sha256 - (base32 "0kb01s8k67ydcfqcnz3i55vpiksihh4xsg0w2p2bclxxkpdvpw25")))) + (base32 "1dp58dxw7ln9bsls9ssbb917qakvgr9nf2jci6zq31rv0rf8934k")))) (properties `((upstream-name . "spatstat.random"))) (build-system r-build-system) (propagated-inputs (list r-spatstat-data r-spatstat-geom r-spatstat-utils)) @@ -29208,19 +29371,20 @@ sampler).") (define-public r-spatstat (package (name "r-spatstat") - (version "2.3-4") + (version "3.0-2") (source (origin (method url-fetch) (uri (cran-uri "spatstat" version)) (sha256 (base32 - "1nlrp7660y68axlm4pczc5rxbdhbbac1ylh69azr4swj1gbzi82f")))) + "1k8qs5hsy0n4rh7ccp6bdnqgbw3fvjdp55bc0zhjqwbbhq8c0ax0")))) (properties `((upstream-name . "spatstat"))) (build-system r-build-system) (propagated-inputs - (list r-spatstat-core r-spatstat-data r-spatstat-geom - r-spatstat-linnet r-spatstat-random r-spatstat-utils)) + (list r-spatstat-data r-spatstat-explore r-spatstat-geom + r-spatstat-linnet r-spatstat-model r-spatstat-random + r-spatstat-utils)) (home-page "http://www.spatstat.org") (synopsis "Spatial Point Pattern analysis, model-fitting, simulation, tests") (description @@ -29998,14 +30162,14 @@ more.") (define-public r-workflows (package (name "r-workflows") - (version "1.1.0") + (version "1.1.2") (source (origin (method url-fetch) (uri (cran-uri "workflows" version)) (sha256 (base32 - "0l5v5qmgj1qv2bk50kv59k2nydh1r97hmqffyxkfpkh2121b2qaq")))) + "1wlgx7gl4h9szw9lr6ck9mnkrflah0wfbs56fialbl7wd5jv6hcg")))) (properties `((upstream-name . "workflows"))) (build-system r-build-system) (propagated-inputs @@ -30014,6 +30178,7 @@ more.") r-glue r-hardhat r-lifecycle + r-modelenv r-parsnip r-rlang r-tidyselect @@ -30172,18 +30337,18 @@ different palettes and includes both diverging and sequential types.") (define-public r-slider (package (name "r-slider") - (version "0.2.2") + (version "0.3.0") (source (origin (method url-fetch) (uri (cran-uri "slider" version)) (sha256 (base32 - "1vxk2bc33svwcki2j8zr5jcxswh27i0fqgzjw2a5a1pp9dh3fmd3")))) + "18gw0bxpbb00qcafmyv2avyj83s710hrj10x998ch9qbbyx1fsmw")))) (properties `((upstream-name . "slider"))) (build-system r-build-system) (propagated-inputs - (list r-ellipsis r-glue r-rlang r-vctrs r-warp)) + (list r-cli r-rlang r-vctrs r-warp)) (native-inputs (list r-knitr)) (home-page "https://github.com/DavisVaughan/slider") (synopsis "Sliding window functions") @@ -30275,18 +30440,19 @@ Design} (SFD) and to test their quality.") (define-public r-dials (package (name "r-dials") - (version "1.0.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (cran-uri "dials" version)) (sha256 (base32 - "0flpd7bxknsscv0gk6c7zz1aid9y3z6sibkvjp9zcyc5wnqldrvj")))) + "1ly675h6shfclikwg82x8vwvrb63qmklamrbsqxsa0npbafqgvpb")))) (properties `((upstream-name . "dials"))) (build-system r-build-system) (propagated-inputs - (list r-dicedesign + (list r-cli + r-dicedesign r-dplyr r-glue r-hardhat @@ -30634,14 +30800,14 @@ analysis using @code{dplyr}, @code{ggplot2}, and other Tidy tools.") (define-public r-parsnip (package (name "r-parsnip") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (cran-uri "parsnip" version)) (sha256 (base32 - "171crglp6ncy41iyb60gj6xp7zn2vnbffgbgpszrahf6j2hhxvw4")))) + "1s1d5zjwag5a13y67l7sz4zj1w0dv0k7vpb6inz4x87d5rgchfi1")))) (properties `((upstream-name . "parsnip"))) (build-system r-build-system) (propagated-inputs @@ -31002,14 +31168,14 @@ designs. Broman et al. (2018) <doi:10.1534/genetics.118.301595>.") (define-public r-seqminer (package (name "r-seqminer") - (version "8.4") + (version "8.5") (source (origin (method url-fetch) (uri (cran-uri "seqminer" version)) (sha256 (base32 - "1mbx1hw9dhgry7hhan43g6aiz2lyd5api7wxq3fwajyzjrc6p1g8")))) + "1ki8b4bgb3ky9y3x2g56h7i94lk345awgwkg10lys022jxhm30d7")))) (build-system r-build-system) (inputs (list zlib)) @@ -31024,14 +31190,14 @@ data (variant call format, e.g. VCF or BCF) or meta-analysis results in R.") (define-public r-maldiquant (package (name "r-maldiquant") - (version "1.21") + (version "1.22") (source (origin (method url-fetch) (uri (cran-uri "MALDIquant" version)) (sha256 (base32 - "1y1g3819ss06dry70kfhg2syddw71682qmzkcyppfsma6hhghw87")))) + "05fhr7945m0qxh7f5c4ax9v2k32s4n4v4xc1dm1crk1vbzha40bv")))) (properties `((upstream-name . "MALDIquant"))) (build-system r-build-system) (native-inputs @@ -31074,14 +31240,14 @@ data to rasters. It speeds up plotting of data with millions of points.") (define-public r-seuratobject (package (name "r-seuratobject") - (version "4.1.2") + (version "4.1.3") (source (origin (method url-fetch) (uri (cran-uri "SeuratObject" version)) (sha256 (base32 - "03bd4fazcafaf5mp37cf9w6bxm9zwrlxkrqm9bjdnwxm07slanba")))) + "1lw6v5mwq0sngjr33j99r5h42kaxlbq271a51xzkcnhnyra2fpaq")))) (properties `((upstream-name . "SeuratObject"))) (build-system r-build-system) (propagated-inputs @@ -31091,7 +31257,6 @@ data to rasters. It speeds up plotting of data with millions of points.") r-progressr r-rcpp r-rcppeigen - r-rgeos r-rlang r-sp)) (home-page "https://satijalab.org/seurat") @@ -31107,13 +31272,13 @@ other R users.") (define-public r-seurat (package (name "r-seurat") - (version "4.2.0") + (version "4.3.0") (source (origin (method url-fetch) (uri (cran-uri "Seurat" version)) (sha256 (base32 - "1vzb2k21nnzlky5dbf586wnixffz7wc9ncrpbgdw8md2kcmd58r2")))) + "0z7rzxi1gli56k50s6w1363ndw18wykgk5xmc3g7jhpphqxwpfky")))) (properties `((upstream-name . "Seurat"))) (build-system r-build-system) (propagated-inputs @@ -31141,6 +31306,7 @@ other R users.") r-pbapply r-plotly r-png + r-progressr r-rann r-rcolorbrewer r-rcpp @@ -31156,7 +31322,7 @@ other R users.") r-sctransform r-seuratobject r-shiny - r-spatstat-core + r-spatstat-explore r-spatstat-geom r-tibble r-uwot)) @@ -31412,14 +31578,14 @@ and Yu (2020), arXiv:2009.06182.") (define-public r-locpol (package (name "r-locpol") - (version "0.7-0") + (version "0.8.0") (source (origin (method url-fetch) (uri (cran-uri "locpol" version)) (sha256 (base32 - "1p915n0l09kbwkly627074jslxl01yssp1rf0c7sygvsw6sgy5lm")))) + "1bip9x45kdnwc14rvk3ckzfbs32yc2wiid1ypmbbin4mk7364zxk")))) (properties `((upstream-name . "locpol"))) (build-system r-build-system) (home-page @@ -31661,13 +31827,13 @@ performing ordinal regression.") (define-public r-paradox (package (name "r-paradox") - (version "0.10.0") + (version "0.11.0") (source (origin (method url-fetch) (uri (cran-uri "paradox" version)) (sha256 (base32 - "08h92wk8splf0w3rach9zbk3xz13phgcd1yybmgbs0sj4vx93whd")))) + "03v26qb0l8yhys7z5v2p9pwnc5wh26fvq4p0a0rh67qap6157dyx")))) (build-system r-build-system) (propagated-inputs (list r-backports r-checkmate r-data-table r-mlr3misc r-r6)) @@ -31682,13 +31848,13 @@ implemented as @code{R6} classes.") (define-public r-mlr3 (package (name "r-mlr3") - (version "0.14.0") + (version "0.14.1") (source (origin (method url-fetch) (uri (cran-uri "mlr3" version)) (sha256 (base32 - "0cnyby4947g1w0h45nd3ld5zr4k19xrwp565mq1hnqkjwmyjsgdj")))) + "192hvc0may73m396j2igwm46ym6f345w6q0q69kqhia58fp6h3nd")))) (build-system r-build-system) (propagated-inputs (list r-r6 @@ -31719,13 +31885,13 @@ computational operations, add-on packages provide additional functionality.") (define-public r-mlr3learners (package (name "r-mlr3learners") - (version "0.5.4") + (version "0.5.5") (source (origin (method url-fetch) (uri (cran-uri "mlr3learners" version)) (sha256 (base32 - "0sa2qjvhvjzsfssln9ah08zknzdcps1z28xzgkdfgi6dj25a0y3k")))) + "0m5s7jfqfh48gxllvi93wb5w2pzhzx8rcx5bz87lkmv1cnj65q84")))) (build-system r-build-system) (propagated-inputs (list r-checkmate @@ -31746,14 +31912,14 @@ vector machines, and gradient boosting.") (define-public r-bbotk (package (name "r-bbotk") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) (uri (cran-uri "bbotk" version)) (sha256 (base32 - "0ingnvfps46bysi8k2rqnvlh577bzk6fih6hcf20mjspdxx1as3v")))) + "0g3x3r1dkp9w57arpqc6iccvsawjdf7vlv8c27cb1r36b0z45fi6")))) (properties `((upstream-name . "bbotk"))) (build-system r-build-system) (propagated-inputs @@ -31776,13 +31942,13 @@ annealing.") (define-public r-mlr3tuning (package (name "r-mlr3tuning") - (version "0.15.0") + (version "0.17.0") (source (origin (method url-fetch) (uri (cran-uri "mlr3tuning" version)) (sha256 (base32 - "13p0gcnl8sxvn3ig526pscl63g1dx7l5i9sfzi2yyrddg8vgik4g")))) + "1dg02qyyymflgws47sly3b7wd8nj4i9vv7ybx42hgvd55al3smdp")))) (build-system r-build-system) (propagated-inputs (list r-bbotk @@ -32734,14 +32900,14 @@ and formatted text files with additional meta-data, such including @code{.csv}, (define-public r-packcircles (package (name "r-packcircles") - (version "0.3.4") + (version "0.3.5") (source (origin (method url-fetch) (uri (cran-uri "packcircles" version)) (sha256 (base32 - "05pv5c4k4njkr0xw6i6ksiy34hcyx2lbiqpv5gxw81yrkm0rxfyk")))) + "0m8ivgc5y1f9ramqw6sxb02ri6aqxz3av0l5csl32mdldrb126nc")))) (properties `((upstream-name . "packcircles"))) (build-system r-build-system) (propagated-inputs (list r-rcpp)) @@ -32758,14 +32924,14 @@ and formatted text files with additional meta-data, such including @code{.csv}, (define-public r-lwgeom (package (name "r-lwgeom") - (version "0.2-9") + (version "0.2-10") (source (origin (method url-fetch) (uri (cran-uri "lwgeom" version)) (sha256 (base32 - "1a0s15rliqd4zr6pyj76xln41f64s9yfwblk074342zvvbps5ck9")))) + "1gdvp2q4mzlg1kpjqxkiqxw1r5c4n5pxwvhdbzp89a3gyyjgh7zf")))) (properties `((upstream-name . "lwgeom"))) (build-system r-build-system) (inputs @@ -32784,14 +32950,14 @@ light-weight geometry library used by @url{http://postgis.net/,PostGIS}.") (define-public r-stars (package (name "r-stars") - (version "0.5-6") + (version "0.6-0") (source (origin (method url-fetch) (uri (cran-uri "stars" version)) (sha256 (base32 - "0qcli9bangpym4yp96yfibd5f4li5qw1622jnbvzfd9n8aakqhg0")))) + "0zwbsqp8bihcq5sjdw05pvbh4l9s68p0qw3ffkk0jphsipvy9za9")))) (properties `((upstream-name . "stars"))) (build-system r-build-system) (propagated-inputs @@ -33491,14 +33657,14 @@ Apache2.") (define-public r-exactextractr (package (name "r-exactextractr") - (version "0.9.0") + (version "0.9.1") (source (origin (method url-fetch) (uri (cran-uri "exactextractr" version)) (sha256 (base32 - "13di9s0lv9kdv2p3hp9ksrr0rh98z6m998pj5a1xq9zl6iakankh")))) + "18glacc1v0kj65g6fbqnhvgg83sr334chdfll7nhjnx44my3dkzh")))) (properties `((upstream-name . "exactextractr"))) (build-system r-build-system) (inputs (list geos)) @@ -35118,14 +35284,14 @@ be efficient and easy to use.") (define-public r-ggh4x (package (name "r-ggh4x") - (version "0.2.2") + (version "0.2.3") (source (origin (method url-fetch) (uri (cran-uri "ggh4x" version)) (sha256 (base32 - "11mskrby3gyjhkvnkcwl2ar1bdh4h45y48dfnm4kzgc7nwvdl3ia")))) + "0da5r8zfx1ixhk266byspfm2aifhm0jrvbk264xya712pxayiw4a")))) (properties `((upstream-name . "ggh4x"))) (build-system r-build-system) (propagated-inputs @@ -35151,14 +35317,14 @@ smaller collection of stats, geoms and axis guides.") (define-public r-gghalves (package (name "r-gghalves") - (version "0.1.3") + (version "0.1.4") (source (origin (method url-fetch) (uri (cran-uri "gghalves" version)) (sha256 (base32 - "1lj4c38fzxwg8gy57ymf00lqjdplb7v2a0lnd262c1d5cavqiws4")))) + "1qsxq2zbz4zcpqc7949apznn9f2c959jwwx010bl4gf2p6vchfx7")))) (properties `((upstream-name . "gghalves"))) (build-system r-build-system) (propagated-inputs @@ -35405,13 +35571,13 @@ calculate a dimension's unknown value from other dimensions' measurements.") (define-public r-sungeo (package (name "r-sungeo") - (version "0.2.288") + (version "0.2.292") (source (origin (method url-fetch) (uri (cran-uri "SUNGEO" version)) (sha256 (base32 - "0c8y0ngx1020rw2v00rxmq8syd72f41ckik5sg7gigg7d80gi31w")) + "1xav5by7sl21cwfg9m1ij1lz1kvdlqkkp2ah67rnj9vp4vk7nkfg")) (modules '((guix build utils))) (snippet '(begin ;; Fortunately, the package does not actually use @@ -35422,28 +35588,28 @@ calculate a dimension's unknown value from other dimensions' measurements.") (("rmapshaper,") "")) (substitute* "NAMESPACE" (("importFrom\\(rmapshaper,ms_dissolve\\) -") "")) - #t)))) +") "")))))) (properties `((upstream-name . "SUNGEO"))) (build-system r-build-system) - (propagated-inputs (list r-automap - r-cartogram - r-data-table - r-dplyr - r-fasterize - r-httr - r-jsonlite - r-measurements - r-packcircles - r-purrr - r-rann - r-raster - r-rcpp - r-rcurl - r-rlang - r-sf - r-sp - r-spdep)) + (propagated-inputs + (list r-automap + r-cartogram + r-data-table + r-dplyr + r-fasterize + r-httr + r-jsonlite + r-measurements + r-packcircles + r-purrr + r-rann + r-raster + r-rcpp + r-rcurl + r-rlang + r-sf + r-sp + r-spdep)) (home-page "https://github.com/zhukovyuri/SUNGEO/") (synopsis "Sub-National Geospatial Data Archive: Geoprocessing Toolkit") (description diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 792779a28f..431a37527c 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -3536,117 +3536,179 @@ the web.") (define-public rust-askama-escape-0.10 (package (name "rust-askama-escape") - (version "0.10.1") + (version "0.10.3") (source (origin (method url-fetch) (uri (crate-uri "askama_escape" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "1ys6wcrkpzygk6r93zd0rhinhy89rraarl0m4afwi023m70hihch")))) + (base32 "0hg3rz0cma5f6385z7qmqw3jbir76jndwd5s7dqfk92v9gil75v1")))) (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) + (arguments (list #:skip-build? #t)) (home-page "https://github.com/djc/askama") - (synopsis - "Optimized HTML escaping code, extracted from Askama") + (synopsis "HTML escaping extracted from Askama") (description - "This package provides a optimized HTML escaping code, extracted from -Askama.") + "This package provides an optimized HTML escaping library, +extracted from Askama.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-askama-shared-0.12 + (package + (name "rust-askama-shared") + (version "0.12.2") + (source (origin + (method url-fetch) + (uri (crate-uri "askama_shared" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1l4fycmw65zyvfabf672sj2pc0ilfcj0y6a0csygq1wa26a2nwmz")))) + (build-system cargo-build-system) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-askama-escape" ,rust-askama-escape-0.10) + ("rust-comrak" ,rust-comrak-0.12) + ("rust-humansize" ,rust-humansize-1) + ("rust-mime" ,rust-mime-0.3) + ("rust-mime-guess" ,rust-mime-guess-2) + ("rust-nom" ,rust-nom-7) + ("rust-num-traits" ,rust-num-traits-0.2) + ("rust-percent-encoding" + ,rust-percent-encoding-2) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-serde-yaml" ,rust-serde-yaml-0.8) + ("rust-syn" ,rust-syn-1) + ("rust-toml" ,rust-toml-0.5)))) + (home-page "https://github.com/djc/askama") + (synopsis "Shared code for Askama") + (description "This package provides shared code for Askama.") (license (list license:expat license:asl2.0)))) (define-public rust-askama-shared-0.11 (package + (inherit rust-askama-shared-0.12) (name "rust-askama-shared") (version "0.11.1") (source (origin (method url-fetch) (uri (crate-uri "askama_shared" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "1g3ksf5is0qwx9rd5lxn5gbvxfcpby5gl9cahg26wl1w1xzbg0i5")))) - (build-system cargo-build-system) + (base32 "1g3ksf5is0qwx9rd5lxn5gbvxfcpby5gl9cahg26wl1w1xzbg0i5")))) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-askama-escape" ,rust-askama-escape-0.10) - ("rust-humansize" ,rust-humansize-1) - ("rust-nom" ,rust-nom-6) - ("rust-num-traits" ,rust-num-traits-0.2) - ("rust-percent-encoding" - ,rust-percent-encoding-2) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-serde" ,rust-serde-1) - ("rust-serde-derive" ,rust-serde-derive-1) - ("rust-serde-json" ,rust-serde-json-1) - ("rust-serde-yaml" ,rust-serde-yaml-0.8) - ("rust-syn" ,rust-syn-1) - ("rust-toml" ,rust-toml-0.5)))) - (home-page "https://github.com/djc/askama") - (synopsis "Shared code for Askama") - (description "This package provides a shared code for Askama.") - (license (list license:expat license:asl2.0)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-askama-escape" ,rust-askama-escape-0.10) + ("rust-humansize" ,rust-humansize-1) + ("rust-nom" ,rust-nom-6) + ("rust-num-traits" ,rust-num-traits-0.2) + ("rust-percent-encoding" + ,rust-percent-encoding-2) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-serde" ,rust-serde-1) + ("rust-serde-derive" ,rust-serde-derive-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-serde-yaml" ,rust-serde-yaml-0.8) + ("rust-syn" ,rust-syn-1) + ("rust-toml" ,rust-toml-0.5)))))) -(define-public rust-askama-derive-0.10 +(define-public rust-askama-derive-0.11 (package (name "rust-askama-derive") - (version "0.10.5") + (version "0.11.2") (source (origin (method url-fetch) (uri (crate-uri "askama_derive" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "08jmqb4lq5cvfjjcq7kjk5q4589zlsvc3ld35yfjyf4hqb22aafa")))) + (base32 "0wbb5l1x1bx8x8vvz4ayw196l9y64mi3vrmxm7pn8wmlx3k8ggw7")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-askama-shared" ,rust-askama-shared-0.11) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-syn" ,rust-syn-1)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-askama-shared" ,rust-askama-shared-0.12) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-syn" ,rust-syn-1)))) (home-page "https://github.com/djc/askama") (synopsis "Procedural macro package for Askama") (description - "This package provide procedural macro package for Askama.") + "This package provide the procedural macro package for +Askama.") (license (list license:expat license:asl2.0)))) -(define-public rust-askama-0.10 +(define-public rust-askama-derive-0.10 (package - (name "rust-askama") + (inherit rust-askama-derive-0.11) + (name "rust-askama-derive") (version "0.10.5") + (source (origin + (method url-fetch) + (uri (crate-uri "askama_derive" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "08jmqb4lq5cvfjjcq7kjk5q4589zlsvc3ld35yfjyf4hqb22aafa")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-askama-shared" ,rust-askama-shared-0.11) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-syn" ,rust-syn-1)))))) + +(define-public rust-askama-0.11 + (package + (name "rust-askama") + (version "0.11.1") (source (origin (method url-fetch) (uri (crate-uri "askama" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0d1iwywdgw3nba2iphayw8sfm3s8m9izwnhfar707qa7ds5p766j")))) + (base32 "0f81mzccdadryzaf2dbad1araq4nadp9mssyvdvv31hj6w7z367v")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-askama-derive" ,rust-askama-derive-0.10) - ("rust-askama-escape" ,rust-askama-escape-0.10) - ("rust-askama-shared" ,rust-askama-shared-0.11) - ("rust-mime" ,rust-mime-0.3) - ("rust-mime-guess" ,rust-mime-guess-2)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-askama-derive" ,rust-askama-derive-0.11) + ("rust-askama-escape" ,rust-askama-escape-0.10) + ("rust-askama-shared" ,rust-askama-shared-0.12)))) (home-page "https://github.com/djc/askama") - (synopsis - "Type-safe, compiled Jinja-like templates for Rust") + (synopsis "Type-safe, compiled Jinja-like templates for Rust") (description - "This package provides a type-safe, compiled Jinja-like templates for Rust.") + "This package provides a type-safe, compiled Jinja-like template +library for Rust.") (license (list license:expat license:asl2.0)))) +(define-public rust-askama-0.10 + (package + (inherit rust-askama-0.11) + (name "rust-askama") + (version "0.10.5") + (source (origin + (method url-fetch) + (uri (crate-uri "askama" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0d1iwywdgw3nba2iphayw8sfm3s8m9izwnhfar707qa7ds5p766j")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-askama-derive" ,rust-askama-derive-0.10) + ("rust-askama-escape" ,rust-askama-escape-0.10) + ("rust-askama-shared" ,rust-askama-shared-0.11) + ("rust-mime" ,rust-mime-0.3) + ("rust-mime-guess" ,rust-mime-guess-2)))))) + (define-public rust-asn1-derive-0.8 (package (name "rust-asn1-derive") @@ -4607,40 +4669,43 @@ futures.") (define-public rust-async-std-1 (package (name "rust-async-std") - (version "1.9.0") + (version "1.12.0") (source (origin (method url-fetch) (uri (crate-uri "async-std" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0h834fni3npsggjqin8386d2fn11m2z42dr1ymq0aknppa2ndw6r")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-async-attributes" ,rust-async-attributes-1) - ("rust-async-channel" ,rust-async-channel-1) - ("rust-async-global-executor" ,rust-async-global-executor-2) - ("rust-async-io" ,rust-async-io-1) - ("rust-async-lock" ,rust-async-lock-2) - ("rust-async-process" ,rust-async-process-1) - ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8) - ("rust-futures-channel" ,rust-futures-channel-0.3) - ("rust-futures-core" ,rust-futures-core-0.3) - ("rust-futures-io" ,rust-futures-io-0.3) - ("rust-futures-lite" ,rust-futures-lite-1) - ("rust-gloo-timers" ,rust-gloo-timers-0.2) - ("rust-kv-log-macro" ,rust-kv-log-macro-1) - ("rust-log" ,rust-log-0.4) - ("rust-memchr" ,rust-memchr-2) - ("rust-num-cpus" ,rust-num-cpus-1) - ("rust-once-cell" ,rust-once-cell-1) - ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) - ("rust-pin-utils" ,rust-pin-utils-0.1) - ("rust-slab" ,rust-slab-0.4) - ("rust-surf" ,rust-surf-2) - ("rust-wasm-bindgen-futures" ,rust-wasm-bindgen-futures-0.4)))) + (base32 "0pbgxhyb97h4n0451r26njvr20ywqsbm6y1wjllnp4if82s5nmk2")))) + (build-system cargo-build-system) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-async-attributes" ,rust-async-attributes-1) + ("rust-async-channel" ,rust-async-channel-1) + ("rust-async-global-executor" ,rust-async-global-executor-2) + ("rust-async-io" ,rust-async-io-1) + ("rust-async-lock" ,rust-async-lock-2) + ("rust-async-process" ,rust-async-process-1) + ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8) + ("rust-femme" ,rust-femme-2) + ("rust-futures-channel" ,rust-futures-channel-0.3) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-futures-io" ,rust-futures-io-0.3) + ("rust-futures-lite" ,rust-futures-lite-1) + ("rust-gloo-timers" ,rust-gloo-timers-0.2) + ("rust-kv-log-macro" ,rust-kv-log-macro-1) + ("rust-log" ,rust-log-0.4) + ("rust-memchr" ,rust-memchr-2) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) + ("rust-pin-utils" ,rust-pin-utils-0.1) + ("rust-rand-xorshift" ,rust-rand-xorshift-0.3) + ("rust-slab" ,rust-slab-0.4) + ("rust-surf" ,rust-surf-2) + ("rust-wasm-bindgen-futures" + ,rust-wasm-bindgen-futures-0.4) + ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3)))) (home-page "https://async.rs") (synopsis "Async version of the Rust standard library") (description @@ -4998,22 +5063,19 @@ they're not available.") (define-public rust-autocfg-1 (package (name "rust-autocfg") - (version "1.0.1") + (version "1.1.0") (source (origin (method url-fetch) (uri (crate-uri "autocfg" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0jj6i9zn4gjl03kjvziqdji6rwx8ykz8zk2ngpc331z2g3fk3c6d")))) + (base32 "1ylp3cb47ylzabimazvbz9ms6ap784zhb6syaz6c1jqpmcmq0s6l")))) (build-system cargo-build-system) (home-page "https://github.com/cuviper/autocfg") - (synopsis - "Automatic cfg for Rust compiler features") + (synopsis "Automatic configuration for Rust compiler features") (description - "Automatic cfg for Rust compiler features.") + "This package utomatically configures Rust compiler features.") (license (list license:asl2.0 license:expat)))) (define-public rust-autocfg-0.1 @@ -10455,70 +10517,106 @@ traits.") ("rust-libc" ,rust-libc-0.2) ("rust-libloading" ,rust-libloading-0.3)))))) +(define-public rust-clap-conf-0.1 + (package + (name "rust-clap-conf") + (version "0.1.5") + (source + (origin + (method url-fetch) + (uri (crate-uri "clap_conf" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1n29wr6ns660hi63mc30zvs7dhidaycw35am9spzknsal3nrs0sn")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-anyhow" ,rust-anyhow-1) + ("rust-clap" ,rust-clap-2) + ("rust-serde" ,rust-serde-1) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-toml" ,rust-toml-0.5)))) + (home-page "https://github.com/storyfeet/clap_conf") + (synopsis + "Library to unify commandline arguments, config files and environment variables") + (description + "This package provides a library to unify commandline arguments with config +files and environment variables. And make it easier for users to tell your program +how to behave across the three main input sources") + (license license:expat))) + (define-public rust-clap-derive-3 (package (name "rust-clap-derive") - (version "3.0.0-beta.2") + (version "3.2.18") (source (origin (method url-fetch) (uri (crate-uri "clap_derive" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "18cn82jhcha7m0nkpi1a03jx8k7aaq5kxfcxnsqpaa8ih5dp23rp")))) + (base32 "0r9az0cl33xx0i9g18l56l3vd5ayjvcflvza2gdf8jwcab78n37a")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-heck" ,rust-heck-0.3) - ("rust-proc-macro-error" - ,rust-proc-macro-error-1) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-heck" ,rust-heck-0.4) + ("rust-proc-macro-error" + ,rust-proc-macro-error-1) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))) (home-page "https://clap.rs/") - (synopsis - "Parse command line argument by defining a struct, derive crate") + (synopsis "Procedural macro crate for Clap") (description - "This package provides a parse command line argument by defining a struct, -derive crate.") + "This package provides the procedural macro crate for Clap.") (license (list license:expat license:asl2.0)))) (define-public rust-clap-3 (package (name "rust-clap") - (version "3.0.0-beta.2") + (version "3.2.23") (source (origin (method url-fetch) (uri (crate-uri "clap" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0hm1kivw6190rxbfqhdr4hqwlrijvwh90i3d9dyyw0d5k0chdlab")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-atty" ,rust-atty-0.2) - ("rust-bitflags" ,rust-bitflags-1) - ("rust-clap-derive" ,rust-clap-derive-3) - ("rust-indexmap" ,rust-indexmap-1) - ("rust-os-str-bytes" ,rust-os-str-bytes-2) - ("rust-strsim" ,rust-strsim-0.10) - ("rust-termcolor" ,rust-termcolor-1) - ("rust-terminal-size" ,rust-terminal-size-0.1) - ("rust-textwrap" ,rust-textwrap-0.12) - ("rust-unicode-width" ,rust-unicode-width-0.1) - ("rust-vec-map" ,rust-vec-map-0.8) - ("rust-yaml-rust" ,rust-yaml-rust-0.4)) - #:cargo-development-inputs - (("rust-criterion" ,rust-criterion-0.3) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-regex" ,rust-regex-1) - ("rust-version-sync" ,rust-version-sync-0.8)))) + (base32 "19bkwkj49ha7mlip0gxsqb9xmd3jpr7ghvcx1hkx6icqrd2mqrbi")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-test-flags + '(list "--release" "--" + ;; thread 'main' panicked at 'assertion failed: `(left == right)` + ;; left: `"_AnonymousValueParser(ValueParser::other(TypeId { t: 3349385470118513432 }))"`, + ;; right: `"_AnonymousValueParser(ValueParser::other(usize))"`', src/builder/value_parser.rs:18:1 + "--skip=builder::value_parser::value_parser") + #:cargo-inputs + `(("rust-atty" ,rust-atty-0.2) + ("rust-backtrace" ,rust-backtrace-0.3) + ("rust-bitflags" ,rust-bitflags-1) + ("rust-clap-derive" ,rust-clap-derive-3) + ("rust-clap-lex" ,rust-clap-lex-0.2) + ("rust-indexmap" ,rust-indexmap-1) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-regex" ,rust-regex-1) + ("rust-strsim" ,rust-strsim-0.10) + ("rust-termcolor" ,rust-termcolor-1) + ("rust-terminal-size" ,rust-terminal-size-0.2) + ("rust-textwrap" ,rust-textwrap-0.16) + ("rust-unicase" ,rust-unicase-2) + ("rust-yaml-rust" ,rust-yaml-rust-0.4)) + #:cargo-development-inputs + `(("rust-humantime" ,rust-humantime-2) + ("rust-regex" ,rust-regex-1) + ("rust-rustversion" ,rust-rustversion-1) + ("rust-shlex" ,rust-shlex-1) + ("rust-snapbox" ,rust-snapbox-0.2) + ("rust-static-assertions" ,rust-static-assertions-1) + ("rust-trybuild" ,rust-trybuild-1) + ("rust-trycmd" ,rust-trycmd-0.13)))) (home-page "https://clap.rs/") (synopsis "Command Line Argument Parser") (description @@ -10557,6 +10655,86 @@ Command Line Argument Parser.") ("rust-version-sync" ,rust-version-sync-0.8)))) (license license:expat))) +(define-public rust-clap-complete-3 + (package + (name "rust-clap-complete") + (version "3.2.5") + (source (origin + (method url-fetch) + (uri (crate-uri "clap-complete" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1n3whjkznszrxif1hzvql7hav7agq85j456fmwjwwi9cjq52wyiz")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-clap" ,rust-clap-3) + ("rust-clap-lex" ,rust-clap-lex-0.2) + ("rust-is-executable" ,rust-is-executable-1) + ("rust-os-str-bytes" ,rust-os-str-bytes-6) + ("rust-pathdiff" ,rust-pathdiff-0.2) + ("rust-shlex" ,rust-shlex-1) + ("rust-unicode-xid" ,rust-unicode-xid-0.2)) + #:cargo-development-inputs + `(("rust-clap" ,rust-clap-3) + ("rust-pretty-assertions" ,rust-pretty-assertions-1) + ("rust-snapbox" ,rust-snapbox-0.2) + ("rust-trycmd" ,rust-trycmd-0.13)))) + (home-page "https://github.com/clap-rs/clap/tree/master/clap_complete") + (synopsis "Generate shell completion scripts for Clap CLIs") + (description + "This package provides generation of shell completion scripts +for programs written with Clap.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-clap-complete-fig-3 + (package + (name "rust-clap-complete-fig") + (version "3.2.4") + (source (origin + (method url-fetch) + (uri (crate-uri "clap-complete-fig" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1fb4965w8wyrcwq35ywgx4mzfsv2cqba73mdlvmp6ii1q70b8dzd")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-clap" ,rust-clap-3) + ("rust-clap-complete" ,rust-clap-complete-3)) + #:cargo-development-inputs + `(("rust-snapbox" ,rust-snapbox-0.2)))) + (home-page "https://github.com/clap-rs/clap/tree/master/clap_complete_fig") + (synopsis "Generate Fig completion scripts for Clap CLIs") + (description + "This package provides a generator library for Rust used +with Clap to generate Fig completion scripts.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-clap-lex-0.2 + (package + (name "rust-clap-lex") + (version "0.2.4") + (source (origin + (method url-fetch) + (uri (crate-uri "clap-lex" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1ib1a9v55ybnaws11l63az0jgz5xiy24jkdgsmyl7grcm3sz4l18")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-os-str-bytes" ,rust-os-str-bytes-6)))) + (home-page "https://github.com/clap-rs/clap/tree/master/clap_lex") + (synopsis "Command line parser for Clap") + (description + "This package provides a parser for command line options. As opposed to a +declarative parser, @code{rust-clap-lex} processes arguments as a stream of tokens.") + (license (list license:expat license:asl2.0)))) + (define-public rust-clearscreen-1 (package (name "rust-clearscreen") @@ -11449,7 +11627,7 @@ literals.") (define-public rust-compiler-builtins-0.1 (package (name "rust-compiler-builtins") - (version "0.1.26") + (version "0.1.84") (source (origin (method url-fetch) @@ -11457,13 +11635,14 @@ literals.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1rhj6ccmfkh9gcxnxgjq4fg257yi4f9325nfzsphbmxwkrg06sq3")))) + "040bzrhwyqm75yp94vdyfyljg3d25y3d3lb9vipx02p9lqf2r6wq")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1) - ("rust-cc" ,rust-cc-1)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-rustc-std-workspace-core" + ,rust-rustc-std-workspace-core-1) + ("rust-cc" ,rust-cc-1)))) (home-page "https://github.com/rust-lang/compiler-builtins") (synopsis "Compiler intrinsics used by the Rust compiler") (description @@ -11552,6 +11731,42 @@ harness.") ("rust-rustc-serialize" ,rust-rustc-serialize-0.3) ("rust-tempdir" ,rust-tempdir-0.3)))))) +(define-public rust-comrak-0.12 + (package + (name "rust-comrak") + (version "0.12.1") + (source (origin + (method url-fetch) + (uri (crate-uri "comrak" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0x2f1qz64i3ni7sk87whc3bvp27ps1wxn0ia47qlvsrk39p4fg7z")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-clap" ,rust-clap-2) + ("rust-entities" ,rust-entities-1) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-pest" ,rust-pest-2) + ("rust-pest-derive" ,rust-pest-derive-2) + ("rust-regex" ,rust-regex-1) + ("rust-shell-words" ,rust-shell-words-1) + ("rust-syntect" ,rust-syntect-4) + ("rust-twoway" ,rust-twoway-0.2) + ("rust-typed-arena" ,rust-typed-arena-1) + ("rust-unicode-categories" ,rust-unicode-categories-0.1) + ("rust-xdg" ,rust-xdg-2)) + #:cargo-development-inputs + `(("rust-propfuzz" ,rust-propfuzz-0.0.1) + ("rust-timebomb" ,rust-timebomb-0.1)))) + (home-page "https://github.com/kivikakk/comrak") + (synopsis "GitHub flavoured Markdown parser and formatter") + (description + "This package provides a 100% CommonMark-compatible GitHub +flavoured Markdown parser and formatter written in Rust.") + (license license:bsd-2))) + (define-public rust-concat-idents-1 (package (name "rust-concat-idents") @@ -13825,6 +14040,32 @@ number ``crunching``.") "@code{roxmltree} represents an XML 1.0 document as a read-only tree.") (license (list license:expat license:asl2.0)))) +(define-public rust-rt-format-0.3 + (package + (name "rust-rt-format") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "rt-format" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1qjjwh9ny95xck1kp99gi6hfm9glrx54jx8npnj6yccxc7p7q225")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-lazy-static" ,rust-lazy-static-1) + ("rust-regex" ,rust-regex-1)))) + (home-page "https://github.com/vstojkovic/rt-format") + (synopsis "Runtime equivalent of the Rust format! macro") + (description "This package provides a runtime equivalent of the Rust +format! macro. It allows formatting strings like the format! macro, with the +formatting string and the arguments provided at runtime. This crate supports +all the formatting features of the format! macro, except for the fill +character.") + (license license:asl2.0))) + (define-public rust-rust-crypto-0.2 (package (name "rust-rust-crypto") @@ -14468,23 +14709,21 @@ use with sct crate.") (define-public rust-ctor-0.1 (package (name "rust-ctor") - (version "0.1.15") + (version "0.1.26") (source (origin (method url-fetch) (uri (crate-uri "ctor" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "09x2my9x33srjdip8yf4lm5gq7xqis2694abvpa64r60pajqm19r")))) + (base32 "15m0wqhv12p25xkxz5dxvg23r7a6bkh7p8zi1cdhgswjhdl028vd")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-syn" ,rust-syn-1) - ("rust-quote" ,rust-quote-1)) - #:cargo-development-inputs - (("rust-libc-print" ,rust-libc-print-0.1)))) + (list #:cargo-inputs + `(("rust-syn" ,rust-syn-1) + ("rust-quote" ,rust-quote-1)) + #:cargo-development-inputs + `(("rust-libc-print" ,rust-libc-print-0.1)))) (home-page "https://github.com/mmastrac/rust-ctor") (synopsis "__attribute__((constructor)) for Rust") (description @@ -18781,6 +19020,24 @@ Standard.") order.") (license license:expat))) +(define-public rust-enquote-1 + (package + (name "rust-enquote") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (crate-uri "enquote" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0clrjghlfkkb7sndabs5wch0fz2nif6nj4b117s8kqxx3nqnrhq6")))) + (build-system cargo-build-system) + (home-page "https://github.com/reujab/enquote") + (synopsis "Rust library that quotes, unquotes, and unescapes strings") + (description "This package provides a Rust library quotes, unquotes, and +unescapes strings.") + (license license:unlicense))) + (define-public rust-entities-1 (package (name "rust-entities") @@ -19273,27 +19530,27 @@ deserialized from environment variables.") (define-public rust-errno-0.2 (package (name "rust-errno") - (version "0.2.4") + (version "0.2.8") (source (origin (method url-fetch) (uri (crate-uri "errno" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0kn8mlygxxr02cm97401nppd2dbkwsalpcbai67rh6yh3rh73862")))) + "18cnqgk8r6lq1n5cfy3bryiyz9zkqr10dxj49sa3fkzfamih8fgn")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-errno-dragonfly" ,rust-errno-dragonfly-0.1) - ("rust-libc" ,rust-libc-0.2) - ("rust-winapi" ,rust-winapi-0.3)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-errno-dragonfly" ,rust-errno-dragonfly-0.1) + ("rust-libc" ,rust-libc-0.2) + ("rust-winapi" ,rust-winapi-0.3)))) (home-page "https://github.com/lambda-fairy/rust-errno") (synopsis "Cross-platform interface to the @code{errno} variable") (description - "Cross-platform interface to the @code{errno} variable.") + "This package provides a cross-platform interface to the +@code{errno} variable.") (license (list license:asl2.0 license:expat)))) (define-public rust-errno-dragonfly-0.1 @@ -21419,6 +21676,30 @@ values to other threads.") duplication.") (license (list license:expat license:asl2.0)))) +(define-public rust-fs-err-2 + (package + (name "rust-fs-err") + (version "2.9.0") + (source (origin + (method url-fetch) + (uri (crate-uri "fs-err" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ha5ysh5jz2hxlhmydc82pjcycps6ips4jyni41jy8cr48jzli88")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-tokio" ,rust-tokio-1)) + #:cargo-development-inputs + `(("rust-serde-json" ,rust-serde-json-1)))) + (home-page "https://github.com/andrewhickman/fs-err") + (synopsis "@code{std::fs} with more helpful errors") + (description + "This package provides an alternative to @code{std::fs} with +more helpful error messages.") + (license (list license:expat license:asl2.0)))) + (define-public rust-fs-extra-1 (package (name "rust-fs-extra") @@ -26873,6 +27154,145 @@ let} expressions.") ignore files such as @file{.gitignore} against file paths.") (license (list license:unlicense license:expat)))) +(define-public rust-im-rc-15 + (package + (name "rust-im-rc") + (version "15.0.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "im-rc" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0gsgcs1nn38r40973l6zr1v4d85f4s9qyl32n5f20jphf5z9ba1w")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-arbitrary" ,rust-arbitrary-0.4) + ("rust-bitmaps" ,rust-bitmaps-2) + ("rust-proptest" ,rust-proptest-0.9) + ("rust-quickcheck" ,rust-quickcheck-0.9) + ("rust-rand-core" ,rust-rand-core-0.5) + ("rust-rand-xoshiro" ,rust-rand-xoshiro-0.4) + ("rust-rayon" ,rust-rayon-1) + ("rust-refpool" ,rust-refpool-0.4) + ("rust-serde" ,rust-serde-1) + ("rust-sized-chunks" ,rust-sized-chunks-0.6) + ("rust-typenum" ,rust-typenum-1) + ("rust-version-check" ,rust-version-check-0.9)) + #:cargo-development-inputs + (("rust-metrohash" ,rust-metrohash-1) + ("rust-pretty-assertions" ,rust-pretty-assertions-0.6) + ("rust-proptest" ,rust-proptest-0.9) + ("rust-proptest-derive" ,rust-proptest-derive-0.1) + ("rust-rand" ,rust-rand-0.7) + ("rust-rayon" ,rust-rayon-1) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-version-check" ,rust-version-check-0.9)))) + (home-page "https://docs.rs/crate/im") + (synopsis "Fast immutable collection datatypes for Rust") + (description "@code{im-rc} provides immutable collection datatypes for +Rust that are very fast but not thread-safe. A thread-safe (and slower) +variant of this library is available separately as @code{im}.") + (license license:mpl2.0))) + +(define-public rust-impl-codec-0.5 + (package + (name "rust-impl-codec") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "impl-codec" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0hy4svffnw9idy9ipp0hkmbzk97fl583akqwyqmvbqy8qgzbs7hn")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-parity-scale-codec" ,rust-parity-scale-codec-2)))) + (home-page "https://github.com/paritytech/parity-common") + (synopsis "Parity Codec serialization support for uint and fixed hash") + (description "This package provides Parity Codec serialization support +for uint and fixed hash.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-impl-rlp-0.3 + (package + (name "rust-impl-rlp") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "impl-rlp" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "021869d5s47ili9kmhm9y80qpsbf0wwdap14qzfpb84pjbw210pj")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-rlp" ,rust-rlp-0.5)))) + (home-page "https://github.com/paritytech/parity-common") + (synopsis "RLP serialization support for uint and fixed hash") + (description "This package provides RLP serialization support for uint +and fixed hash.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-impl-serde-0.3 + (package + (name "rust-impl-serde") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "impl-serde" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0p2zy8ikdxd28s3vb22nwqgnwjn8gx920sr2svdn93j3yd1g0la5")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-serde" ,rust-serde-1)) + #:cargo-development-inputs + (("rust-criterion" ,rust-criterion-0.3) + ("rust-serde-derive" ,rust-serde-derive-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-uint" ,rust-uint-0.9)))) + (home-page "https://github.com/paritytech/parity-common") + (synopsis "Serde serialization support for uint and fixed hash") + (description "This package provides @code{serde} serialization support +for @code{uint} and @code{fixed_hash}.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-impl-trait-for-tuples-0.2 + (package + (name "rust-impl-trait-for-tuples") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "impl-trait-for-tuples" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1vii634v1zvb680h28md42xpdrj1j1d50ix3dga95fxkql8cpnnm")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #false ; Some tests fail. Unstable compiler messages? + #:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)) + #:cargo-development-inputs + (("rust-trybuild" ,rust-trybuild-1)))) + (home-page "https://github.com/bkchr/impl-trait-for-tuples") + (synopsis "Attribute macro to implement a trait for tuples") + (description "This package provides attribute macro to implement +a trait for tuples.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-include-flate-0.1 (package (name "rust-include-flate") @@ -27007,6 +27427,34 @@ removals, and it allows lookup of its elements by either hash table key or numerical index. A corresponding hash set type is also provided.") (license (list license:asl2.0 license:expat)))) +(define-public rust-indicatif-0.16 + (package + (name "rust-indicatif") + (version "0.16.2") + (source (origin + (method url-fetch) + (uri (crate-uri "indicatif" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "06xyjs0kzqiqkjn60n1miwm2l87sa9p2lmzz0ymq18y72z37s81d")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-console" ,rust-console-0.15) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-number-prefix" ,rust-number-prefix-0.4) + ("rust-rayon" ,rust-rayon-1) + ("rust-regex" ,rust-regex-1) + ("rust-unicode-segmentation" ,rust-unicode-segmentation-1) + ("rust-unicode-width" ,rust-unicode-width-0.1)))) + (home-page "https://github.com/console-rs/indicatif") + (synopsis "Progress bar and cli reporting library for Rust") + (description + "This package provides a progress bar and cli reporting library for +Rust.") + (license license:expat))) + (define-public rust-indicatif-0.15 (package (name "rust-indicatif") @@ -27149,6 +27597,27 @@ signature.") (description "This package provides DEFLATE decoding.") (license license:expat))) +(define-public rust-inflections-1 + (package + (name "rust-inflections") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "inflections" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0yl3gas612q25c72lwf04405i87yxr02vgv3ckcnz2fyvhpmhmx2")))) + (build-system cargo-build-system) + (home-page "https://docs.rs/inflections") + (synopsis "Inflection transformation library for changing properties of words") + (description + "High performance inflection transformation library for changing properties of +words like the case.") + (license license:expat))) + (define-public rust-inflector-0.11 (package (name "rust-inflector") @@ -27603,6 +28072,36 @@ versions < 0.2.") ;; Either license can be chosen at the users option. (license (list license:expat license:asl2.0)))) +(define-public rust-io-lifetimes-0.7 + (package + (name "rust-io-lifetimes") + (version "0.7.5") + (source (origin + (method url-fetch) + (uri (crate-uri "io-lifetimes" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0x10ak2iy4p24g7bnp1rfrq6aqddjlzkykgwjdayi7nl97wmxkjr")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-async-std" ,rust-async-std-1) + ("rust-fs-err" ,rust-fs-err-2) + ("rust-libc" ,rust-libc-0.2) + ("rust-mio" ,rust-mio-0.8) + ("rust-os-pipe" ,rust-os-pipe-1) + ("rust-socket2" ,rust-socket2-0.4) + ("rust-tokio" ,rust-tokio-1) + ("rust-windows-sys" ,rust-windows-sys-0.42)))) + (home-page "https://github.com/sunfishcode/io-lifetimes") + (synopsis "Low-level I/O ownership and borrowing library") + (description + "This package provides a low-level I/O ownership and borrowing +library.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-iovec-0.1 (package (name "rust-iovec") @@ -29390,18 +29889,18 @@ parser in Rust.") (define-public rust-libc-0.2 (package (name "rust-libc") - (version "0.2.112") + (version "0.2.137") (source (origin (method url-fetch) (uri (crate-uri "libc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "09bik7pcck869kfr5i9hjhnck0mzpd9v0ijxbqnh8fja6rzx20qv")))) + (base32 "12dz2lk4a7lm03k079n2rkm1l6cpdhvy6nrngbfprzrv19icqzzw")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1)))) + (list #:cargo-inputs + `(("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1)))) (home-page "https://github.com/rust-lang/libc") (synopsis "Raw FFI bindings to platform libraries like libc") (description @@ -30484,6 +30983,33 @@ in plain text. It is smart about where a link ends, such as with trailing punctuation.") (license (list license:expat license:asl2.0)))) +(define-public rust-linux-raw-sys-0.0.46 + (package + (name "rust-linux-raw-sys") + (version "0.0.46") + (source (origin + (method url-fetch) + (uri (crate-uri "linux-raw-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0kc528mp2fp8m96csm6rmwg0ac7zbgf36k19ml4a4c9j6xn4blnl")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-compiler-builtins" ,rust-compiler-builtins-0.1) + ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1)) + #:cargo-development-inputs + `(("rust-libc" ,rust-libc-0.2) + ("rust-static-assertions" ,rust-static-assertions-1)))) + (home-page "https://github.com/sunfishcode/linux-raw-sys") + (synopsis "Generated bindings for Linux APIs") + (description + "This package provides automatically generated bindings for +Linux userspace APIs.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-libssh2-sys-0.2 (package (name "rust-libssh2-sys") @@ -32195,14 +32721,15 @@ file IO.") (define-public rust-memoffset-0.6 (package (name "rust-memoffset") - (version "0.6.4") + (version "0.6.5") (source (origin (method url-fetch) (uri (crate-uri "memoffset" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1yfx2v8kmkhr2d4gwk8ghihdwg73vapn3vvp0im06f0kgx8crb2r")))) + (base32 + "1kkrzll58a3ayn5zdyy9i1f1v3mx0xgl29x0chq614zazba638ss")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs @@ -32229,8 +32756,7 @@ for Rust structs.") (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "1fblqzc25hfaym8m0pj112s66pqq87avvaqm5hp5rskib2w9w63m")))) + (base32 "1fblqzc25hfaym8m0pj112s66pqq87avvaqm5hp5rskib2w9w63m")))) (arguments `(#:skip-build? #t #:cargo-inputs @@ -32938,25 +33464,24 @@ streaming API for miniz_oxide.") (define-public rust-mio-0.8 (package (name "rust-mio") - (version "0.8.0") + (version "0.8.5") (source (origin (method url-fetch) (uri (crate-uri "mio" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1cmgipv6k536xf0a6qd359wnpxg0pfrpkr9bhy8zqh8bza2jy9xs")))) + (base32 "1pjqn6jvmqkgyykf2z5danqka1rfs3il7w4d0qin8yi062y35mz5")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-libc" ,rust-libc-0.2) - ("rust-log" ,rust-log-0.4) - ("rust-miow" ,rust-miow-0.3) - ("rust-ntapi" ,rust-ntapi-0.3) - ("rust-winapi" ,rust-winapi-0.3)) - #:cargo-development-inputs - (("rust-env-logger" ,rust-env-logger-0.8) - ("rust-rand" ,rust-rand-0.8)))) + (list #:cargo-inputs + `(("rust-libc" ,rust-libc-0.2) + ("rust-log" ,rust-log-0.4) + ("rust-wasi" ,rust-wasi-0.11) + ("rust-windows-sys" ,rust-windows-sys-0.42)) + #:cargo-development-inputs + `(("rust-env-logger" ,rust-env-logger-0.8) + ("rust-rand" ,rust-rand-0.8)))) (home-page "https://github.com/tokio-rs/mio") (synopsis "Lightweight non-blocking IO") (description @@ -34892,26 +35417,25 @@ nitrokey crate and others using it.") nitrokey-test crate.") (license license:gpl3+))) -(define-public rust-nix-0.23 +(define-public rust-nix-0.24 (package (name "rust-nix") - (version "0.23.1") + (version "0.24.2") (source (origin (method url-fetch) (uri (crate-uri "nix" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1iimixk7y2qk0jswqich4mkd8kqyzdghcgy6203j8fmxmhbn71lz")))) + (base32 "1z35n1bhzslr7zawy2c0fl90jjy9l5b3lnsidls3908vfk0xnp0r")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-bitflags" ,rust-bitflags-1) - ("rust-cc" ,rust-cc-1) - ("rust-cfg-if" ,rust-cfg-if-1) - ("rust-libc" ,rust-libc-0.2) - ("rust-memoffset" ,rust-memoffset-0.6)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-bitflags" ,rust-bitflags-1) + ("rust-cfg-if" ,rust-cfg-if-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-memoffset" ,rust-memoffset-0.6)))) (home-page "https://github.com/nix-rust/nix") (synopsis "Rust friendly bindings to *nix APIs") (description @@ -34920,6 +35444,27 @@ The goal is to not provide a 100% unified interface, but to unify what can be while still providing platform specific APIs.") (license license:expat))) +(define-public rust-nix-0.23 + (package + (inherit rust-nix-0.24) + (name "rust-nix") + (version "0.23.1") + (source (origin + (method url-fetch) + (uri (crate-uri "nix" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1iimixk7y2qk0jswqich4mkd8kqyzdghcgy6203j8fmxmhbn71lz")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-bitflags" ,rust-bitflags-1) + ("rust-cc" ,rust-cc-1) + ("rust-cfg-if" ,rust-cfg-if-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-memoffset" ,rust-memoffset-0.6)))))) + (define-public rust-nix-0.22 (package (inherit rust-nix-0.23) @@ -37989,6 +38534,29 @@ memory page size.") "This package pipes your Rust output through an external pager.") (license (list license:asl2.0 license:expat)))) +(define-public rust-pam-sys-0.5 + (package + (name "rust-pam-sys") + (version "0.5.6") + (home-page "https://github.com/1wilkens/pam-sys") + (source (origin + (method url-fetch) + (uri (crate-uri "pam-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0d14501d5vybjnzxfjf96321xa5wa36x1xvf02h02zq938qmhj6d")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2)))) + (inputs `(("linux-pam" ,linux-pam))) + (synopsis + "Rust FFI wrappers for the Linux Pluggable Authentication Modules (PAM)") + (description + "This crate uses bindgen to generate the raw FFI definitions for PAM. For a +rustified API consider using pam.") + (license (list license:expat license:asl2.0)))) + (define-public rust-pancurses-0.16 (package (name "rust-pancurses") @@ -38242,27 +38810,24 @@ unparking.") (sha256 (base32 "0z6q9rxm98vrp3fimw8b5syzwgf8l0pnn6y0cqm4lbblf7r01cvc")))))) -(define-public rust-parking-lot-0.11 +(define-public rust-parking-lot-0.12 (package (name "rust-parking-lot") - (version "0.11.2") + (version "0.12.1") (source (origin (method url-fetch) (uri (crate-uri "parking_lot" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "16gzf41bxmm10x82bla8d6wfppy9ym3fxsmdjyvn61m66s0bf5vx")))) + (base32 "13r2xk7mnxfc5g0g6dkdxqdqad99j7s7z8zhzz4npw5r0g0v4hip")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-instant" ,rust-instant-0.1) - ("rust-lock-api" ,rust-lock-api-0.4) - ("rust-parking-lot-core" ,rust-parking-lot-core-0.8)) - #:cargo-development-inputs - (("rust-bincode" ,rust-bincode-1) - ("rust-rand" ,rust-rand-0.8)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-instant" ,rust-instant-0.1) + ("rust-lock-api" ,rust-lock-api-0.4) + ("rust-parking-lot-core" ,rust-parking-lot-core-0.8)))) (home-page "https://github.com/Amanieu/parking_lot") (synopsis "Efficient implementations of the standard synchronization primitives") @@ -38271,6 +38836,25 @@ unparking.") of the standard synchronization primitives.") (license (list license:asl2.0 license:expat)))) +(define-public rust-parking-lot-0.11 + (package + (inherit rust-parking-lot-0.12) + (name "rust-parking-lot") + (version "0.11.2") + (source (origin + (method url-fetch) + (uri (crate-uri "parking_lot" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "16gzf41bxmm10x82bla8d6wfppy9ym3fxsmdjyvn61m66s0bf5vx")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-instant" ,rust-instant-0.1) + ("rust-lock-api" ,rust-lock-api-0.4) + ("rust-parking-lot-core" ,rust-parking-lot-core-0.8)))))) + (define-public rust-parking-lot-0.10 (package (name "rust-parking-lot") @@ -38942,23 +39526,25 @@ path.Clean.") (define-public rust-pathdiff-0.2 (package (name "rust-pathdiff") - (version "0.2.0") + (version "0.2.1") (source (origin (method url-fetch) (uri (crate-uri "pathdiff" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0d2aqgrqhdn5kxlnd5dxv7d6pgsgf92r6r9gqm6bdh0mvsrk0xl7")))) + (base32 "1pa4dcmb7lwir4himg1mnl97a05b2z0svczg62l8940pbim12dc8")))) (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-camino" ,rust-camino-1)))) (home-page "https://github.com/Manishearth/pathdiff") (synopsis "Library for diffing paths to obtain relative paths") (description - "Use diff_paths to construct a relative path from a provided base -directory path to the provided path.") + "This package provides a Rust library for constructing a +relative path from a provided base directory path to the provided +path.") (license (list license:asl2.0 license:expat)))) (define-public rust-pbkdf2-0.10 @@ -42246,6 +42832,53 @@ status.") progress-bars for Rust.") (license license:asl2.0))) +(define-public rust-propfuzz-0.0.1 + (package + (name "rust-propfuzz") + (version "0.0.1") + (source (origin + (method url-fetch) + (uri (crate-uri "propfuzz" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1xadkjqsnnazfksaywxkdgv0fjkclj2p7x36r044jbj9g395nxyg")))) + (build-system cargo-build-system) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-propfuzz-macro" ,rust-propfuzz-macro-0.0.1) + ("rust-proptest" ,rust-proptest-0.10)))) + (home-page "https://github.com/facebookincubator/propfuzz") + (synopsis "Property-based testing and fuzzing") + (description + "This package provides a Rust library that combines +property-based testing and fuzzing.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-propfuzz-macro-0.0.1 + (package + (name "rust-propfuzz-macro") + (version "0.0.1") + (source (origin + (method url-fetch) + (uri (crate-uri "propfuzz-macro" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1xizaahjxxvcz9n91pgpji3nd7b755qgq3m2kmmg53zwjwv9nnsx")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))) + (home-page "https://github.com/facebookincubator/propfuzz") + (synopsis "Support macro for propfuzz") + (description + "This package provides a support macro for propfuzz.") + (license (list license:expat license:asl2.0)))) + (define-public rust-proptest-1 (package (name "rust-proptest") @@ -46603,58 +47236,117 @@ rust.") (base32 "1b6vjfwvpcgy0q8ywywz548vhxrmhbz2sm6xyhnmj5p5xd1xfqff")))))) -(define-public rust-rstest-0.6 +(define-public rust-rstest-0.15 (package (name "rust-rstest") - (version "0.6.5") + (version "0.15.0") (source (origin (method url-fetch) (uri (crate-uri "rstest" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1wdd0ci0bn6fd5v5c19lhlqrpadk18fl4jzvh75b26616anlxdil")))) + (base32 "0c5r8wimr2fv3x25dbb99rk165lzcsz6jlpv7xk2ny99rikdrjg9")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-cfg-if" ,rust-cfg-if-1) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-rustc-version" ,rust-rustc-version-0.3) - ("rust-syn" ,rust-syn-1)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-futures" ,rust-futures-0.3) + ("rust-futures-timer" ,rust-futures-timer-3) + ("rust-rstest-macros" ,rust-rstest-macros-0.14) + ("rust-rustc-version" ,rust-rustc-version-0.3)))) (home-page "https://github.com/la10736/rstest") (synopsis "Rust fixture based test framework") (description - "rstest uses procedural macros to help you on writing fixtures and -table-based tests.") + "@code{rstest} uses procedural macros to help you write fixtures +and table-based tests.") (license (list license:expat license:asl2.0)))) (define-public rust-rstest-0.10 (package + (inherit rust-rstest-0.15) (name "rust-rstest") (version "0.10.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rstest" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1bwhy92fsqc05y8x9iyyq9sykinh0gxnl25zpdca3xhl5hhb06q4")))) + (source (origin + (method url-fetch) + (uri (crate-uri "rstest" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1bwhy92fsqc05y8x9iyyq9sykinh0gxnl25zpdca3xhl5hhb06q4")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-cfg-if" ,rust-cfg-if-1) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-rustc-version" ,rust-rustc-version-0.3) + ("rust-syn" ,rust-syn-1)))))) + +(define-public rust-rstest-0.6 + (package + (inherit rust-rstest-0.10) + (name "rust-rstest") + (version "0.6.5") + (source (origin + (method url-fetch) + (uri (crate-uri "rstest" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1wdd0ci0bn6fd5v5c19lhlqrpadk18fl4jzvh75b26616anlxdil")))))) + +(define-public rust-rstest-macros-0.14 + (package + (name "rust-rstest-macros") + (version "0.14.0") + (source (origin + (method url-fetch) + (uri (crate-uri "rstest-macros" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0rlwp3r1dg3fl4f100wjd3ya7dhs23vpyqgf7vg5mac50s5fc5ah")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-cfg-if" ,rust-cfg-if-1) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-rustc-version" ,rust-rustc-version-0.3) - ("rust-syn" ,rust-syn-1)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-cfg-if" ,rust-cfg-if-1) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-rustc-version" ,rust-rustc-version-0.4) + ("rust-syn" ,rust-syn-1)))) (home-page "https://github.com/la10736/rstest") - (synopsis "Rust fixture based test framework") + (synopsis "Procedural macros for @code{rstest}.") + (description + "This package provides the procedural macro crate for +@code{rstest}.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-rstest-reuse-0.4 + (package + (name "rust-rstest-reuse") + (version "0.4.0") + (source (origin + (method url-fetch) + (uri (crate-uri "rstest-reuse" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "05zcs22fbvv7q50p2xs6w13lqbcklddnj2dm1mz1wi2pak9sxdgr")))) + (build-system cargo-build-system) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-quote" ,rust-quote-1) + ("rust-rustc-version" ,rust-rustc-version-0.4) + ("rust-syn" ,rust-syn-1)))) + (home-page "https://github.com/la10736/rstest") + (synopsis "Reuse rstest attributes") (description - "rstest uses procedural macros to help you on writing fixtures and -table-based tests.") + "This package provides a Rust library for reusing rstest +attributes by creating a set of tests and applying it to every +scenario you want to test.") (license (list license:expat license:asl2.0)))) (define-public rust-rug-1 @@ -47662,6 +48354,26 @@ rust-lang/rust integration.") (license (list license:asl2.0 license:expat)))) +(define-public rust-rustc-workspace-hack-1 + (package + (name "rust-rustc-workspace-hack") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustc-workspace-hack" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1yx8l58n2vb2ldpi3z1jn4dmi5hnxvikbhpd5lilpdvkl7xd4wgw")))) + (build-system cargo-build-system) + (home-page "https://crates.io/crates/rustc-workspace-hack") + (synopsis "Hack for the compiler's own build system") + (description "Hack for the compiler's own build system. It is used by +@code{cargo}.") + (license (list license:expat license:asl2.0)))) + (define-public rust-rustc-std-workspace-std-1 (package (name "rust-rustc-std-workspace-std") @@ -47862,6 +48574,51 @@ rustc compiler.") `(("rust-failure" ,rust-failure-0.1) ,@(alist-delete "rust-anyhow" cargo-inputs))))))) +(define-public rust-rustix-0.35 + (package + (name "rust-rustix") + (version "0.35.13") + (source (origin + (method url-fetch) + (uri (crate-uri "rustix" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1yfmkj5nwghxd3nha5ywf1cj6zqh44qwm0cavwifr1ppcmnilykj")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-bitflags" ,rust-bitflags-1) + ("rust-cc" ,rust-cc-1) + ("rust-compiler-builtins" ,rust-compiler-builtins-0.1) + ("rust-errno" ,rust-errno-0.2) + ("rust-io-lifetimes" ,rust-io-lifetimes-0.7) + ("rust-itoa" ,rust-itoa-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-linux-raw-sys" ,rust-linux-raw-sys-0.0.46) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-rustc-std-workspace-alloc" + ,rust-rustc-std-workspace-alloc-1) + ("rust-rustc-std-workspace-core" + ,rust-rustc-std-workspace-core-1) + ("rust-windows-sys" ,rust-windows-sys-0.42)) + #:cargo-development-inputs + `(("rust-criterion" ,rust-criterion-0.3) + ("rust-ctor" ,rust-ctor-0.1) + ("rust-errno" ,rust-errno-0.2) + ("rust-io-lifetimes" ,rust-io-lifetimes-0.7) + ("rust-libc" ,rust-libc-0.2) + ("rust-memoffset" ,rust-memoffset-0.6) + ("rust-serial-test" ,rust-serial-test-0.6) + ("rust-tempfile" ,rust-tempfile-3)))) + (home-page "https://github.com/bytecodealliance/rustix") + (synopsis "Safe Rust bindings to POSIX syscalls") + (description + "This package provides safe Rust bindings to POSIX syscalls.") + ;; Apache 2.0, Apache 2.0 with LLVM exception, or Expat. + (license (list license:asl2.0 + license:expat)))) + (define-public rust-rustls-0.20 (package (name "rust-rustls") @@ -53619,21 +54376,19 @@ benchmarking.") (define-public rust-socket2-0.4 (package (name "rust-socket2") - (version "0.4.0") + (version "0.4.7") (source (origin (method url-fetch) (uri (crate-uri "socket2" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "18ny6m1gnf6cwp5ax0b5hr36w6yg16z7faj76b31aq2jghhgqgcy")))) + (base32 "1gaf57dc16s1lfyv388w9vdl9qay15xds78jcwakml9kj3dx5qh2")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-libc" ,rust-libc-0.2) - ("rust-winapi" ,rust-winapi-0.3)))) + (list #:cargo-inputs + `(("rust-libc" ,rust-libc-0.2) + ("rust-winapi" ,rust-winapi-0.3)))) (home-page "https://github.com/rust-lang/socket2") (synopsis "Networking sockets in Rust") (description @@ -55725,25 +56480,120 @@ values without proliferating generics.") (description "This package provides custom derive for @code{sval}.") (license (list license:asl2.0 license:expat)))) -(define-public rust-swayipc-2 +(define-public rust-svd-parser-0.10 + (package + (name "rust-svd-parser") + (version "0.10.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "svd-parser" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1fbr4m9cla6xvmrib7pad9hv29sn2d5hjbc77pz12lwzmm2pczk9")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-anyhow" ,rust-anyhow-1) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-rayon" ,rust-rayon-1) + ("rust-regex" ,rust-regex-1) + ("rust-serde" ,rust-serde-1) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-xmltree" ,rust-xmltree-0.8)) + #:cargo-development-inputs + (("rust-serde-json" ,rust-serde-json-1)))) + (home-page "https://github.com/rust-embedded/svd") + (synopsis "CMSIS-SVD file parser") + (description "This package provides a CMSIS-SVD file parser.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-svgtypes-0.5 + (package + (name "rust-svgtypes") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "svgtypes" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1zv0yb4nfyz78y8k7fmyjqgdh9vf7xc44c9pzry8640szym6ylww")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-float-cmp" ,rust-float-cmp-0.5) + ("rust-siphasher" ,rust-siphasher-0.2)))) + (home-page "https://github.com/RazrFalcon/svgtypes") + (synopsis "SVG types parser") + (description "This package provides SVG types parser.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-sxd-document-0.3 + (package + (name "rust-sxd-document") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "sxd-document" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0y10shqmy9xb73g403rg1108wsagny9d8jrcm081pbwzpqvjzn4l")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-peresil" ,rust-peresil-0.3) + ("rust-typed-arena" ,rust-typed-arena-1)))) + (home-page "https://github.com/shepmaster/sxd-document") + (synopsis "Rust XML DOM library") + (description "This package provides a Rust XML DOM library.") + (license license:expat))) + +(define-public rust-sxd-xpath-0.4 + (package + (name "rust-sxd-xpath") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "sxd-xpath" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1sin3g8lzans065gjcwrpm7gdpwdpdg4rpi91rlvb1q8sfjrvqrn")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-peresil" ,rust-peresil-0.3) + ("rust-quick-error" ,rust-quick-error-1) + ("rust-sxd-document" ,rust-sxd-document-0.3)))) + (home-page "https://github.com/shepmaster/sxd-xpath") + (synopsis "Rust XML XPath library") + (description "This package provides a Rust XML XPath library.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-swayipc-3 (package (name "rust-swayipc") - (version "2.7.2") + (version "3.0.1") (source (origin (method url-fetch) (uri (crate-uri "swayipc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "03r15c2sijyrxmpsyjgma4gz7zmdl1g8akjnjkw6hrml91d5dilj")))) + (base32 "16pf4r6svf99p73b8dhdannkvhfvmbjb4rx7gifxh8xj53rwy7db")))) (build-system cargo-build-system) (arguments - `(#:tests? #f ; test sync::tests::connect ... FAILED + `(#:skip-build? #t #:cargo-inputs (("rust-serde" ,rust-serde-1) - ("rust-async-std" ,rust-async-std-1) - ("rust-swayipc-command-builder" ,rust-swayipc-command-builder-0.1) - ("rust-serde-json" ,rust-serde-json-1)))) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-swayipc-types" ,rust-swayipc-types-1)))) (home-page "https://github.com/jaycefayne/swayipc-rs") (synopsis "Library for controlling sway through its IPC interface") (description @@ -55751,6 +56601,26 @@ values without proliferating generics.") interface.") (license license:expat))) +(define-public rust-swayipc-2 + (package + (inherit rust-swayipc-3) + (name "rust-swayipc") + (version "2.7.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "swayipc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "03r15c2sijyrxmpsyjgma4gz7zmdl1g8akjnjkw6hrml91d5dilj")))) + (arguments + `(#:tests? #f ; test sync::tests::connect ... FAILED + #:cargo-inputs + (("rust-serde" ,rust-serde-1) + ("rust-async-std" ,rust-async-std-1) + ("rust-swayipc-command-builder" ,rust-swayipc-command-builder-0.1) + ("rust-serde-json" ,rust-serde-json-1)))))) + (define-public rust-swayipc-command-builder-0.1 (package (name "rust-swayipc-command-builder") @@ -55770,6 +56640,31 @@ interface.") executed by swayipc.") (license license:expat))) +(define-public rust-swayipc-types-1 + (package + (name "rust-swayipc-types") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "swayipc-types" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "13lj6jyyxg41r9g0b07y8yd7ygy5gih61w5v48bpksvfdzhwwn55")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-thiserror" ,rust-thiserror-1)))) + (home-page "https://github.com/jaycefayne/swayipc-rs") + (synopsis "A library containing Type defintions from sway's IPC interface") + (description + "This package provides a library containing Type defintions from sway's IPC +interface") + (license license:expat))) + (define-public rust-syn-1 (package (name "rust-syn") @@ -57728,8 +58623,31 @@ writing colored text to a terminal.") #:cargo-inputs (("rust-wincolor" ,rust-wincolor-0.1)))))) +(define-public rust-terminal-size-0.2 + (package + (name "rust-terminal-size") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (crate-uri "terminal-size" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0yhza8sc6jkka6j0nq5sl749ckx1jagvxp3b38yhh4px6k291jj0")))) + (build-system cargo-build-system) + (arguments + (list #:tests? #f ;tests require /dev/stderr + #:cargo-inputs + `(("rust-rustix" ,rust-rustix-0.35)))) + (home-page "https://github.com/eminence/terminal-size") + (synopsis "Gets the size of your Linux or Windows terminal") + (description + "This package gets the size of your Linux or Windows terminal.") + (license (list license:expat license:asl2.0)))) + (define-public rust-terminal-size-0.1 (package + (inherit rust-terminal-size-0.2) (name "rust-terminal-size") (version "0.1.17") (source @@ -57739,17 +58657,11 @@ writing colored text to a terminal.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1pq60ng1a7fjp597ifk1cqlz8fv9raz9xihddld1m1pfdia1lg33")))) - (build-system cargo-build-system) (arguments - `(#:tests? #f ; Tests require /dev/stderr - #:cargo-inputs - (("rust-libc" ,rust-libc-0.2) - ("rust-winapi" ,rust-winapi-0.3)))) - (home-page "https://github.com/eminence/terminal-size") - (synopsis "Gets the size of your Linux or Windows terminal") - (description - "This package gets the size of your Linux or Windows terminal.") - (license (list license:expat license:asl2.0)))) + (list #:tests? #f ;tests require /dev/stderr + #:cargo-inputs + `(("rust-libc" ,rust-libc-0.2) + ("rust-winapi" ,rust-winapi-0.3)))))) (define-public rust-terminfo-0.7 (package @@ -57776,8 +58688,35 @@ writing colored text to a terminal.") (description "Terminal capabilities with type-safe getters.") (license license:wtfpl2))) +(define-public rust-termion-2 + (package + (name "rust-termion") + (version "2.0.1") + (source (origin + (method url-fetch) + (uri (crate-uri "termion" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "147c0a9l2dj4l8xhd7bb1f0f611lv6k0szacx3jwf21lkwviz735")))) + (build-system cargo-build-system) + (arguments + (list #:tests? #f ;tests require a terminal + #:cargo-inputs + `(("rust-libc" ,rust-libc-0.2) + ("rust-numtoa" ,rust-numtoa-0.1) + ("rust-redox-syscall" ,rust-redox-syscall-0.2) + ("rust-redox-termios" ,rust-redox-termios-0.1) + ("rust-serde" ,rust-serde-1)))) + (home-page "https://gitlab.redox-os.org/redox-os/termion") + (synopsis "Library for manipulating terminals") + (description + "This package provides a bindless library for manipulating terminals.") + (license license:expat))) + (define-public rust-termion-1 (package + (inherit rust-termion-2) (name "rust-termion") (version "1.5.5") (source @@ -57788,19 +58727,13 @@ writing colored text to a terminal.") (sha256 (base32 "01f9787d5nx445bqbj644v38bn0hl2swwjy9baz0dnbqi6fyqb62")))) - (build-system cargo-build-system) (arguments - `(#:tests? #f ; Tests want a terminal. - #:cargo-inputs - (("rust-libc" ,rust-libc-0.2) - ("rust-numtoa" ,rust-numtoa-0.1) - ("rust-redox-syscall" ,rust-redox-syscall-0.1) - ("rust-redox-termios" ,rust-redox-termios-0.1)))) - (home-page "https://gitlab.redox-os.org/redox-os/termion") - (synopsis "Library for manipulating terminals") - (description - "This package provides a bindless library for manipulating terminals.") - (license license:expat))) + (list #:tests? #f ;tests require a terminal + #:cargo-inputs + `(("rust-libc" ,rust-libc-0.2) + ("rust-numtoa" ,rust-numtoa-0.1) + ("rust-redox-syscall" ,rust-redox-syscall-0.1) + ("rust-redox-termios" ,rust-redox-termios-0.1)))))) (define-public rust-termios-0.3 (package @@ -57983,28 +58916,30 @@ unstable language features.") (description "This package provides a newtypes for text offsets") (license (list license:expat license:asl2.0)))) -(define-public rust-textwrap-0.12 +(define-public rust-textwrap-0.16 (package (name "rust-textwrap") - (version "0.12.1") + (version "0.16.0") (source (origin (method url-fetch) (uri (crate-uri "textwrap" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "12978qmkl5gcp94lxndpvp9qxq8mxp7hm9xbrw3422dgikchhc10")))) + (base32 "0gbwkjf15l6p3x2rkr75fa4cpcs1ly4c8pmlfx5bl6zybcm24ai2")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-hyphenation" ,rust-hyphenation-0.8) - ("rust-terminal-size" ,rust-terminal-size-0.1) - ("rust-unicode-width" ,rust-unicode-width-0.1)))) - (home-page - "https://github.com/mgeisler/textwrap") + (list #:skip-build? #t + #:cargo-inputs + `(("rust-hyphenation" ,rust-hyphenation-0.8) + ("rust-smawk" ,rust-smawk-0.3) + ("rust-terminal-size" ,rust-terminal-size-0.2) + ("rust-termion" ,rust-termion-2) + ("rust-unic-emoji-char" ,rust-unic-emoji-char-0.9) + ("rust-unicode-linebreak" ,rust-unicode-linebreak-0.1) + ("rust-unicode-width" ,rust-unicode-width-0.1) + ("rust-version-sync" ,rust-version-sync-0.9)))) + (home-page "https://github.com/mgeisler/textwrap") (synopsis "Library for word wrapping, indenting, and dedenting strings") (description "Textwrap is a small library for word wrapping, indenting, and dedenting @@ -58013,6 +58948,46 @@ for display in commandline applications. It is designed to be efficient and handle Unicode characters correctly.") (license license:expat))) +(define-public rust-textwrap-0.15 + (package + (inherit rust-textwrap-0.16) + (name "rust-textwrap") + (version "0.15.0") + (source (origin + (method url-fetch) + (uri (crate-uri "textwrap" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1yw513k61lfiwgqrfvsjw1a5wpvm0azhpjr2kr0jhnq9c56is55i")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-hyphenation" ,rust-hyphenation-0.8) + ("rust-smawk" ,rust-smawk-0.3) + ("rust-terminal-size" ,rust-terminal-size-0.1) + ("rust-unicode-linebreak" ,rust-unicode-linebreak-0.1) + ("rust-unicode-width" ,rust-unicode-width-0.1)))))) + +(define-public rust-textwrap-0.12 + (package + (inherit rust-textwrap-0.15) + (name "rust-textwrap") + (version "0.12.1") + (source (origin + (method url-fetch) + (uri (crate-uri "textwrap" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "12978qmkl5gcp94lxndpvp9qxq8mxp7hm9xbrw3422dgikchhc10")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-hyphenation" ,rust-hyphenation-0.8) + ("rust-terminal-size" ,rust-terminal-size-0.1) + ("rust-unicode-width" ,rust-unicode-width-0.1)))))) + (define-public rust-textwrap-0.11 (package (inherit rust-textwrap-0.12) @@ -58062,16 +59037,14 @@ handle Unicode characters correctly.") (define-public rust-thiserror-1 (package (name "rust-thiserror") - (version "1.0.26") + (version "1.0.37") (source (origin (method url-fetch) (uri (crate-uri "thiserror" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "1qmz542pq4wmz3p0s4kavsqv09h0x99klkf3k33ydjy1x97rw4ck")))) + (base32 "0gky83x4i87gd87w3fknnp920wvk9yycp7dgkf5h3jg364vb7phh")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -58090,16 +59063,14 @@ handle Unicode characters correctly.") (define-public rust-thiserror-impl-1 (package (name "rust-thiserror-impl") - (version "1.0.26") + (version "1.0.37") (source (origin (method url-fetch) (uri (crate-uri "thiserror-impl" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0ia72qiynlws5avb8f1xqlazp4g6bqgzjbwy5vs6nyg7myh6j386")))) + (base32 "1fydmpksd14x1mkc24zas01qjssz8q43sbn2ywl6n527dda1fbcq")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -58978,32 +59949,31 @@ tinyobjloader.") (define-public rust-tokio-1 (package (name "rust-tokio") - (version "1.15.0") + (version "1.22.0") (source (origin (method url-fetch) (uri (crate-uri "tokio" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0f2qwp9ljc4gf955g7qcksp0jc1bwmzxb2nf6mb7h1n2irvirgzv")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-autocfg" ,rust-autocfg-1) - ("rust-bytes" ,rust-bytes-1) - ("rust-libc" ,rust-libc-0.2) - ("rust-memchr" ,rust-memchr-2) - ("rust-mio" ,rust-mio-0.7) - ("rust-num-cpus" ,rust-num-cpus-1) - ("rust-once-cell" ,rust-once-cell-1) - ("rust-parking-lot" ,rust-parking-lot-0.11) - ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) - ("rust-signal-hook-registry" ,rust-signal-hook-registry-1) - ("rust-tokio-macros" ,rust-tokio-macros-1) - ("rust-tracing" ,rust-tracing-0.1) - ("rust-winapi" ,rust-winapi-0.3)))) + (base32 "1qrarnfikvp8cwd3qcskzgdb1a6f47r11xjbql2wd25lbyky8v6p")))) + (build-system cargo-build-system) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-autocfg" ,rust-autocfg-1) + ("rust-bytes" ,rust-bytes-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-memchr" ,rust-memchr-2) + ("rust-mio" ,rust-mio-0.8) + ("rust-num-cpus" ,rust-num-cpus-1) + ("rust-parking-lot" ,rust-parking-lot-0.12) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) + ("rust-signal-hook-registry" ,rust-signal-hook-registry-1) + ("rust-socket2" ,rust-socket2-0.4) + ("rust-tokio-macros" ,rust-tokio-macros-1) + ("rust-tracing" ,rust-tracing-0.1) + ("rust-winapi" ,rust-winapi-0.3)))) (home-page "https://tokio.rs") (synopsis "Event-driven, non-blocking I/O platform") (description @@ -63064,6 +64034,30 @@ the Unicode and Internationalization Crates (UNIC) project.") Internationalization Crates (UNIC) project.") (license (list license:expat license:asl2.0)))) +(define-public rust-unic-emoji-char-0.9 + (package + (name "rust-unic-emoji-char") + (version "0.9.0") + (source (origin + (method url-fetch) + (uri (crate-uri "unic-emoji-char" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ka9fr7s6lv0z43r9xphg9injn35pfxf9g9q18ki0wl9d0g241qb")))) + (build-system cargo-build-system) + (arguments + (list #:cargo-inputs + `(("rust-unic-char-property" ,rust-unic-char-property-0.9) + ("rust-unic-char-range" ,rust-unic-char-range-0.9) + ("rust-unic-ucd-version" ,rust-unic-ucd-version-0.9)))) + (home-page "https://github.com/open-i18n/rust-unic/") + (synopsis "UNIC emoji character properties for Rust") + (description + "This package provides UNIC properties for emoji characters +in Rust.") + (license (list license:expat license:asl2.0)))) + (define-public rust-unic-segment-0.9 (package (name "rust-unic-segment") @@ -63212,6 +64206,25 @@ Unicode and Internationalization Crates (UNIC) project.") "Implementation of the Unicode Bidirectional Algorithm.") (license (list license:asl2.0 license:expat)))) +(define-public rust-unicode-categories-0.1 + (package + (name "rust-unicode-categories") + (version "0.1.1") + (source (origin + (method url-fetch) + (uri (crate-uri "unicode-categories" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0kp1d7fryxxm7hqywbk88yb9d1avsam9sg76xh36k5qx2arj9v1r")))) + (build-system cargo-build-system) + (home-page "https://github.com/swgillespie/unicode-categories") + (synopsis "Query Unicode category membership") + (description + "This package provides a package for querying Unicode category +membership for characters in Rust.") + (license (list license:expat license:asl2.0)))) + (define-public rust-unicode-ident-1 (package (name "rust-unicode-ident") @@ -63243,22 +64256,24 @@ Standard Annex #31.") (define-public rust-unicode-linebreak-0.1 (package (name "rust-unicode-linebreak") - (version "0.1.2") + (version "0.1.4") (source (origin (method url-fetch) (uri (crate-uri "unicode-linebreak" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0grq6bsn967q4vpifld53s7a140nlmpq5vy8ghgr73f4n2mdqlis")))) + (base32 "0drixqb16bzmabd5d8ldvar5760rxy6nxzszhlsqnasl3bisvyn5")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-regex" ,rust-regex-1)))) + (list #:cargo-inputs + `(("rust-hashbrown" ,rust-hashbrown-0.12) + ("rust-regex" ,rust-regex-1)))) (home-page "https://github.com/axelf4/unicode-linebreak") - (synopsis "Implementation of the Unicode Line Breaking Algorithm") - (description "This package provides an Implementation of the Unicode Line -Breaking Algorithm in Rust.") + (synopsis "Implementation of the Unicode line breaking algorithm") + (description + "This package provides an implementation of the Unicode line +breaking algorithm in Rust.") (license license:asl2.0))) (define-public rust-unicode-normalization-0.1 @@ -63338,22 +64353,26 @@ boundaries according to Unicode Standard Annex #29 rules.") (define-public rust-unicode-xid-0.2 (package (name "rust-unicode-xid") - (version "0.2.1") + (version "0.2.4") (source (origin (method url-fetch) (uri (crate-uri "unicode-xid" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0r6mknipyy9vpz8mwmxvkx65ff2ha1n2pxqjj6f46lcn8yrhpzpp")))) + (base32 "131dfzf7d8fsr1ivch34x42c2d1ik5ig3g78brxncnn0r1sdyqpr")))) (build-system cargo-build-system) + (arguments + (list #:cargo-development-inputs + `(("rust-criterion" ,rust-criterion-0.3)))) (home-page "https://github.com/unicode-rs/unicode-xid") (synopsis "Determine Unicode XID related properties") - (description "Determine whether characters have the XID_Start -or XID_Continue properties according to Unicode Standard Annex #31.") - (license (list license:asl2.0 license:expat)))) + (description + "This package provides a Rust library to determine whether +characters have the XID_Start or XID_Continue properties according +to Unicode Standard Annex #31.") + (license (list license:asl2.0 + license:expat)))) (define-public rust-unicode-xid-0.1 (package @@ -64780,33 +65799,46 @@ result.") (description "Warp is a composable, web server framework.") (license license:expat))) -(define-public rust-wasi-0.9 +(define-public rust-wasi-0.11 (package (name "rust-wasi") - (version "0.9.0+wasi-snapshot-preview1") + (version "0.11.0+wasi-snapshot-preview1") (source (origin (method url-fetch) (uri (crate-uri "wasi" version)) - (file-name - (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "06g5v3vrdapfzvfq662cij7v8a1flwr2my45nnncdv2galrdzkfc")))) + (base32 "08z4hxwkpdpalxjps1ai9y7ihin26y9f476i53dv98v45gkqg3cw")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-compiler-builtins" ,rust-compiler-builtins-0.1) - ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1) - ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-compiler-builtins" ,rust-compiler-builtins-0.1) + ("rust-rustc-std-workspace-alloc" + ,rust-rustc-std-workspace-alloc-1) + ("rust-rustc-std-workspace-core" + ,rust-rustc-std-workspace-core-1)))) (home-page "https://github.com/bytecodealliance/wasi") (synopsis "Experimental WASI API bindings for Rust") (description - "This package provides an experimental WASI API bindings for Rust.") + "This package provides experimental WASI API bindings for Rust.") (license (list license:asl2.0 license:expat)))) +(define-public rust-wasi-0.9 + (package + (inherit rust-wasi-0.11) + (name "rust-wasi") + (version "0.9.0+wasi-snapshot-preview1") + (source (origin + (method url-fetch) + (uri (crate-uri "wasi" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "06g5v3vrdapfzvfq662cij7v8a1flwr2my45nnncdv2galrdzkfc")))))) + (define-public rust-wasm-bindgen-0.2 (package (name "rust-wasm-bindgen") @@ -65674,27 +66706,28 @@ using @code{bindgen}.") (define-public rust-which-4 (package (name "rust-which") - (version "4.2.2") + (version "4.3.0") (source (origin (method url-fetch) (uri (crate-uri "which" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1nbsy9f5sn206jzby28if4m4s0m21n97mhk8qd703g3rya77l67a")))) + (base32 "0yybp94wikf21vkcl8b6w6l5pnd95nl4fxryz669l4lyxsxiz0qw")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-either" ,rust-either-1) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-libc" ,rust-libc-0.2) - ("rust-regex" ,rust-regex-1)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-either" ,rust-either-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-regex" ,rust-regex-1)))) (home-page "https://github.com/harryfei/which-rs.git") - (synopsis "Rust equivalent of Unix command @command{which}") + (synopsis "Rust equivalent of @command{which}") (description - "This package provides a Rust equivalent of Unix command @command{which}. -It locates installed executable in cross platforms.") + "This package provides a cross-platform Rust equivalent of the +Unix @command{which} command. It returns the full path of an installed +executable.") (license license:expat))) (define-public rust-which-3 @@ -66641,6 +67674,27 @@ to XDG Base Directory specification.") "This package provides a moderately simple command line arguments parser.") (license (list license:expat license:asl2.0)))) +(define-public rust-xi-unicode-0.3 + (package + (name "rust-xi-unicode") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "xi-unicode" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "12mvjgrhr7557cib69wm4q5s4srba27pg2df9l1zihrxgnbh0wx6")))) + (build-system cargo-build-system) + (arguments `(#:skip-build? #t)) + (home-page "https://github.com/google/xi-editor") + (synopsis + "Unicode utilities for text editing, including a line breaking iterator") + (description + "This package provides Unicode utilities useful for text editing, +including a line breaking iterator.") + (license license:asl2.0))) + (define-public rust-xml-rs-0.8 (package (name "rust-xml-rs") @@ -67454,300 +68508,202 @@ configuration file and/or environment variables.") ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.32) ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.32)))))) -(define-public rust-windows-x86-64-msvc-0.28 +(define-public rust-windows-aarch64-gnullvm-0.42 (package - (name "rust-windows-x86-64-msvc") - (version "0.28.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "17z8q25pd3dp6b84qm9nlayd3ym78sbryxlqmgcxvz9vpmy8qarz")))) - (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-x86-64-msvc-0.36 - (package - (name "rust-windows-x86-64-msvc") - (version "0.36.1") + (name "rust-windows-aarch64-gnullvm") + (version "0.42.0") (source (origin (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) + (uri (crate-uri "windows-aarch64-gnullvm" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "103n3xijm5vr7qxr1dps202ckfnv7njjnnfqmchg8gl5ii5cl4f8")))) + "17m1p753qk02r25afg31dxym4rpy7kpr0z8nwl5f1jzhyrqsmlj1")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t)) + (list #:skip-build? #t)) (home-page "https://github.com/microsoft/windows-rs") (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") + (description + "This package provides code gen support for the windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-windows-x86-64-msvc-0.32 +(define-public rust-windows-aarch64-msvc-0.42 (package - (name "rust-windows-x86-64-msvc") - (version "0.32.0") + (name "rust-windows-aarch64-msvc") + (version "0.42.0") (source (origin (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) + (uri (crate-uri "windows-aarch64-msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "05l392h518dxn808dc1zkv6d0r9z38q68qqc0ix9fs9741v28jjh")))) + "1d6d9ny0yl5l9vvagydigvkfcphzk2aygchiccywijimb8pja3yx")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t)) + (list #:skip-build? #t)) (home-page "https://github.com/microsoft/windows-rs") (synopsis "Code gen support for the windows crate") (description "This package provides code gen support for the windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-windows-x86-64-gnu-0.28 +(define-public rust-windows-aarch64-msvc-0.36 (package - (name "rust-windows-x86-64-gnu") - (version "0.28.0") + (inherit rust-windows-aarch64-msvc-0.42) + (name "rust-windows-aarch64-msvc") + (version "0.36.1") (source (origin (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) + (uri (crate-uri "windows_aarch64_msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0m79bhdr54g4h4wh2q8wkjlkypb5wvl7xzhc2csiaqb5yl4z8cdw")))) - (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + (base32 "0ixaxs2c37ll2smprzh0xq5p238zn8ylzb3lk1zddqmd77yw7f4v")))))) -(define-public rust-windows-x86-64-gnu-0.36 +(define-public rust-windows-aarch64-msvc-0.32 (package - (name "rust-windows-x86-64-gnu") - (version "0.36.1") + (inherit rust-windows-aarch64-msvc-0.36) + (name "rust-windows-aarch64-msvc") + (version "0.32.0") (source (origin (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) + (uri (crate-uri "windows_aarch64_msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1qfrck3jnihymfrd01s8260d4snql8ks2p8yaabipi3nhwdigkad")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + "1x8bnafz15ksgpbjbgk1l1j2jx4rq4a2ylzcahb1jhy4n59jgsfq")))))) -(define-public rust-windows-x86-64-gnu-0.32 +(define-public rust-windows-aarch64-msvc-0.28 (package - (name "rust-windows-x86-64-gnu") - (version "0.32.0") + (inherit rust-windows-aarch64-msvc-0.32) + (name "rust-windows-aarch64-msvc") + (version "0.28.0") (source (origin (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) + (uri (crate-uri "windows_aarch64_msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1g34xhcayig9sndq3555w95q6lr7jr839zxv6l365ijlfhpv24n9")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-i686-msvc-0.28 - (package - (name "rust-windows-i686-msvc") - (version "0.28.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0r0z8s1wcdwd20azsdfilf2a6bz68xkavl990wy64hyc8f51bmai")))) - (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + "1hpk0n2z0jzzvwlvs98b75sa4q920953nqfc119rv19nwm0mlsaj")))))) -(define-public rust-windows-i686-msvc-0.36 +(define-public rust-windows-i686-gnu-0.42 (package - (name "rust-windows-i686-msvc") - (version "0.36.1") + (name "rust-windows-i686-gnu") + (version "0.42.0") (source (origin (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) + (uri (crate-uri "windows_i686_gnu" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "097h2a7wig04wbmpi3rz1akdy4s8gslj5szsx8g2v0dj91qr3rz2")))) + "1rsxdjp50nk38zfd1dxj12i2qmhpvxsm6scdq8v1d10ncygy3spv")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t)) + (list #:skip-build? #t)) (home-page "https://github.com/microsoft/windows-rs") (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") + (description + "This package provides code gen support for the windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-windows-i686-msvc-0.32 +(define-public rust-windows-i686-gnu-0.36 (package - (name "rust-windows-i686-msvc") - (version "0.32.0") + (inherit rust-windows-i686-gnu-0.42) + (name "rust-windows-i686-gnu") + (version "0.36.1") (source (origin (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) + (uri (crate-uri "windows_i686_gnu" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0wj1wi01fc8hrasbakjcq8y5a7ynw9l2mcw08svmsq823axi2v0l")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + "1dm3svxfzamrv6kklyda9c3qylgwn5nwdps6p0kc9x6s077nq3hq")))))) -(define-public rust-windows-i686-gnu-0.36 +(define-public rust-windows-i686-gnu-0.32 (package + (inherit rust-windows-i686-gnu-0.36) (name "rust-windows-i686-gnu") - (version "0.36.1") + (version "0.32.0") (source (origin (method url-fetch) (uri (crate-uri "windows_i686_gnu" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1dm3svxfzamrv6kklyda9c3qylgwn5nwdps6p0kc9x6s077nq3hq")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + "05g6kpdfxwxnw2gn1nrd7bsf5997rci0k3h3nqby168ph5l1qwba")))))) (define-public rust-windows-i686-gnu-0.28 (package + (inherit rust-windows-i686-gnu-0.32) (name "rust-windows-i686-gnu") (version "0.28.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "12hx7qpsjg9p7jggfcplqa3mf1mzr7k7s5ybzqwg1zmg4fn2aizm")))) - (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "12hx7qpsjg9p7jggfcplqa3mf1mzr7k7s5ybzqwg1zmg4fn2aizm")))))) -(define-public rust-windows-i686-gnu-0.32 +(define-public rust-windows-i686-msvc-0.42 (package - (name "rust-windows-i686-gnu") - (version "0.32.0") + (name "rust-windows-i686-msvc") + (version "0.42.0") (source (origin (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) + (uri (crate-uri "windows_i686_msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "05g6kpdfxwxnw2gn1nrd7bsf5997rci0k3h3nqby168ph5l1qwba")))) + "0ii2hrsdif2ms79dfiyfzm1n579jzj42ji3fpsxd57d3v9jjzhc4")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t)) + (list #:skip-build? #t)) (home-page "https://github.com/microsoft/windows-rs") (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") + (description + "This package provides code gen support for the windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-windows-aarch64-msvc-0.36 +(define-public rust-windows-i686-msvc-0.36 (package - (name "rust-windows-aarch64-msvc") + (inherit rust-windows-i686-msvc-0.42) + (name "rust-windows-i686-msvc") (version "0.36.1") (source (origin (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) + (uri (crate-uri "windows_i686_msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0ixaxs2c37ll2smprzh0xq5p238zn8ylzb3lk1zddqmd77yw7f4v")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + "097h2a7wig04wbmpi3rz1akdy4s8gslj5szsx8g2v0dj91qr3rz2")))))) -(define-public rust-windows-aarch64-msvc-0.28 +(define-public rust-windows-i686-msvc-0.32 (package - (name "rust-windows-aarch64-msvc") - (version "0.28.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1hpk0n2z0jzzvwlvs98b75sa4q920953nqfc119rv19nwm0mlsaj")))) - (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + (inherit rust-windows-i686-msvc-0.36) + (name "rust-windows-i686-msvc") + (version "0.32.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0wj1wi01fc8hrasbakjcq8y5a7ynw9l2mcw08svmsq823axi2v0l")))))) -(define-public rust-windows-aarch64-msvc-0.32 +(define-public rust-windows-i686-msvc-0.28 (package - (name "rust-windows-aarch64-msvc") - (version "0.32.0") + (inherit rust-windows-i686-msvc-0.32) + (name "rust-windows-i686-msvc") + (version "0.28.0") (source (origin (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) + (uri (crate-uri "windows_i686_msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1x8bnafz15ksgpbjbgk1l1j2jx4rq4a2ylzcahb1jhy4n59jgsfq")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) + "0r0z8s1wcdwd20azsdfilf2a6bz68xkavl990wy64hyc8f51bmai")))))) (define-public rust-windows-implement-0.32 (package @@ -67772,26 +68728,28 @@ crate.") crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-windows-sys-0.36 +(define-public rust-windows-sys-0.42 (package (name "rust-windows-sys") - (version "0.36.1") + (version "0.42.0") (source (origin (method url-fetch) (uri (crate-uri "windows-sys" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1lmqangv0zg1l46xiq7rfnqwsx8f8m52mqbgg2mrx7x52rd1a17a")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.36) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.36) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.36) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.36) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.36)))) + "19waf8aryvyq9pzk0gamgfwjycgzk4gnrazpfvv171cby0h1hgjs")))) + (build-system cargo-build-system) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.42) + ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.42) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.42) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.42) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.42) + ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.42) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.42)))) (home-page "https://github.com/microsoft/windows-rs") (synopsis "Rust for Windows") (description "The windows crate lets you call any Windows API past, @@ -67800,8 +68758,30 @@ describing the API and right into your Rust package where you can call them as if they were just another Rust module.") (license (list license:expat license:asl2.0)))) +(define-public rust-windows-sys-0.36 + (package + (inherit rust-windows-sys-0.42) + (name "rust-windows-sys") + (version "0.36.1") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1lmqangv0zg1l46xiq7rfnqwsx8f8m52mqbgg2mrx7x52rd1a17a")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.36) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.36) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.36) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.36) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.36)))))) + (define-public rust-windows-sys-0.28 (package + (inherit rust-windows-sys-0.36) (name "rust-windows-sys") (version "0.28.0") (source @@ -67811,22 +68791,14 @@ if they were just another Rust module.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1xkghf343nll9i1yvha1a4spf53mnb5knzmnqj9adgsw5mh3kjl2")))) - (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.28) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.28) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.28) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.28) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.28)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Rust for Windows") - (description "The windows crate lets you call any Windows API past, -present, and future using code generated on the fly directly from the metadata -describing the API and right into your Rust package where you can call them as -if they were just another Rust module.") - (license (list license:expat license:asl2.0)))) + (list #:skip-build? #t + #:cargo-inputs + `(("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.28) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.28) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.28) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.28) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.28)))))) (define-public rust-windows-gen-0.9 (package @@ -67887,599 +68859,182 @@ if they were just another Rust module.") windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-xmltree-0.10 +(define-public rust-windows-x86-64-gnu-0.42 (package - (name "rust-xmltree") - (version "0.10.3") - (source - (origin - (method url-fetch) - (uri (crate-uri "xmltree" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1jqzwhr1a5cknflsshhhjlllmd1xi04qdkjsls2bnmv5mxgagn6p")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-indexmap" ,rust-indexmap-1) - ("rust-xml-rs" ,rust-xml-rs-0.8)))) - (home-page "https://github.com/eminence/xmltree-rs") - (synopsis "Parse an XML file into a simple tree-like structure") - (description "This package provides a small library for parsing an XML -file into an in-memory tree structure.") - (license license:expat))) - -(define-public rust-xmltree-0.8 - (package - (inherit rust-xmltree-0.10) - (name "rust-xmltree") - (version "0.8.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "xmltree" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0w0y0jz7lhxg05ca6ngfj0lj8sbrjh4vaqv13q7qaqkhs7lsx3pz")))) - (arguments - `(#:cargo-inputs - (("rust-indexmap" ,rust-indexmap-1) - ("rust-xml-rs" ,rust-xml-rs-0.7)))))) - -(define-public rust-svd-parser-0.9 - (package - (name "rust-svd-parser") - (version "0.10.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "svd-parser" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1fbr4m9cla6xvmrib7pad9hv29sn2d5hjbc77pz12lwzmm2pczk9")))) + (name "rust-windows-x86-64-gnu") + (version "0.42.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1vdh8k5a4m6pfkc5gladqznyqxgapkjm0qb8iwqvqb1nnlhinyxz")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-anyhow" ,rust-anyhow-1) - ("rust-once-cell" ,rust-once-cell-1) - ("rust-rayon" ,rust-rayon-1) - ("rust-regex" ,rust-regex-1) - ("rust-serde" ,rust-serde-1) - ("rust-thiserror" ,rust-thiserror-1) - ("rust-xmltree" ,rust-xmltree-0.8)) - #:cargo-development-inputs - (("rust-serde-json" ,rust-serde-json-1)))) - (home-page "https://github.com/rust-embedded/svd") - (synopsis "CMSIS-SVD file parser") + (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") (description - "This package provides a CMSIS-SVD file parser") + "This package provides code gen support for the windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-svgtypes-0.5 - (package - (name "rust-svgtypes") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "svgtypes" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1zv0yb4nfyz78y8k7fmyjqgdh9vf7xc44c9pzry8640szym6ylww")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? - #t - #:cargo-inputs - (("rust-float-cmp" ,rust-float-cmp-0.5) - ("rust-siphasher" ,rust-siphasher-0.2)))) - (home-page "https://github.com/RazrFalcon/svgtypes") - (synopsis "SVG types parser") - (description "This package provides SVG types parser.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-sxd-document-0.3 - (package - (name "rust-sxd-document") - (version "0.3.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "sxd-document" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0y10shqmy9xb73g403rg1108wsagny9d8jrcm081pbwzpqvjzn4l")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-peresil" ,rust-peresil-0.3) - ("rust-typed-arena" ,rust-typed-arena-1)))) - (home-page "https://github.com/shepmaster/sxd-document") - (synopsis "Rust XML DOM library") - (description "This package provides a Rust XML DOM library.") - (license license:expat))) - -(define-public rust-sxd-xpath-0.4 +(define-public rust-windows-x86-64-gnu-0.36 (package - (name "rust-sxd-xpath") - (version "0.4.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "sxd-xpath" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1sin3g8lzans065gjcwrpm7gdpwdpdg4rpi91rlvb1q8sfjrvqrn")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-peresil" ,rust-peresil-0.3) - ("rust-quick-error" ,rust-quick-error-1) - ("rust-sxd-document" ,rust-sxd-document-0.3)))) - (home-page "https://github.com/shepmaster/sxd-xpath") - (synopsis "Rust XML XPath library") - (description "This package provides a Rust XML XPath library.") - (license (list license:expat license:asl2.0)))) + (inherit rust-windows-x86-64-gnu-0.42) + (name "rust-windows-x86-64-gnu") + (version "0.36.1") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1qfrck3jnihymfrd01s8260d4snql8ks2p8yaabipi3nhwdigkad")))))) -(define-public rust-im-rc-15 +(define-public rust-windows-x86-64-gnu-0.32 (package - (name "rust-im-rc") - (version "15.0.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "im-rc" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0gsgcs1nn38r40973l6zr1v4d85f4s9qyl32n5f20jphf5z9ba1w")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-arbitrary" ,rust-arbitrary-0.4) - ("rust-bitmaps" ,rust-bitmaps-2) - ("rust-proptest" ,rust-proptest-0.9) - ("rust-quickcheck" ,rust-quickcheck-0.9) - ("rust-rand-core" ,rust-rand-core-0.5) - ("rust-rand-xoshiro" ,rust-rand-xoshiro-0.4) - ("rust-rayon" ,rust-rayon-1) - ("rust-refpool" ,rust-refpool-0.4) - ("rust-serde" ,rust-serde-1) - ("rust-sized-chunks" ,rust-sized-chunks-0.6) - ("rust-typenum" ,rust-typenum-1) - ("rust-version-check" ,rust-version-check-0.9)) - #:cargo-development-inputs - (("rust-metrohash" ,rust-metrohash-1) - ("rust-pretty-assertions" ,rust-pretty-assertions-0.6) - ("rust-proptest" ,rust-proptest-0.9) - ("rust-proptest-derive" ,rust-proptest-derive-0.1) - ("rust-rand" ,rust-rand-0.7) - ("rust-rayon" ,rust-rayon-1) - ("rust-serde" ,rust-serde-1) - ("rust-serde-json" ,rust-serde-json-1) - ("rust-version-check" ,rust-version-check-0.9)))) - (home-page "https://docs.rs/crate/im") - (synopsis "Fast immutable collection datatypes for Rust") - (description "@code{im-rc} provides immutable collection datatypes for -Rust that are very fast but not thread-safe. A thread-safe (and slower) -variant of this library is available separately as @code{im}.") - (license license:mpl2.0))) + (inherit rust-windows-x86-64-gnu-0.36) + (name "rust-windows-x86-64-gnu") + (version "0.32.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1g34xhcayig9sndq3555w95q6lr7jr839zxv6l365ijlfhpv24n9")))))) -(define-public rust-impl-codec-0.5 +(define-public rust-windows-x86-64-gnu-0.28 (package - (name "rust-impl-codec") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "impl-codec" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0hy4svffnw9idy9ipp0hkmbzk97fl583akqwyqmvbqy8qgzbs7hn")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-parity-scale-codec" ,rust-parity-scale-codec-2)))) - (home-page "https://github.com/paritytech/parity-common") - (synopsis "Parity Codec serialization support for uint and fixed hash") - (description "This package provides Parity Codec serialization support -for uint and fixed hash.") - (license (list license:expat license:asl2.0)))) + (inherit rust-windows-x86-64-gnu-0.32) + (name "rust-windows-x86-64-gnu") + (version "0.28.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0m79bhdr54g4h4wh2q8wkjlkypb5wvl7xzhc2csiaqb5yl4z8cdw")))))) -(define-public rust-impl-rlp-0.3 +(define-public rust-windows-x86-64-gnullvm-0.42 (package - (name "rust-impl-rlp") - (version "0.3.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "impl-rlp" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "021869d5s47ili9kmhm9y80qpsbf0wwdap14qzfpb84pjbw210pj")))) + (name "rust-windows-x86-64-gnullvm") + (version "0.42.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-x86-64-gnullvm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0a10rns9b07m9snlr97iqxq42zi9ai547gb5fqlv7vihpb92bm89")))) (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-rlp" ,rust-rlp-0.5)))) - (home-page "https://github.com/paritytech/parity-common") - (synopsis "RLP serialization support for uint and fixed hash") - (description "This package provides RLP serialization support for uint -and fixed hash.") + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-impl-serde-0.3 +(define-public rust-windows-x86-64-msvc-0.42 (package - (name "rust-impl-serde") - (version "0.3.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "impl-serde" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0p2zy8ikdxd28s3vb22nwqgnwjn8gx920sr2svdn93j3yd1g0la5")))) + (name "rust-windows-x86-64-msvc") + (version "0.42.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1xdnvhg8yj4fgjy0vkrahq5cbgfpcd7ak2bdv8s5lwjrazc0j07l")))) (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-serde" ,rust-serde-1)) - #:cargo-development-inputs - (("rust-criterion" ,rust-criterion-0.3) - ("rust-serde-derive" ,rust-serde-derive-1) - ("rust-serde-json" ,rust-serde-json-1) - ("rust-uint" ,rust-uint-0.9)))) - (home-page "https://github.com/paritytech/parity-common") - (synopsis "Serde serialization support for uint and fixed hash") - (description "This package provides @code{serde} serialization support -for @code{uint} and @code{fixed_hash}.") + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") (license (list license:expat license:asl2.0)))) -(define-public rust-impl-trait-for-tuples-0.2 +(define-public rust-windows-x86-64-msvc-0.36 (package - (name "rust-impl-trait-for-tuples") - (version "0.2.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "impl-trait-for-tuples" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1vii634v1zvb680h28md42xpdrj1j1d50ix3dga95fxkql8cpnnm")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #false ; Some tests fail. Unstable compiler messages? - #:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)) - #:cargo-development-inputs - (("rust-trybuild" ,rust-trybuild-1)))) - (home-page "https://github.com/bkchr/impl-trait-for-tuples") - (synopsis "Attribute macro to implement a trait for tuples") - (description "This package provides attribute macro to implement -a trait for tuples.") - (license (list license:asl2.0 license:expat)))) + (inherit rust-windows-x86-64-msvc-0.42) + (name "rust-windows-x86-64-msvc") + (version "0.36.1") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "103n3xijm5vr7qxr1dps202ckfnv7njjnnfqmchg8gl5ii5cl4f8")))))) -(define-public rust-indicatif-0.16 +(define-public rust-windows-x86-64-msvc-0.32 (package - (name "rust-indicatif") - (version "0.16.2") + (inherit rust-windows-x86-64-msvc-0.36) + (name "rust-windows-x86-64-msvc") + (version "0.32.0") (source (origin (method url-fetch) - (uri (crate-uri "indicatif" version)) + (uri (crate-uri "windows_x86_64_msvc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "06xyjs0kzqiqkjn60n1miwm2l87sa9p2lmzz0ymq18y72z37s81d")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-console" ,rust-console-0.15) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-number-prefix" ,rust-number-prefix-0.4) - ("rust-rayon" ,rust-rayon-1) - ("rust-regex" ,rust-regex-1) - ("rust-unicode-segmentation" ,rust-unicode-segmentation-1) - ("rust-unicode-width" ,rust-unicode-width-0.1)))) - (home-page "https://github.com/console-rs/indicatif") - (synopsis "Progress bar and cli reporting library for Rust") - (description - "This package provides a progress bar and cli reporting library for -Rust.") - (license license:expat))) + "05l392h518dxn808dc1zkv6d0r9z38q68qqc0ix9fs9741v28jjh")))))) -(define-public rust-inflections-1 +(define-public rust-windows-x86-64-msvc-0.28 (package - (name "rust-inflections") - (version "1.1.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "inflections" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0yl3gas612q25c72lwf04405i87yxr02vgv3ckcnz2fyvhpmhmx2")))) - (build-system cargo-build-system) - (home-page #f) - (synopsis - "Inflection transformation library for changing properties of words") - (description - "High performance inflection transformation library for changing properties of words like the case.") - (license license:expat))) + (inherit rust-windows-x86-64-msvc-0.32) + (name "rust-windows-x86-64-msvc") + (version "0.28.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17z8q25pd3dp6b84qm9nlayd3ym78sbryxlqmgcxvz9vpmy8qarz")))))) -(define-public rust-rustc-workspace-hack-1 +(define-public rust-xmltree-0.10 (package - (name "rust-rustc-workspace-hack") - (version "1.0.0") + (name "rust-xmltree") + (version "0.10.3") (source (origin (method url-fetch) - (uri (crate-uri "rustc-workspace-hack" version)) + (uri (crate-uri "xmltree" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "1yx8l58n2vb2ldpi3z1jn4dmi5hnxvikbhpd5lilpdvkl7xd4wgw")))) - (build-system cargo-build-system) - (home-page "https://crates.io/crates/rustc-workspace-hack") - (synopsis "Hack for the compiler's own build system") - (description "Hack for the compiler's own build system. It is used by -@code{cargo}.") - (license (list license:expat license:asl2.0)))) - -(define-public skim - (package - (name "skim") - (version "0.9.4") - (source - (origin - (method url-fetch) - (uri (crate-uri "skim" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1d5v9vq8frkdjm7bnw3455h6xf3c277d51il2qasn7r20kwik7ab")))) + (base32 "1jqzwhr1a5cknflsshhhjlllmd1xi04qdkjsls2bnmv5mxgagn6p")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-atty-0.2" ,rust-atty-0.2) - ("rust-beef" ,rust-beef-0.5) - ("rust-bitflags" ,rust-bitflags-1) - ("rust-chrono" ,rust-chrono-0.4) - ("rust-clap" ,rust-clap-2) - ("rust-crossbeam" ,rust-crossbeam-0.8) - ("rust-defer-drop" ,rust-defer-drop-1) - ("rust-derive-builder" ,rust-derive-builder-0.9) - ("rust-env-logger" ,rust-env-logger-0.8) - ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-log" ,rust-log-0.4) - ("rust-nix" ,rust-nix-0.19) - ("rust-rayon" ,rust-rayon-1) - ("rust-regex" ,rust-regex-1) - ("rust-shlex" ,rust-shlex-0.1) - ("rust-time" ,rust-time-0.2) - ("rust-timer" ,rust-timer-0.2) - ("rust-tuikit" ,rust-tuikit-0.4) - ("rust-unicode-width" ,rust-unicode-width-0.1) - ("rust-vte" ,rust-vte-0.9)) - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-extras - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (share (string-append out "/share")) - (man (string-append out "/share/man")) - (vimfiles (string-append share "/vim/vimfiles/plugin")) - (bash-completion - (string-append share "/bash-completions/completions")) - (zsh-site (string-append share "/zsh/site-functions")) - (fish-vendor - (string-append share "/fish/vendor-completions.d"))) - ;; Binaries - (for-each - (lambda (binary) (install-file binary bin)) - (find-files "bin")) - (mkdir-p share) - ;; Manpages - (copy-recursively "man" man) - ;; Vim plugins - (mkdir-p vimfiles) - (copy-recursively "plugin" vimfiles) - ;; Completions - (mkdir-p bash-completion) - (copy-file - "shell/completion.bash" - (string-append bash-completion "/skim")) - (copy-file - "shell/key-bindings.bash" - (string-append bash-completion "/skim-bindings")) - (mkdir-p zsh-site) - (copy-file - "shell/completion.zsh" - (string-append zsh-site "/_skim")) - (copy-file - "shell/key-bindings.zsh" - (string-append zsh-site "/_skim-bindings")) - (mkdir-p fish-vendor) - (copy-file - "shell/key-bindings.fish" - (string-append fish-vendor "/skim-bindings.fish")))))))) - (home-page "https://github.com/lotabout/skim") - (synopsis "Fuzzy Finder in Rust") - (description "This package provides a fuzzy finder in Rust.") - (license license:expat))) - -(define-public skim-0.7 - (package - (inherit skim) - (name "skim") - (version "0.7.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "skim" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1yiyd6fml5hd2l811sckkzmiiq9bd7018ajk4qk3ai4wyvqnw8mv")))) - (arguments `(#:cargo-inputs - (("rust-bitflags" ,rust-bitflags-1) - ("rust-chrono" ,rust-chrono-0.4) - ("rust-clap" ,rust-clap-2) - ("rust-derive-builder" ,rust-derive-builder-0.9) - ("rust-env-logger" ,rust-env-logger-0.6) - ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-log" ,rust-log-0.4) - ("rust-nix" ,rust-nix-0.14) - ("rust-rayon" ,rust-rayon-1) - ("rust-regex" ,rust-regex-1) - ("rust-shlex" ,rust-shlex-0.1) - ("rust-time" ,rust-time-0.1) - ("rust-timer" ,rust-timer-0.2) - ("rust-tuikit" ,rust-tuikit-0.2) - ("rust-unicode-width" ,rust-unicode-width-0.1) - ("rust-vte" ,rust-vte-0.3)))))) - -(define-public rust-skim-0.7 - (deprecated-package "rust-skim-0.7" skim-0.7)) - -(define-public rust-clap-conf-0.1 - (package - (name "rust-clap-conf") - (version "0.1.5") - (source - (origin - (method url-fetch) - (uri (crate-uri "clap_conf" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1n29wr6ns660hi63mc30zvs7dhidaycw35am9spzknsal3nrs0sn")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-anyhow" ,rust-anyhow-1) - ("rust-clap" ,rust-clap-2) - ("rust-serde" ,rust-serde-1) - ("rust-thiserror" ,rust-thiserror-1) - ("rust-toml" ,rust-toml-0.5)))) - (home-page - "https://github.com/storyfeet/clap_conf") - (synopsis - "Library to unify commandline arguments, config files and environment variables") - (description - "This package provides a library to unify commandline arguments with config files and environment variables. And make it easier for users to tell your program how to behave across the three main input sources") + (("rust-indexmap" ,rust-indexmap-1) + ("rust-xml-rs" ,rust-xml-rs-0.8)))) + (home-page "https://github.com/eminence/xmltree-rs") + (synopsis "Parse an XML file into a simple tree-like structure") + (description "This package provides a small library for parsing an XML +file into an in-memory tree structure.") (license license:expat))) -(define-public svd2rust - (package - (name "svd2rust") - (version "0.19.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "svd2rust" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0q8slfgjfhpljzlk2myb0i538mfq99q1ljn398jm17r1q2pjjxhv")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-anyhow" ,rust-anyhow-1) - ("rust-cast" ,rust-cast-0.2) - ("rust-clap" ,rust-clap-2) - ("rust-clap-conf" ,rust-clap-conf-0.1) - ("rust-env-logger" ,rust-env-logger-0.7) - ("rust-inflections" ,rust-inflections-1) - ("rust-log" ,rust-log-0.4) - ("rust-proc-macro2" ,rust-proc-macro2-0.4) - ("rust-quote" ,rust-quote-1) - ("rust-svd-parser" ,rust-svd-parser-0.9) - ("rust-syn" ,rust-syn-1) - ("rust-thiserror" ,rust-thiserror-1)))) - (home-page #f) - (synopsis - "Generate Rust register maps (`struct`s) from SVD files") - (description - "Generate Rust register maps (`struct`s) from SVD files") - (license (list license:expat license:asl2.0)))) - -(define-public rust-xi-unicode-0.3 +(define-public rust-xmltree-0.8 (package - (name "rust-xi-unicode") - (version "0.3.0") + (inherit rust-xmltree-0.10) + (name "rust-xmltree") + (version "0.8.0") (source (origin (method url-fetch) - (uri (crate-uri "xi-unicode" version)) - (file-name (string-append name "-" version ".tar.gz")) + (uri (crate-uri "xmltree" version)) + (file-name + (string-append name "-" version ".tar.gz")) (sha256 - (base32 "12mvjgrhr7557cib69wm4q5s4srba27pg2df9l1zihrxgnbh0wx6")))) - (build-system cargo-build-system) - (arguments `(#:skip-build? #t)) - (home-page "https://github.com/google/xi-editor") - (synopsis - "Unicode utilities for text editing, including a line breaking iterator") - (description - "This package provides Unicode utilities useful for text editing, -including a line breaking iterator.") - (license license:asl2.0))) - -(define-public rust-enquote-1 - (package - (name "rust-enquote") - (version "1.1.0") - (home-page "https://github.com/reujab/enquote") - (source (origin - (method url-fetch) - (uri (crate-uri "enquote" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0clrjghlfkkb7sndabs5wch0fz2nif6nj4b117s8kqxx3nqnrhq6")))) - (build-system cargo-build-system) - (synopsis "Rust library that quotes, unquotes, and unescapes strings") - (description "A Rust library quotes, unquotes, and unescapes strings") - (license license:unlicense))) - -(define-public rust-pam-sys-0.5 - (package - (name "rust-pam-sys") - (version "0.5.6") - (home-page "https://github.com/1wilkens/pam-sys") - (source (origin - (method url-fetch) - (uri (crate-uri "pam-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0d14501d5vybjnzxfjf96321xa5wa36x1xvf02h02zq938qmhj6d")))) - (build-system cargo-build-system) + (base32 "0w0y0jz7lhxg05ca6ngfj0lj8sbrjh4vaqv13q7qaqkhs7lsx3pz")))) (arguments - `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2)))) - (inputs `(("linux-pam" ,linux-pam))) - (synopsis - "Rust FFI wrappers for the Linux Pluggable Authentication Modules (PAM)") - (description - "This crate uses bindgen to generate the raw FFI definitions for PAM. For a rustified API consider using pam.") - (license (list license:expat license:asl2.0)))) + `(#:cargo-inputs + (("rust-indexmap" ,rust-indexmap-1) + ("rust-xml-rs" ,rust-xml-rs-0.7)))))) ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index d3b1f179b6..c729363fe8 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -871,7 +871,7 @@ HP@tie{}LaserJet, and possibly other printers. See @file{README} for details.") (define-public epson-inkjet-printer-escpr (package (name "epson-inkjet-printer-escpr") - (version "1.7.21") + (version "1.7.22") ;; XXX: This currently works. But it will break as soon as a newer ;; version is available since the URLs for older versions are not ;; preserved. An alternative source will be added as soon as @@ -879,11 +879,11 @@ HP@tie{}LaserJet, and possibly other printers. See @file{README} for details.") (source (origin (method url-fetch) - (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/13/77/" - "93/e85dc2dc266e96fdc242bd95758bd88d1a51963e/" - "epson-inkjet-printer-escpr-1.7.21-1lsb3.2.tar.gz")) + (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/13/96/" + "55/c6fced63098ae1ba104f11f572794fd558ffca29/" + "epson-inkjet-printer-escpr-1.7.22-1lsb3.2.tar.gz")) (sha256 - (base32 "0z1x9p58321plf2swfxgl72wn7ls8bfbyjwd9l9c8jxfr1v2skkz")))) + (base32 "0b359krhhjjw5hc4b0gqdqwrm6dzc263mdccfzgnyyq7znkyybqb")))) (build-system gnu-build-system) (arguments (list #:modules diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index d82d94abff..c713859a62 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -366,7 +366,7 @@ curl to obtain exactly that HTTP request.") (define-public coeurl (package (name "coeurl") - (version "0.2.0") + (version "0.2.1") (source (origin (method git-fetch) @@ -375,8 +375,7 @@ curl to obtain exactly that HTTP request.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0kbazvrb4hzc9jr7yywd36ack1yy7bh8sh1kc4jzv6jfzvxjb0i0")))) + (base32 "0qbbrfs35zl0wl6x6jn4p9ncxgdm70a883cflvikkykx9n5k2lpq")))) (build-system meson-build-system) (native-inputs (list doctest pkg-config)) diff --git a/gnu/packages/digest.scm b/gnu/packages/digest.scm index 4211848fdb..481771804b 100644 --- a/gnu/packages/digest.scm +++ b/gnu/packages/digest.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2021 Ryan Prior <rprior@protonmail.com> -;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2021, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,9 +25,11 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix utils) + #:use-module (gnu packages python-build) #:use-module (ice-9 match)) (define-public wyhash @@ -111,15 +113,17 @@ platforms (both big and little endian).") (define-public python-xxhash (package (name "python-xxhash") - (version "2.0.2") + (version "3.1.0") (source (origin (method url-fetch) (uri (pypi-uri "xxhash" version)) (sha256 (base32 - "0jbvz19acznq00544gcsjg05fkvrmwbnwdfgrvwss3i1ys6avgmp")))) - (build-system python-build-system) + "1hdxcscry59gh0znlm71ya23mm9rfmvz8lvvlplzxzf63pib28dc")))) + (build-system pyproject-build-system) + ;; Needed to embed the correct version string + (native-inputs (list python-setuptools-scm)) (home-page "https://github.com/ifduyue/python-xxhash") (synopsis "Python binding for xxHash") (description "This package provides Python bindings for the xxHash hash diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 8912bb74bc..85e2d7c729 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -1021,7 +1021,7 @@ to create devices with respective mappings for the ATARAID sets discovered.") (define-public libblockdev (package (name "libblockdev") - (version "2.27") + (version "2.28") (source (origin (method url-fetch) (uri (string-append "https://github.com/storaged-project/" @@ -1029,7 +1029,7 @@ to create devices with respective mappings for the ATARAID sets discovered.") version "-1/libblockdev-" version ".tar.gz")) (sha256 (base32 - "05rm9h8v30rahr245jcw6if6b5g16mb5hnz7wl1shzip0wky3k3d")))) + "1x3xbgd2dyjhcqvyalpnrp727xidfxmaxgyyvv5gwx4aw90wijc2")))) (build-system gnu-build-system) (arguments `(#:phases @@ -1142,6 +1142,7 @@ on your file system and offers to remove it. @command{rmlint} can find: (define-public lf (package (name "lf") + ;; When updating, remove go-github-com-gdamore-tcell-v2-2.3 from golang.scm. (version "27") (source (origin (method git-fetch) @@ -1155,7 +1156,7 @@ on your file system and offers to remove it. @command{rmlint} can find: (build-system go-build-system) (native-inputs (list go-github.com-mattn-go-runewidth go-golang-org-x-term - go-gopkg-in-djherbis-times-v1 go-github-com-gdamore-tcell-v2)) + go-gopkg-in-djherbis-times-v1 go-github-com-gdamore-tcell-v2-2.3)) (arguments `(#:import-path "github.com/gokcehan/lf")) (home-page "https://github.com/gokcehan/lf") diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 21b711d147..3762e093a2 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -871,7 +871,7 @@ Extensions} (DNSSEC).") (define-public knot (package (name "knot") - (version "3.2.2") + (version "3.2.3") (source (origin (method git-fetch) @@ -880,7 +880,7 @@ Extensions} (DNSSEC).") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1x1waa2cb91zhsqkx4mkiqy00kq1f1pavjfhlz7wknlnll48iayd")) + (base32 "117q8jllaakd6gv0mfkq45sigy5c8j8jbyxiwna3wan0mjx81fhv")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 60ef39c77e..8dff0f2ec8 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -197,6 +197,7 @@ with Microsoft Compiled HTML (CHM) files") python-psutil python-py7zr python-pychm + python-pycryptodome python-pygments python-pyqt-without-qtwebkit python-pyqtwebengine diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 35d6d87030..4dd813f919 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -258,7 +258,7 @@ (define-public emacs-geiser (package (name "emacs-geiser") - (version "0.28") + (version "0.28.1") (source (origin (method git-fetch) @@ -267,7 +267,7 @@ (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0dd20cq3nz4jjysaqx2aiqqaxvkfkbj2x4zm2mz3pd4rmydckj2y")))) + (base32 "111as99278vbv6pwj8rpl308g327f8iznnrz71mngl6d5mr0xpa1")))) (build-system emacs-build-system) (arguments '(#:phases @@ -305,7 +305,7 @@ e.g. emacs-geiser-guile for Guile.") (define-public emacs-geiser-guile (package (name "emacs-geiser-guile") - (version "0.28.0") + (version "0.28.1") (source (origin (method git-fetch) @@ -314,7 +314,7 @@ e.g. emacs-geiser-guile for Guile.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "13qxg1npm0pmnml5q268k5xk1clyqldp8v200ihrqwqlc3ga7f36")))) + (base32 "0gp8xbfm7y2gabjyys8jylfy1pkkglqas32xxrbqxfh1hv0cfh2f")))) (build-system emacs-build-system) (arguments (list @@ -889,6 +889,29 @@ of the segments available in that package using icons from information in the mode line.") (license license:expat))) +(define-public emacs-spongebob + (let ((commit "ae8ae6ba0dc57b7357ba87ff0609d27c4a0a5f51") + (revision "0")) + (package + (name "emacs-spongebob") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/dustyweb/spongebob.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1agqpp078ij2irn0kb8bgqk0nd47fi20yfd9szn8kbqypfqalvgc")))) + (build-system emacs-build-system) + (home-page "https://gitlab.com/dustyweb/gauche") + (synopsis "Memetically mock a region of text") + (description "This package transforms text using @code{studlify-region} +and inserts a SpongeBob SquarePants ASCII art figure in the current +buffer.") + (license license:gpl3+)))) + (define-public emacs-project (package (name "emacs-project") @@ -5089,6 +5112,28 @@ at the current line number or active region. @code{git-link-commit} returns the URL for a commit. URLs are added to the kill ring.") (license license:gpl3+))) +(define-public emacs-frowny + (package + (name "emacs-frowny") + (version "0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/duckwork/frowny.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01ss3js71as1jpqcf0x9hfvapiyyhj9ni4y1n6wvqsghv5dcaiy0")))) + (build-system emacs-build-system) + (home-page "https://github.com/duckwork/frowny.el") + (synopsis "Insert frownies in Emacs :(") + (description "This package ships @code{frowny-mode}, which makes it so that +inserting a single @code{(} when after a @code{:} will not automatically close +the parenthesis, meaning that only @code{:(} is inserted. Works with +@code{electric-pair-mode}, @code{paredit-mode}, and others.") + (license license:public-domain))) + (define-public emacs-apache-mode (package (name "emacs-apache-mode") @@ -15971,7 +16016,7 @@ similar syntax; currently C++, Objective-C, Java, CORBA's IDL, Pike, and AWK.") (define-public emacs-csharp-mode (package (name "emacs-csharp-mode") - (version "1.1.1") + (version "2.0.0") (source (origin (method git-fetch) @@ -15980,7 +16025,7 @@ similar syntax; currently C++, Objective-C, Java, CORBA's IDL, Pike, and AWK.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0wfd4jdjsq8qp6pavf25y87dxvlnsqapfi4c4m3xj24baalr2dpq")))) + (base32 "1d0pf236xi4c7fazv67a53yrac24lilnkzp9pb55xm88gig7rfmz")))) (build-system emacs-build-system) (home-page "https://github.com/josteink/csharp-mode") (synopsis "Major mode for C# code") @@ -30358,39 +30403,40 @@ service, and connect it with Emacs via inter-process communication.") (name "emacs-telega") (build-system emacs-build-system) (arguments - `(#:emacs ,(if (target-64bit?) - emacs-minimal - ;; Require wide-int support for 32-bit platform. - emacs-wide-int) - #:include (cons "^etc\\/" %default-include) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-sources - (lambda* (#:key inputs #:allow-other-keys) - ;; Hard-code paths to `ffplay` and `ffmpeg`. - (let* ((ffplay-bin (search-input-file inputs "/bin/ffplay")) - (ffmpeg-bin (search-input-file inputs "/bin/ffmpeg"))) - (substitute* '("telega-ffplay.el" "telega-vvnote.el") - (("(shell-command-to-string\|concat) \"(ffmpeg\|ffprobe)" - all func cmd) - (string-append func " \"" - (search-input-file - inputs (string-append "/bin/" cmd)))) - (("\\(executable-find \"ffplay\"\\)") - (string-append "(and (file-executable-p \"" ffplay-bin "\")" - "\"" ffplay-bin "\")")) - (("\\(executable-find \"ffmpeg\"\\)") - (string-append "(and (file-executable-p \"" ffmpeg-bin "\")" - "\"" ffmpeg-bin "\")")))))) - (add-after 'unpack 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "telega-customize.el" - (("@TELEGA_SERVER_BIN@") - (search-input-file inputs "/bin/telega-server"))) - (substitute* "telega-util.el" - (("@TELEGA_SHARE@") - (string-append (elpa-directory (assoc-ref outputs "out")) - "/etc")))))))) + (list + #:emacs (if (target-64bit?) + emacs-minimal + ;; Require wide-int support for 32-bit platform. + emacs-wide-int) + #:include #~(cons "^etc\\/" %default-include) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-sources + (lambda* (#:key inputs #:allow-other-keys) + ;; Hard-code paths to `ffplay` and `ffmpeg`. + (let* ((ffplay-bin (search-input-file inputs "/bin/ffplay")) + (ffmpeg-bin (search-input-file inputs "/bin/ffmpeg"))) + (substitute* '("telega-ffplay.el" "telega-vvnote.el") + (("(shell-command-to-string\|concat) \"(ffmpeg\|ffprobe)" + all func cmd) + (string-append func " \"" + (search-input-file + inputs (string-append "/bin/" cmd)))) + (("\\(executable-find \"ffplay\"\\)") + (string-append "(and (file-executable-p \"" ffplay-bin "\")" + "\"" ffplay-bin "\")")) + (("\\(executable-find \"ffmpeg\"\\)") + (string-append "(and (file-executable-p \"" ffmpeg-bin "\")" + "\"" ffmpeg-bin "\")")))))) + (add-after 'unpack 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "telega-customize.el" + (("@TELEGA_SERVER_BIN@") + (search-input-file inputs "/bin/telega-server"))) + (substitute* "telega-util.el" + (("@TELEGA_SHARE@") + (string-append (elpa-directory (assoc-ref outputs "out")) + "/etc")))))))) (inputs (list emacs-telega-server ffmpeg)) (native-inputs '()) @@ -30406,13 +30452,14 @@ for the Telegram messaging platform."))) (inherit emacs-telega) (name "emacs-telega-contrib") (arguments - `(#:exclude '("telega-live-location.el") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'enter-subdirectory - (lambda _ (chdir "contrib") #t)) - (add-before 'install-license-files 'leave-subdirectory - (lambda _ (chdir "..") #t))))) + (list + #:exclude #~(list "telega-live-location.el") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'enter-subdirectory + (lambda _ (chdir "contrib"))) + (add-before 'install-license-files 'leave-subdirectory + (lambda _ (chdir "..")))))) (inputs '()) (native-inputs '()) (propagated-inputs diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 43e23e30a8..1f3958f55c 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -669,7 +669,7 @@ multipole-accelerated algorithm.") (define-public fritzing (package (name "fritzing") - (version "0.9.3b") + (version "0.9.6") (source (origin (method git-fetch) (uri (git-reference @@ -678,7 +678,7 @@ multipole-accelerated algorithm.") (file-name (git-file-name name version)) (sha256 (base32 - "0hpyc550xfhr6gmnc85nq60w00rm0ljm0y744dp0z88ikl04f4s3")))) + "083nz7vj7a334575smjry6257535h68gglh8a381xxa36dw96aqs")))) (build-system gnu-build-system) (arguments `(#:phases @@ -687,24 +687,18 @@ multipole-accelerated algorithm.") (lambda* (#:key inputs outputs #:allow-other-keys) (copy-recursively (assoc-ref inputs "fritzing-parts-db") "parts") - ;; Make compatible with libgit2 > 0.24 - (substitute* "src/version/partschecker.cpp" - (("error = git_remote_connect\\(remote, GIT_DIRECTION_FETCH, &callbacks\\)") - "error = git_remote_connect(remote, GIT_DIRECTION_FETCH, &callbacks, NULL, NULL)")) - ;; Use system libgit2 and boost. (substitute* "phoenix.pro" - (("^LIBGIT2INCLUDE =.*") - (string-append "LIBGIT2INCLUDE=" - (assoc-ref inputs "libgit2") "/include\n")) - (("^ LIBGIT2LIB =.*") - (string-append " LIBGIT2LIB=" - (assoc-ref inputs "libgit2") "/lib\n"))) - ;; This file checks for old versions of Boost, insisting on - ;; having us download the boost sources and placing them in the - ;; build directory. - (substitute* "pri/utils.pri" - (("error\\(") "message(")) + (("^LIBGIT_STATIC.*") + (string-append "LIBGIT2INCLUDE=" (assoc-ref inputs "libgit2") "/include\n" + "LIBGIT2LIB=" (assoc-ref inputs "libgit2") "/lib\n" + "INCLUDEPATH += $$LIBGIT2INCLUDE\n" + "LIBS += -L$$LIBGIT2LIB -lgit2\n")) + (("^.*pri/libgit2detect.pri.") "")) + ;; Trick the internal mechanism to load the parts + (substitute* "src/version/partschecker.cpp" + ((".*git_libgit2_init.*") + "return \"083nz7vj7a334575smjry6257535h68gglh8a381xxa36dw96aqs\";")) (let ((out (assoc-ref outputs "out"))) (invoke "qmake" @@ -723,11 +717,11 @@ multipole-accelerated algorithm.") (method git-fetch) (uri (git-reference (url "https://github.com/fritzing/fritzing-parts") - (commit version))) + (commit (string-append "release_" version)))) (file-name (git-file-name "fritzing-parts" version)) (sha256 (base32 - "1d2v8k7p176j0lczx4vx9n9gbg3vw09n2c4b6w0wj5wqmifywhc1")))))) + "0wsvn57v6n0ygnhk2my94rrfzb962z1cj4d1xmp1farwck3811h6")))))) (home-page "https://fritzing.org") (synopsis "Electronic circuit design") (description @@ -970,6 +964,7 @@ Emacs).") #$(this-package-input "opencascade-occt") "/include/opencascade") "-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON" + "-DKICAD_USE_EGL=ON" ;because wxWidgets uses EGL "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE") #:phases (modify-phases %standard-phases @@ -980,16 +975,6 @@ Emacs).") (string-append "NGSPICE_DLL_FILE=\"" (assoc-ref inputs "libngspice") "/lib/libngspice.so\""))))) - (add-after 'unpack 'fix-python-detection - (lambda _ - (substitute* "CMakeModules/FindPythonLibs.cmake" - (("_PYTHON3_VERSIONS 3\\.8 3\\.7") - "_PYTHON3_VERSIONS 3.9 3.8 3.7")))) - (add-after 'unpack 'add-missing-include - (lambda _ - (substitute* "common/lib_tree_model.cpp" - (("#include <eda_pattern_match.h>" all) - (string-append "#include <algorithm>\n" all))))) (add-after 'install 'wrap-program ;; Ensure correct Python at runtime. (lambda* (#:key inputs outputs #:allow-other-keys) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index feb533eca7..eb70503f57 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -2177,7 +2177,7 @@ mining.") (define-public p2pool (package (name "p2pool") - (version "2.5") + (version "2.6") (source (origin (method git-fetch) @@ -2186,7 +2186,7 @@ mining.") (commit (string-append "v" version)) (recursive? #t))) (file-name (git-file-name name version)) - (sha256 (base32 "1kdsxh6f24zp7h7bwkrin2mc81ysfny5wprzgy41h2bc6dpq067w")) + (sha256 (base32 "0832mv3f4c61w8s25higjbmmajjkvjdriw1xfygjiw5qxdcs202z")) (modules '((guix build utils))) (snippet #~(for-each delete-file-recursively diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 40b7de4467..af53ddb6eb 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -1882,7 +1882,7 @@ that wish to perform colour calibration.") (define-public libfprint (package (name "libfprint") - (version "1.94.4") + (version "1.94.5") (source (origin (method git-fetch) @@ -1891,7 +1891,7 @@ that wish to perform colour calibration.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1wfd2svsq26wizhsaifnr74havswbc1rlfm79b36yrhw9n7c3jqb")))) + (base32 "1l1ak7y2kz0nrdkfj41n7h34dyykgzdg50y752ayk3ginp6szr7r")))) (build-system meson-build-system) (arguments (list #:configure-flags diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm index 05955ad59a..80ffa927e3 100644 --- a/gnu/packages/ftp.scm +++ b/gnu/packages/ftp.scm @@ -240,7 +240,7 @@ output. nettle pugixml sqlite - wxwidgets)) + wxwidgets-3.0)) (home-page "https://filezilla-project.org") (synopsis "Full-featured graphical FTP/FTPS/SFTP client") (description diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 9d79efbe94..661d727d79 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1427,7 +1427,7 @@ real-time combat.") (define-public golly (package (name "golly") - (version "3.3") + (version "4.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/golly/golly/golly-" @@ -1435,7 +1435,7 @@ real-time combat.") "-src.tar.gz")) (sha256 (base32 - "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8")))) + "0pg9cp83nxc354lizgza5bqdy7z5wh36863203zw6r6s4flji4an")))) (build-system gnu-build-system) (arguments '(#:make-flags (list "CC=gcc" @@ -1445,17 +1445,7 @@ real-time combat.") #:tests? #f ; no check target #:phases (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key inputs #:allow-other-keys) - ;; For some reason, setting the PYTHON_SHLIB make flag doesn't - ;; properly set the path to the Python shared library. This - ;; substitution acheives the same end by different means. - (substitute* "gui-wx/wxprefs.cpp" - (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)") - (string-append "pythonlib = \"" - (assoc-ref inputs "python") - "/lib/libpython-2.7.so\""))) - #t)) + (delete 'configure) (replace 'build (lambda* (#:key make-flags outputs #:allow-other-keys) (with-directory-excursion "gui-wx" @@ -1485,11 +1475,7 @@ real-time combat.") (native-inputs (list lua)) (inputs - `(("glu" ,glu) - ("mesa" ,mesa) - ("python" ,python-2) - ("wxwidgets" ,wxwidgets-gtk2) - ("zlib" ,zlib))) + (list glu mesa python sdl2 wxwidgets zlib)) (home-page "http://golly.sourceforge.net/") (synopsis "Software for exploring cellular automata") (description @@ -6151,7 +6137,7 @@ starting a decryption sequence to reveal the original plaintext characters.") libvorbis lua sdl2 - wxwidgets)) + wxwidgets-3.0)) (native-inputs (list cppunit pkg-config)) (arguments diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 0f777c7f9b..b3a5c0df3f 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -2158,7 +2158,7 @@ exchanged form one Spatial DBMS and the other.") sqlite tinyxml wxsvg - wxwidgets + wxwidgets-3.0 xz zlib)) (arguments diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f81b44cca2..8652d9e03c 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7292,7 +7292,7 @@ almost all of them.") ("gtkspell3" ,gtkspell3) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("gnome-settings-daemon" ,gnome-settings-daemon) ; desktop-schemas are not enough - ("webkitgtk" ,webkitgtk))) + ("webkitgtk" ,webkitgtk-with-libsoup2))) (home-page "https://wiki.gnome.org/Apps/Eolie") (synopsis "Web browser for GNOME") (description diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 064b775ab1..13b603b64a 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -485,7 +485,7 @@ gpgpme starting with version 1.7.") (define-public guile-gcrypt (package (name "guile-gcrypt") - (version "0.3.0") + (version "0.4.0") (home-page "https://notabug.org/cwebber/guile-gcrypt") (source (origin (method git-fetch) @@ -494,7 +494,7 @@ gpgpme starting with version 1.7.") (commit (string-append "v" version)))) (sha256 (base32 - "0m29fg4pdfifnqqsa437zc5c1bhbfh62mc69ba25ak4x2cla41ll")) + "0m75h9q10yb27kzjsvhhq0yk3jaxiy9bpbfd9qg269hf9gabgfdx")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index feb80d81a2..52ece9bbd4 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -19,7 +19,6 @@ ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Baptiste Strazzul <bstrazzull@hotmail.fr> -;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -85,7 +84,6 @@ #:use-module (gnu packages assembly) #:use-module (gnu packages rust) #:use-module (gnu packages rust-apps) - #:use-module (gnu packages crates-io) #:use-module (gnu packages llvm) #:use-module (gnu packages nss) #:use-module (gnu packages icu4c) @@ -350,148 +348,6 @@ in C/C++.") (inputs (list icu4c readline zlib)))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Temporary packaging of rust-cbindgen-0.23 and its dependencies -;; follow, pending their inclusion into (gnu packages rust-apps) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(define rust-textwrap-0.15-promise - (delay - (package - (inherit rust-textwrap-0.12) - (name "rust-textwrap") - (version "0.15.0") - (source (origin - (method url-fetch) - (uri (crate-uri "textwrap" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1yw513k61lfiwgqrfvsjw1a5wpvm0azhpjr2kr0jhnq9c56is55i")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs (("rust-hyphenation" ,rust-hyphenation-0.8) - ("rust-smawk" ,rust-smawk-0.3) - ("rust-terminal-size" ,rust-terminal-size-0.1) - ("rust-unicode-linebreak" ,rust-unicode-linebreak-0.1) - ("rust-unicode-width" ,rust-unicode-width-0.1))))))) - -(define rust-clap-lex-0.2 - (package - (name "rust-clap-lex") - (version "0.2.4") - (source (origin - (method url-fetch) - (uri (crate-uri "clap_lex" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1ib1a9v55ybnaws11l63az0jgz5xiy24jkdgsmyl7grcm3sz4l18")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs (("rust-os-str-bytes" ,rust-os-str-bytes-6)))) - (home-page "https://github.com/clap-rs/clap/tree/master/clap_lex") - (synopsis "Minimal, flexible command line parser") - (description "Minimal, flexible command line parser") - (license (list license:expat license:asl2.0)))) - -(define rust-clap-derive-3.2.15-promise - (delay - (package - (inherit rust-clap-derive-3) - (name "rust-clap-derive") - (version "3.2.15") - (source (origin - (method url-fetch) - (uri (crate-uri "clap_derive" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1d2c4vs345fwihkd8cc7m6acbiydcwramkd5mnp36p0a7g6jm9cv")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs (("rust-heck" ,rust-heck-0.4) - ("rust-proc-macro-error" ,rust-proc-macro-error-1) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1))))))) - -(define rust-clap-3.2.16-promise - (delay - (package - (inherit rust-clap-3) - (name "rust-clap") - (version "3.2.16") - (source (origin - (method url-fetch) - (uri (crate-uri "clap" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1af06z8z7m3327yz1xvzxfjanclgpvvy3lssb745rig7adkbpnx3")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs (("rust-atty" ,rust-atty-0.2) - ("rust-backtrace" ,rust-backtrace-0.3) - ("rust-bitflags" ,rust-bitflags-1) - ("rust-clap-derive" ,(force rust-clap-derive-3.2.15-promise)) - ("rust-clap-lex" ,rust-clap-lex-0.2) - ("rust-indexmap" ,rust-indexmap-1) - ("rust-once-cell" ,rust-once-cell-1) - ("rust-regex" ,rust-regex-1) - ("rust-strsim" ,rust-strsim-0.10) - ("rust-termcolor" ,rust-termcolor-1) - ("rust-terminal-size" ,rust-terminal-size-0.1) - ("rust-textwrap" ,(force rust-textwrap-0.15-promise)) - ("rust-unicase" ,rust-unicase-2) - ("rust-yaml-rust" ,rust-yaml-rust-0.4))))))) - -(define rust-cbindgen-0.24-promise - (delay - (package - (inherit rust-cbindgen-0.19) - (name "rust-cbindgen") - (version "0.24.3") - (source (origin - (method url-fetch) - (uri (crate-uri "cbindgen" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1yqxqsz2d0cppd8zwihk2139g5gy38wqgl9snj6rnk8gyvnqsdd6")))) - (arguments - `(#:cargo-inputs (("rust-clap" ,(force rust-clap-3.2.16-promise)) - ("rust-heck" ,rust-heck-0.4) - ("rust-indexmap" ,rust-indexmap-1) - ("rust-log" ,rust-log-0.4) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-serde" ,rust-serde-1) - ("rust-serde-json" ,rust-serde-json-1) - ("rust-syn" ,rust-syn-1) - ("rust-tempfile" ,rust-tempfile-3) - ("rust-toml" ,rust-toml-0.5)) - #:cargo-development-inputs (("rust-serial-test" ,rust-serial-test-0.5))))))) - -;; Bug with IceCat 102 with cbindgen-0.24, see -;; https://bugzilla.mozilla.org/show_bug.cgi?id=1773259#c5 for -;; possible patch (untested) -(define rust-cbindgen-0.23-promise - (delay - (package - (inherit (force rust-cbindgen-0.24-promise)) - (name "rust-cbindgen") - (version "0.23.0") - (source (origin - (method url-fetch) - (uri (crate-uri "cbindgen" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "006rn3fn4njayjxr2vd24g1awssr9i3894nbmfzkybx07j728vav"))))))) - - (define mozilla-compare-locales (origin (method hg-fetch) @@ -865,10 +721,9 @@ in C/C++.") ;; ,(search-patch "icecat-use-system-graphite2+harfbuzz.patch")) ;; ("icecat-use-system-media-libs.patch" ;; ,(search-patch "icecat-use-system-media-libs.patch")) - ;; TODO: Change the following lines to use 'rust' when it's >= 1.59. rust `(,rust "cargo") - (force rust-cbindgen-0.23-promise) + rust-cbindgen-0.23 llvm clang perl @@ -1551,7 +1406,7 @@ ca495991b7852b855")) pkg-config python-wrapper rust - (force rust-cbindgen-0.23-promise) + rust-cbindgen-0.23 which yasm)) (home-page "https://www.thunderbird.net") diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index b7c0acb9f6..70ddef52f1 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -6259,6 +6259,21 @@ systems.") (modify-inputs (package-inputs go-github-com-gdamore-tcell) (prepend go-golang-org-x-term go-golang-org-x-sys))))) +(define-public go-github-com-gdamore-tcell-v2-2.3 + (package + (inherit go-github-com-gdamore-tcell-v2) + (name "go-github-com-gdamore-tcell") + (version "2.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gdamore/tcell") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ypbl5080q9sd3irad8mv7zlg4242i8pmg5xyhbyq95kymwibaid")))))) + (define-public go-git-sr-ht-rockorager-tcell-term (package (name "go-git-sr-ht-rockorager-tcell-term") diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index e46bf7b741..d846c79526 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -794,7 +794,7 @@ model to base your own plug-in on, here it is.") ;; This test is flaky on at least some architectures. ;; https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1244 #$@(if (member (%current-system) - '("i686-linux" "aarch64-linux")) + '("i686-linux" "aarch64-linux" "riscv64-linux")) `((("'elements/camerabin\\.c'\\]\\],") "'elements/camerabin.c'], true, ],")) '()) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index ad34dd51ec..de82b9e55f 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -344,6 +344,20 @@ output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.") (base32 "0c5mzwgz43d37h75p4b6cgjg4v24jdd96i7gjpgxirn8qks2i5m4")))))) + +(define-public harfbuzz-5 + (package + (inherit harfbuzz) + (version "5.3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/harfbuzz/harfbuzz" + "/releases/download/" version "/harfbuzz-" + version ".tar.xz")) + (sha256 + (base32 + "0ka3nkk2lks2lgakq02vyibwdziv11dkpa2brkx230asnyby0v2a")))))) + (define-public libdatrie (package (name "libdatrie") diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index f392bb8c16..65558ffe08 100644 --- a/gnu/packages/hardware.scm +++ b/gnu/packages/hardware.scm @@ -998,7 +998,7 @@ technology, such as head mounted displays with built in head tracking.") (define-public openrgb (package (name "openrgb") - (version "0.7") + (version "0.8") (source (origin (method git-fetch) @@ -1007,15 +1007,25 @@ technology, such as head mounted displays with built in head tracking.") (commit (string-append "release_" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0xhfaz0b74nfnh7il2cz5c0338xlzay00g6hc2h3lsncarj8d5n7")) + (base32 "1yz7sdrjcxajm1zpa5djinmych5dvck0r1fvk0x5qmk87va4p9z3")) (patches (search-patches "openrgb-unbundle-hueplusplus.patch")) (modules '((guix build utils))) (snippet '(begin - ;; Delete the bundled hueplusplus and json libraries. - (delete-file-recursively "dependencies/hueplusplus-1.0.0") - (delete-file-recursively "dependencies/json"))))) + ;; Delete many of the bundled libraries. + (for-each delete-file-recursively + (list "dependencies/hidapi-win" + "dependencies/hueplusplus-1.0.0" + "dependencies/json" + "dependencies/libusb-1.0.22" + "dependencies/macUSPCIO" + "dependencies/mbedtls-2.24.0" + "dependencies/NVFC" + "dependencies/openrazer-win32" + "dependencies/winring0" + ;; Some bundled appimages + "scripts/tools")))))) (build-system cmake-build-system) (arguments (list @@ -1044,7 +1054,8 @@ technology, such as head mounted displays with built in head tracking.") mbedtls-apache qtbase-5)) (native-inputs - (list pkg-config)) + (list pkg-config + qttools-5)) (synopsis "RGB lighting control") (description "OpenRGB is lighting control that doesn't depend on manufacturer software. diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm index 7e4fb04e0f..a878c82b66 100644 --- a/gnu/packages/jami.scm +++ b/gnu/packages/jami.scm @@ -99,6 +99,7 @@ "jami-fix-unit-tests-build.patch" "jami-fix-qml-imports.patch" "jami-no-webengine.patch" + "jami-sip-contacts.patch" "jami-sip-unregister.patch" "jami-xcb-link.patch")))) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 530396213a..2103aec5a0 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -483,14 +483,14 @@ Apple Keynote documents. It currently supports Keynote versions 2 to 5.") (define-public liblangtag (package (name "liblangtag") - (version "0.6.3") + (version "0.6.4") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/tagoh/liblangtag/downloads/" "liblangtag-" version ".tar.bz2")) (sha256 - (base32 "1g9kwxx60q0hpwvs66ys1cb9qg54hfvbivadwli8sfpc085a44hz")))) + (base32 "0r55r30ih8dgq1hwbpl834igilj7bpxcnmlrlkd3vryk2wn0c0ap")))) (build-system gnu-build-system) (native-inputs (list libtool pkg-config)) @@ -745,14 +745,14 @@ from the old StarOffice (.sdc, .sdw, ...).") (define-public libwps (package (name "libwps") - (version "0.4.12") + (version "0.4.13") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/" name "/" name "/" name "-" version "/" name "-" version ".tar.xz")) (sha256 (base32 - "1nsfacqp5sfkyayw7q0wp68lidksd1wjdix8qmsbf0vdl19gn6p2")))) + "03y4aslp5lfqc14agn0hgkifwrknh8s4hfjll9wrfs1hq3kaz5ff")))) (build-system gnu-build-system) (native-inputs (list doxygen pkg-config)) @@ -992,7 +992,7 @@ spell-checking library.") (build-system gnu-build-system) (inputs (list perl)) - (home-page "http://hunspell.sourceforge.net/") + (home-page "https://hunspell.github.io/") (synopsis "Hyphenation library") (description "Hyphen is a hyphenation library using TeX hyphenation patterns, which are pre-processed by a perl script.") @@ -1050,20 +1050,20 @@ spell-checking library.") (define-public mythes (package (name "mythes") - (version "1.2.4") + (version "1.2.5") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/hunspell/MyThes/" version "/" - name "-" version ".tar.gz")) - (sha256 (base32 - "0prh19wy1c74kmzkkavm9qslk99gz8h8wmjvwzjc6lf8v2az708y")))) + (uri (string-append "https://github.com/hunspell/mythes/releases/" + "download/v" version "/mythes-" version ".tar.xz")) + (sha256 + (base32 "07ajdyyif19k445dqffkm32c1kl8z0cw6bczc7x5zgkvf1q9y9qr")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list hunspell perl)) - (home-page "http://hunspell.sourceforge.net/") + (home-page "https://hunspell.github.io/") (synopsis "Thesaurus") (description "MyThes is a simple thesaurus that uses a structured text data file and an index file with binary search to look up words and phrases diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 8bc4364ece..75f38a923a 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -67,6 +67,7 @@ ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> ;;; Copyright © 2022 Hunter Jozwiak <hunter.t.joz@gmail.com> ;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space> +;;; Copyright © 2022 Stefan <stefan-guix@vodafonemail.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -189,11 +190,31 @@ #:use-module (srfi srfi-2) #:use-module (srfi srfi-26) #:use-module (ice-9 match) - #:use-module (ice-9 regex)) + #:use-module (ice-9 regex) + #:export (customize-linux + make-defconfig)) + +(define (linux-srcarch) + "Return the linux SRCARCH name, which is set in the toplevel Makefile of +Linux and denotes the architecture-specific directory name below arch/ in its +source code. Some few architectures share a common folder. It resembles the +definition of SRCARCH based on ARCH in the Makefile and may be used to place a +defconfig file in the proper path." + (let ((linux-arch (platform-linux-architecture + (lookup-platform-by-target-or-system + (or (%current-target-system) + (%current-system)))))) + (match linux-arch + ("i386" "x86") + ("x86_64" "x86") + ("sparc32" "sparc") + ("sparc64" "sparc") + ("sh64" "sh") + (_ linux-arch)))) (define-public (system->defconfig system) "Some systems (notably powerpc-linux) require a special target for kernel -defconfig. Return the appropriate make target if applicable, otherwise return +defconfig. Return the appropriate Make target if applicable, otherwise return \"defconfig\"." (cond ((string-prefix? "powerpc-" system) "pmac32_defconfig") ((string-prefix? "powerpc64-" system) "ppc64_defconfig") @@ -846,8 +867,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (string-append "infodir=" #$output "/share/info")))))) #~()) - (replace 'configure - (lambda* (#:key inputs target #:allow-other-keys) + (add-before 'configure 'set-environment + (lambda* (#:key target #:allow-other-keys) ;; Avoid introducing timestamps. (setenv "KCONFIG_NOTIMESTAMP" "1") (setenv "KBUILD_BUILD_TIMESTAMP" (getenv "SOURCE_DATE_EPOCH")) @@ -863,18 +884,21 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (%current-system)))))) (setenv "ARCH" arch) (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")) - (when target (setenv "CROSS_COMPILE" (string-append target "-")) (format #t "`CROSS_COMPILE' set to `~a'~%" (getenv "CROSS_COMPILE")))) + ;; Allow EXTRAVERSION to be set via the environment. + (substitute* "Makefile" + (("^ *EXTRAVERSION[[:blank:]]*=") + "EXTRAVERSION ?=")) (setenv "EXTRAVERSION" #$(and extra-version - (string-append "-" extra-version))) - + (string-append "-" extra-version))))) + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) (let ((config (assoc-ref inputs "kconfig"))) - ;; Use a custom kernel configuration file or a default ;; configuration file. (if config @@ -882,17 +906,15 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (copy-file config ".config") (chmod ".config" #o666)) (invoke "make" #$defconfig)) - ;; Appending works even when the option wasn't in the ;; file. The last one prevails if duplicated. (let ((port (open-file ".config" "a")) (extra-configuration #$(config->string extra-options))) (display extra-configuration port) (close-port port)) - (invoke "make" "oldconfig")))) (replace 'install - (lambda* (#:key inputs native-inputs #:allow-other-keys) + (lambda* (#:key inputs #:allow-other-keys) (let ((moddir (string-append #$output "/lib/modules")) (dtbdir (string-append #$output "/lib/dtbs"))) ;; Install kernel image, kernel configuration and link map. @@ -1238,6 +1260,110 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") (inputs (modify-inputs (package-inputs base-linux-libre) (prepend cpio)))))) + +;;; +;;; Linux kernel customization functions. +;;; + +(define* (customize-linux #:key name + (linux linux-libre) + source + defconfig + (configs "") + extra-version) + "Make a customized Linux package NAME derived from the LINUX package. + +If NAME is not given, then it defaults to the same name as the LINUX package. + +Unless SOURCE is given the source of LINUX is used. + +A DEFCONFIG file to be used can be given as an origin, as a file-like object +(file-append, local-file etc.), or as a string with the name of a defconfig file +available in the Linux sources. If DEFCONFIG is not given, then a defconfig +file will be saved from the LINUX package configuration. + +Additional CONFIGS will be used to modify the given or saved defconfig, which +will finally be used to build Linux. + +CONFIGS can be a list of strings, with one configuration per line. The usual +defconfig syntax has to be used, but there is a special extension to ease the +removal of configurations. Comment lines are supported as well. + +Here is an example: + + '(;; This string defines the version tail in 'uname -r'. + \"CONFIG_LOCALVERSION=\\\"-handcrafted\\\" + ;; This '# CONFIG_... is not set' syntax has to match exactly! + \"# CONFIG_BOOT_CONFIG is not set\" + \"CONFIG_NFS_SWAP=y\" + ;; This is a multiline configuration: + \"CONFIG_E1000=y +# This is a comment, below follows an extension to unset a configuration: +CONFIG_CMDLINE_EXTEND\") + +A string of configurations instead of a list of configuration strings is also +possible. + +EXTRA-VERSION can be a string overwriting the EXTRAVERSION setting of the LINUX +package, after being prepended by a hyphen. It will be visible in the output +of 'uname -r' behind the Linux version numbers." + (package + (inherit linux) + (name (or name (package-name linux))) + (source (or source (package-source linux))) + (arguments + (substitute-keyword-arguments + (package-arguments linux) + ((#:imported-modules imported-modules %gnu-build-system-modules) + `((guix build kconfig) ,@imported-modules)) + ((#:modules modules) + `((guix build kconfig) ,@modules)) + ((#:phases phases) + #~(modify-phases #$phases + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys #:rest arguments) + (setenv "EXTRAVERSION" + #$(and extra-version + (not (string-null? extra-version)) + (string-append "-" extra-version))) + (let* ((configs + (string-append "arch/" #$(linux-srcarch) "/configs/")) + (guix_defconfig + (string-append configs "guix_defconfig"))) + #$(cond + ((not defconfig) + #~(begin + ;; Call the original 'configure phase. + (apply (assoc-ref #$phases 'configure) arguments) + ;; Save a defconfig file. + (invoke "make" "savedefconfig") + ;; Move the saved defconfig to the proper location. + (rename-file "defconfig" + guix_defconfig))) + ((string? defconfig) + ;; Use another existing defconfig from the Linux sources. + #~(rename-file (string-append configs #$defconfig) + guix_defconfig)) + (else + ;; Copy the defconfig input to the proper location. + #~(copy-file (assoc-ref inputs "guix_defconfig") + guix_defconfig))) + (chmod guix_defconfig #o644) + (modify-defconfig guix_defconfig '#$configs) + (invoke "make" "guix_defconfig") + (verify-config ".config" guix_defconfig)))))))) + (native-inputs + (append (if (or (not defconfig) + (string? defconfig)) + '() + ;; The defconfig should be an origin or file-like object. + `(("guix_defconfig" ,defconfig))) + (package-native-inputs linux))))) + +(define (make-defconfig uri sha256-as-base32) + (origin (method url-fetch) + (uri uri) + (sha256 (base32 sha256-as-base32)))) ;;; @@ -3151,7 +3277,7 @@ devices. It replaces @code{iwconfig}, which is deprecated.") (define-public powertop (package (name "powertop") - (version "2.14") + (version "2.15") (source (origin (method git-fetch) @@ -3160,7 +3286,7 @@ devices. It replaces @code{iwconfig}, which is deprecated.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1zkr2y5nb1nr22nq8a3zli87iyfasfq6489p7h1k428pv8k45w4f")))) + (base32 "10vbk4vplmzp3p1mhwnhj81g6i5xvam9pdvmiy6cmd0xvnmdyy77")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -3179,18 +3305,17 @@ devices. It replaces @code{iwconfig}, which is deprecated.") ;; These programs are only needed to calibrate, so using ;; relative file names avoids adding extra inputs. When they ;; are missing powertop gracefully handles it. - (("/usr/bin/hcitool") "hcitool") - (("/usr/bin/xset") "xset") - (("/usr/sbin/hciconfig") "hciconfig")) - #t)))))) + (("/usr/s?bin/(hciconfig|hcitool|xset)" _ command) + command)))))))) + (native-inputs + (list autoconf + autoconf-archive + automake + gettext-minimal + libtool + pkg-config)) (inputs (list kmod libnl ncurses pciutils zlib)) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("gettext" ,gettext-minimal) - ("libtool" ,libtool) - ("pkg-config" ,pkg-config))) (home-page "https://01.org/powertop/") (synopsis "Analyze power consumption on Intel-based laptops") (description diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index ad2da5fa82..841aa48bb9 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -454,6 +454,41 @@ It's intended as a simpler alternative to parser generators.") (define-public ecl-meta (sbcl-package->ecl-package sbcl-meta)) +(define-public sbcl-clavier + (let ((commit "048bea40cac0a89480f8c41ae542be45945f3268") + (revision "0")) + (package + (name "sbcl-clavier") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mmontone/clavier") + (commit commit))) + (file-name (git-file-name "cl-clavier" version)) + (sha256 + (base32 "0734xia2hf7lqkm59gjhyvpsp0vl50djyhy4llwwbzbwwdkdihw4")))) + (build-system asdf-build-system/sbcl) + (native-inputs (list sbcl-stefil)) + (inputs + (list sbcl-alexandria + sbcl-chronicity + sbcl-cl-fad + sbcl-cl-ppcre + sbcl-closer-mop)) + (home-page "https://github.com/mmontone/clavier/") + (synopsis "General purpose validation library") + (description "Clavier is a general purpose validation library for +Common Lisp.") + (license license:expat)))) + +(define-public cl-clavier + (sbcl-package->cl-source-package sbcl-clavier)) + +(define-public ecl-clavier + (sbcl-package->ecl-package sbcl-clavier)) + (define-public sbcl-cl-inotify (let ((commit "66f29e01ec28355ebba8292411b4de90eebd76a3") (revision "0")) @@ -2516,7 +2551,7 @@ clause if no operation becomes available within a set amount of time. Calispel is a message-passing library, and as such leaves the role of threading abstractions and utilities left to be filled by complementary libraries such as Bordeaux-Threads and Eager Future.") - (home-page "https://www.thoughtcrime.us/software/jpl-queues/") + (home-page "https://www.thoughtcrime.us/software/calispel/") (license license:isc)))) (define-public cl-calispel @@ -18124,6 +18159,35 @@ long-running threads. In principle, it is like an in-Lisp process supervisor.") (define-public ecl-moira (sbcl-package->ecl-package sbcl-moira)) +(define-public sbcl-with-user-abort + (let ((commit "60693b4a1354faf17107ad6003b0b870cca37081") + (revision "0")) + (package + (name "sbcl-with-user-abort") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/compufox/with-user-abort") + (commit commit))) + (file-name (git-file-name "cl-with-user-abort" version)) + (sha256 + (base32 "0k1xxfvncdw4fx8nncis1ma128bqq05zky1mrzak5rjbivzjm8j1")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/compufox/with-user-abort") + (synopsis "Portability library for catching SIGINT from Common Lisp") + (description + "@code{with-user-abort} is a Common Lisp portability library providing a +like-named macro that catches the SIGINT signal.") + (license license:bsd-3)))) + +(define-public cl-with-user-abort + (sbcl-package->cl-source-package sbcl-with-user-abort)) + +(define-public ecl-with-user-abort + (sbcl-package->ecl-package sbcl-with-user-abort)) + (define-public sbcl-cl-package-locks (let ((commit "96a358ede7cef416d61d2f699e724fe1d9de602c") (revision "1")) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 800bba21a0..62eeb1faab 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -423,17 +423,14 @@ an interpreter, a compiler, a debugger, and much more.") (define-public sbcl (package (name "sbcl") - (version "2.2.10") + (version "2.2.11") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-" version "-source.tar.bz2")) - (patches - ;; TODO: remove this patch when updating to sbcl > 2.2.10. - (search-patches "sbcl-fix-build-on-arm64-with-clisp-as-host.patch")) (sha256 - (base32 "0cq8x4svkawirxq5s5gs4qxkl23m4q5p722a2kpss8qjfslc7hwc")) + (base32 "1pwnhjp0fmkcgq11a6hj36gw8k05qramspgdbj28063k2s0dc1rn")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index dc9fed90eb..fe6f122812 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -50,6 +50,7 @@ ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2022 muradm <mail@muradm.net> ;;; Copyright © 2022 jgart <jgart@dismail.de> +;;; Copyright © 2022 ( <paren@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -151,6 +152,7 @@ #:use-module (gnu packages rdf) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) + #:use-module (gnu packages rust-apps) #:use-module (gnu packages search) #:use-module (gnu packages serialization) #:use-module (gnu packages samba) @@ -3811,14 +3813,14 @@ tools and applications: (define-public balsa (package (name "balsa") - (version "2.6.3") + (version "2.6.4") (source (origin (method url-fetch) (uri (string-append "https://pawsa.fedorapeople.org/balsa/" "balsa-" version ".tar.xz")) (sha256 - (base32 "1m0x3rk7cp7slr47rmg4y91rbxgs652v706lyxj600m5r5v4bl6l")))) + (base32 "1hcgmjka2x2igdrmvzlfs12mv892kv4vzv5iy90kvcqxa625kymy")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -3831,7 +3833,13 @@ tools and applications: "--with-gpgme" "--with-sqlite" "--with-compface" - "--with-ldap"))) + "--with-ldap") + #:phases (modify-phases %standard-phases + (add-after 'unpack 'adjust-for-new-webkitgtk + (lambda _ + (substitute* "configure" + (("webkit2gtk-4.0") + "webkit2gtk-4.1"))))))) (inputs (list cyrus-sasl enchant @@ -3840,7 +3848,7 @@ tools and applications: gnutls gpgme gtk+ - gtksourceview + gtksourceview-4 gtkspell3 libassuan ; in gpgme.pc Requires libcanberra @@ -3860,6 +3868,9 @@ tools and applications: the GNOME desktop. It supports both POP3 and IMAP servers as well as the mbox, maildir and mh local mailbox formats. Balsa also supports SMTP and/or the use of a local MTA such as Sendmail.") + (properties + '((release-monitoring-url + . "https://pawsa.fedorapeople.org/balsa/download.html"))) (license license:gpl3+))) (define-public afew @@ -4754,3 +4765,120 @@ addresses.") mailserver on their machine. It enables these users to send their mail over a remote SMTP server.") (license license:gpl2+))) + +(define-public aerc + (package + (name "aerc") + (version "0.13.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~rjarry/aerc") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18rykklc0ppl53sm9lzhrw6kv4rcc7x45nv7qii7m4qads2pyjm5")))) + (build-system go-build-system) + (arguments + (list #:import-path "git.sr.ht/~rjarry/aerc" + ;; Installing the source is only necessary for Go libraries. + #:install-source? #f + #:build-flags + #~(list "-tags=notmuch" "-ldflags" + (string-append "-X main.Version=" #$version + " -X git.sr.ht/~rjarry/aerc/config.shareDir=" + #$output "/share/aerc")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* (#:key import-path inputs #:allow-other-keys) + (with-directory-excursion + (string-append "src/" import-path) + (substitute* (list "config/config.go" + "lib/templates/template.go" + "widgets/compose.go" + "widgets/msgviewer.go" + "worker/maildir/worker.go" + "worker/notmuch/worker.go") + (("\"sh\"") + (string-append + "\"" (search-input-file inputs "bin/sh") + "\""))) + (substitute* "commands/z.go" + (("\"zoxide\"") + (string-append + "\"" (search-input-file inputs "bin/zoxide") + "\""))) + (substitute* (list "lib/crypto/gpg/gpg.go" + "lib/crypto/gpg/gpg_test.go" + "lib/crypto/gpg/gpgbin/keys.go" + "lib/crypto/gpg/gpgbin/gpgbin.go") + (("\"gpg\"") + (string-append + "\"" (search-input-file inputs "bin/gpg") + "\"")) + (("strings\\.Contains\\(stderr\\.String\\(\\), .*\\)") + "strings.Contains(stderr.String(), \"gpg\")"))))) + (add-after 'build 'doc + (lambda* (#:key import-path build-flags #:allow-other-keys) + (invoke "make" "doc" "-C" + (string-append "src/" import-path)))) + (replace 'install + (lambda* (#:key import-path build-flags #:allow-other-keys) + (invoke "make" "install" "-C" + (string-append "src/" import-path) + (string-append "PREFIX=" #$output))))))) + (inputs (list gnupg + go-github-com-zenhack-go-notmuch + go-golang-org-x-oauth2 + go-github-com-xo-terminfo + go-github-com-stretchr-testify + go-github-com-riywo-loginshell + go-github-com-pkg-errors + go-github-com-mitchellh-go-homedir + go-github-com-miolini-datacounter + go-github-com-mattn-go-runewidth + go-github-com-mattn-go-isatty + go-github-com-lithammer-fuzzysearch + go-github-com-kyoh86-xdg + go-github-com-imdario-mergo + go-github-com-google-shlex + go-github-com-go-ini-ini + go-github-com-gdamore-tcell-v2 + go-github-com-gatherstars-com-jwz + go-github-com-fsnotify-fsnotify + go-github-com-emersion-go-smtp + go-github-com-emersion-go-sasl + go-github-com-emersion-go-pgpmail + go-github-com-emersion-go-message + go-github-com-emersion-go-maildir + go-github-com-emersion-go-imap-sortthread + go-github-com-emersion-go-imap + go-github-com-emersion-go-msgauth + go-github-com-emersion-go-mbox + go-github-com-ddevault-go-libvterm + go-github-com-danwakefield-fnmatch + go-github-com-creack-pty + go-github-com-arran4-golang-ical + go-github-com-protonmail-go-crypto + go-github-com-syndtr-goleveldb-leveldb + go-git-sr-ht-sircmpwn-getopt + go-git-sr-ht-rockorager-tcell-term + zoxide)) + (native-inputs (list scdoc)) + (home-page "https://git.sr.ht/~rjarry/aerc") + (synopsis "Email client for the terminal") + (description "@code{aerc} is a textual email client for terminals. It +features: +@enumerate +@item First-class support for using patches and @code{git send-email} +@item Vi-like keybindings and command system +@item A built-in console +@item Support for multiple accounts +@end enumerate") + ;; The license given is MIT/Expat; however, linking against notmuch + ;; effectively makes it GPL-3.0-or-later. See this thread discussing it: + ;; <https://lists.sr.ht/~rjarry/aerc-devel/%3Cb5cb213a7d0c699a886971658c2476 + ;; 1073eb2391%40disroot.org%3E> + (license license:gpl3+))) diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index cd37d4682c..e0bd7633bc 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -581,7 +581,7 @@ mpdevil loads all tags and covers on demand.") (define-public mympd (package (name "mympd") - (version "10.1.2") + (version "10.1.3") (source (origin (method git-fetch) (uri (git-reference @@ -590,7 +590,7 @@ mpdevil loads all tags and covers on demand.") (file-name (git-file-name name version)) (sha256 (base32 - "1cqq09j7mi7dz5y6l7i0sa6vi2n5zrndnrxnqsi4vcg99fc2vwv8")))) + "16cvjwbyb1m88kmgylp95p82a4xdjikmrw9arl6kvmgcbyw317yp")))) (build-system cmake-build-system) (arguments (list #:tests? #f)) ; no test target diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 22b8ca7d68..d02d893f02 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -2463,6 +2463,66 @@ which can modulate the oscillators, filter, and amplitude; distortion and reverb effects.") (license license:gpl2+))) +(define-public paulxstretch + (package + (name "paulxstretch") + (version "1.6.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/essej/paulxstretch") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1pff51imfgmgqzc6mdgwd1v9fci0a8hj85fnkdsvkdzbnxdzvs9r")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + (replace 'install + (lambda _ + (let* ((bin (string-append #$output "/bin")) + (lib (string-append #$output "/lib")) + (share (string-append #$output "/share")) + (clap (string-append lib "/clap")) + (vst3 (string-append lib "/vst3"))) + (with-directory-excursion + "PaulXStretch_artefacts/RelWithDebInfo" + (install-file "Standalone/paulxstretch" bin) + (install-file "CLAP/PaulXStretch.clap" clap) + (mkdir-p vst3) + (copy-recursively "VST3" vst3) + (install-file (string-append + #$source + "/linux/paulxstretch.desktop") + (string-append share "/applications")) + (install-file + (string-append + #$source + "/images/paulxstretch_icon_1024_rounded.png") + (string-append share "/pixmaps"))))))))) + (home-page "https://sonosaurus.com/paulxstretch/") + (native-inputs (list pkg-config)) + (inputs (list alsa-lib + curl + fftwf + freetype + jack-1 + libx11 + libxcursor + libxext + libxinerama + libxrandr)) + (supported-systems '("x86_64-linux")) ;pffft.c uses SIMD code + (synopsis "Audio timestretching application and plugin") + (description + "PaulXStretch is an application/plugin is based on the PaulStretch +algorithm (Paul’s Extreme Time Stretch, originally developed by Nasca Octavian +Paul), and specifically the PaulXStretch version from Xenakios.") + (license license:gpl3+))) + (define-public setbfree (package (name "setbfree") @@ -3980,7 +4040,7 @@ with a number of bugfixes and changes to improve IT playback.") (inputs (list jack-1 alsa-lib - wxwidgets-gtk2 + wxwidgets-gtk2-3.0 libsndfile libsamplerate liblo diff --git a/gnu/packages/patches/jami-sip-contacts.patch b/gnu/packages/patches/jami-sip-contacts.patch new file mode 100644 index 0000000000..dce8f6b98d --- /dev/null +++ b/gnu/packages/patches/jami-sip-contacts.patch @@ -0,0 +1,38 @@ +From 3ba007d02bc19e499c8f3c2345302453028831a8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=A9bastien=20Blin?= + <sebastien.blin@savoirfairelinux.com> +Date: Tue, 29 Nov 2022 09:26:20 -0500 +Subject: [PATCH] misc: fix incoming message sip + +We do not need to check contacts for SIP as it will be considered +automatically as a contact + +Change-Id: If78113e9d79dcd695c39c2d12c0441e2cb282737 +--- + src/libclient/conversationmodel.cpp | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/client-qt/src/libclient/conversationmodel.cpp b/client-qt/src/libclient/conversationmodel.cpp +index dba206bd..5604a17c 100644 +--- a/client-qt/src/libclient/conversationmodel.cpp ++++ b/client-qt/src/libclient/conversationmodel.cpp +@@ -3611,8 +3611,12 @@ ConversationModelPimpl::addIncomingMessage(const QString& peerId, + try { + auto contact = linked.owner.contactModel->getContact(peerId); + isRequest = contact.profileInfo.type == profile::Type::PENDING; +- if (isRequest && !contact.isBanned && peerId != linked.owner.profileInfo.uri) { +- addContactRequest(peerId); ++ // if isSip, it will be a contact! ++ auto isSip = linked.owner.profileInfo.type == profile::Type::SIP; ++ if (isSip ++ || (isRequest && !contact.isBanned && peerId != linked.owner.profileInfo.uri)) { ++ if (!isSip) ++ addContactRequest(peerId); + convIds.push_back(storage::beginConversationWithPeer(db, contact.profileInfo.uri)); + auto& conv = getConversationForPeerUri(contact.profileInfo.uri).get(); + conv.uid = convIds[0]; + +base-commit: 6f30acf0043d07dcbe63ee8636509885a9b6fd76 +-- +2.38.1 + diff --git a/gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch b/gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch new file mode 100644 index 0000000000..4567f81224 --- /dev/null +++ b/gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch @@ -0,0 +1,565 @@ +https://github.com/rust-lang/rust/commit/263edd43c5255084292329423c61a9d69715ebfa.patch +https://github.com/rust-lang/rust/issues/102155 +Issue seen on native builds on riscv64 across multiple Linux +Distributions. An alternative workaround appears to be building stage 1 +with debug enabled. + +From 27412d1e3e128349bc515c16ce882860e20f037d Mon Sep 17 00:00:00 2001 +From: 5225225 <5225225@mailbox.org> +Date: Thu, 14 Jul 2022 22:42:47 +0100 +Subject: [PATCH] Use constant eval to do strict validity checks + +--- + Cargo.lock | 1 + + .../src/intrinsics/mod.rs | 15 +---- + compiler/rustc_codegen_ssa/Cargo.toml | 1 + + compiler/rustc_codegen_ssa/src/mir/block.rs | 9 ++- + .../src/const_eval/machine.rs | 2 +- + .../src/interpret/intrinsics.rs | 56 ++++++++-------- + compiler/rustc_const_eval/src/lib.rs | 6 ++ + .../src/might_permit_raw_init.rs | 40 +++++++++++ + compiler/rustc_middle/src/query/mod.rs | 8 +++ + compiler/rustc_middle/src/ty/query.rs | 1 + + compiler/rustc_query_impl/src/keys.rs | 12 +++- + compiler/rustc_target/src/abi/mod.rs | 38 +++++------ + .../intrinsics/panic-uninitialized-zeroed.rs | 66 ++++++++++++------- + 13 files changed, 161 insertions(+), 94 deletions(-) + create mode 100644 compiler/rustc_const_eval/src/might_permit_raw_init.rs + +diff --git a/Cargo.lock b/Cargo.lock +index 147d47044078a..dd6f0345affd0 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -3664,6 +3664,7 @@ dependencies = [ + "rustc_arena", + "rustc_ast", + "rustc_attr", ++ "rustc_const_eval", + "rustc_data_structures", + "rustc_errors", + "rustc_fs_util", +diff --git a/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs b/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs +index eafae1cdc8af0..4b2207f375879 100644 +--- a/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs ++++ b/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs +@@ -58,7 +58,6 @@ pub(crate) use llvm::codegen_llvm_intrinsic_call; + use rustc_middle::ty::print::with_no_trimmed_paths; + use rustc_middle::ty::subst::SubstsRef; + use rustc_span::symbol::{kw, sym, Symbol}; +-use rustc_target::abi::InitKind; + + use crate::prelude::*; + use cranelift_codegen::ir::AtomicRmwOp; +@@ -672,12 +671,7 @@ fn codegen_regular_intrinsic_call<'tcx>( + return; + } + +- if intrinsic == sym::assert_zero_valid +- && !layout.might_permit_raw_init( +- fx, +- InitKind::Zero, +- fx.tcx.sess.opts.unstable_opts.strict_init_checks) { +- ++ if intrinsic == sym::assert_zero_valid && !fx.tcx.permits_zero_init(layout) { + with_no_trimmed_paths!({ + crate::base::codegen_panic( + fx, +@@ -688,12 +682,7 @@ fn codegen_regular_intrinsic_call<'tcx>( + return; + } + +- if intrinsic == sym::assert_uninit_valid +- && !layout.might_permit_raw_init( +- fx, +- InitKind::Uninit, +- fx.tcx.sess.opts.unstable_opts.strict_init_checks) { +- ++ if intrinsic == sym::assert_uninit_valid && !fx.tcx.permits_uninit_init(layout) { + with_no_trimmed_paths!({ + crate::base::codegen_panic( + fx, +diff --git a/compiler/rustc_codegen_ssa/Cargo.toml b/compiler/rustc_codegen_ssa/Cargo.toml +index faabea92f5a6c..81c8b9ceb136e 100644 +--- a/compiler/rustc_codegen_ssa/Cargo.toml ++++ b/compiler/rustc_codegen_ssa/Cargo.toml +@@ -40,6 +40,7 @@ rustc_metadata = { path = "../rustc_metadata" } + rustc_query_system = { path = "../rustc_query_system" } + rustc_target = { path = "../rustc_target" } + rustc_session = { path = "../rustc_session" } ++rustc_const_eval = { path = "../rustc_const_eval" } + + [dependencies.object] + version = "0.29.0" +diff --git a/compiler/rustc_codegen_ssa/src/mir/block.rs b/compiler/rustc_codegen_ssa/src/mir/block.rs +index 745da821c9d76..773c55cf551d5 100644 +--- a/compiler/rustc_codegen_ssa/src/mir/block.rs ++++ b/compiler/rustc_codegen_ssa/src/mir/block.rs +@@ -22,7 +22,7 @@ use rustc_span::source_map::Span; + use rustc_span::{sym, Symbol}; + use rustc_symbol_mangling::typeid_for_fnabi; + use rustc_target::abi::call::{ArgAbi, FnAbi, PassMode}; +-use rustc_target::abi::{self, HasDataLayout, InitKind, WrappingRange}; ++use rustc_target::abi::{self, HasDataLayout, WrappingRange}; + use rustc_target::spec::abi::Abi; + + /// Used by `FunctionCx::codegen_terminator` for emitting common patterns +@@ -528,7 +528,6 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { + source_info: mir::SourceInfo, + target: Option<mir::BasicBlock>, + cleanup: Option<mir::BasicBlock>, +- strict_validity: bool, + ) -> bool { + // Emit a panic or a no-op for `assert_*` intrinsics. + // These are intrinsics that compile to panics so that we can get a message +@@ -547,12 +546,13 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { + }); + if let Some(intrinsic) = panic_intrinsic { + use AssertIntrinsic::*; ++ + let ty = instance.unwrap().substs.type_at(0); + let layout = bx.layout_of(ty); + let do_panic = match intrinsic { + Inhabited => layout.abi.is_uninhabited(), +- ZeroValid => !layout.might_permit_raw_init(bx, InitKind::Zero, strict_validity), +- UninitValid => !layout.might_permit_raw_init(bx, InitKind::Uninit, strict_validity), ++ ZeroValid => !bx.tcx().permits_zero_init(layout), ++ UninitValid => !bx.tcx().permits_uninit_init(layout), + }; + if do_panic { + let msg_str = with_no_visible_paths!({ +@@ -687,7 +687,6 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { + source_info, + target, + cleanup, +- self.cx.tcx().sess.opts.unstable_opts.strict_init_checks, + ) { + return; + } +diff --git a/compiler/rustc_const_eval/src/const_eval/machine.rs b/compiler/rustc_const_eval/src/const_eval/machine.rs +index 29ab1d187719c..e00e667fb71e2 100644 +--- a/compiler/rustc_const_eval/src/const_eval/machine.rs ++++ b/compiler/rustc_const_eval/src/const_eval/machine.rs +@@ -104,7 +104,7 @@ pub struct CompileTimeInterpreter<'mir, 'tcx> { + } + + impl<'mir, 'tcx> CompileTimeInterpreter<'mir, 'tcx> { +- pub(super) fn new(const_eval_limit: Limit, can_access_statics: bool) -> Self { ++ pub(crate) fn new(const_eval_limit: Limit, can_access_statics: bool) -> Self { + CompileTimeInterpreter { + steps_remaining: const_eval_limit.0, + stack: Vec::new(), +diff --git a/compiler/rustc_const_eval/src/interpret/intrinsics.rs b/compiler/rustc_const_eval/src/interpret/intrinsics.rs +index e2a8a9891f72f..7827fb8395b7f 100644 +--- a/compiler/rustc_const_eval/src/interpret/intrinsics.rs ++++ b/compiler/rustc_const_eval/src/interpret/intrinsics.rs +@@ -15,7 +15,7 @@ use rustc_middle::ty::layout::LayoutOf as _; + use rustc_middle::ty::subst::SubstsRef; + use rustc_middle::ty::{Ty, TyCtxt}; + use rustc_span::symbol::{sym, Symbol}; +-use rustc_target::abi::{Abi, Align, InitKind, Primitive, Size}; ++use rustc_target::abi::{Abi, Align, Primitive, Size}; + + use super::{ + util::ensure_monomorphic_enough, CheckInAllocMsg, ImmTy, InterpCx, Machine, OpTy, PlaceTy, +@@ -413,35 +413,33 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { + ), + )?; + } +- if intrinsic_name == sym::assert_zero_valid +- && !layout.might_permit_raw_init( +- self, +- InitKind::Zero, +- self.tcx.sess.opts.unstable_opts.strict_init_checks, +- ) +- { +- M::abort( +- self, +- format!( +- "aborted execution: attempted to zero-initialize type `{}`, which is invalid", +- ty +- ), +- )?; ++ ++ if intrinsic_name == sym::assert_zero_valid { ++ let should_panic = !self.tcx.permits_zero_init(layout); ++ ++ if should_panic { ++ M::abort( ++ self, ++ format!( ++ "aborted execution: attempted to zero-initialize type `{}`, which is invalid", ++ ty ++ ), ++ )?; ++ } + } +- if intrinsic_name == sym::assert_uninit_valid +- && !layout.might_permit_raw_init( +- self, +- InitKind::Uninit, +- self.tcx.sess.opts.unstable_opts.strict_init_checks, +- ) +- { +- M::abort( +- self, +- format!( +- "aborted execution: attempted to leave type `{}` uninitialized, which is invalid", +- ty +- ), +- )?; ++ ++ if intrinsic_name == sym::assert_uninit_valid { ++ let should_panic = !self.tcx.permits_uninit_init(layout); ++ ++ if should_panic { ++ M::abort( ++ self, ++ format!( ++ "aborted execution: attempted to leave type `{}` uninitialized, which is invalid", ++ ty ++ ), ++ )?; ++ } + } + } + sym::simd_insert => { +diff --git a/compiler/rustc_const_eval/src/lib.rs b/compiler/rustc_const_eval/src/lib.rs +index d65d4f7eb720e..72ac6af685dc4 100644 +--- a/compiler/rustc_const_eval/src/lib.rs ++++ b/compiler/rustc_const_eval/src/lib.rs +@@ -33,11 +33,13 @@ extern crate rustc_middle; + pub mod const_eval; + mod errors; + pub mod interpret; ++mod might_permit_raw_init; + pub mod transform; + pub mod util; + + use rustc_middle::ty; + use rustc_middle::ty::query::Providers; ++use rustc_target::abi::InitKind; + + pub fn provide(providers: &mut Providers) { + const_eval::provide(providers); +@@ -59,4 +61,8 @@ pub fn provide(providers: &mut Providers) { + let (param_env, value) = param_env_and_value.into_parts(); + const_eval::deref_mir_constant(tcx, param_env, value) + }; ++ providers.permits_uninit_init = ++ |tcx, ty| might_permit_raw_init::might_permit_raw_init(tcx, ty, InitKind::Uninit); ++ providers.permits_zero_init = ++ |tcx, ty| might_permit_raw_init::might_permit_raw_init(tcx, ty, InitKind::Zero); + } +diff --git a/compiler/rustc_const_eval/src/might_permit_raw_init.rs b/compiler/rustc_const_eval/src/might_permit_raw_init.rs +new file mode 100644 +index 0000000000000..f971c2238c7bb +--- /dev/null ++++ b/compiler/rustc_const_eval/src/might_permit_raw_init.rs +@@ -0,0 +1,40 @@ ++use crate::const_eval::CompileTimeInterpreter; ++use crate::interpret::{InterpCx, MemoryKind, OpTy}; ++use rustc_middle::ty::layout::LayoutCx; ++use rustc_middle::ty::{layout::TyAndLayout, ParamEnv, TyCtxt}; ++use rustc_session::Limit; ++use rustc_target::abi::InitKind; ++ ++pub fn might_permit_raw_init<'tcx>( ++ tcx: TyCtxt<'tcx>, ++ ty: TyAndLayout<'tcx>, ++ kind: InitKind, ++) -> bool { ++ let strict = tcx.sess.opts.unstable_opts.strict_init_checks; ++ ++ if strict { ++ let machine = CompileTimeInterpreter::new(Limit::new(0), false); ++ ++ let mut cx = InterpCx::new(tcx, rustc_span::DUMMY_SP, ParamEnv::reveal_all(), machine); ++ ++ let allocated = cx ++ .allocate(ty, MemoryKind::Machine(crate::const_eval::MemoryKind::Heap)) ++ .expect("OOM: failed to allocate for uninit check"); ++ ++ if kind == InitKind::Zero { ++ cx.write_bytes_ptr( ++ allocated.ptr, ++ std::iter::repeat(0_u8).take(ty.layout.size().bytes_usize()), ++ ) ++ .expect("failed to write bytes for zero valid check"); ++ } ++ ++ let ot: OpTy<'_, _> = allocated.into(); ++ ++ // Assume that if it failed, it's a validation failure. ++ cx.validate_operand(&ot).is_ok() ++ } else { ++ let layout_cx = LayoutCx { tcx, param_env: ParamEnv::reveal_all() }; ++ ty.might_permit_raw_init(&layout_cx, kind) ++ } ++} +diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs +index bdae7e5fcd6b1..0581ef41f66c2 100644 +--- a/compiler/rustc_middle/src/query/mod.rs ++++ b/compiler/rustc_middle/src/query/mod.rs +@@ -2053,4 +2053,12 @@ rustc_queries! { + desc { |tcx| "looking up generator diagnostic data of `{}`", tcx.def_path_str(key) } + separate_provide_extern + } ++ ++ query permits_uninit_init(key: TyAndLayout<'tcx>) -> bool { ++ desc { "checking to see if {:?} permits being left uninit", key.ty } ++ } ++ ++ query permits_zero_init(key: TyAndLayout<'tcx>) -> bool { ++ desc { "checking to see if {:?} permits being left zeroed", key.ty } ++ } + } +diff --git a/compiler/rustc_middle/src/ty/query.rs b/compiler/rustc_middle/src/ty/query.rs +index 3d662ed5de4ba..2452bcf6a61b8 100644 +--- a/compiler/rustc_middle/src/ty/query.rs ++++ b/compiler/rustc_middle/src/ty/query.rs +@@ -28,6 +28,7 @@ use crate::traits::query::{ + use crate::traits::specialization_graph; + use crate::traits::{self, ImplSource}; + use crate::ty::fast_reject::SimplifiedType; ++use crate::ty::layout::TyAndLayout; + use crate::ty::subst::{GenericArg, SubstsRef}; + use crate::ty::util::AlwaysRequiresDrop; + use crate::ty::GeneratorDiagnosticData; +diff --git a/compiler/rustc_query_impl/src/keys.rs b/compiler/rustc_query_impl/src/keys.rs +index 6fbafeb1d32b3..5477431431374 100644 +--- a/compiler/rustc_query_impl/src/keys.rs ++++ b/compiler/rustc_query_impl/src/keys.rs +@@ -6,7 +6,7 @@ use rustc_middle::mir; + use rustc_middle::traits; + use rustc_middle::ty::fast_reject::SimplifiedType; + use rustc_middle::ty::subst::{GenericArg, SubstsRef}; +-use rustc_middle::ty::{self, Ty, TyCtxt}; ++use rustc_middle::ty::{self, layout::TyAndLayout, Ty, TyCtxt}; + use rustc_span::symbol::{Ident, Symbol}; + use rustc_span::{Span, DUMMY_SP}; + +@@ -385,6 +385,16 @@ impl<'tcx> Key for Ty<'tcx> { + } + } + ++impl<'tcx> Key for TyAndLayout<'tcx> { ++ #[inline(always)] ++ fn query_crate_is_local(&self) -> bool { ++ true ++ } ++ fn default_span(&self, _: TyCtxt<'_>) -> Span { ++ DUMMY_SP ++ } ++} ++ + impl<'tcx> Key for (Ty<'tcx>, Ty<'tcx>) { + #[inline(always)] + fn query_crate_is_local(&self) -> bool { +diff --git a/compiler/rustc_target/src/abi/mod.rs b/compiler/rustc_target/src/abi/mod.rs +index d1eafd6ac5fb8..6f4d073d70486 100644 +--- a/compiler/rustc_target/src/abi/mod.rs ++++ b/compiler/rustc_target/src/abi/mod.rs +@@ -1372,7 +1372,7 @@ pub struct PointeeInfo { + + /// Used in `might_permit_raw_init` to indicate the kind of initialisation + /// that is checked to be valid +-#[derive(Copy, Clone, Debug)] ++#[derive(Copy, Clone, Debug, PartialEq, Eq)] + pub enum InitKind { + Zero, + Uninit, +@@ -1487,14 +1487,18 @@ impl<'a, Ty> TyAndLayout<'a, Ty> { + /// + /// `init_kind` indicates if the memory is zero-initialized or left uninitialized. + /// +- /// `strict` is an opt-in debugging flag added in #97323 that enables more checks. ++ /// This code is intentionally conservative, and will not detect ++ /// * zero init of an enum whose 0 variant does not allow zero initialization ++ /// * making uninitialized types who have a full valid range (ints, floats, raw pointers) ++ /// * Any form of invalid value being made inside an array (unless the value is uninhabited) + /// +- /// This is conservative: in doubt, it will answer `true`. ++ /// A strict form of these checks that uses const evaluation exists in ++ /// `rustc_const_eval::might_permit_raw_init`, and a tracking issue for making these checks ++ /// stricter is <https://github.com/rust-lang/rust/issues/66151>. + /// +- /// FIXME: Once we removed all the conservatism, we could alternatively +- /// create an all-0/all-undef constant and run the const value validator to see if +- /// this is a valid value for the given type. +- pub fn might_permit_raw_init<C>(self, cx: &C, init_kind: InitKind, strict: bool) -> bool ++ /// FIXME: Once all the conservatism is removed from here, and the checks are ran by default, ++ /// we can use the const evaluation checks always instead. ++ pub fn might_permit_raw_init<C>(self, cx: &C, init_kind: InitKind) -> bool + where + Self: Copy, + Ty: TyAbiInterface<'a, C>, +@@ -1507,13 +1511,8 @@ impl<'a, Ty> TyAndLayout<'a, Ty> { + s.valid_range(cx).contains(0) + } + InitKind::Uninit => { +- if strict { +- // The type must be allowed to be uninit (which means "is a union"). +- s.is_uninit_valid() +- } else { +- // The range must include all values. +- s.is_always_valid(cx) +- } ++ // The range must include all values. ++ s.is_always_valid(cx) + } + } + }; +@@ -1534,19 +1533,12 @@ impl<'a, Ty> TyAndLayout<'a, Ty> { + // If we have not found an error yet, we need to recursively descend into fields. + match &self.fields { + FieldsShape::Primitive | FieldsShape::Union { .. } => {} +- FieldsShape::Array { count, .. } => { ++ FieldsShape::Array { .. } => { + // FIXME(#66151): For now, we are conservative and do not check arrays by default. +- if strict +- && *count > 0 +- && !self.field(cx, 0).might_permit_raw_init(cx, init_kind, strict) +- { +- // Found non empty array with a type that is unhappy about this kind of initialization +- return false; +- } + } + FieldsShape::Arbitrary { offsets, .. } => { + for idx in 0..offsets.len() { +- if !self.field(cx, idx).might_permit_raw_init(cx, init_kind, strict) { ++ if !self.field(cx, idx).might_permit_raw_init(cx, init_kind) { + // We found a field that is unhappy with this kind of initialization. + return false; + } +diff --git a/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs b/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs +index 3ffd35ecdb8da..255151a96032c 100644 +--- a/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs ++++ b/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs +@@ -57,6 +57,13 @@ enum LR_NonZero { + + struct ZeroSized; + ++#[allow(dead_code)] ++#[repr(i32)] ++enum ZeroIsValid { ++ Zero(u8) = 0, ++ One(NonNull<()>) = 1, ++} ++ + fn test_panic_msg<T>(op: impl (FnOnce() -> T) + panic::UnwindSafe, msg: &str) { + let err = panic::catch_unwind(op).err(); + assert_eq!( +@@ -152,33 +159,12 @@ fn main() { + "attempted to zero-initialize type `*const dyn core::marker::Send`, which is invalid" + ); + +- /* FIXME(#66151) we conservatively do not error here yet. +- test_panic_msg( +- || mem::uninitialized::<LR_NonZero>(), +- "attempted to leave type `LR_NonZero` uninitialized, which is invalid" +- ); +- test_panic_msg( +- || mem::zeroed::<LR_NonZero>(), +- "attempted to zero-initialize type `LR_NonZero`, which is invalid" +- ); +- +- test_panic_msg( +- || mem::uninitialized::<ManuallyDrop<LR_NonZero>>(), +- "attempted to leave type `std::mem::ManuallyDrop<LR_NonZero>` uninitialized, \ +- which is invalid" +- ); +- test_panic_msg( +- || mem::zeroed::<ManuallyDrop<LR_NonZero>>(), +- "attempted to zero-initialize type `std::mem::ManuallyDrop<LR_NonZero>`, \ +- which is invalid" +- ); +- */ +- + test_panic_msg( + || mem::uninitialized::<(NonNull<u32>, u32, u32)>(), + "attempted to leave type `(core::ptr::non_null::NonNull<u32>, u32, u32)` uninitialized, \ + which is invalid" + ); ++ + test_panic_msg( + || mem::zeroed::<(NonNull<u32>, u32, u32)>(), + "attempted to zero-initialize type `(core::ptr::non_null::NonNull<u32>, u32, u32)`, \ +@@ -196,11 +182,23 @@ fn main() { + which is invalid" + ); + ++ test_panic_msg( ++ || mem::uninitialized::<LR_NonZero>(), ++ "attempted to leave type `LR_NonZero` uninitialized, which is invalid" ++ ); ++ ++ test_panic_msg( ++ || mem::uninitialized::<ManuallyDrop<LR_NonZero>>(), ++ "attempted to leave type `core::mem::manually_drop::ManuallyDrop<LR_NonZero>` uninitialized, \ ++ which is invalid" ++ ); ++ + test_panic_msg( + || mem::uninitialized::<NoNullVariant>(), + "attempted to leave type `NoNullVariant` uninitialized, \ + which is invalid" + ); ++ + test_panic_msg( + || mem::zeroed::<NoNullVariant>(), + "attempted to zero-initialize type `NoNullVariant`, \ +@@ -212,10 +210,12 @@ fn main() { + || mem::uninitialized::<bool>(), + "attempted to leave type `bool` uninitialized, which is invalid" + ); ++ + test_panic_msg( + || mem::uninitialized::<LR>(), + "attempted to leave type `LR` uninitialized, which is invalid" + ); ++ + test_panic_msg( + || mem::uninitialized::<ManuallyDrop<LR>>(), + "attempted to leave type `core::mem::manually_drop::ManuallyDrop<LR>` uninitialized, which is invalid" +@@ -229,6 +229,7 @@ fn main() { + let _val = mem::zeroed::<Option<&'static i32>>(); + let _val = mem::zeroed::<MaybeUninit<NonNull<u32>>>(); + let _val = mem::zeroed::<[!; 0]>(); ++ let _val = mem::zeroed::<ZeroIsValid>(); + let _val = mem::uninitialized::<MaybeUninit<bool>>(); + let _val = mem::uninitialized::<[!; 0]>(); + let _val = mem::uninitialized::<()>(); +@@ -259,12 +260,33 @@ fn main() { + || mem::zeroed::<[NonNull<()>; 1]>(), + "attempted to zero-initialize type `[core::ptr::non_null::NonNull<()>; 1]`, which is invalid" + ); ++ ++ // FIXME(#66151) we conservatively do not error here yet (by default). ++ test_panic_msg( ++ || mem::zeroed::<LR_NonZero>(), ++ "attempted to zero-initialize type `LR_NonZero`, which is invalid" ++ ); ++ ++ test_panic_msg( ++ || mem::zeroed::<ManuallyDrop<LR_NonZero>>(), ++ "attempted to zero-initialize type `core::mem::manually_drop::ManuallyDrop<LR_NonZero>`, \ ++ which is invalid" ++ ); + } else { + // These are UB because they have not been officially blessed, but we await the resolution + // of <https://github.com/rust-lang/unsafe-code-guidelines/issues/71> before doing + // anything about that. + let _val = mem::uninitialized::<i32>(); + let _val = mem::uninitialized::<*const ()>(); ++ ++ // These are UB, but best to test them to ensure we don't become unintentionally ++ // stricter. ++ ++ // It's currently unchecked to create invalid enums and values inside arrays. ++ let _val = mem::zeroed::<LR_NonZero>(); ++ let _val = mem::zeroed::<[LR_NonZero; 1]>(); ++ let _val = mem::zeroed::<[NonNull<()>; 1]>(); ++ let _val = mem::uninitialized::<[NonNull<()>; 1]>(); + } + } + } diff --git a/gnu/packages/patches/sbcl-fix-build-on-arm64-with-clisp-as-host.patch b/gnu/packages/patches/sbcl-fix-build-on-arm64-with-clisp-as-host.patch deleted file mode 100644 index 4fe3ed16db..0000000000 --- a/gnu/packages/patches/sbcl-fix-build-on-arm64-with-clisp-as-host.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 944f53fb00794f4bc96700dd14df1e88b6cd5623 Mon Sep 17 00:00:00 2001 -From: Christophe Rhodes <csr21@cantab.net> -Date: Thu, 17 Nov 2022 22:29:26 +0000 -Subject: [PATCH] Fix build on arm64 with clisp as host - -Make sure the offset constants are defined while compiling vm.lisp. ---- - src/compiler/arm64/vm.lisp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/compiler/arm64/vm.lisp b/src/compiler/arm64/vm.lisp -index ae6d7c7fa..2a151be58 100644 ---- a/src/compiler/arm64/vm.lisp -+++ b/src/compiler/arm64/vm.lisp -@@ -23,7 +23,8 @@ - (macrolet ((defreg (name offset) - (let ((offset-sym (symbolicate name "-OFFSET"))) - `(progn -- (defconstant ,offset-sym ,offset) -+ (eval-when (:compile-toplevel :load-toplevel :execute) -+ (defconstant ,offset-sym ,offset)) - (setf (svref *register-names* ,offset-sym) ,(symbol-name name))))) - - (defregset (name &rest regs) --- -2.30.2 - diff --git a/gnu/packages/patches/sssd-optional-systemd.patch b/gnu/packages/patches/sssd-optional-systemd.patch deleted file mode 100644 index e6d74e79fa..0000000000 --- a/gnu/packages/patches/sssd-optional-systemd.patch +++ /dev/null @@ -1,45 +0,0 @@ -Allow running sss_analyze without Python modules for systemd. -Upstream PR: https://github.com/SSSD/sssd/pull/6125 - -diff --git a/src/tools/analyzer/modules/request.py b/src/tools/analyzer/modules/request.py -index b9fe3caf8..51ec3a151 100644 ---- a/src/tools/analyzer/modules/request.py -+++ b/src/tools/analyzer/modules/request.py -@@ -1,8 +1,6 @@ - import re - import logging - --from sssd.source_files import Files --from sssd.source_journald import Journald - from sssd.parser import SubparsersAction - from sssd.parser import Option - -@@ -76,8 +74,10 @@ class RequestAnalyzer: - Instantiated source object - """ - if args.source == "journald": -+ from sssd.source_journald import Journald - source = Journald() - else: -+ from sssd.source_files import Files - source = Files(args.logdir) - return source - -@@ -142,7 +142,7 @@ class RequestAnalyzer: - self.consumed_logs.append(line.rstrip(line[-1])) - else: - # files source includes newline -- if isinstance(source, Files): -+ if type(source).__name__ == 'Files': - print(line, end='') - else: - print(line) -@@ -240,7 +240,7 @@ class RequestAnalyzer: - self.print_formatted_verbose(source, patterns) - else: - for line in self.matched_line(source, patterns): -- if isinstance(source, Journald): -+ if type(source).__name__ == 'Journald': - print(line) - else: - self.print_formatted(line) diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index 749902271b..486abf1c13 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2022 Malte Frank Gerdes <malte.f.gerdes@gmail.com> ;;; Copyright © 2022 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl> +;;; Copyright © 2022 jgart <jgart@dismail.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2439,6 +2440,34 @@ parsed examples as part of your normal test run. Integration is provided for the main Python test runners.") (license license:expat))) +(define-public python-pytest-parawtf + (package + (name "python-pytest-parawtf") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "pytest-parawtf" version)) + (sha256 + (base32 + "08s86hy58lvrd90cnayzydvac4slaflj0ph9yknakcc42anrm023")))) + (build-system python-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; https://github.com/flub/pytest-parawtf/issues/1 + (invoke "pytest" "-k" "not test_mark"))))))) + (propagated-inputs (list python-pytest)) + (home-page "https://github.com/flub/pytest-parawtf/") + (synopsis "Finally spell paramete?ri[sz]e correctly") + (description +"@code{python-pytest} uses one of four different spellings of +parametrize. This plugin allows you to use all four.") + (license license:expat))) + (define-public python-pytest-httpx (package (name "python-pytest-httpx") diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 52fe1460bb..ba99b57bcb 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -693,14 +693,14 @@ and visualization with these data structures.") (define-public python-msgpack-numpy (package (name "python-msgpack-numpy") - (version "0.4.6.post0") + (version "0.4.8") (source (origin (method url-fetch) (uri (pypi-uri "msgpack-numpy" version)) (sha256 (base32 - "0syzy645mwcy7lfjwz6pc8f9p2vv1qk4limc8iina3l5nnf0rjyz")))) + "0sbfanbkfs6c77np4vz0ayrwnv99bpn5xgj5fnf2yhhk0lcd6ry6")))) (build-system python-build-system) (propagated-inputs (list python-msgpack python-numpy)) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 87963f9f19..40c3f9c99c 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -131,6 +131,7 @@ ;;; Copyright © 2022 Mathieu Laparie <mlaparie@disr.it> ;;; Copyright © 2022 Garek Dyszel <garekdyszel@disroot.org> ;;; Copyright © 2022 Baptiste Strazzulla <bstrazzull@hotmail.fr> +;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -159,9 +160,11 @@ #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) + #:use-module (gnu packages cpp) #:use-module (gnu packages crypto) #:use-module (gnu packages databases) #:use-module (gnu packages dbm) + #:use-module (gnu packages digest) #:use-module (gnu packages django) #:use-module (gnu packages djvu) #:use-module (gnu packages docker) @@ -4634,6 +4637,73 @@ accessible for novices, as well as a scripting interface offering the full flexibility and power of the Python language.") (license license:gpl3+))) +(define-public python-dm-tree + (package + (name "python-dm-tree") + (version "0.1.7") + (source (origin + (method url-fetch) + (uri (pypi-uri "dm-tree" version)) + (sha256 + (base32 "0apxfxgmqh22qpk92zmmf3acqkavhwxz78lnwz026a5rlnncizih")))) + (build-system python-build-system) + (inputs (list pybind11 abseil-cpp python)) + (propagated-inputs (list python-wheel + python-absl-py + python-attrs + python-numpy + python-wrapt)) + (arguments + (list #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'build-shared-lib + (lambda _ + (let* ((pybind11 #$(this-package-input "pybind11")) + (python #$(this-package-input "python")) + (version (python-version python)) + (abseil-cpp #$(this-package-input "abseil-cpp"))) + ;; Delete default cmake build. + (substitute* "setup.py" + (("ext_modules.*") "") + (("cmdclass.*") "")) + ;; Actual build phase. + (mkdir-p "build/temp/tree/") + (invoke + "gcc" "-pthread" "-Wno-unused-result" "-Wsign-compare" + "-DNDEBUG" "-g" "-fwrapv" "-O3" "-Wall" + "-fno-semantic-interposition" "-fPIC" + "-I" (string-append pybind11 + "/lib/python" version + "/site-packages/pybind11/include") + "-I" (string-append python "/include/python" + version) + "-I" (string-append abseil-cpp "/include") + "-c" "tree/tree.cc" + "-o" "build/temp/tree/tree.o" + "-fvisibility=hidden" "-g0") + (mkdir-p "build/lib/tree") + (invoke + "g++" "-pthread" "-shared" + (string-append "-Wl," "-rpath=" python "/lib") + "-fno-semantic-interposition" + "build/temp/tree/tree.o" + "-L" (string-append python "/lib") + "-L" (string-append abseil-cpp "/lib") + "-l" "absl_int128" + "-l" "absl_raw_hash_set" + "-l" "absl_raw_logging_internal" + "-l" "absl_strings" + "-l" "absl_throw_delegate" + "-o" "build/lib/tree/_tree.so"))))))) + (home-page "https://github.com/deepmind/tree") + (synopsis "Work with nested data structures in Python") + (description "Tree is a python library for working with nested data +structures. In a way, @code{tree} generalizes the builtin @code{map} function +which only supports flat sequences, and allows you to apply a function to each +leaf preserving the overall structure.") + (license license:asl2.0))) + (define-public python-docutils (package (name "python-docutils") @@ -22364,6 +22434,25 @@ working with iterables.") (description "Lexer and codec to work with LaTeX code in Python.") (license license:expat))) +(define-public python-pybloom-live + (package + (name "python-pybloom-live") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "pybloom_live" version)) + (sha256 + (base32 + "040i6bjqvl33j30v865shsk30s3h7f16pqwiaj5kig857dfmqm4r")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-bitarray python-xxhash)) + (native-inputs (list python-pytest)) + (home-page "https://github.com/joseph-fox/python-bloomfilter") + (synopsis "Bloom filter") + (description "This package provides a scalable Bloom filter implemented in +Python.") + (license license:expat))) + (define-public python-pybtex (package (name "python-pybtex") @@ -23082,6 +23171,32 @@ environments.") "PyNamecheap is a Namecheap API client in Python.") (license license:expat))) +(define-public python-pynixutil + (package + (name "python-pynixutil") + (version "0.5.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nix-community/pynixutil") + (commit version))) + (file-name (git-file-name name version)) + ;; Derivation test uses nix. + (modules '((guix build utils))) + (snippet '(delete-file "tests/test_drv.py")) + (sha256 + (base32 + "1lnspcai7mqpv73bbd8kgyw63fxwgkwvfkl09b2bl5y2g2v7np6m")))) + (build-system pyproject-build-system) + (native-inputs (list poetry python-pytest)) + (home-page "https://github.com/nix-community/pynixutil") + (synopsis "Utility functions for working with data from Nix in Python") + (description + "@code{pynixutil} provides functions for base32 encoding/decoding and +derivation parsing, namingly @code{b32decode()}, @code{b32encode()} and +@code{drvparse()}.") + (license license:expat))) + (define-public python-dns-lexicon (package (name "python-dns-lexicon") diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index a0ced6451b..0f5e1c3530 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2018, 2020, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2018 John Soo <jsoo1@asu.edu> ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> @@ -2280,6 +2280,61 @@ using the Enchant spell-checking library.") ;; COPYING file specify GPL3, but source code files all refer to GPL2+. (license license:gpl2+))) +(define remove-third-party-files + #~(begin + (define preserved-club + ;; Prefix exceptions with ./ for comparison with ftw. + (map (cut string-append "./" <>) + preserved-third-party-files)) + (define protected (make-regexp "\\.(gn|gyp)i?$")) + (define (empty? dir) + (equal? (scandir dir) '("." ".."))) + (define (third-party? file) + (string-contains file "/third_party/")) + (define (useless? file) + (any (cute string-suffix? <> file) + '(".zip" ".so" ".dll" ".exe" ".jar"))) + (define (parents child) + ;; Return all parent directories of CHILD up to and including + ;; the closest "third_party". + (let loop ((parent (dirname child)) + (parents '())) + (if (string=? "third_party" (basename parent)) + (cons parent parents) + (loop (dirname parent) + (cons parent parents))))) + (define (remove-loudly file) + (format #t "deleting ~a...~%" file) + (force-output) + (delete-file file)) + (define (delete-unwanted-files child stat flag base level) + (match flag + ((or 'regular 'symlink 'stale-symlink) + (when (third-party? child) + (unless (or (member child preserved-club) + (any (cute member <> preserved-club) + (parents child)) + (regexp-exec protected child)) + (remove-loudly child))) + (when (and (useless? child) (file-exists? child)) + (remove-loudly child)) + #t) + ('directory-processed + (when (empty? child) + (rmdir child)) + #t) + (_ #t))) + + (nftw "." delete-unwanted-files 'depth 'physical) + + ;; Assert that each preserved item is present to catch + ;; removals. + (for-each (lambda (third-party) + (unless (file-exists? third-party) + (error (format #f "~s does not exist!~%" + third-party)))) + preserved-club))) + (define-public qtwebengine-5 (package (inherit qtsvg-5) @@ -2298,7 +2353,7 @@ using the Enchant spell-checking library.") (srfi srfi-26) (guix build utils))) (snippet - '(begin + #~(begin (let ((preserved-third-party-files '("base/third_party/double_conversion" "base/third_party/cityhash" @@ -2434,54 +2489,7 @@ using the Enchant spell-checking library.") "v8/src/third_party/valgrind" "v8/src/third_party/siphash" "v8/third_party/v8/builtins" - "v8/third_party/inspector_protocol")) - (protected (make-regexp "\\.(gn|gyp)i?$"))) - (define preserved-club - (map (lambda (member) - (string-append "./" member)) - preserved-third-party-files)) - (define (empty? dir) - (equal? (scandir dir) '("." ".."))) - (define (third-party? file) - (string-contains file "third_party/")) - (define (useless? file) - (any (cute string-suffix? <> file) - '(".zip" ".so" ".dll" ".exe" ".jar"))) - (define (parents child) - ;; Return all parent directories of CHILD up to and including - ;; the closest "third_party". - (let* ((dirs (match (string-split child #\/) - ((dirs ... last) dirs))) - (closest (list-index (lambda (dir) - (string=? "third_party" dir)) - (reverse dirs))) - (delim (- (length dirs) closest))) - (fold (lambda (dir prev) - (cons (string-append (car prev) "/" dir) - prev)) - (list (string-join (list-head dirs delim) "/")) - (list-tail dirs delim)))) - (define (remove-loudly file) - (format #t "deleting ~a...~%" file) - (force-output) - (delete-file file)) - (define (delete-unwanted-files child stat flag base level) - (match flag - ((or 'regular 'symlink 'stale-symlink) - (when (third-party? child) - (unless (or (member child preserved-club) - (any (cute member <> preserved-club) - (parents child)) - (regexp-exec protected child)) - (remove-loudly child))) - (when (and (useless? child) (file-exists? child)) - (remove-loudly child)) - #t) - ('directory-processed - (when (empty? child) - (rmdir child)) - #t) - (_ #t))) + "v8/third_party/inspector_protocol"))) (with-directory-excursion "src/3rdparty" ;; TODO: Try removing "gn" too for future versions of qtwebengine-5. @@ -2490,13 +2498,7 @@ using the Enchant spell-checking library.") (with-directory-excursion "chromium" ;; Delete bundled software and binaries that were not explicitly ;; preserved above. - (nftw "." delete-unwanted-files 'depth 'physical) - - ;; Assert that each preserved item is present to catch removals. - (for-each (lambda (third-party) - (unless (file-exists? third-party) - (error (format #f "~s does not exist!~%" third-party)))) - preserved-club) + #$remove-third-party-files ;; Use relative header locations instead of hard coded ones. (substitute* @@ -2676,7 +2678,7 @@ and binaries removed, and adds modular support for using system libraries.") (srfi srfi-26) (guix build utils))) (snippet - '(begin + #~(begin (let ((preserved-third-party-files '("base/third_party/double_conversion" "base/third_party/cityhash" @@ -2698,12 +2700,25 @@ and binaries removed, and adds modular support for using system libraries.") "third_party/angle/src/common/third_party/base" "third_party/angle/src/common/third_party/smhasher" "third_party/angle/src/common/third_party/xxhash" + "third_party/angle/src/third_party/trace_event" + "third_party/angle/src/third_party/volk" "third_party/axe-core" "third_party/blink" "third_party/boringssl" "third_party/boringssl/src/third_party/fiat" "third_party/breakpad" "third_party/brotli" + "third_party/catapult" + "third_party/catapult/common/py_vulcanize/third_party/rcssmin" + "third_party/catapult/common/py_vulcanize/third_party/rjsmin" + "third_party/catapult/third_party/polymer" + "third_party/catapult/tracing/third_party/d3/d3.min.js" + "third_party/catapult/tracing/third_party/gl-matrix/dist/gl-matrix-min.js" + "third_party/catapult/tracing/third_party/jpeg-js/jpeg-js-decoder.js" + "third_party/catapult/tracing/third_party/jszip/jszip.min.js" + "third_party/catapult/tracing/third_party/mannwhitneyu/mannwhitneyu.js" + "third_party/catapult/tracing/third_party/oboe/dist" + "third_party/catapult/tracing/third_party/pako/pako.min.js" "third_party/ced" "third_party/cld_3" "third_party/closure_compiler" @@ -2713,13 +2728,28 @@ and binaries removed, and adds modular support for using system libraries.") "third_party/crc32c" "third_party/dav1d" "third_party/dawn" + "third_party/dawn/third_party/tint" "third_party/devtools-frontend" + "third_party/devtools-frontend/src/front_end/third_party/i18n" + "third_party/devtools-frontend/src/front_end/third_party/acorn" + "third_party/devtools-frontend/src/front_end/third_party/acorn-loose" + "third_party/devtools-frontend/src/front_end/third_party/axe-core" + "third_party/devtools-frontend/src/front_end/third_party/chromium" + "third_party/devtools-frontend/src/front_end/third_party/codemirror" + "third_party/devtools-frontend/src/front_end/third_party/diff" + "third_party/devtools-frontend/src/front_end/third_party/intl-messageformat" "third_party/devtools-frontend/src/front_end/third_party/lighthouse" + "third_party/devtools-frontend/src/front_end/third_party/lit-html" + "third_party/devtools-frontend/src/front_end/third_party/marked" "third_party/devtools-frontend/src/front_end/third_party/wasmparser" + "third_party/devtools-frontend/src/third_party/typescript" "third_party/emoji-segmenter" + "third_party/fdlibm" "third_party/ffmpeg" + "third_party/freetype" "third_party/googletest" - "third_party/harfbuzz-ng/utils" + "third_party/harfbuzz-ng" + "third_party/highway" "third_party/hunspell" "third_party/iccjpeg" "third_party/icu" @@ -2730,19 +2760,30 @@ and binaries removed, and adds modular support for using system libraries.") "third_party/khronos" "third_party/leveldatabase" "third_party/libaddressinput" + "third_party/libaom" + "third_party/libaom/source/libaom/third_party/fastfeat" + "third_party/libaom/source/libaom/third_party/vector" + "third_party/libaom/source/libaom/third_party/x86inc" + "third_party/libavif" + "third_party/libgav1" "third_party/libgifcodec" "third_party/libjingle_xmpp" "third_party/libjpeg_turbo" + "third_party/libjxl" "third_party/libpng" "third_party/libsrtp" "third_party/libsync" "third_party/libudev" + "third_party/liburlpattern" "third_party/libvpx" "third_party/libwebm" "third_party/libwebp" + "third_party/libx11" + "third_party/libxcb-keysyms" "third_party/libxml" "third_party/libxslt" "third_party/libyuv" + "third_party/lottie" "third_party/lss" "third_party/mako" "third_party/markupsafe" @@ -2750,18 +2791,23 @@ and binaries removed, and adds modular support for using system libraries.") "third_party/metrics_proto" "third_party/modp_b64" "third_party/nasm" + "third_party/node" "third_party/one_euro_filter" - "third_party/openh264/src/codec/api/svc" + "third_party/openh264" "third_party/opus" "third_party/ots" "third_party/pdfium" "third_party/pdfium/third_party/agg23" "third_party/pdfium/third_party/base" + "third_party/pdfium/third_party/bigint" "third_party/pdfium/third_party/freetype" "third_party/pdfium/third_party/lcms" "third_party/pdfium/third_party/libopenjpeg20" + "third_party/pdfium/third_party/libpng16" + "third_party/pdfium/third_party/libtiff" "third_party/pdfium/third_party/skia_shared" "third_party/perfetto" + "third_party/perfetto/protos/third_party/chromium" "third_party/pffft" "third_party/ply" "third_party/polymer" @@ -2777,9 +2823,18 @@ and binaries removed, and adds modular support for using system libraries.") "third_party/skia/third_party/vulkanmemoryallocator" "third_party/smhasher" "third_party/snappy" + "third_party/speech-dispatcher" "third_party/sqlite" "third_party/usb_ids" "third_party/usrsctp" + "third_party/vulkan-deps/glslang" + "third_party/vulkan-deps/spirv-headers" + "third_party/vulkan-deps/spirv-tools" + "third_party/vulkan-deps/vulkan-headers" + "third_party/vulkan-deps/vulkan-loader" + "third_party/vulkan-deps/vulkan-tools" + "third_party/vulkan-deps/vulkan-validation-layers" + "third_party/vulkan_memory_allocator" "third_party/web-animations-js" "third_party/webrtc" "third_party/webrtc/common_audio/third_party/ooura" @@ -2793,58 +2848,15 @@ and binaries removed, and adds modular support for using system libraries.") "third_party/widevine/cdm/widevine_cdm_common.h" "third_party/widevine/cdm/widevine_cdm_version.h" "third_party/woff2" + "third_party/wuffs" + "third_party/x11proto" "third_party/zlib" "url/third_party/mozilla" "v8/src/third_party/utf8-decoder" "v8/src/third_party/valgrind" "v8/src/third_party/siphash" "v8/third_party/v8/builtins" - "v8/third_party/inspector_protocol")) - (protected (make-regexp "\\.(gn|gyp)i?$"))) - (define preserved-club - (map (lambda (member) - (string-append "./" member)) - preserved-third-party-files)) - (define (empty? dir) - (equal? (scandir dir) '("." ".."))) - (define (third-party? file) - (string-contains file "third_party/")) - (define (useless? file) - (any (cute string-suffix? <> file) - '(".zip" ".so" ".dll" ".exe" ".jar"))) - (define (parents child) - ;; Return all parent directories of CHILD up to and including - ;; the closest "third_party". - (let* ((dirs (match (string-split child #\/) - ((dirs ... last) dirs))) - (closest (list-index (lambda (dir) - (string=? "third_party" dir)) - (reverse dirs))) - (delim (- (length dirs) closest))) - (fold (lambda (dir prev) - (cons (string-append (car prev) "/" dir) - prev)) - (list (string-join (list-head dirs delim) "/")) - (list-tail dirs delim)))) - (define (remove-loudly file) - (format #t "deleting ~a...~%" file) - (force-output) - (delete-file file)) - (define (delete-unwanted-files child stat flag base level) - (match flag - ((or 'regular 'symlink 'stale-symlink) - (when (third-party? child) - (unless (or (member child preserved-club) - (any (cute member <> preserved-club) - (parents child)) - (regexp-exec protected child)) - (remove-loudly child))) - (when (and (useless? child) (file-exists? child)) - (remove-loudly child))) - ('directory-processed - (when (empty? child) - (rmdir child))) - (_ #t))) + "v8/third_party/inspector_protocol"))) (with-directory-excursion "src/3rdparty" (delete-file-recursively "ninja") @@ -2852,15 +2864,7 @@ and binaries removed, and adds modular support for using system libraries.") (with-directory-excursion "chromium" ;; Delete bundled software and binaries that were not ;; explicitly preserved above. - (nftw "." delete-unwanted-files 'depth 'physical) - - ;; Assert that each preserved item is present to catch - ;; removals. - (for-each (lambda (third-party) - (unless (file-exists? third-party) - (error (format #f "~s does not exist!~%" - third-party)))) - preserved-club) + #$remove-third-party-files ;; Use relative header locations instead of hard coded ones. (substitute* @@ -2980,6 +2984,7 @@ linux/libcurl_wrapper.h" (append clang-14 lld-as-ld-wrapper python-wrapper + python-beautifulsoup4 python-html5lib))) (inputs (modify-inputs (package-inputs qtwebengine-5) diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm index bb38b8b218..21bc9a3bd8 100644 --- a/gnu/packages/raspberry-pi.scm +++ b/gnu/packages/raspberry-pi.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> +;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,17 +18,22 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages raspberry-pi) + #:use-module (gnu bootloader) + #:use-module (gnu bootloader grub) #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages algebra) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages bootloaders) #:use-module (gnu packages commencement) #:use-module (gnu packages cross-base) #:use-module (gnu packages documentation) + #:use-module (gnu packages embedded) #:use-module (gnu packages file) #:use-module (gnu packages gcc) - #:use-module (gnu packages embedded) + #:use-module (gnu packages linux) + #:use-module (guix build-system copy) #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module (guix git-download) @@ -40,7 +46,10 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-2) #:use-module (srfi srfi-26) - #:use-module (ice-9 match)) + #:use-module (ice-9 match) + #:export (make-raspi-bcm28-dtbs + raspi-config-file + raspi-custom-txt)) (define-public bcm2835 (package @@ -235,3 +244,126 @@ Raspberry Pi. Note: It does not work on Raspberry Pi 1.") (install-file "arm64.bin" libexec) #t)))))))) (supported-systems '("aarch64-linux")))) + +(define (raspi-config-file name content) + "Make a configuration file like config.txt for the Raspberry Pi firmware. +CONTENT can be a list of strings, which are concatenated with a newline +character. Alternatively CONTENT can be a string with the full file content." + (plain-file + name + (if (list? content) + (string-join content "\n" 'suffix) + content))) + +(define-public %raspi-config-txt + ;; A config.txt file to start the ARM cores up in 64-bit mode if necessary + ;; and to include a dtb.txt, bootloader.txt, and a custom.txt, each with + ;; separated configurations for the Raspberry Pi firmware. + (raspi-config-file + "config.txt" + `("# See https://www.raspberrypi.org/documentation/configuration/config-txt/README.md for details." + "" + ,(string-append "arm_64bit=" (if (target-aarch64?) "1" "0")) + "include dtb.txt" + "include bootloader.txt" + "include custom.txt"))) + +(define-public %raspi-bcm27-dtb-txt + ;; A dtb.txt file to be included by the config.txt to ensure that the + ;; downstream device tree files bcm27*.dtb will be used. + (raspi-config-file + "dtb.txt" + "upstream_kernel=0")) + +(define-public %raspi-bcm28-dtb-txt + ;; A dtb.txt file to be included by the config.txt to ensure that the + ;; upstream device tree files bcm28*.dtb will be used. + ;; This also implies the use of the dtoverlay=upstream. + (raspi-config-file + "dtb.txt" + "upstream_kernel=1")) + +(define-public %raspi-u-boot-bootloader-txt + ;; A bootloader.txt file to be included by the config.txt to load the + ;; U-Boot bootloader. + (raspi-config-file + "bootloader.txt" + '("dtoverlay=upstream" + "enable_uart=1" + "kernel=u-boot.bin"))) + +(define (raspi-custom-txt content) + "Make a custom.txt file for the Raspberry Pi firmware. +CONTENT can be a list of strings, which are concatenated with a newline +character. Alternatively CONTENT can be a string with the full file content." + (raspi-config-file "custom.txt" content)) + +(define (make-raspi-bcm28-dtbs linux) + "Make a package with the device-tree files for Raspberry Pi models from the +kernel LINUX." + (package + (inherit linux) + (name "raspi-bcm28-dtbs") + (source #f) + (build-system copy-build-system) + (arguments + #~(list + #:phases #~(modify-phases %standard-phases (delete 'unpack)) + #:install-plan + (list (list (search-input-directory %build-inputs + "lib/dtbs/broadcom/") + "." #:include-regexp '("/bcm....-rpi.*\\.dtb"))))) + (inputs (list linux)) + (synopsis "Device-tree files for a Raspberry Pi") + (description + (format #f "The device-tree files for Raspberry Pi models from ~a." + (package-name linux))))) + +(define-public grub-efi-bootloader-chain-raspi-64 + ;; A bootloader capable to boot a Raspberry Pi over network via TFTP or from + ;; a local storage like a micro SD card. It neither installs firmware nor + ;; device-tree files for the Raspberry Pi. It just assumes them to be + ;; existing in boot/efi in the same way that some UEFI firmware with ACPI + ;; data is usually assumed to be existing on PCs. It creates firmware + ;; configuration files and a bootloader-chain with U-Boot to provide an EFI + ;; API for the final GRUB bootloader. It also serves as a blue-print to + ;; create an a custom bootloader-chain with firmware and device-tree + ;; packages or files. + (efi-bootloader-chain grub-efi-netboot-removable-bootloader + #:packages (list u-boot-rpi-arm64-efi-bin) + #:files (list %raspi-config-txt + %raspi-bcm27-dtb-txt + %raspi-u-boot-bootloader-txt))) + +(define (make-raspi-defconfig arch defconfig sha256-as-base32) + "Make for the architecture ARCH a file-like object from the DEFCONFIG file +with the hash SHA256-AS-BASE32. This object can be used as the #:defconfig +argument of the function (modify-linux)." + (make-defconfig + (string-append + ;; This is from commit 7838840 on branch rpi-5.18.y, + ;; see https://github.com/raspberrypi/linux/tree/rpi-5.18.y/ + ;; and https://github.com/raspberrypi/linux/commit/7838840b5606a2051b31da4c598466df7b1c3005 + "https://raw.githubusercontent.com/raspberrypi/linux/7838840b5606a2051b31da4c598466df7b1c3005/arch/" + arch "/configs/" defconfig) + sha256-as-base32)) + +(define-public %bcm2709-defconfig + (make-raspi-defconfig + "arm" "bcm2709_defconfig" + "1hcxmsr131f92ay3bfglrggds8ajy904yj3vw7c42i4c66256a79")) + +(define-public %bcm2711-defconfig + (make-raspi-defconfig + "arm" "bcm2711_defconfig" + "1n7g5yq0hdp8lh0x6bfxph2ff8yn8zisdj3qg0gbn83j4v8i1zbd")) + +(define-public %bcm2711-defconfig-64 + (make-raspi-defconfig + "arm64" "bcm2711_defconfig" + "0k9q7qvw826v2hrp49xnxnw93pnnkicwx869chvlf7i57461n4i7")) + +(define-public %bcmrpi3-defconfig + (make-raspi-defconfig + "arm64" "bcmrpi3_defconfig" + "1bfnl4p0ddx3200dg91kmh2pln36w95y05x1asc312kixv0jgd81")) diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 693489264d..9c8c1ba4d4 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -20,6 +20,8 @@ ;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com> ;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2022 Mathieu Laparie <mlaparie@disr.it> +;;; Copyright © 2022 ( <paren@disroot.org> +;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,11 +39,12 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages rust-apps) - #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system cargo) + #:use-module (guix deprecation) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) - #:use-module (guix deprecation) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) #:use-module (gnu packages) @@ -1028,6 +1031,49 @@ rebase.") "This package provides a tool for generating C/C++ bindings to Rust code.") (license license:mpl2.0))) +(define-public rust-cbindgen-0.24 + (package + (inherit rust-cbindgen) + (name "rust-cbindgen") + (version "0.24.3") + (source (origin + (method url-fetch) + (uri (crate-uri "cbindgen" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1yqxqsz2d0cppd8zwihk2139g5gy38wqgl9snj6rnk8gyvnqsdd6")))) + (arguments + `(#:cargo-inputs + (("rust-clap" ,rust-clap-3) + ("rust-heck" ,rust-heck-0.4) + ("rust-indexmap" ,rust-indexmap-1) + ("rust-log" ,rust-log-0.4) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-syn" ,rust-syn-1) + ("rust-tempfile" ,rust-tempfile-3) + ("rust-toml" ,rust-toml-0.5)) + #:cargo-development-inputs + (("rust-serial-test" ,rust-serial-test-0.5)))) + (native-inputs + (list python-cython)))) + +(define-public rust-cbindgen-0.23 + (package + (inherit rust-cbindgen-0.24) + (name "rust-cbindgen") + (version "0.23.0") + (source (origin + (method url-fetch) + (uri (crate-uri "cbindgen" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "006rn3fn4njayjxr2vd24g1awssr9i3894nbmfzkybx07j728vav")))))) + (define-public rust-cbindgen-0.19 (package (inherit rust-cbindgen) @@ -1875,6 +1921,164 @@ C-compatible) software.") consecutive lines and since program start.") (license license:expat))) +(define-public skim + (package + (name "skim") + (version "0.9.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "skim" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1d5v9vq8frkdjm7bnw3455h6xf3c277d51il2qasn7r20kwik7ab")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-atty-0.2" ,rust-atty-0.2) + ("rust-beef" ,rust-beef-0.5) + ("rust-bitflags" ,rust-bitflags-1) + ("rust-chrono" ,rust-chrono-0.4) + ("rust-clap" ,rust-clap-2) + ("rust-crossbeam" ,rust-crossbeam-0.8) + ("rust-defer-drop" ,rust-defer-drop-1) + ("rust-derive-builder" ,rust-derive-builder-0.9) + ("rust-env-logger" ,rust-env-logger-0.8) + ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-log" ,rust-log-0.4) + ("rust-nix" ,rust-nix-0.19) + ("rust-rayon" ,rust-rayon-1) + ("rust-regex" ,rust-regex-1) + ("rust-shlex" ,rust-shlex-0.1) + ("rust-time" ,rust-time-0.2) + ("rust-timer" ,rust-timer-0.2) + ("rust-tuikit" ,rust-tuikit-0.4) + ("rust-unicode-width" ,rust-unicode-width-0.1) + ("rust-vte" ,rust-vte-0.9)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-extras + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share")) + (man (string-append out "/share/man")) + (vimfiles (string-append share "/vim/vimfiles/plugin")) + (bash-completion + (string-append share "/bash-completions/completions")) + (zsh-site (string-append share "/zsh/site-functions")) + (fish-vendor + (string-append share "/fish/vendor-completions.d"))) + ;; Binaries + (for-each + (lambda (binary) (install-file binary bin)) + (find-files "bin")) + (mkdir-p share) + ;; Manpages + (copy-recursively "man" man) + ;; Vim plugins + (mkdir-p vimfiles) + (copy-recursively "plugin" vimfiles) + ;; Completions + (mkdir-p bash-completion) + (copy-file + "shell/completion.bash" + (string-append bash-completion "/skim")) + (copy-file + "shell/key-bindings.bash" + (string-append bash-completion "/skim-bindings")) + (mkdir-p zsh-site) + (copy-file + "shell/completion.zsh" + (string-append zsh-site "/_skim")) + (copy-file + "shell/key-bindings.zsh" + (string-append zsh-site "/_skim-bindings")) + (mkdir-p fish-vendor) + (copy-file + "shell/key-bindings.fish" + (string-append fish-vendor "/skim-bindings.fish")))))))) + (home-page "https://github.com/lotabout/skim") + (synopsis "Fuzzy Finder in Rust") + (description "This package provides a fuzzy finder in Rust.") + (license license:expat))) + +(define-public skim-0.7 + (package + (inherit skim) + (name "skim") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "skim" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1yiyd6fml5hd2l811sckkzmiiq9bd7018ajk4qk3ai4wyvqnw8mv")))) + (arguments + `(#:cargo-inputs + (("rust-bitflags" ,rust-bitflags-1) + ("rust-chrono" ,rust-chrono-0.4) + ("rust-clap" ,rust-clap-2) + ("rust-derive-builder" ,rust-derive-builder-0.9) + ("rust-env-logger" ,rust-env-logger-0.6) + ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-log" ,rust-log-0.4) + ("rust-nix" ,rust-nix-0.14) + ("rust-rayon" ,rust-rayon-1) + ("rust-regex" ,rust-regex-1) + ("rust-shlex" ,rust-shlex-0.1) + ("rust-time" ,rust-time-0.1) + ("rust-timer" ,rust-timer-0.2) + ("rust-tuikit" ,rust-tuikit-0.2) + ("rust-unicode-width" ,rust-unicode-width-0.1) + ("rust-vte" ,rust-vte-0.3)))))) + +(define-public rust-skim-0.7 + (deprecated-package "rust-skim-0.7" skim-0.7)) + +(define-public svd2rust + (package + (name "svd2rust") + (version "0.19.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "svd2rust" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0q8slfgjfhpljzlk2myb0i538mfq99q1ljn398jm17r1q2pjjxhv")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-anyhow" ,rust-anyhow-1) + ("rust-cast" ,rust-cast-0.2) + ("rust-clap" ,rust-clap-2) + ("rust-clap-conf" ,rust-clap-conf-0.1) + ("rust-env-logger" ,rust-env-logger-0.7) + ("rust-inflections" ,rust-inflections-1) + ("rust-log" ,rust-log-0.4) + ("rust-proc-macro2" ,rust-proc-macro2-0.4) + ("rust-quote" ,rust-quote-1) + ("rust-svd-parser" ,rust-svd-parser-0.10) + ("rust-syn" ,rust-syn-1) + ("rust-thiserror" ,rust-thiserror-1)))) + (home-page "https://github.com/rust-embedded/svd2rust/") + (synopsis + "Generate Rust register maps (`struct`s) from SVD files") + (description + "This program can be used to generate Rust register maps (`struct`s) from SVD +files.") + (license (list license:expat license:asl2.0)))) + (define-public swayhide (package (name "swayhide") @@ -1900,6 +2104,43 @@ workflow includes opening graphical programs from the terminal, as the locked terminal won't have to take up any space.") (license license:gpl3+))) +(define-public swayr + (package + (name "swayr") + (version "0.18.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "swayr" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1m443lwbs3lm20kkviw60db56w9i59dm393z1sn6llpfi2xihh3h")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f + #:cargo-inputs + (("rust-clap" ,rust-clap-3) + ("rust-directories" ,rust-directories-4) + ("rust-env-logger" ,rust-env-logger-0.9) + ("rust-log" ,rust-log-0.4) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-rand" ,rust-rand-0.8) + ("rust-regex" ,rust-regex-1) + ("rust-rt-format" ,rust-rt-format-0.3) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-swayipc" ,rust-swayipc-3) + ("rust-toml" ,rust-toml-0.5)))) + (home-page "https://sr.ht/~tsdh/swayr/") + (synopsis "Window-switcher for the sway window manager") + (description + "This package provides a last-recently-used window-switcher for the sway +window manager. Swayr consists of a daemon, and a client. The swayrd daemon +records window/workspace creations, deletions, and focus changes using sway's +JSON IPC interface. The swayr client offers subcommands, and sends them to the +daemon which executes them.") + (license license:gpl3+))) + (define-public tealdeer (package (name "tealdeer") @@ -2029,32 +2270,54 @@ It will then write @code{fixup!} commits for each of those changes.") (define-public zoxide (package (name "zoxide") - (version "0.6.0") + (version "0.8.3") (source (origin (method url-fetch) (uri (crate-uri "zoxide" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1ih01l3xp8plicxhmyxjkq12ncpdb8954jcj3dh3lwvkhvw29nkk")))) + (base32 "0y5v2vgl9f3n0n0w4b3iddbfyxv0hls0vw5406ry0hcvnnjyy2l3")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-anyhow" ,rust-anyhow-1) - ("rust-askama" ,rust-askama-0.10) - ("rust-bincode" ,rust-bincode-1) - ("rust-clap" ,rust-clap-3) - ("rust-dirs-next" ,rust-dirs-next-2) - ("rust-dunce" ,rust-dunce-1) - ("rust-glob" ,rust-glob-0.3) - ("rust-once-cell" ,rust-once-cell-1) - ("rust-ordered-float" ,rust-ordered-float-2) - ("rust-rand" ,rust-rand-0.7) - ("rust-serde" ,rust-serde-1) - ("rust-tempfile" ,rust-tempfile-3)) - #:cargo-development-inputs - (("rust-assert-cmd" ,rust-assert-cmd-1) - ("rust-seq-macro" ,rust-seq-macro-0.2)))) + (list #:cargo-inputs + `(("rust-anyhow" ,rust-anyhow-1) + ("rust-askama" ,rust-askama-0.11) + ("rust-bincode" ,rust-bincode-1) + ("rust-clap" ,rust-clap-3) + ("rust-clap-complete" ,rust-clap-complete-3) + ("rust-clap-complete-fig" ,rust-clap-complete-fig-3) + ("rust-dirs" ,rust-dirs-4) + ("rust-dunce" ,rust-dunce-1) + ("rust-fastrand" ,rust-fastrand-1) + ("rust-glob" ,rust-glob-0.3) + ("rust-nix" ,rust-nix-0.24) + ("rust-serde" ,rust-serde-1) + ("rust-which" ,rust-which-4)) + #:cargo-development-inputs + `(("rust-assert-cmd" ,rust-assert-cmd-2) + ("rust-rstest" ,rust-rstest-0.15) + ("rust-rstest-reuse" ,rust-rstest-reuse-0.4) + ("rust-tempfile" ,rust-tempfile-3)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'use-older-rust + (lambda _ + (setenv "RUSTC_BOOTSTRAP" "1") + (substitute* "Cargo.toml" + (("^rust-version = .*$") + (string-append + "rust-version = \"" + #$(package-version rust) + "\"\n"))) + (substitute* "src/main.rs" + (("#!\\[allow\\(clippy::single_component_path_imports)]") + "#![feature(total_cmp)]")) + (substitute* "src/cmd/query.rs" + (("let handle = &mut io::stdout\\()\\.lock\\();") + "\ +let _stdout = io::stdout(); +let handle = &mut _stdout.lock();"))))))) (home-page "https://github.com/ajeetdsouza/zoxide/") (synopsis "Fast way to navigate your file system") (description diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index bfa5e1bc68..c0f663977a 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -625,6 +625,11 @@ safety and thread safety guarantees.") rust-1.63 "1.64.0" "018j720b2n12slp4xk64jc6shkncd46d621qdyzh2a8s3r49zkdk"))) (package (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (patches (search-patches "rust-1.64-fix-riscv64-bootstrap.patch")) + (patch-flags '("-p1" "--reverse")))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) @@ -638,8 +643,16 @@ safety and thread safety guarantees.") (generate-all-checksums "vendor")))))))))) (define rust-1.65 - (rust-bootstrapped-package - rust-1.64 "1.65.0" "0f005kc0vl7qyy298f443i78ibz71hmmh820726bzskpyrkvna2q")) + (let ((base-rust + (rust-bootstrapped-package + rust-1.64 "1.65.0" "0f005kc0vl7qyy298f443i78ibz71hmmh820726bzskpyrkvna2q"))) + (package + (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (patches '()) + (patch-flags '("-p1"))))))) ;;; Note: Only the latest versions of Rust are supported and tested. The ;;; intermediate rusts are built for bootstrapping purposes and should not diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm index e3f94fd0b0..051d7df014 100644 --- a/gnu/packages/sssd.scm +++ b/gnu/packages/sssd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2017, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2018, 2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Timotej Lazar <timotej.lazar@araneo.si> @@ -154,7 +154,7 @@ fundamental object types for C.") (define-public sssd (package (name "sssd") - (version "2.7.4") + (version "2.8.1") (source (origin (method git-fetch) @@ -163,9 +163,8 @@ fundamental object types for C.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1946pfwyv1ci0m4flrhwkksq42p14n7kcng6fbq6sy4lcn5g3yml")) - (patches (search-patches "sssd-optional-systemd.patch" - "sssd-system-directories.patch")))) + (base32 "19vn2a1r33q6fnw7jmfv3s4kirnviz0rgq0w6wzx6h008iysidsd")) + (patches (search-patches "sssd-system-directories.patch")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 6196d6bd69..616eded618 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -486,14 +486,14 @@ available, greatly increasing its breadth and scope.") (define-public r-boot (package (name "r-boot") - (version "1.3-28") + (version "1.3-28.1") (source (origin (method url-fetch) (uri (cran-uri "boot" version)) (sha256 (base32 - "0cjafhqv1c1mrjjcasqr767vs96wjcc6am9r1icryr8l4zymhwcz")))) + "0lzz08fpn80qzm197s4806hr6skanr3r3rlx6bx7zk4cripygkfl")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/boot") (synopsis "Bootstrap functions for R") @@ -655,14 +655,14 @@ also flexible enough to handle most nonstandard requirements.") (define-public r-matrix (package (name "r-matrix") - (version "1.5-1") + (version "1.5-3") (source (origin (method url-fetch) (uri (cran-uri "Matrix" version)) (sha256 (base32 - "0pap6pb0is2s02l43y982p7banwi844bjpgbcgf6fb8pb01vlzam")))) + "03g0zqkbaa1k52i0d0yyn7vclmg93hdqaid48sbc1ccpvi70ywjf")))) (properties `((upstream-name . "Matrix"))) (build-system r-build-system) (propagated-inputs @@ -825,14 +825,14 @@ curves, Cox models, and parametric accelerated failure time models.") (define-public r-bit (package (name "r-bit") - (version "4.0.4") + (version "4.0.5") (source (origin (method url-fetch) (uri (cran-uri "bit" version)) (sha256 (base32 - "0s7isadibxp2wr62r5cpbyh9z31sczzfz4j3rm7gxgjfpqgq8174")))) + "1g5zakrzkhrqh3d7p1zka6zzzw11rdlbrvxsh05s7dkli1m57wph")))) (build-system r-build-system) (native-inputs (list r-knitr)) @@ -1078,13 +1078,13 @@ in which the whole-plots or split-plots or both can be freely exchangeable.") (define-public r-plyr (package (name "r-plyr") - (version "1.8.7") + (version "1.8.8") (source (origin (method url-fetch) (uri (cran-uri "plyr" version)) (sha256 - (base32 "0zz88q055c38b9xqzfg1mwm7ikxzlyx3pnk16sfa8dbh2pqxm7vx")))) + (base32 "030706kwgqa2s5jd93ck271iqb0pj3fshrj9frg4wgp1pfs12cm7")))) (build-system r-build-system) (propagated-inputs (list r-rcpp)) (home-page "http://had.co.nz/plyr") @@ -1137,14 +1137,14 @@ designed by Cynthia Brewer as described at http://colorbrewer2.org") (define-public r-sendmailr (package (name "r-sendmailr") - (version "1.2-1.1") + (version "1.3-1") (source (origin (method url-fetch) (uri (cran-uri "sendmailR" version)) (sha256 (base32 - "1dgxl6wnadlw5b3m4has5zalpk3pd5j70hfps92b9lbx4i7xbmr0")))) + "1vxs9pdz1qbm7gzzigmvn5ybglakj4fska8dfj94azdvpkijs6hx")))) (properties `((upstream-name . "sendmailR"))) (build-system r-build-system) (propagated-inputs @@ -1429,13 +1429,13 @@ for template use among CRAN packages.") (define-public r-evaluate (package (name "r-evaluate") - (version "0.17") + (version "0.18") (source (origin (method url-fetch) (uri (cran-uri "evaluate" version)) (sha256 (base32 - "0qx9dgwcz0xmf4k8hy45p50dhb3nldhmhmg5y0d92rxr9k4l7is9")))) + "0dmznan8zajzb5f31yabcgpkinlqczz59i1rg9f6sa5cjzffqkkz")))) (build-system r-build-system) (home-page "https://github.com/hadley/evaluate") (synopsis "Parsing and evaluation tools for R") @@ -1515,13 +1515,13 @@ data derived from /etc/mime.types in UNIX-type systems.") (define-public r-markdown (package (name "r-markdown") - (version "1.3") + (version "1.4") (source (origin (method url-fetch) (uri (cran-uri "markdown" version)) (sha256 (base32 - "1w9hrc745zwgsnmr72jkwfh22xqgdsq089qcajlc69xrwya3wxxi")))) + "0ziwirplzjcci2km6wln035qfd2irjl58r77kl98r8s257kavqz0")))) (build-system r-build-system) ;; Skip check phase because the tests require the r-knitr package to be ;; installed. This prevents installation failures. Knitr normally @@ -1559,13 +1559,13 @@ emitter (http://pyyaml.org/wiki/LibYAML) for R.") (define-public r-knitr (package (name "r-knitr") - (version "1.40") + (version "1.41") (source (origin (method url-fetch) (uri (cran-uri "knitr" version)) (sha256 (base32 - "1g1mhnkyxd2sv6p1l6iph9dnmpbwxhah78xx4kq543ks6vzrb3wv")))) + "1izv1m56ngc20wx4da9mmr5ll6ah14ka8dqn9i3pd7ah70lmya81")))) (build-system r-build-system) (propagated-inputs (list r-evaluate r-highr r-stringr r-xfun r-yaml)) @@ -1968,13 +1968,13 @@ times.") (define-public r-data-table (package (name "r-data-table") - (version "1.14.4") + (version "1.14.6") (source (origin (method url-fetch) (uri (cran-uri "data.table" version)) (sha256 (base32 - "1w28wg119w8pnzfdwp5yw7jgk7vv80b6cagms67i02c3dv1afqj8")))) + "05h99rk2s1ds9igrqw2nhnk6yahgssszqlnw0y0p9p83lsndp30x")))) (properties `((upstream-name . "data.table"))) (build-system r-build-system) (inputs @@ -2111,14 +2111,14 @@ chain.") (define-public r-ade4 (package (name "r-ade4") - (version "1.7-19") + (version "1.7-20") (source (origin (method url-fetch) (uri (cran-uri "ade4" version)) (sha256 (base32 - "1vv5y6badksnpjb3bcphhjdzzh6i2grmwnsalcf2cfpr3y412lf8")))) + "0yxd9dgci3rzz807wsb76wis12ipgjv9w86smdyz20jrnn45giyx")))) (build-system r-build-system) (propagated-inputs (list r-mass r-pixmap r-sp)) @@ -2406,13 +2406,13 @@ tables, autolinks and strikethrough text.") (define-public r-roxygen2 (package (name "r-roxygen2") - (version "7.2.1") + (version "7.2.2") (source (origin (method url-fetch) (uri (cran-uri "roxygen2" version)) (sha256 (base32 - "08fs5jw6npriqsr8pribs2yy1r8163xzcv4gmlgmcaywj4jk9w6j")))) + "07pijickz5kgd31xzn2z11xqiym4sscj742qwbc5bjh7mayhhmki")))) (build-system r-build-system) (propagated-inputs (list r-brew @@ -2729,13 +2729,13 @@ well as additional utilities such as panel and axis annotation functions.") (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.11.4.0.1") + (version "0.11.4.2.1") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "1qrpdalcvn9bkhiq4l2jflicy6116l5j913h8clyf8yaygsxvr0c")))) + "172vz9j1hck6iwk56hgsrg91n4f11df1n6hy1crbv3cb53rkyjgn")))) (properties `((upstream-name . "RcppArmadillo"))) (build-system r-build-system) (propagated-inputs @@ -2821,13 +2821,13 @@ certain criterion, e.g., it contains a certain regular file.") (define-public r-rmarkdown (package (name "r-rmarkdown") - (version "2.17") + (version "2.18") (source (origin (method url-fetch) (uri (cran-uri "rmarkdown" version)) (sha256 - (base32 "1gn413pgyfr45mmiv82gymz9r39d41h3ykmai93fihn4ir2nqmxa")))) + (base32 "08lgzb7n7lll1ff7flcyilnz9afj60npi882c035pyyy4vk7majg")))) (properties `((upstream-name . "rmarkdown"))) (build-system r-build-system) (propagated-inputs @@ -2938,13 +2938,13 @@ a column in data frame.") (define-public r-rsqlite (package (name "r-rsqlite") - (version "2.2.18") + (version "2.2.19") (source (origin (method url-fetch) (uri (cran-uri "RSQLite" version)) (sha256 (base32 - "1sjbjh4rhaagmhiv2rg3csakbsc62qwyawz5vhywg3mdcbdnl6b2")))) + "11jzg3ywzaql3zwp7cwql1nilz8pvbz903whyh0d447rs0xnn3vj")))) (properties `((upstream-name . "RSQLite"))) (build-system r-build-system) (propagated-inputs @@ -3131,14 +3131,14 @@ statements.") (define-public r-segmented (package (name "r-segmented") - (version "1.6-0") + (version "1.6-1") (source (origin (method url-fetch) (uri (cran-uri "segmented" version)) (sha256 (base32 - "0sg59j59kz3zrwl3mi4ps1qw3hvwljygqa1d652vjdsx9w57zbvb")))) + "0vym03p04jf66fdpx3kzy727b8bay2fpvd3n0xxmm94c3hqwl2gn")))) (build-system r-build-system) (propagated-inputs (list r-mass r-nlme)) (home-page "https://cran.r-project.org/web/packages/segmented") @@ -3287,303 +3287,339 @@ using the multicore functionality of the parallel package.") (license license:gpl2+))) (define-public r-dt - (let ((javascript-sources - '(("https://cdn.datatables.net/1.10.20/js/jquery.dataTables.js" - "03ln7ys1q1hy3xpsrjxnjpg9hq3lfpqz0firrxsgjzj8fsw20is3" - "datatables") - ("https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap.js" - "16clrnxm7axn6cdimyf3qbskxg10gpn9ld5ls2xdfw5q1qf2i4ml" - "datatables") - ("https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap4.js" - "16v49zqxr1zil19bcx3wdnv95zdpiz2m979aazan7z04ymqb2rzb" - "datatables") - ("https://cdn.datatables.net/1.10.20/js/dataTables.foundation.js" - "1gpjm1pi2pl0hxsn0pg3s3f382y2s7nsr06866vxld6gb8054lld" - "datatables") - ("https://cdn.datatables.net/1.10.20/js/dataTables.jqueryui.js" - "0nxd8jph34vsk8k8whs2yiybrn6nsnwzhri0bxn2k1dzmcvpn24i" - "datatables") - ("https://cdn.datatables.net/1.10.20/js/dataTables.semanticui.js" - "1477f49xyxs4phias789mbspv23w8alxchhl5b5iy0aw6vd35c43" - "datatables") - - ("https://cdn.datatables.net/autofill/2.3.4/js/dataTables.autoFill.js" - "04i6n7r3512gzfihl5wnhrvm0klnjp41g1z6cny3j803hvmnp8zk" - "datatables-extensions/AutoFill") - ("https://cdn.datatables.net/autofill/2.3.4/js/autoFill.bootstrap.js" - "1zi7iiq63i5qx3p9cyynn6am4idxwj8xaz8mp4n3klm1x68sc0ja" - "datatables-extensions/AutoFill") - ("https://cdn.datatables.net/autofill/2.3.4/js/autoFill.bootstrap4.js" - "1vk2smcz14raf0cz88a65yf36a7mnmbml02q03apg2b8bqy91m7w" - "datatables-extensions/AutoFill") - ("https://cdn.datatables.net/autofill/2.3.4/js/autoFill.foundation.js" - "0sbcib1461pkglk69fzzqi73g4abylah74f264v0f79dc5247yzz" - "datatables-extensions/AutoFill") - ("https://cdn.datatables.net/autofill/2.3.4/js/autoFill.jqueryui.js" - "1dw9vbbchzbd2c7id8na2p1cxac2kgjbzjrvqafra715hr0i4z3z" - "datatables-extensions/AutoFill") - ("https://cdn.datatables.net/autofill/2.3.4/js/autoFill.semanticui.js" - "07ck81y6wpqchq8jfym6gjgc57xwj6vv9h5w9grc1gps6p7q9xnr" - "datatables-extensions/AutoFill") - - ("https://cdn.datatables.net/buttons/1.6.1/js/dataTables.buttons.js" - "15l9kd9898zm8xf996d5c761rwl55k4w718k9k5fzz2gh91g21g5" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.colVis.js" - "1rqlv5pacipl652xgyzsdq1gbfwv52rwl4mr2fx9a3py21yskppk" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.flash.js" - "150r2ypxl017kl5agrn17cnyvwpf7x2x7vkqbc1qxif8vclf35kj" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.html5.js" - "1d8is99yrh95hycjijzbrbxy1anfslab6krmhj2xbwsmssyn16xh" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.print.js" - "1irgspv2zidv6v0ay92152d8cvhz2zyrwb71xk3nw903223vc2gl" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.semanticui.js" - "1p02r953ampxlzfzpay227ya6qdzsxz2anjxpnx3q8qs6gv6y2jl" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.foundation.js" - "0aykm1sk8rwvxp5r4qnvbb2scx2bln5kh88h36829mcqcdksfc50" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.jqueryui.js" - "1im6f6jw3yc3959rw1i3bghvz863kmp3wgfvz661r1r2wjzzfs4d" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.bootstrap.js" - "1mzmpabhrk0iag7hb16n8bhghx4cprq39p2vqn3v65mpklajzznc" - "datatables-extensions/Buttons") - ("https://cdn.datatables.net/buttons/1.6.1/js/buttons.bootstrap4.js" - "0hfclipg43wr9p7irrcn9vp5wji8z7gz6y5mclkq88z1mlpwklzf" - "datatables-extensions/Buttons") - ("https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.js" - "01l5lw49jz2qn6k9i63dk4llar4lvvpd6xp6i45mpwfk49fbxqg2" - "datatables-extensions/Buttons") - ("https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.js" - "1sfw80az2cgzin5wk7q1p2n9zm66c35cz0m6isdygml81i594wia" - "datatables-extensions/Buttons") - ("https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js" - "1k324s0hw4lfpd71bb1cnv4j5096k8smk64fjdsh81sl0ykizf2w" - "datatables-extensions/Buttons") - - ("https://cdn.datatables.net/colreorder/1.5.2/js/dataTables.colReorder.js" - "1dalc28km19xzzszsa82hsd9alikrqpzjvf9vzxkccjpf7m2sdqg" - "datatables-extensions/ColReorder") - ("https://cdn.datatables.net/colreorder/1.5.2/js/colReorder.foundation.js" - "0nrddc8swkmsfzji518kh6ks55ykyk9p8r4x5fmf8ckr9fhjkh0s" - "datatables-extensions/ColReorder") - ("https://cdn.datatables.net/colreorder/1.5.2/js/colReorder.bootstrap.js" - "0crgmjwcn817yz6ibjkji6gsickvv2a4las9asyldfcpj2c99x84" - "datatables-extensions/ColReorder") - ("https://cdn.datatables.net/colreorder/1.5.2/js/colReorder.bootstrap4.js" - "065fhw4v2d9rp3ic9zfb1q5d7pfq4f2949rr24hdjbspf19m3ymd" - "datatables-extensions/ColReorder") - ("https://cdn.datatables.net/colreorder/1.5.2/js/colReorder.semanticui.js" - "17kw143ny0nq0yidsffw3cpghvlg2bzlzavfi0ihkamcn26ymxcp" - "datatables-extensions/ColReorder") - ("https://cdn.datatables.net/colreorder/1.5.2/js/colReorder.jqueryui.js" - "1rd8hijz3prg2y36fvqczrpdzixibjy2dxgs2fmgr8wrm8k01rrm" - "datatables-extensions/ColReorder") - - ("https://cdn.datatables.net/fixedcolumns/3.3.0/js/dataTables.fixedColumns.js" - "0vsqk2fv59n351bdfcbvhmvpq38qwf41j1cn810xz1l1i07cg4hg" - "datatables-extensions/FixedColumns") - ("https://cdn.datatables.net/fixedcolumns/3.3.0/js/fixedColumns.bootstrap.js" - "1j4wvg694l960gk5dg7wghwa3dpgq8mnrcgp78ghm92i08djb1wy" - "datatables-extensions/FixedColumns") - ("https://cdn.datatables.net/fixedcolumns/3.3.0/js/fixedColumns.bootstrap4.js" - "1p79k9bjslyvmp1bdhmg4nm2l9nbfsi4kgw7rx3vjka3n50qy730" - "datatables-extensions/FixedColumns") - ("https://cdn.datatables.net/fixedcolumns/3.3.0/js/fixedColumns.foundation.js" - "0f0xkrsapzgma58f6l63rpn68xid098dxwqqddsyddl0hy0x1z82" - "datatables-extensions/FixedColumns") - ("https://cdn.datatables.net/fixedcolumns/3.3.0/js/fixedColumns.jqueryui.js" - "0lw35c8vkajx75pg4ddik4gyzmjak1jaw3flq850frwgnzsvhahx" - "datatables-extensions/FixedColumns") - ("https://cdn.datatables.net/fixedcolumns/3.3.0/js/fixedColumns.semanticui.js" - "1kqsap9y0d25a7m5zjakipifl5qi2qr72kfj4ap3zxavd8md2wyn" - "datatables-extensions/FixedColumns") - - ("https://cdn.datatables.net/fixedheader/3.1.6/js/dataTables.fixedHeader.js" - "1ml5ilnm8nirr6rsgmzn75l1k0hcjz3sqk6h1y1gy8cpwpklvqri" - "datatables-extensions/FixedHeader") - ("https://cdn.datatables.net/fixedheader/3.1.6/js/fixedHeader.bootstrap.js" - "1qf3pkb3svpia7g8bwyql7ma3x2g4zj5bp0d14pnv8xpc9h52r93" - "datatables-extensions/FixedHeader") - ("https://cdn.datatables.net/fixedheader/3.1.6/js/fixedHeader.bootstrap4.js" - "19jcvnk7zh4k6fd5si3b743x70qzlkqiw3m10jbc5jzbpz8sj6qd" - "datatables-extensions/FixedHeader") - ("https://cdn.datatables.net/fixedheader/3.1.6/js/fixedHeader.foundation.js" - "0xmpx1r76vykqygksyjaf4d1ql1fid69rqhvk4k857iybqz3gdcv" - "datatables-extensions/FixedHeader") - ("https://cdn.datatables.net/fixedheader/3.1.6/js/fixedHeader.jqueryui.js" - "1lc0g2cag1sj3bqmh7rh5z00pmfv1srxfhwi32y4mgpzhrzpfzxn" - "datatables-extensions/FixedHeader") - ("https://cdn.datatables.net/fixedheader/3.1.6/js/fixedHeader.semanticui.js" - "1v0i6dc68h8l8673fb5970igzkl7as36riv504iyg82glfi7n877" - "datatables-extensions/FixedHeader") - - ("https://cdn.datatables.net/keytable/2.5.1/js/dataTables.keyTable.js" - "16iib2icxsjh93x5hd42gpsl7bzpcsqb7zjgj0m1s02ls45bdlv5" - "datatables-extensions/KeyTable") - ("https://cdn.datatables.net/keytable/2.5.1/js/keyTable.bootstrap.js" - "0hnhk6am4yl6h6bb7as935k8h2syil9hf8g7nn409yd3ws736xpj" - "datatables-extensions/KeyTable") - ("https://cdn.datatables.net/keytable/2.5.1/js/keyTable.bootstrap4.js" - "0r85mp5yf9hgl5ayzzs46dfbxa231bjlvgb8lqpyzik1m6afa51i" - "datatables-extensions/KeyTable") - ("https://cdn.datatables.net/keytable/2.5.1/js/keyTable.foundation.js" - "11fr14p33lyvs0wfcx228m600i4qcaqb44q3hk723jxcz59k17dw" - "datatables-extensions/KeyTable") - ("https://cdn.datatables.net/keytable/2.5.1/js/keyTable.jqueryui.js" - "0572rxrvwyprdr8l5jkgacj2bkmhmgxjy5vybm65n54g9j19l6bc" - "datatables-extensions/KeyTable") - ("https://cdn.datatables.net/keytable/2.5.1/js/keyTable.semanticui.js" - "157mqn9mhmmf7vas2das4hbpwipk3wshs8n0808q04rbijr0g2bz" - "datatables-extensions/KeyTable") - - ("https://cdn.datatables.net/responsive/2.2.3/js/dataTables.responsive.js" - "1jnsx4sqf7qjd1gz5ag9hn6n76cwwfms23rzw37lgbd6h54yqzwr" - "datatables-extensions/Responsive") - ("https://cdn.datatables.net/responsive/2.2.3/js/responsive.foundation.js" - "1vzzqpd9l8xv0am42g4cilx9igmq60mgk0hab4ssqvbicrmrgq9z" - "datatables-extensions/Responsive") - ("https://cdn.datatables.net/responsive/2.2.3/js/responsive.semanticui.js" - "1cjiwcf0d07482k08dhn5ffsizshw4hqgz5l58p03pq9g6wc9pvm" - "datatables-extensions/Responsive") - ("https://cdn.datatables.net/responsive/2.2.3/js/responsive.jqueryui.js" - "10nykak2kf4sai64girh26xdmdil29jvw3zja2rpp2qzjg4172z9" - "datatables-extensions/Responsive") - ("https://cdn.datatables.net/responsive/2.2.3/js/responsive.bootstrap.js" - "1xxlh01vmzmfwwlsa611pl2nrl2sx58rp8xmx301bfsylmp2v5b2" - "datatables-extensions/Responsive") - ("https://cdn.datatables.net/responsive/2.2.3/js/responsive.bootstrap4.js" - "1zjh15p7n1038sggaxv1xvcwbkhw2nk1ndx745s6cxiqb69y3i0h" - "datatables-extensions/Responsive") - - ("https://cdn.datatables.net/rowgroup/1.1.1/js/dataTables.rowGroup.js" - "0s4q7ir2d6q36g29nn9mqk7vrqrdig2mm5zbcv0sn2lixqi29pkj" - "datatables-extensions/RowGroup") - ("https://cdn.datatables.net/rowgroup/1.1.1/js/rowGroup.bootstrap.js" - "1xfdhqgznz9x1v8spvql6b0wbna13h8cbzvkjza14nqsmccxck66" - "datatables-extensions/RowGroup") - ("https://cdn.datatables.net/rowgroup/1.1.1/js/rowGroup.bootstrap4.js" - "1xm53sda4fabwdaglngrj09bpiygkn9mm17grxbykn1jazqqdp62" - "datatables-extensions/RowGroup") - ("https://cdn.datatables.net/rowgroup/1.1.1/js/rowGroup.foundation.js" - "0832i10vils1wv1sm10qvsnd4i2k2xkhskz6i9y2q0axkmk73hcd" - "datatables-extensions/RowGroup") - ("https://cdn.datatables.net/rowgroup/1.1.1/js/rowGroup.jqueryui.js" - "0n53cd294s9mjblkykkqvd9n414bsc26wpcg5spxdscjl6hxh79p" - "datatables-extensions/RowGroup") - ("https://cdn.datatables.net/rowgroup/1.1.1/js/rowGroup.semanticui.js" - "010wls5nf387p21fdc2k952bxq89r5kxkv7j4wbvwf8k2a18cmc9" - "datatables-extensions/RowGroup") - - ("https://cdn.datatables.net/rowreorder/1.2.6/js/dataTables.rowReorder.js" - "13ymbn3h9755pgb0gmlb9gl54vz9nqnz4mws7g6mlmz53r3sqhmj" - "datatables-extensions/RowReorder") - ("https://cdn.datatables.net/rowreorder/1.2.6/js/rowReorder.bootstrap.js" - "185if2pxgc940rm49hdgln57pc5h9cszlii3bfpdf3pdc1fjhckm" - "datatables-extensions/RowReorder") - ("https://cdn.datatables.net/rowreorder/1.2.6/js/rowReorder.bootstrap4.js" - "14129x4md57i4ff7j18m49jn5fw8r716np84cdrcawlydgjsxp4a" - "datatables-extensions/RowReorder") - ("https://cdn.datatables.net/rowreorder/1.2.6/js/rowReorder.foundation.js" - "0zg94jckymxzda2xjyj9p38y5v61cji55kak1ylq72l6a9sw8sg6" - "datatables-extensions/RowReorder") - ("https://cdn.datatables.net/rowreorder/1.2.6/js/rowReorder.jqueryui.js" - "08gm419xcixgqw0i5yv2mxyyvafhzviibifp6nv129vdxx0a5d8v" - "datatables-extensions/RowReorder") - ("https://cdn.datatables.net/rowreorder/1.2.6/js/rowReorder.semanticui.js" - "1zjrx2rlgw3qannsqa88pcp3i4pc87pwv7rmgfw1dar8namkr9kk" - "datatables-extensions/RowReorder") - - ("https://cdn.datatables.net/scroller/2.0.1/js/dataTables.scroller.js" - "0zfjjdvwwlsnps24i9l4c97hmway2qs6addks1is5bxl4k1r6d16" - "datatables-extensions/Scroller") - ("https://cdn.datatables.net/scroller/2.0.1/js/scroller.foundation.js" - "04bk6ink8wqay7655v93jvv86m3bn6asrsfb22i99rgxdvm8gn1z" - "datatables-extensions/Scroller") - ("https://cdn.datatables.net/scroller/2.0.1/js/scroller.bootstrap.js" - "19dl40dl8ir21xvs1j7xhm2a4py1m21xbypwn499fg2awj8vaidi" - "datatables-extensions/Scroller") - ("https://cdn.datatables.net/scroller/2.0.1/js/scroller.bootstrap4.js" - "0pbkgncijlafwdmyh4l65dabd18hzjh8r01cad3b9iy8cfif6iwd" - "datatables-extensions/Scroller") - ("https://cdn.datatables.net/scroller/2.0.1/js/scroller.jqueryui.js" - "1md5mpx5in7wzsr38yn801cmv3phm0i0ikdnpd0b1nsna5ccpj14" - "datatables-extensions/Scroller") - ("https://cdn.datatables.net/scroller/2.0.1/js/scroller.semanticui.js" - "1dfbblbzbryjgiv31qfdjnijz19lmyijg12win3y8gsgfd4fp9zz" - "datatables-extensions/Scroller") - - ("https://cdn.datatables.net/searchbuilder/1.0.0/js/dataTables.searchBuilder.js" - "0n5g0j0yfzqvdpsmwb27bj1rd8zx864fsx2k7b2kpv6mqqavzpqc" - "datatables-extensions/SearchBuilder") - ("https://cdn.datatables.net/searchbuilder/1.0.0/js/searchBuilder.bootstrap.js" - "1gnd8rjcg9c96xayshn9rwinzgmlwzddczjlpfmf2j33npmyka2y" - "datatables-extensions/SearchBuilder") - ("https://cdn.datatables.net/searchbuilder/1.0.0/js/searchBuilder.bootstrap4.js" - "0vdv5mi6zbp2dspmj0lw2vaqxvfadcydlmc6frqv4a68rms7wz05" - "datatables-extensions/SearchBuilder") - ("https://cdn.datatables.net/searchbuilder/1.0.0/js/searchBuilder.dataTables.js" - "0fbzfnaqswb2xq7m1vdzcg7l7qi0wmyz64ml6k4002kp0dm4xnlx" - "datatables-extensions/SearchBuilder") - - ("https://cdn.datatables.net/searchpanes/1.1.1/js/dataTables.searchPanes.js" - "1s697avk42h24fsaq79d1kkw66dqig7xgpx9bvmhwncv8amkmz6i" - "datatables-extensions/SearchPanes") - ("https://cdn.datatables.net/searchpanes/1.1.1/js/searchPanes.bootstrap.js" - "0n3z4fdx1nsga4l5hmd4s93piv9k0v607xd7q9h2zpq613if7sld" - "datatables-extensions/SearchPanes") - ("https://cdn.datatables.net/searchpanes/1.1.1/js/searchPanes.bootstrap4.js" - "1i1arnvxp57z01wc207jxnw9h8clcish6l96c2gnmachgkaz8lqa" - "datatables-extensions/SearchPanes") - ("https://cdn.datatables.net/searchpanes/1.1.1/js/searchPanes.dataTables.js" - "04zzg7i46igcd6gfvdln5alpgjn7m663yf9bf2f3fk9va4fvis6y" - "datatables-extensions/SearchPanes") - ("https://cdn.datatables.net/searchpanes/1.1.1/js/searchPanes.foundation.js" - "0m78wdajxn1m3j9jn9jfwqf73wwsxrsfw4zf84h5y6saj4rrcz72" - "datatables-extensions/SearchPanes") - ("https://cdn.datatables.net/searchpanes/1.1.1/js/searchPanes.jqueryui.js" - "0zb2x736isb8nxrmd7j8nb78lj8h0h9j3axnbjiybwzzk819xw1m" - "datatables-extensions/SearchPanes") - ("https://cdn.datatables.net/searchpanes/1.1.1/js/searchPanes.semanticui.js" - "1781d0xmx7xz0jly0wsw2zbrdmfc1crahmcdbsfbj5s66kdsnd7c" - "datatables-extensions/SearchPanes") - - ("https://cdn.datatables.net/select/1.3.1/js/dataTables.select.js" - "0a7bkbz1cizhiq4h417b4rcdr7998pn8q4dlyzx8449xdp0h0n0v" - "datatables-extensions/Select") - ("https://cdn.datatables.net/select/1.3.1/js/select.bootstrap.js" - "0mm5ly3p2iprlfi8ajz548rjqx8lz1sbjj5ysgqmwqg14gw7l9k7" - "datatables-extensions/Select") - ("https://cdn.datatables.net/select/1.3.1/js/select.bootstrap4.js" - "1hv6d9lwgflmxhy7mdfb9rvli2wa2cbkdhqjz64zkf1a1a7wlb5q" - "datatables-extensions/Select") - ("https://cdn.datatables.net/select/1.3.1/js/select.foundation.js" - "1zzygcbngvrqh7m22x0s23k8m5xj5fv1p466pzjs23p94qq24a2r" - "datatables-extensions/Select") - ("https://cdn.datatables.net/select/1.3.1/js/select.jqueryui.js" - "1hv5zlmfifd27hylfqsji09y2hbp3m2hnb7j41418sjrxs63f6x6" - "datatables-extensions/Select") - ("https://cdn.datatables.net/select/1.3.1/js/select.semanticui.js" - "0q6q3vb6pa5nmkxy7zcnjs0bkn4ldw8ykdcfrc04bf1d2hjjaw47" - "datatables-extensions/Select")))) + (let* ((extension-url (lambda (name version file) + (format #false + "https://cdn.datatables.net/~a/~a/js/~a" + (string-downcase name) + version file))) + (extensions + '(((name . "AutoFill") + (version . "2.4.0") + (files . (("dataTables.autoFill.js" + "098a4kd4cahc618x543nqc388mpg4ximg3mc43dfjs8p9gsjr6pm") + ("autoFill.bootstrap.js" + "1zi7iiq63i5qx3p9cyynn6am4idxwj8xaz8mp4n3klm1x68sc0ja") + ("autoFill.bootstrap4.js" + "1vk2smcz14raf0cz88a65yf36a7mnmbml02q03apg2b8bqy91m7w") + ("autoFill.bootstrap5.js" + "0azvycv5vgny0a60b3yl5m129qa2780bcxij9x4lqhi7jj8g8cdi") + ("autoFill.bulma.js" + "047fyrq59xa1xvzywc5q1dr201ky0wnr7iiljmc5kpgw9k2hfm8z") + ("autoFill.dataTables.js" + "1rz0d1w8m1xr3y64sy88c0ahs04dff8k353vnf5ck1kmfqz7iyz5") + ("autoFill.foundation.js" + "0sbcib1461pkglk69fzzqi73g4abylah74f264v0f79dc5247yzz") + ("autoFill.jqueryui.js" + "1dw9vbbchzbd2c7id8na2p1cxac2kgjbzjrvqafra715hr0i4z3z") + ("autoFill.semanticui.js" + "07ck81y6wpqchq8jfym6gjgc57xwj6vv9h5w9grc1gps6p7q9xnr")))) + ((name . "Buttons") + (version . "2.2.3") + (files . (("dataTables.buttons.js" + "0yvvnk57qzq50x2z8gb0269636qz2m8050lwp84ic9l98kwkfsqr") + ("buttons.bootstrap.js" + "11z9m0lnicac0hibh4d87gfgzzql816pa442xykdlraji52jx8h7") + ("buttons.bootstrap4.js" + "1n2l595jk2ndbq57ns9mjvpzs354xlpnqghhm27a4ipc29hil9i7") + ("buttons.bootstrap5.js" + "0qsr748lns5hd52yy4w3w392f9f0y0jn0z382vna6fwynamkpmxi") + ("buttons.bulma.js" + "08f0969mwyd6x2hgg62b74c53aiq1j7aiwivpi5qbhm64r5haxg2") + ("buttons.colVis.js" + "1gc2162lyw1l790973mbqhsbapypdf410g5dlhmarnb6w783awhi") + ("buttons.foundation.js" + "1hhrylxg5jfc0x22gf372bmh2b3nbd0vrl3mi47bp23kgnq7ymdl") + ("buttons.html5.js" + "1dvy05j0w1galnwgvnisp0zg3indrjikl66z1qzm0m00zz9d1vjr") + ("buttons.jqueryui.js" + "0y2fgadmj1bmdak3bz80rzkjsa55di5py3m5cn5qmd21a0jam5c5") + ("buttons.print.js" + "0fxkla48jda592jk0vg9n5jh39d8czibqmq0hmiz8l5d5dyimwi6") + ("buttons.semanticui.js" + "1v2p8fr68jsjnkgych55qk4lwjj7cix51pl6gykqfr140ps4wfv0")))) + ((name . "ColReorder") + (version . "1.5.6") + (files . (("dataTables.colReorder.js" + "0xg1vhrmzy758zygq4n8sriwxkalvqrv4l36rxk4zkgr74iqdcl9") + ("colReorder.bootstrap.js" + "0crgmjwcn817yz6ibjkji6gsickvv2a4las9asyldfcpj2c99x84") + ("colReorder.bootstrap4.js" + "065fhw4v2d9rp3ic9zfb1q5d7pfq4f2949rr24hdjbspf19m3ymd") + ("colReorder.bootstrap5.js" + "1bsdixwgjlgj8hfgcj4kz23bzn9pj2w6fay1bywk4k42wy9hkwcd") + ("colReorder.bulma.js" + "0ld1bvcizcq6rd31sn0dcb9md7ri1b3npi64hd8nwz5jr2ln0izh") + ("colReorder.foundation.js" + "0nrddc8swkmsfzji518kh6ks55ykyk9p8r4x5fmf8ckr9fhjkh0s") + ("colReorder.jqueryui.js" + "1rd8hijz3prg2y36fvqczrpdzixibjy2dxgs2fmgr8wrm8k01rrm") + ("colReorder.semanticui.js" + "17kw143ny0nq0yidsffw3cpghvlg2bzlzavfi0ihkamcn26ymxcp")))) + ((name . "DateTime") + (version . "1.1.2") + (files . (("dataTables.dateTime.js" + "022znjrf95yxn72j3cbasvsrqnbxcch10jbv2gb1816ngw90ykrd")))) + ((name . "FixedColumns") + (version . "4.1.0") + (files . (("dataTables.fixedColumns.js" + "1mayfgas63gbzxbbliy56d5b4c5rkyqzvmj3mzrpwyvaf90jskxg") + ("fixedColumns.bootstrap.js" + "0463y93jl926s3kmx35vw7k95zwz18z917kxiygjw1i3flbyw979") + ("fixedColumns.bootstrap4.js" + "04z19y4qb0sqcvlra8h15vbpfw6w2brkwh5msvpn6g8hslq7xfqg") + ("fixedColumns.bootstrap5.js" + "1jgwl5v6b44q8fjdaphqliyl749mmd6bjg9qgnss4xspz4ix5600") + ("fixedColumns.bulma.js" + "0dvw6adjr0h19vysmwynsg2kjs2ihm6slsybpaw50qz28is6qj1i") + ("fixedColumns.foundation.js" + "1xmxsxd5phm5r67pvd6r7rqi7l83pw6gp9a9kfjvs7a8s1fbcv7j") + ("fixedColumns.jqueryui.js" + "0996m40kl7q8bg9przp4lzmp4z2flr538sv2phg3hsl0mra4yqx2") + ("fixedColumns.semanticui.js" + "0wwxkk7ias986c1iyd2wfd4gcarla99mcaaancgxcadqil6gs2z7")))) + ((name . "FixedHeader") + (version . "3.2.4") + (files . (("dataTables.fixedHeader.js" + "1hz2b1987hw8xnbm7fgf1wifjsx9zzzc2y1jxa4fcdvlhyqcikqh") + ("fixedHeader.bootstrap.js" + "1qf3pkb3svpia7g8bwyql7ma3x2g4zj5bp0d14pnv8xpc9h52r93") + ("fixedHeader.bootstrap4.js" + "19jcvnk7zh4k6fd5si3b743x70qzlkqiw3m10jbc5jzbpz8sj6qd") + ("fixedHeader.bootstrap5.js" + "0p8av4ipbwfqfpkpkz9i32rcihx437rbmi4sq6s58rb97vpj1hjr") + ("fixedHeader.bulma.js" + "1cs3fwx7y1an06ckr4b95crs81sl8xhgs10ggvjghbqdinzkx42v") + ("fixedHeader.foundation.js" + "0yd1812jrlrawv1sr4n83rl59n1gfablxbhhs8jp4h3mj3f0881p") + ("fixedHeader.jqueryui.js" + "1lc0g2cag1sj3bqmh7rh5z00pmfv1srxfhwi32y4mgpzhrzpfzxn") + ("fixedHeader.semanticui.js" + "1v0i6dc68h8l8673fb5970igzkl7as36riv504iyg82glfi7n877")))) + ((name . "KeyTable") + (version . "2.7.0") + (files . (("dataTables.keyTable.js" + "0fhpzwdcjcigal2bbh1slq23lvp2xi16f3ninmigczk7p719jfxm") + ("keyTable.bootstrap.js" + "0hnhk6am4yl6h6bb7as935k8h2syil9hf8g7nn409yd3ws736xpj") + ("keyTable.bootstrap4.js" + "0r85mp5yf9hgl5ayzzs46dfbxa231bjlvgb8lqpyzik1m6afa51i") + ("keyTable.bootstrap5.js" + "0k24shf3v8frjp5m055g4fcdp48m8ird6c51p514m0ky97cdfhrp") + ("keyTable.bulma.js" + "1fgb5v85b6fblm4dh68y5z2hpwy46b15a2x483aszac5177xw9h1") + ("keyTable.foundation.js" + "11fr14p33lyvs0wfcx228m600i4qcaqb44q3hk723jxcz59k17dw") + ("keyTable.jqueryui.js" + "0572rxrvwyprdr8l5jkgacj2bkmhmgxjy5vybm65n54g9j19l6bc") + ("keyTable.semanticui.js" + "157mqn9mhmmf7vas2das4hbpwipk3wshs8n0808q04rbijr0g2bz")))) + ((name . "Responsive") + (version . "2.3.0") + (files . (("dataTables.responsive.js" + "1pfc8bkg33jmzbjmdbvlvf4qi6jp42f5c9vzg59p017cwlcdai8q") + ("responsive.bootstrap.js" + "1xxlh01vmzmfwwlsa611pl2nrl2sx58rp8xmx301bfsylmp2v5b2") + ("responsive.bootstrap4.js" + "1zjh15p7n1038sggaxv1xvcwbkhw2nk1ndx745s6cxiqb69y3i0h") + ("responsive.bootstrap5.js" + "0c1dwa0hq5dcb2g4h7s5fidzfm5f87gwx79zw63jxw0p6x3qs2qn") + ("responsive.bulma.js" + "09gy9v9506am6w3xlkcx12b2sqp3gg09vrs3ns515f1512bnfsrm") + ("responsive.foundation.js" + "1qgyqw3r8a60rm9csiq5ym9bfazzyybrk8ana3mk8pxjs2cnryq7") + ("responsive.jqueryui.js" + "10nykak2kf4sai64girh26xdmdil29jvw3zja2rpp2qzjg4172z9") + ("responsive.semanticui.js" + "191d69i7pzh63fjkfwz8xkxh1rlbxk43xywkad7129c6hqsw4gml")))) + ((name . "RowGroup") + (version . "1.2.0") + (files . (("dataTables.rowGroup.js" + "0vl3962x0syhxnxnc5cb6dx3711m3gfsfj1i715b2rc4pyxwbzi2") + ("rowGroup.bootstrap.js" + "1xfdhqgznz9x1v8spvql6b0wbna13h8cbzvkjza14nqsmccxck66") + ("rowGroup.bootstrap4.js" + "1xm53sda4fabwdaglngrj09bpiygkn9mm17grxbykn1jazqqdp62") + ("rowGroup.bootstrap5.js" + "1z5ii27dhi5qznp279p458zcx4q322dkwswmk45wh1sx5ws9kxcp") + ("rowGroup.bulma.js" + "0bwa2bw7wasbvc35c1m78i7vb2yf4dwr7wp1qclw3lv8sx137i4d") + ("rowGroup.foundation.js" + "0832i10vils1wv1sm10qvsnd4i2k2xkhskz6i9y2q0axkmk73hcd") + ("rowGroup.jqueryui.js" + "0n53cd294s9mjblkykkqvd9n414bsc26wpcg5spxdscjl6hxh79p") + ("rowGroup.semanticui.js" + "010wls5nf387p21fdc2k952bxq89r5kxkv7j4wbvwf8k2a18cmc9")))) + ((name . "RowReorder") + (version . "1.2.8") + (files . (("dataTables.rowReorder.js" + "1hjh4c5dp82sxyhd38k363dmsdhpq02fmbz3wah0ggns1i4hhpq4") + ("rowReorder.bootstrap.js" + "185if2pxgc940rm49hdgln57pc5h9cszlii3bfpdf3pdc1fjhckm") + ("rowReorder.bootstrap4.js" + "14129x4md57i4ff7j18m49jn5fw8r716np84cdrcawlydgjsxp4a") + ("rowReorder.bootstrap5.js" + "1shq721y56ms72zsn00glpfm44hl120zh6nslj20w3d5maly6xp8") + ("rowReorder.bulma.js" + "16rpjsbiwv4vdrmigkcnj9cyxgm2cscnvn0ac079s3qh1gi7ysv0") + ("rowReorder.foundation.js" + "0zg94jckymxzda2xjyj9p38y5v61cji55kak1ylq72l6a9sw8sg6") + ("rowReorder.jqueryui.js" + "08gm419xcixgqw0i5yv2mxyyvafhzviibifp6nv129vdxx0a5d8v") + ("rowReorder.semanticui.js" + "1zjrx2rlgw3qannsqa88pcp3i4pc87pwv7rmgfw1dar8namkr9kk")))) + ((name . "Scroller") + (version . "2.0.7") + (files . (("dataTables.scroller.js" + "0vk7kxv78nmmr5y9rqshh4rglj9wd1fhlq1jzyxz5mpdc4scn82w") + ("scroller.bootstrap.js" + "19dl40dl8ir21xvs1j7xhm2a4py1m21xbypwn499fg2awj8vaidi") + ("scroller.bootstrap4.js" + "0pbkgncijlafwdmyh4l65dabd18hzjh8r01cad3b9iy8cfif6iwd") + ("scroller.bootstrap5.js" + "0h257c782ypbncsavrlzrhzc2dpmilkgrpcfmzlyxs964c0lb03d") + ("scroller.bulma.js" + "0yn1c4aj64h3h93g8x4q76zf9l8h9r3i5x6havvqx1h5q3xzrz6a") + ("scroller.foundation.js" + "04bk6ink8wqay7655v93jvv86m3bn6asrsfb22i99rgxdvm8gn1z") + ("scroller.jqueryui.js" + "1md5mpx5in7wzsr38yn801cmv3phm0i0ikdnpd0b1nsna5ccpj14") + ("scroller.semanticui.js" + "1dfbblbzbryjgiv31qfdjnijz19lmyijg12win3y8gsgfd4fp9zz")))) + ((name . "SearchBuilder") + (version . "1.3.4") + (files . (("dataTables.searchBuilder.js" + "02l908xd2r6vnjygwvnbyhv0qckg4nyq00zwcmpz5a2aiqz68vwn") + ("searchBuilder.bootstrap.js" + "00a5sb9n180nmpghnks0xiwhpaq8nqf7gsh112vqm4m63b3nfiq7") + ("searchBuilder.bootstrap4.js" + "1rf58fdfjdwr86ywfapaixclcixhwd46nw0q6zprwrms1h90wbqq") + ("searchBuilder.bootstrap5.js" + "0wizg55hxf79kapcsrjmzkr2v619bqva64s6l9f8crdzknvfxw06") + ("searchBuilder.bulma.js" + "0sc72fkffggxrms08ffc512r2cj3k2rs0rn75r472b0mkrz7fiaa") + ("searchBuilder.foundation.js" + "0xirkl92gws8yirip39q9vsnaghxh4c86ny9n3a08mswrr5zkl4f") + ("searchBuilder.jqueryui.js" + "1h91w1nk5r8a8xhk891p2ljif8bxigl9x0cm0hzkxihiv9bkskyx") + ("searchBuilder.semanticui.js" + "15icf6dicb6v1sw58llrd74nsjqkghnjfn50ylyvw3rcbw6a9drl")))) + ((name . "SearchPanes") + (version . "2.0.2") + (files . (("dataTables.searchPanes.js" + "1baxayq9gjkyvyv463cj2ckzplgh88800kvgkr7ji5nmbvd4qhss") + ("searchPanes.bootstrap.js" + "0p3x6345aqhr4aw447pc9dxc0kb9pz31vvf1ikcv8li5bdcgdk4q") + ("searchPanes.bootstrap4.js" + "1l21c1jnsmakbi6z1kq4cy3ydirm8l25qwhzl5hwvw4kjpc0mi8n") + ("searchPanes.bootstrap5.js" + "1sgw7hxhwnm59l8c0bkk4l9vp3blf8mq4wn4zfrv4cvxlawncdr8") + ("searchPanes.bulma.js" + "0yrabx503jcrzmh97xzpbbs59ba714a17sm9n1ls1yc8pmk3327x") + ("searchPanes.foundation.js" + "1f4pzr4h1hjcvnb3s7sdpdps7b29sgp3l7hbclv39dx8lmwv5fx4") + ("searchPanes.jqueryui.js" + "1s1xfqdnzj16ad5z1nxpziabf4vfxzc7a7jrfh10mfhnzklzf8sa") + ("searchPanes.semanticui.js" + "1qydrghn8033zmaww9zm3fi7maakgb61vvvrqynypyrc56y53w6n")))) + ((name . "Select") + (version . "1.4.0") + (files . (("dataTables.select.js" + "1rz7ljiazy3v7xkyccn33wxij1bcz3mzkn7kpha8a3d4zy1b1n2j") + ("select.bootstrap.js" + "0mm5ly3p2iprlfi8ajz548rjqx8lz1sbjj5ysgqmwqg14gw7l9k7") + ("select.bootstrap4.js" + "1hv6d9lwgflmxhy7mdfb9rvli2wa2cbkdhqjz64zkf1a1a7wlb5q") + ("select.bootstrap5.js" + "0ixzqpkrd24np1p9wkq857ddgvs00zb5jzpw6zwj7nbpws0qf9df") + ("select.bulma.js" + "14vw871rqz4wfzy8nns9nsmjyfv0g6xdcrv1x3c8i0r53qciymqz") + ("select.foundation.js" + "1zzygcbngvrqh7m22x0s23k8m5xj5fv1p466pzjs23p94qq24a2r") + ("select.jqueryui.js" + "1hv5zlmfifd27hylfqsji09y2hbp3m2hnb7j41418sjrxs63f6x6") + ("select.semanticui.js" + "0q6q3vb6pa5nmkxy7zcnjs0bkn4ldw8ykdcfrc04bf1d2hjjaw47")))) + ((name . "StateRestore") + (version . "1.1.1") + (files . (("dataTables.stateRestore.js" + "0f1df3kqgvka5kcxs8dxm33g3kgdxhphr95013rz5wmwcxfbgfwb") + ("stateRestore.bootstrap.js" + "07n6z3ffdg2hqbkjh15bgp96jv0mr8xbm0zn7ckkwkyfiw7085jf") + ("stateRestore.bootstrap4.js" + "15l9ka5vq37y7axfmm8s7kfim12mir2xiqfqqf9s031647kld0am") + ("stateRestore.bootstrap5.js" + "1sdcycdnp5m65d9glch2mqd5lbaq2gaxgyl1x91bynzpnwi2q6mc") + ("stateRestore.bulma.js" + "06ly3r8b2jwb62hj4im6kg694rp6gnjvb0fvzvivndgqk4bqz22s") + ("stateRestore.foundation.js" + "17qrf8ihw4k3as9fsxhqz7qndi4k7j3x901sn6kj5yy82cgrvafa") + ("stateRestore.jqueryui.js" + "0gcbn5n12vg2ifvqhpgb7ligjzz2qr1dp4pzn3jw8nn264warn3p") + ("stateRestore.semanticui.js" + "0d61jhj2chln9q39hdbapxbw90142gaizjwshh0svlnn2pd3m5nx")))))) + (javascript-sources + `(("https://cdn.datatables.net/1.12.1/js/jquery.dataTables.js" + "16wdm7gvfikwgc9zw7qdjwjc0ry55v60ldmqvza8911las26q93k" + "datatables") + ("https://cdn.datatables.net/1.12.1/js/dataTables.bootstrap.js" + "0r0gxzxg7hr95k3cgv0hscxh058qxddj11f9l1x3czivlx1pbcp4" + "datatables") + ("https://cdn.datatables.net/1.12.1/js/dataTables.bootstrap4.js" + "0p0jbg44ipp6qkpsawndzxaxk34f5dd6jn3k6g86smrn2c8vaknr" + "datatables") + ("https://cdn.datatables.net/1.12.1/js/dataTables.bootstrap5.js" + "1qzmaqij2hxs0gn6vjqsw5bgx109qgs7qpkp3c4p44pkkmx3g58h" + "datatables") + ("https://cdn.datatables.net/1.12.1/js/dataTables.bulma.js" + "1gvw4al40i134gphna2pij0hq9h9cqlj1rhmncan435hzpzrxhpb" + "datatables") + ("https://cdn.datatables.net/1.12.1/js/dataTables.foundation.js" + "193hy4kyiig4zz59y4m9714l7p9gk6n9p937qlfg83dr5l9x6kdp" + "datatables") + ("https://cdn.datatables.net/1.12.1/js/dataTables.jqueryui.js" + "1k8a31d43jiv56dvcai5xs0ja4y521xp9h25lgsa40ccsyn33k7n" + "datatables") + ("https://cdn.datatables.net/1.12.1/js/dataTables.semanticui.js" + "01xih6l7bn3ddmhnkvyvf79xdlgdzpasx3cx4fkkijay593gl2vb" + "datatables") + ("https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.js" + "01l5lw49jz2qn6k9i63dk4llar4lvvpd6xp6i45mpwfk49fbxqg2" + "datatables-extensions/Buttons") + ,@(apply append + (map (lambda (extension) + (map (lambda (file+hash) + (list (extension-url (assoc-ref extension 'name) + (assoc-ref extension 'version) + (car file+hash)) + (cadr file+hash) + (string-append "datatables-extensions/" + (assoc-ref extension 'name)))) + (assoc-ref extension 'files))) + extensions))))) (package (name "r-dt") - (version "0.25") + (version "0.26") (source (origin (method url-fetch) (uri (cran-uri "DT" version)) (sha256 (base32 - "0as43h4minnz5c09nvbvq8b1d9506mzkcdl98bhf87rf0q9qgz0d")) - (modules '((guix build utils))) + "0303yxvzi8ln677716pv7m6fih5dclfqw9aram0lzm16w4mr64n4")) + (modules '((guix build utils) + (ice-9 match))) (snippet - '(for-each delete-file - (find-files "inst/htmlwidgets/lib" "\\.min\\.js$"))))) + `(with-directory-excursion "inst/htmlwidgets/lib" + (for-each (match-lambda + ((url hash dir) + (let ((file (string-append dir "/js/" (basename url ".js") ".min.js"))) + (delete-file file)))) + ',javascript-sources) + (delete-file "nouislider/jquery.nouislider.min.js") + (delete-file "selectize/selectize.min.js") + (with-directory-excursion "datatables-plugins/features/" + (for-each delete-file + '("scrollResize/source.min.js" + "searchHighlight/source.min.js"))))))) (properties `((upstream-name . "DT"))) (build-system r-build-system) @@ -3640,7 +3676,7 @@ using the multicore functionality of the parallel package.") `(("r-knitr" ,r-knitr) ("uglifyjs" ,node-uglify-js) ("datatables-plugins" - ,(let ((version "1.10.20")) + ,(let ((version "1.12.0")) (origin (method git-fetch) (uri (git-reference @@ -3649,7 +3685,7 @@ using the multicore functionality of the parallel package.") (file-name (git-file-name "datatables-plugins" version)) (sha256 (base32 - "05zni20863ml1711lfllljdfkb3k05h0kpqhkijkbp0bp7q0ak94"))))) + "15kiqjy0ssd2ksvrqv8jyg9gc92ga3kn542vp1mij5hnfcbj6hf8"))))) ("js-nouislider" ,(let ((version "7.0.10")) (origin @@ -3724,13 +3760,13 @@ analysis of large sparse or dense matrices.") (define-public r-glmnet (package (name "r-glmnet") - (version "4.1-4") + (version "4.1-6") (source (origin (method url-fetch) (uri (cran-uri "glmnet" version)) (sha256 - (base32 "1y80a3b5s24ywhlil3r7b3a0vs9j59d7jkxrqa8zz09x1c5ggc7n")))) + (base32 "0c3y9g3k0f0yclcffxzgfhfylb3py0iydhyspcjdrl44lb7cdi5y")))) (build-system r-build-system) (native-inputs (list gfortran r-knitr)) @@ -3871,13 +3907,13 @@ computation, bagged clustering, naive Bayes classifier, and more.") (define-public r-bigmemory-sri (package (name "r-bigmemory-sri") - (version "0.1.3") + (version "0.1.6") (source (origin (method url-fetch) (uri (cran-uri "bigmemory.sri" version)) (sha256 - (base32 "0mg14ilwdkd64q2ri9jdwnk7mp55dqim7xfifrs65sdsv1934h2m")))) + (base32 "03468ak0lgd9m0f7synxms2zzr8f7n2nm1gmhcraj3nfcv4nmyiv")))) (properties `((upstream-name . "bigmemory.sri"))) (build-system r-build-system) @@ -3984,13 +4020,13 @@ maintenance for package developers.") (define-public r-r-utils (package (name "r-r-utils") - (version "2.12.1") + (version "2.12.2") (source (origin (method url-fetch) (uri (cran-uri "R.utils" version)) (sha256 (base32 - "0qmd16g0wmalm9q2mwvzxcpvizc2ss94zgcxrn29d7z9pq1jkf1y")))) + "0dl8rc7s7vg4g2pkmrwwqx7dkm02096jk439x4s0cm21hsmg2g7y")))) (properties `((upstream-name . "R.utils"))) (build-system r-build-system) (propagated-inputs @@ -4085,13 +4121,13 @@ t-probabilities, quantiles, random deviates and densities.") (define-public r-matrixstats (package (name "r-matrixstats") - (version "0.62.0") + (version "0.63.0") (source (origin (method url-fetch) (uri (cran-uri "matrixStats" version)) (sha256 (base32 - "1jjfsi5vzx6js7phlnd3v64fd05fg0jyz8iq5pivy36jdmmh3ql5")))) + "0pqz6mn5l7inh464yj45i6rf8ycab0zdvvjczwsv0bkl442bc060")))) (properties `((upstream-name . "matrixStats"))) (build-system r-build-system) (arguments @@ -4275,14 +4311,53 @@ features present in other programming languages.") (define-public r-plotly (package (name "r-plotly") - (version "4.10.0") + (version "4.10.1") (source (origin (method url-fetch) (uri (cran-uri "plotly" version)) (sha256 (base32 - "16iqj7sv49mva6siibsci7iijsbnk7pqvfns9al0k35w9mjmr6dx")))) + "0yin1kid3a69fcwrrajwzqbhx4xc81x8p8m0yfh1fkm2rfhj22dc")) + (modules '((guix build utils))) + (snippet + '(with-directory-excursion "inst/htmlwidgets/lib/" + (for-each delete-file + '("plotlyjs/plotly-latest.min.js" + "colourpicker/colourpicker.min.js" + "typedarray/typedarray.min.js" + "selectize/selectize.min.js")))))) (build-system r-build-system) + (arguments + (list + #:modules '((guix build utils) + (guix build r-build-system) + (srfi srfi-1)) + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'process-javascript + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "inst/htmlwidgets/lib/" + (symlink (string-append (assoc-ref inputs "js-selectize") + "/share/javascript/selectize.min.js") + "selectize/selectize.min.js") + (call-with-values + (lambda () + (unzip2 + `((,(assoc-ref inputs "js-plotly") + "plotlyjs/plotly-latest.min.js") + (,(string-append (assoc-ref inputs "js-colourpicker") + "/js/colourpicker.js") + "colourpicker/colourpicker.min.js") + (,(string-append (assoc-ref inputs "js-typedarray") + "/typedarray.js") + "typedarray/typedarray.min.js")))) + (lambda (sources targets) + (for-each (lambda (source target) + (format #t "Processing ~a --> ~a~%" + source target) + (invoke "esbuild" source "--minify" + (string-append "--outfile=" target))) + sources targets))))))))) (propagated-inputs (list r-base64enc r-crosstalk @@ -4305,6 +4380,48 @@ features present in other programming languages.") r-tidyr r-vctrs r-viridislite)) + (native-inputs + `(("esbuild" ,esbuild) + ("js-colourpicker" + ,(let ((commit "27c2a266d51e18a9fe6d7542264152b27c7d34e0") + (version "1.1") + (revision "0")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/daattali/jquery-colourpicker") + (commit commit))) + (file-name (git-file-name "jquery-colourpicker" + (git-version version revision commit))) + (sha256 + (base32 + "0lg8amh8xh6p246j38rqghrljd7v5z34i169ra6403z8ga33wiqb"))))) + ("js-plotly" + ,(let ((version "2.11.1")) + (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com/plotly/plotly.js/v" + version "/dist/plotly.js")) + (sha256 + (base32 + "1mxd8s4v3i885w5i02cyzqsrvqfr9w0svdclvqxbd05dly4bdkbj"))))) + ("js-selectize" ,js-selectize) + ;; This is not quite the same as the bundled minified script from 2016, + ;; but it seems to be the original with fixes from late 2017. + ("js-typedarray" + ,(let ((commit "9f7d4168657e2c164d647a6959f402f2c33eb5b4") + (version "0") + (revision "0")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/inexorabletash/polyfill/") + (commit commit))) + (file-name (git-file-name "typedarray-polyfill" + (git-version version revision commit))) + (sha256 + (base32 + "0f9np4mmyhny03n3xpwzs07rld30lnfqsnh97x1v7xm0qy0zjanf"))))))) (home-page "https://plot.ly/r") (synopsis "Create interactive web graphics") (description @@ -4500,13 +4617,13 @@ package instead.") (define-public r-hmisc (package (name "r-hmisc") - (version "4.7-1") + (version "4.7-2") (source (origin (method url-fetch) (uri (cran-uri "Hmisc" version)) (sha256 - (base32 "0zrfi2mmi6wfl6440iqflzzmkina8dhxia2qsamqw6djd0d5fp9j")))) + (base32 "0lyacs5q6mdg9lirixl9r2dqs9ljxyn5d53mmb04ci0jam3vk0wc")))) (properties `((upstream-name . "Hmisc"))) (build-system r-build-system) (native-inputs @@ -4607,14 +4724,14 @@ existing packages provide.") (define-public r-sfsmisc (package (name "r-sfsmisc") - (version "1.1-13") + (version "1.1-14") (source (origin (method url-fetch) (uri (cran-uri "sfsmisc" version)) (sha256 (base32 - "0622yf4fl1b1zm988dfwdrhq7pg0rllhm8wz1pqdmp72glsi05x8")))) + "1vxkziprndrzc5sdz36i20qdqfcyw8m87vpxm3jccf6pqbc45adw")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/sfsmisc") (synopsis "Utilities from \"Seminar fuer Statistik\" ETH Zurich") @@ -4626,14 +4743,14 @@ Zurich, including many that are related to graphics.") (define-public r-gtools (package (name "r-gtools") - (version "3.9.3") + (version "3.9.4") (source (origin (method url-fetch) (uri (cran-uri "gtools" version)) (sha256 (base32 - "0criwc0jmbrgaslh2kdjirgdzbf0ycry8yjryi95fb9qgckm7yvs")))) + "04gihp78x2caahqvf0mlv1cqy1m121l6hkdvbp01r2z99wcqpksr")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/gtools") (synopsis "Various R programming tools") @@ -5430,14 +5547,14 @@ VGLMs can be loosely thought of as multivariate generalised linear models.") (define-public r-pbapply (package (name "r-pbapply") - (version "1.5-0") + (version "1.6-0") (source (origin (method url-fetch) (uri (cran-uri "pbapply" version)) (sha256 (base32 - "0m8a0ygwl98cs0vcha5gs9f7z8whcplwxhravhs9bfp5hvigxzgg")))) + "0qbzqgxz3lm97y0k9v2radqblzb4r5zkfrjw5wj1a91dvxz3xhg8")))) (build-system r-build-system) (home-page "https://github.com/psolymos/pbapply") (synopsis "Adding progress bar to apply functions") @@ -5473,14 +5590,14 @@ based on an interface to Fortran implementations by M. J. D. Powell.") (define-public r-rcppeigen (package (name "r-rcppeigen") - (version "0.3.3.9.2") + (version "0.3.3.9.3") (source (origin (method url-fetch) (uri (cran-uri "RcppEigen" version)) (sha256 (base32 - "14ylrq7mmylmi513zkwyqqy43kqbz95fc6fzpagqvyx6snaffir5")))) + "0xhwgn77166ir7qnzl25mj0byskkqr0b36hihrpr2zaqsrzs8wsq")))) (properties `((upstream-name . "RcppEigen"))) (build-system r-build-system) (propagated-inputs @@ -5600,14 +5717,14 @@ algorithms.") (define-public r-lme4 (package (name "r-lme4") - (version "1.1-30") + (version "1.1-31") (source (origin (method url-fetch) (uri (cran-uri "lme4" version)) (sha256 (base32 - "03rhg6cnsvdk06a1yxkivfvfwlx9934nd9q6jnp0bzscnv2dzazx")))) + "1zgdfbzc8lv4rrsjdacagwa693ij2bmn6xkc1bnfbv1z7pix3zss")))) (build-system r-build-system) (propagated-inputs (list r-boot @@ -5928,17 +6045,17 @@ is supported.") (define-public r-lubridate (package (name "r-lubridate") - (version "1.8.0") + (version "1.9.0") (source (origin (method url-fetch) (uri (cran-uri "lubridate" version)) (sha256 (base32 - "199b00cql07gf3rf4hh5ba34amnk0ai40zhx73dq1mpkn7ynxml7")))) + "0flh3arja7al9xznj5jvicadvq1kb2s63zyg63wlx2bii8gh8dmr")))) (build-system r-build-system) (propagated-inputs - (list r-generics r-cpp11)) + (list r-generics r-timechange)) (native-inputs (list r-knitr)) (home-page "https://cran.r-project.org/web/packages/lubridate/") @@ -6649,14 +6766,14 @@ or eta squared effect size.") (define-public r-logspline (package (name "r-logspline") - (version "2.1.17") + (version "2.1.19") (source (origin (method url-fetch) (uri (cran-uri "logspline" version)) (sha256 (base32 - "05c8l22zcvb086909h9vw7icphww703vkcxp2h881y4n1232pdq3")))) + "1527cnnn5qdjp8gr4yls0jp0aachjz5s2v79vs79vrfyvxp9w89p")))) (properties `((upstream-name . "logspline"))) (build-system r-build-system) (native-inputs (list gfortran)) diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm index 0deec8fb3a..5ecbb1e4cd 100644 --- a/gnu/packages/texinfo.scm +++ b/gnu/packages/texinfo.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2019, 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2019, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> ;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> @@ -40,6 +40,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages compression) #:use-module (gnu packages gettext) + #:use-module ((gnu packages hurd) #:select (hurd-target?)) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages readline)) @@ -71,7 +72,10 @@ (("env -i") "env ")) #t))) - %standard-phases))) + %standard-phases) + + ;; XXX: Work around <https://issues.guix.gnu.org/59616>. + #:tests? ,(not (hurd-target?)))) (inputs (list ncurses perl)) ;; When cross-compiling, texinfo will build some of its own binaries with ;; the native compiler. This means ncurses is needed both in both inputs @@ -98,14 +102,14 @@ is on expressing the content semantically, avoiding physical markup commands.") (define-public texinfo-7 (package (inherit texinfo) - (version "7.0") + (version "7.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/texinfo/texinfo-" version ".tar.xz")) (sha256 (base32 - "1q73zd0bm7zjamc5ssf329v7fndd8dqv0d7fii6s1rqwaf14nx10")))))) + "1cn6na6vgz6nhda0f5naiysx5sqhw3azi81qk6hah1yqnbyj3lmw")))))) (define-public texinfo-5 (package (inherit texinfo) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index 4d472575fa..a95cf37011 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -310,7 +310,7 @@ bindings and many of the powerful features of GNU Emacs.") (define-public jucipp (package (name "jucipp") - (version "1.7.1") + (version "1.7.2") (home-page "https://gitlab.com/cppit/jucipp") (source (origin (method git-fetch) @@ -322,7 +322,7 @@ bindings and many of the powerful features of GNU Emacs.") (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 "0xyf1fa7jvxzvg1dxh5vc50fbwjjsar4fmlvbfhicdd1f8bhz1ii")) + (base32 "034il3z38a7qvp95f52n9rxbqmh8fxsy416rjak3zzagvfkvzyii")) (modules '((guix build utils))) (snippet '(begin @@ -346,7 +346,7 @@ bindings and many of the powerful features of GNU Emacs.") ;; Disable the CMake build test, as it does not test ;; functionality of the package, and requires doing ;; an "in-source" build. - (("add_test\\(cmake_build_test.*\\)") + (("add_test\\(cmake_(build|file_api)_test.*\\)") "") ;; Disable the git test, as it requires the full checkout. (("add_test\\(git_test.*\\)") diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 757187dda7..78dbbebec1 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -5083,7 +5083,7 @@ transcode or reformat the videos in any way, producing perfect backups.") (define-public svt-av1 (package (name "svt-av1") - (version "0.9.1") + (version "1.3.0") (source (origin (method git-fetch) @@ -5092,10 +5092,8 @@ transcode or reformat the videos in any way, producing perfect backups.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "02fchq2vlxcxzbrss72xl9vrxzysdy39d5i159bmg3qa45ngd2iw")))) + (base32 "0blnla32yz665bx0xyx8lrjs2wqd2xhpbqwwpz72mq7zf341j8vv")))) (build-system cmake-build-system) - ;; SVT-AV1 only supports 64-bit Intel-compatible CPUs. - (supported-systems '("x86_64-linux")) (arguments ;; The test suite tries to download test data and git clone a 3rd-party ;; fork of libaom. Skip it. @@ -5113,7 +5111,8 @@ transcode or reformat the videos in any way, producing perfect backups.") (synopsis "AV1 video codec") (description "SVT-AV1 is an AV1 codec implementation. The encoder is a work-in-progress, aiming to support video-on-demand and live streaming -applications. It only supports Intel-compatible CPUs (x86).") +applications with high performance requirements. It mainly targets +Intel-compatible CPUs (x86), but has limited support for other architectures.") (home-page "https://gitlab.com/AOMediaCodec/SVT-AV1") (license license:bsd-2))) @@ -5569,3 +5568,27 @@ VCS, by default, makes screenshots the same size as the video, see the manual for details on how to change this.") (home-page "http://p.outlyer.net/vcs/") (license license:lgpl2.1+))) + +(define-public svtplay-dl + (package + (name "svtplay-dl") + (version "4.14") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/spaam/svtplay-dl") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wdrdszalvhv80m5jizbvjz4jc08acmbpxcsslyfb5cwh842in8m")))) + (build-system python-build-system) + (inputs (list ffmpeg python-pyaml python-requests python-pysocks + python-cryptography)) + (home-page "https://svtplay-dl.se/") + (synopsis "Download or stream SVT Play's (and others) TV programmes") + (description + "@code{svtplay-dl} allows downloading TV programmes from various Swedish +broadcasters including SVT Play, Sveriges Radio, TV4 Play, along with many +others.") + (license license:expat))) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 87ed717b9e..7bdd84e187 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -4898,6 +4898,69 @@ little effort, and the program to do so is often shorter and simpler than you'd expect.") (license (list license:expat license:cc-by3.0)))) +(define-public go-github-com-itchyny-timefmt-go + (package + (name "go-github-com-itchyny-timefmt-go") + (version "0.1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/itchyny/timefmt-go") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0z5z8hy5lbjqdxp544mf238i77n7pf7bv3psgr5gffh0630dsyag")))) + (build-system go-build-system) + (arguments + (list #:import-path "github.com/itchyny/timefmt-go")) + (home-page "https://github.com/itchyny/timefmt-go") + (synopsis "Efficient time formatting library (strftime, strptime) for Golang") + (description + "@code{timefmt-go} is a Go language package for formatting and parsing date +time strings.") + (license license:expat))) + +(define-public go-github-com-itchyny-gojq + (package + (name "go-github-com-itchyny-gojq") + (version "0.12.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/itchyny/gojq") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1m4zchhhi2428r1v0qz08drac4s63mag1pwcqzsf6n495yc3g0h0")))) + (build-system go-build-system) + (inputs + (list go-github-com-google-go-cmp-cmp + go-github-com-itchyny-timefmt-go + go-github-com-mattn-go-isatty + go-github-com-mattn-go-runewidth + go-gopkg-in-yaml-v3)) + (arguments + (list + #:import-path "github.com/itchyny/gojq/cmd/gojq" + #:unpack-path "github.com/itchyny/gojq")) + (home-page "https://github.com/itchyny/gojq") + (synopsis "Pure Go implementation of jq") + (description + "@command{gojq} is an Go implementation and library of the jq JSON +processor.") + (license license:expat))) + +(define-public gojq + (package + (inherit go-github-com-itchyny-gojq) + (name "gojq") + (arguments + (ensure-keyword-arguments + (package-arguments go-github-com-itchyny-gojq) + (list #:install-source? #f))))) + (define-public pup (let ((revision "1") (commit "681d7bb639334bf485476f5872c5bdab10931f9a")) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index cf0dc63a38..149ea1bb69 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -1725,7 +1725,7 @@ display a clock or apply image manipulation techniques to the background image." (define-public waybar (package (name "waybar") - (version "0.9.15") + (version "0.9.16") (source (origin (method git-fetch) @@ -1734,7 +1734,7 @@ display a clock or apply image manipulation techniques to the background image." (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0mvwsd3krrlniga0fq13b0qvsf1fj22mk9nzsfgz49r55lqw8sdv")))) + (base32 "06vwsax8z6vvvav4c1d40nfiljc7h1cla57r43nv8dw86n539ic5")))) (build-system meson-build-system) (inputs (list date fmt @@ -2987,3 +2987,49 @@ file."))) (synopsis "Primitive drawing library for Wayland") (description "wld is a drawing library that targets Wayland.") (license license:expat)))) + +(define-public swc + (let ((commit "a7b615567f83d9e48d585251015048c441ca0239") + (revision "1")) + (package + (name "swc") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/michaelforney/swc") + (commit commit))) + (sha256 + (base32 + "19rpbwpi81pm92fkhsmbx7pzagpah5m9ih5h5k3m8dy6r8ihdh35")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no tests + #:make-flags (list (string-append "CC=" + ,(cc-for-target)) + (string-append "PREFIX=" %output)) + #:phases (modify-phases %standard-phases + (delete 'configure)))) + (inputs (list libdrm + libinput + libxcb + libxkbcommon + wayland + wayland-protocols + wld + xcb-util-wm)) + (native-inputs (list pkg-config)) + (home-page "https://github.com/michaelforney/swc") + (synopsis "Library for making a simple Wayland compositor") + (description + "swc is a small Wayland compositor implemented as a library. + +It has been designed primarily with tiling window managers in mind. Additionally, +notable features include: +@itemize +@item Easy to follow code base +@item XWayland support +@item Can place borders around windows +@end itemize") + (license license:expat)))) diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index 4d2fd73cee..2d34b49d93 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +36,7 @@ #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages check) + #:use-module (gnu packages curl) #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages freedesktop) @@ -45,18 +47,19 @@ #:use-module (gnu packages image) #:use-module (gnu packages photo) #:use-module (gnu packages video) + #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sdl) #:use-module (gnu packages webkit) - #:use-module (gnu packages xorg) - #:use-module ((srfi srfi-1) #:select (alist-delete))) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg)) (define-public wxwidgets (package (name "wxwidgets") - (version "3.0.5.1") + (version "3.2.1") (source (origin (method url-fetch) @@ -64,25 +67,129 @@ "releases/download/v" version "/wxWidgets-" version ".tar.bz2")) (sha256 - (base32 "01y89999jw5q7njrhxajincx7lydls6yq37ikazjryssrxrnw3s4")))) + (base32 "0rpsyph7l7kmpld376y0940la3c94y5vdpxmbkj8isqknimrfaf2")) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-26))) + (snippet + '(begin + ;; wxWidgets bundles third-party code in the "3rdparty" directory as + ;; well as the "src" directory. Remove external components that are + ;; not required. + (let ((preserved-3rdparty '("nanosvg")) + ;; The src directory contains a mixture of third party libraries + ;; and similarly-named integration code. Cautiously use a + ;; blacklist approach here. + (bundled-src '("expat" "jpeg" "png" "tiff" "zlib"))) + (with-directory-excursion "3rdparty" + (for-each delete-file-recursively + (scandir "." (negate (cut member <> + (append '("." "..") + preserved-3rdparty)))))) + (with-directory-excursion "src" + (for-each delete-file-recursively bundled-src))))))) (build-system glib-or-gtk-build-system) (inputs - `(("glu" ,glu) - ;; XXX gstreamer-0.10 builds fail - ;; ("gstreamer" ,gstreamer-0.10) - ("gtk" ,gtk+) - ("libjpeg" ,libjpeg-turbo) - ("libmspack" ,libmspack) - ("libsm" ,libsm) - ("libtiff" ,libtiff) - ("mesa" ,mesa) - ("webkitgtk" ,webkitgtk) - ("sdl" ,sdl) - ("shared-mime-info" ,shared-mime-info) - ("xdg-utils" ,xdg-utils))) + (list catch-framework + curl + expat + glu + gstreamer + gst-plugins-base + gtk+ + libjpeg-turbo + libmspack + libnotify + libpng + libsecret + libsm + libtiff + mesa + pcre2 + sdl2 + shared-mime-info + webkitgtk-with-libsoup2 + xdg-utils + zlib)) (native-inputs (list pkg-config)) (arguments + (list + #:configure-flags #~'("--with-libmspack" + "--with-regex" + "--with-sdl" + "--enable-gui" + "--enable-mediactrl" + "--enable-webview" + "--enable-webviewwebkit") + #:make-flags + #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")) + #:tests? #f ;TODO + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'use-newer-webkit + (lambda _ + ;; XXX: The configure script tests only for an ancient + ;; WebKitGTK version. + (substitute* "configure" + (("webkit2gtk-4\\.0") + "webkit2gtk-4.1")))) + (add-after 'unpack 'refer-to-inputs + (lambda* (#:key inputs #:allow-other-keys) + (let ((catch (search-input-file inputs "include/catch.hpp")) + (mime (search-input-directory inputs "share/mime")) + (xdg-open (search-input-file inputs "bin/xdg-open"))) + (install-file catch "3rdparty/catch/include/") + (substitute* "src/unix/utilsx11.cpp" + (("wxExecute\\(xdg_open \\+") + (string-append "wxExecute(\"" xdg-open "\""))) + (substitute* "src/unix/mimetype.cpp" + (("/usr(/local)?/share/mime") + mime))))) + (replace 'configure + (lambda* (#:key native-inputs inputs configure-flags + #:allow-other-keys) + (let ((sh (search-input-file (or native-inputs inputs) + "bin/sh"))) + ;; The configure script does not understand some of the default + ;; options of gnu-build-system, so run it "by hand". + (apply invoke "./configure" + (string-append "SHELL=" sh) + (string-append "CONFIG_SHELL=" sh) + (string-append "--prefix=" #$output) + configure-flags))))))) + (home-page "https://www.wxwidgets.org/") + (synopsis "Widget toolkit for creating graphical user interfaces") + (description + "wxWidgets is a C++ library that lets developers create applications with +a graphical user interface. It has language bindings for Python, Perl, Ruby +and many other languages.") + (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt"))))) + +(define-public wxwidgets-gtk2 + (package/inherit wxwidgets + (name "wxwidgets-gtk2") + (inputs (modify-inputs (package-inputs wxwidgets) + (delete "gtk+") + (prepend gtk+-2))) + (arguments + (substitute-keyword-arguments (package-arguments wxwidgets) + ((#:configure-flags flags #~'()) + #~(append #$flags '("--with-gtk=2"))))))) + +(define-public wxwidgets-3.0 + (package + (inherit wxwidgets) + (version "3.0.5.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/wxWidgets/wxWidgets/" + "releases/download/v" version + "/wxWidgets-" version ".tar.bz2")) + (sha256 + (base32 + "01y89999jw5q7njrhxajincx7lydls6yq37ikazjryssrxrnw3s4")))) + (arguments `(#:configure-flags '("--with-regex" "--with-libmspack" "--with-sdl" @@ -102,20 +209,24 @@ (modify-phases %standard-phases (add-after 'unpack 'refer-to-inputs (lambda* (#:key inputs #:allow-other-keys) - (let* ((mime (search-input-directory inputs "/share/mime"))) + (let ((mime (search-input-directory inputs "share/mime")) + (xdg-open (search-input-file inputs "bin/xdg-open"))) (substitute* "src/unix/utilsx11.cpp" (("wxExecute\\(xdg_open \\+") - (string-append "wxExecute(\"" (which "xdg-open") "\""))) + (string-append "wxExecute(\"" xdg-open "\""))) (substitute* "src/unix/mimetype.cpp" - (("/usr(/local)?/share/mime") mime)) - #t)))))) - (home-page "https://www.wxwidgets.org/") - (synopsis "Widget toolkit for creating graphical user interfaces") - (description - "wxWidgets is a C++ library that lets developers create applications with -a graphical user interface. It has language bindings for Python, Perl, Ruby -and many other languages.") - (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt"))))) + (("/usr(/local)?/share/mime") mime)))))))))) + +(define-public wxwidgets-gtk2-3.0 + (package/inherit wxwidgets-3.0 + (name "wxwidgets-gtk2") + (inputs (modify-inputs (package-inputs wxwidgets-3.0) + (delete "gtk+") + (prepend gtk+-2))) + (arguments + (substitute-keyword-arguments (package-arguments wxwidgets-3.0) + ((#:configure-flags flags #~'()) + #~(append #$flags '("--with-gtk=2"))))))) (define-public wxwidgets-2 (package @@ -152,74 +263,17 @@ and many other languages.") (("-Wall") "-Wall -Wno-narrowing")) #t))))))) -(define-public wxwidgets-gtk2 - (package/inherit wxwidgets - (inputs `(("gtk+" ,gtk+-2) - ,@(alist-delete - "gtk+" - (package-inputs wxwidgets)))) - (name "wxwidgets-gtk2"))) - -;; Development version of wxWidgets, required to build against gstreamer-1.x. -;; This can be removed when wxWidgets is updated to the next stable version. -(define-public wxwidgets-3.1 - (package (inherit wxwidgets) - (version "3.1.5") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wxWidgets/wxWidgets") - (commit (string-append "v" version)))) - (file-name (git-file-name "wxwidgets" version)) - (sha256 - (base32 - "0j998nzqmycafignclxmahgqm5kgs1fiqbsiyvzm7bnpnafi333y")))) - (inputs (modify-inputs (package-inputs wxwidgets) - (prepend catch-framework gstreamer gst-plugins-base))) - (arguments - (substitute-keyword-arguments (package-arguments wxwidgets) - ((#:configure-flags flags) - '(list "--with-regex" "--with-libmspack" "--with-sdl" - "--enable-mediactrl" "--enable-webviewwebkit")) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'add-catch - (lambda* (#:key inputs #:allow-other-keys) - (install-file - (search-input-file inputs "include/catch.hpp") - "3rdparty/catch/include/"))) - (replace 'configure - (lambda* (#:key configure-flags inputs native-inputs outputs - #:allow-other-keys) - (let ((sh (search-input-file (or native-inputs inputs) - "bin/sh"))) - (apply invoke "./configure" - (string-append "SHELL=" sh) - (string-append "CONFIG_SHELL=" sh) - (string-append "--prefix=" - (assoc-ref outputs "out")) - configure-flags)))))))))) - -(define-public wxwidgets-gtk2-3.1 - (package/inherit wxwidgets-3.1 - (inputs `(("gtk+" ,gtk+-2) - ,@(alist-delete - "gtk+" - (package-inputs wxwidgets-3.1)))) - (name "wxwidgets-gtk2"))) - (define-public python-wxpython (package (name "python-wxpython") - (version "4.0.7.post1") + (version "4.2.0") (source (origin (method url-fetch) (uri (pypi-uri "wxPython" version)) (sha256 (base32 - "1jppcr3n428m8pgwb9q3g0iiqydxd451ncri4njk8b53xsiflhys")) + "1iw6xp76b3fmdqwbqmsx9i1razzpfki5z1hq6l8mszlxa32fng36")) (modules '((guix build utils))) (snippet '(begin @@ -255,7 +309,7 @@ and many other languages.") (native-inputs (list pkg-config python-waf)) (propagated-inputs - (list python-numpy python-pillow python-six)) + (list python-attrdict python-numpy python-pillow python-six)) (home-page "https://wxpython.org/") (synopsis "Cross platform GUI toolkit for Python") (description "wxPython is a cross-platform GUI toolkit for the Python @@ -278,7 +332,7 @@ provide a 100% native look and feel for the application.") (base32 "1fdbvihw1w2vm29xj54cqgpdabhlg0ydf3clkb0qrlf7mhgkc1rz")))) (build-system glib-or-gtk-build-system) (inputs - (list wxwidgets-3.1 cairo ffmpeg)) + (list wxwidgets cairo ffmpeg)) (native-inputs (list pkg-config)) (propagated-inputs diff --git a/gnu/services/base.scm b/gnu/services/base.scm index d99548573d..370696a55e 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -977,148 +977,148 @@ to use as the tty. This is primarily useful for headless systems." ((device-name _ ...) device-name)))))))) -(define agetty-shepherd-service - (match-lambda - (($ <agetty-configuration> agetty tty term baud-rate auto-login - login-program login-pause? eight-bits? no-reset? remote? flow-control? - host no-issue? init-string no-clear? local-line extract-baud? - skip-login? no-newline? login-options chroot hangup? keep-baud? timeout - detect-case? wait-cr? no-hints? no-hostname? long-hostname? - erase-characters kill-characters chdir delay nice extra-options - shepherd-requirement) - (list - (shepherd-service - (documentation "Run agetty on a tty.") - (provision (list (symbol-append 'term- (string->symbol (or tty "console"))))) - - ;; Since the login prompt shows the host name, wait for the 'host-name' - ;; service to be done. Also wait for udev essentially so that the tty - ;; text is not lost in the middle of kernel messages (see also - ;; mingetty-shepherd-service). - (requirement (cons* 'user-processes 'host-name 'udev - shepherd-requirement)) - - (modules '((ice-9 match) (gnu build linux-boot))) - (start - (with-imported-modules (source-module-closure - '((gnu build linux-boot))) - #~(lambda args - (let ((defaulted-tty #$(or tty (default-serial-port)))) - (apply - (if defaulted-tty - (make-forkexec-constructor - (list #$(file-append util-linux "/sbin/agetty") - #$@extra-options - #$@(if eight-bits? - #~("--8bits") - #~()) - #$@(if no-reset? - #~("--noreset") - #~()) - #$@(if remote? - #~("--remote") - #~()) - #$@(if flow-control? - #~("--flow-control") - #~()) - #$@(if host - #~("--host" #$host) - #~()) - #$@(if no-issue? - #~("--noissue") - #~()) - #$@(if init-string - #~("--init-string" #$init-string) - #~()) - #$@(if no-clear? - #~("--noclear") - #~()) +(define (agetty-shepherd-service config) + (match-record config <agetty-configuration> + (agetty tty term baud-rate auto-login + login-program login-pause? eight-bits? no-reset? remote? flow-control? + host no-issue? init-string no-clear? local-line extract-baud? + skip-login? no-newline? login-options chroot hangup? keep-baud? timeout + detect-case? wait-cr? no-hints? no-hostname? long-hostname? + erase-characters kill-characters chdir delay nice extra-options + shepherd-requirement) + (list + (shepherd-service + (documentation "Run agetty on a tty.") + (provision (list (symbol-append 'term- (string->symbol (or tty "console"))))) + + ;; Since the login prompt shows the host name, wait for the 'host-name' + ;; service to be done. Also wait for udev essentially so that the tty + ;; text is not lost in the middle of kernel messages (see also + ;; mingetty-shepherd-service). + (requirement (cons* 'user-processes 'host-name 'udev + shepherd-requirement)) + + (modules '((ice-9 match) (gnu build linux-boot))) + (start + (with-imported-modules (source-module-closure + '((gnu build linux-boot))) + #~(lambda args + (let ((defaulted-tty #$(or tty (default-serial-port)))) + (apply + (if defaulted-tty + (make-forkexec-constructor + (list #$(file-append util-linux "/sbin/agetty") + #$@extra-options + #$@(if eight-bits? + #~("--8bits") + #~()) + #$@(if no-reset? + #~("--noreset") + #~()) + #$@(if remote? + #~("--remote") + #~()) + #$@(if flow-control? + #~("--flow-control") + #~()) + #$@(if host + #~("--host" #$host) + #~()) + #$@(if no-issue? + #~("--noissue") + #~()) + #$@(if init-string + #~("--init-string" #$init-string) + #~()) + #$@(if no-clear? + #~("--noclear") + #~()) ;;; FIXME This doesn't work as expected. According to agetty(8), if this option ;;; is not passed, then the default is 'auto'. However, in my tests, when that ;;; option is selected, agetty never presents the login prompt, and the ;;; term-ttyS0 service respawns every few seconds. - #$@(if local-line - #~(#$(match local-line - ('auto "--local-line=auto") - ('always "--local-line=always") - ('never "-local-line=never"))) - #~()) - #$@(if tty - #~() - #~("--keep-baud")) - #$@(if extract-baud? - #~("--extract-baud") - #~()) - #$@(if skip-login? - #~("--skip-login") - #~()) - #$@(if no-newline? - #~("--nonewline") - #~()) - #$@(if login-options - #~("--login-options" #$login-options) - #~()) - #$@(if chroot - #~("--chroot" #$chroot) - #~()) - #$@(if hangup? - #~("--hangup") - #~()) - #$@(if keep-baud? - #~("--keep-baud") - #~()) - #$@(if timeout - #~("--timeout" #$(number->string timeout)) - #~()) - #$@(if detect-case? - #~("--detect-case") - #~()) - #$@(if wait-cr? - #~("--wait-cr") - #~()) - #$@(if no-hints? - #~("--nohints?") - #~()) - #$@(if no-hostname? - #~("--nohostname") - #~()) - #$@(if long-hostname? - #~("--long-hostname") - #~()) - #$@(if erase-characters - #~("--erase-chars" #$erase-characters) - #~()) - #$@(if kill-characters - #~("--kill-chars" #$kill-characters) - #~()) - #$@(if chdir - #~("--chdir" #$chdir) - #~()) - #$@(if delay - #~("--delay" #$(number->string delay)) - #~()) - #$@(if nice - #~("--nice" #$(number->string nice)) - #~()) - #$@(if auto-login - (list "--autologin" auto-login) - '()) - #$@(if login-program - #~("--login-program" #$login-program) - #~()) - #$@(if login-pause? - #~("--login-pause") - #~()) - defaulted-tty - #$@(if baud-rate - #~(#$baud-rate) - #~()) - #$@(if term - #~(#$term) - #~()))) - (const #f)) ; never start. - args))))) - (stop #~(make-kill-destructor))))))) + #$@(if local-line + #~(#$(match local-line + ('auto "--local-line=auto") + ('always "--local-line=always") + ('never "-local-line=never"))) + #~()) + #$@(if tty + #~() + #~("--keep-baud")) + #$@(if extract-baud? + #~("--extract-baud") + #~()) + #$@(if skip-login? + #~("--skip-login") + #~()) + #$@(if no-newline? + #~("--nonewline") + #~()) + #$@(if login-options + #~("--login-options" #$login-options) + #~()) + #$@(if chroot + #~("--chroot" #$chroot) + #~()) + #$@(if hangup? + #~("--hangup") + #~()) + #$@(if keep-baud? + #~("--keep-baud") + #~()) + #$@(if timeout + #~("--timeout" #$(number->string timeout)) + #~()) + #$@(if detect-case? + #~("--detect-case") + #~()) + #$@(if wait-cr? + #~("--wait-cr") + #~()) + #$@(if no-hints? + #~("--nohints?") + #~()) + #$@(if no-hostname? + #~("--nohostname") + #~()) + #$@(if long-hostname? + #~("--long-hostname") + #~()) + #$@(if erase-characters + #~("--erase-chars" #$erase-characters) + #~()) + #$@(if kill-characters + #~("--kill-chars" #$kill-characters) + #~()) + #$@(if chdir + #~("--chdir" #$chdir) + #~()) + #$@(if delay + #~("--delay" #$(number->string delay)) + #~()) + #$@(if nice + #~("--nice" #$(number->string nice)) + #~()) + #$@(if auto-login + (list "--autologin" auto-login) + '()) + #$@(if login-program + #~("--login-program" #$login-program) + #~()) + #$@(if login-pause? + #~("--login-pause") + #~()) + defaulted-tty + #$@(if baud-rate + #~(#$baud-rate) + #~()) + #$@(if term + #~(#$term) + #~()))) + (const #f)) ; never start. + args))))) + (stop #~(make-kill-destructor)))))) (define agetty-service-type (service-type (name 'agetty) @@ -1148,42 +1148,42 @@ the tty to run, among other things." (clear-on-logout? mingetty-clear-on-logout? ;Boolean (default #t))) -(define mingetty-shepherd-service - (match-lambda - (($ <mingetty-configuration> mingetty tty auto-login login-program - login-pause? clear-on-logout?) - (list - (shepherd-service - (documentation "Run mingetty on an tty.") - (provision (list (symbol-append 'term- (string->symbol tty)))) - - ;; Since the login prompt shows the host name, wait for the 'host-name' - ;; service to be done. Also wait for udev essentially so that the tty - ;; text is not lost in the middle of kernel messages (XXX). - (requirement '(user-processes host-name udev virtual-terminal)) - - (start #~(make-forkexec-constructor - (list #$(file-append mingetty "/sbin/mingetty") - - ;; Avoiding 'vhangup' allows us to avoid 'setfont' - ;; errors down the path where various ioctls get - ;; EIO--see 'hung_up_tty_ioctl' in driver/tty/tty_io.c - ;; in Linux. - "--nohangup" #$tty - - #$@(if clear-on-logout? - #~() - #~("--noclear")) - #$@(if auto-login - #~("--autologin" #$auto-login) - #~()) - #$@(if login-program - #~("--loginprog" #$login-program) - #~()) - #$@(if login-pause? - #~("--loginpause") - #~())))) - (stop #~(make-kill-destructor))))))) +(define (mingetty-shepherd-service config) + (match-record config <mingetty-configuration> + (mingetty tty auto-login login-program + login-pause? clear-on-logout?) + (list + (shepherd-service + (documentation "Run mingetty on an tty.") + (provision (list (symbol-append 'term- (string->symbol tty)))) + + ;; Since the login prompt shows the host name, wait for the 'host-name' + ;; service to be done. Also wait for udev essentially so that the tty + ;; text is not lost in the middle of kernel messages (XXX). + (requirement '(user-processes host-name udev virtual-terminal)) + + (start #~(make-forkexec-constructor + (list #$(file-append mingetty "/sbin/mingetty") + + ;; Avoiding 'vhangup' allows us to avoid 'setfont' + ;; errors down the path where various ioctls get + ;; EIO--see 'hung_up_tty_ioctl' in driver/tty/tty_io.c + ;; in Linux. + "--nohangup" #$tty + + #$@(if clear-on-logout? + #~() + #~("--noclear")) + #$@(if auto-login + #~("--autologin" #$auto-login) + #~()) + #$@(if login-program + #~("--loginprog" #$login-program) + #~()) + #$@(if login-pause? + #~("--loginpause") + #~())))) + (stop #~(make-kill-destructor)))))) (define mingetty-service-type (service-type (name 'mingetty) @@ -1260,46 +1260,47 @@ the tty to run, among other things." (define (nscd.conf-file config) "Return the @file{nscd.conf} configuration file for @var{config}, an @code{<nscd-configuration>} object." - (define cache->config - (match-lambda - (($ <nscd-cache> (= symbol->string database) - positive-ttl negative-ttl size check-files? - persistent? shared? max-size propagate?) - (string-append "\nenable-cache\t" database "\tyes\n" - - "positive-time-to-live\t" database "\t" - (number->string positive-ttl) "\n" - "negative-time-to-live\t" database "\t" - (number->string negative-ttl) "\n" - "suggested-size\t" database "\t" - (number->string size) "\n" - "check-files\t" database "\t" - (if check-files? "yes\n" "no\n") - "persistent\t" database "\t" - (if persistent? "yes\n" "no\n") - "shared\t" database "\t" - (if shared? "yes\n" "no\n") - "max-db-size\t" database "\t" - (number->string max-size) "\n" - "auto-propagate\t" database "\t" - (if propagate? "yes\n" "no\n"))))) - - (match config - (($ <nscd-configuration> log-file debug-level caches) - (plain-file "nscd.conf" - (string-append "\ + (define (cache->config cache) + (match-record cache <nscd-cache> + (database positive-time-to-live negative-time-to-live + suggested-size check-files? + persistent? shared? max-database-size auto-propagate?) + (let ((database (symbol->string database))) + (string-append "\nenable-cache\t" database "\tyes\n" + + "positive-time-to-live\t" database "\t" + (number->string positive-time-to-live) "\n" + "negative-time-to-live\t" database "\t" + (number->string negative-time-to-live) "\n" + "suggested-size\t" database "\t" + (number->string suggested-size) "\n" + "check-files\t" database "\t" + (if check-files? "yes\n" "no\n") + "persistent\t" database "\t" + (if persistent? "yes\n" "no\n") + "shared\t" database "\t" + (if shared? "yes\n" "no\n") + "max-db-size\t" database "\t" + (number->string max-database-size) "\n" + "auto-propagate\t" database "\t" + (if auto-propagate? "yes\n" "no\n"))))) + + (match-record config <nscd-configuration> + (log-file debug-level caches) + (plain-file "nscd.conf" + (string-append "\ # Configuration of libc's name service cache daemon (nscd).\n\n" - (if log-file - (string-append "logfile\t" log-file) - "") - "\n" - (if debug-level - (string-append "debug-level\t" - (number->string debug-level)) - "") - "\n" - (string-concatenate - (map cache->config caches))))))) + (if log-file + (string-append "logfile\t" log-file) + "") + "\n" + (if debug-level + (string-append "debug-level\t" + (number->string debug-level)) + "") + "\n" + (string-concatenate + (map cache->config caches)))))) (define (nscd-action-procedure nscd config option) ;; XXX: This is duplicated from mcron; factorize. @@ -1797,17 +1798,15 @@ proxy of 'guix-daemon'...~%") (define (guix-accounts config) "Return the user accounts and user groups for CONFIG." - (match config - (($ <guix-configuration> _ build-group build-accounts) - (cons (user-group - (name build-group) - (system? #t) - - ;; Use a fixed GID so that we can create the store with the right - ;; owner. - (id 30000)) - (guix-build-accounts build-accounts - #:group build-group))))) + (cons (user-group + (name (guix-configuration-build-group config)) + (system? #t) + + ;; Use a fixed GID so that we can create the store with the right + ;; owner. + (id 30000)) + (guix-build-accounts (guix-configuration-build-accounts config) + #:group (guix-configuration-build-group config)))) (define (guix-activation config) "Return the activation gexp for CONFIG." @@ -2130,95 +2129,94 @@ item of @var{packages}." (udev-rule "90-kvm.rules" "KERNEL==\"kvm\", GROUP=\"kvm\", MODE=\"0660\"\n")) -(define udev-shepherd-service +(define (udev-shepherd-service config) ;; Return a <shepherd-service> for UDEV with RULES. - (match-lambda - (($ <udev-configuration> udev) - (list - (shepherd-service - (provision '(udev)) - - ;; Udev needs /dev to be a 'devtmpfs' mount so that new device nodes can - ;; be added: see - ;; <http://www.linuxfromscratch.org/lfs/view/development/chapter07/udev.html>. - (requirement '(root-file-system)) - - (documentation "Populate the /dev directory, dynamically.") - (start - (with-imported-modules (source-module-closure - '((gnu build linux-boot))) - #~(lambda () - (define udevd - ;; 'udevd' from eudev. - #$(file-append udev "/sbin/udevd")) - - (define (wait-for-udevd) - ;; Wait until someone's listening on udevd's control - ;; socket. - (let ((sock (socket AF_UNIX SOCK_SEQPACKET 0))) - (let try () - (catch 'system-error - (lambda () - (connect sock PF_UNIX "/run/udev/control") - (close-port sock)) - (lambda args - (format #t "waiting for udevd...~%") - (usleep 500000) - (try)))))) - - ;; Allow udev to find the modules. - (setenv "LINUX_MODULE_DIRECTORY" - "/run/booted-system/kernel/lib/modules") - - (let* ((kernel-release - (utsname:release (uname))) - (linux-module-directory - (getenv "LINUX_MODULE_DIRECTORY")) - (directory - (string-append linux-module-directory "/" - kernel-release)) - (old-umask (umask #o022))) - ;; If we're in a container, DIRECTORY might not exist, - ;; for instance because the host runs a different - ;; kernel. In that case, skip it; we'll just miss a few - ;; nodes like /dev/fuse. - (when (file-exists? directory) - (make-static-device-nodes directory)) - (umask old-umask)) - - (let ((pid (fork+exec-command - (list udevd) - #:environment-variables - (cons* - ;; The first one is for udev, the second one for - ;; eudev. - "UDEV_CONFIG_FILE=/etc/udev/udev.conf" - "EUDEV_RULES_DIRECTORY=/etc/udev/rules.d" - (string-append "LINUX_MODULE_DIRECTORY=" - (getenv "LINUX_MODULE_DIRECTORY")) - (default-environment-variables))))) - ;; Wait until udevd is up and running. This appears to - ;; be needed so that the events triggered below are - ;; actually handled. - (wait-for-udevd) - - ;; Trigger device node creation. - (system* #$(file-append udev "/bin/udevadm") - "trigger" "--action=add") - - ;; Wait for things to settle down. - (system* #$(file-append udev "/bin/udevadm") - "settle") - pid)))) - (stop #~(make-kill-destructor)) - - ;; When halting the system, 'udev' is actually killed by - ;; 'user-processes', i.e., before its own 'stop' method was called. - ;; Thus, make sure it is not respawned. - (respawn? #f) - ;; We need additional modules. - (modules `((gnu build linux-boot) ;'make-static-device-nodes' - ,@%default-modules))))))) + (let ((udev (udev-configuration-udev config))) + (list + (shepherd-service + (provision '(udev)) + + ;; Udev needs /dev to be a 'devtmpfs' mount so that new device nodes can + ;; be added: see + ;; <http://www.linuxfromscratch.org/lfs/view/development/chapter07/udev.html>. + (requirement '(root-file-system)) + + (documentation "Populate the /dev directory, dynamically.") + (start + (with-imported-modules (source-module-closure + '((gnu build linux-boot))) + #~(lambda () + (define udevd + ;; 'udevd' from eudev. + #$(file-append udev "/sbin/udevd")) + + (define (wait-for-udevd) + ;; Wait until someone's listening on udevd's control + ;; socket. + (let ((sock (socket AF_UNIX SOCK_SEQPACKET 0))) + (let try () + (catch 'system-error + (lambda () + (connect sock PF_UNIX "/run/udev/control") + (close-port sock)) + (lambda args + (format #t "waiting for udevd...~%") + (usleep 500000) + (try)))))) + + ;; Allow udev to find the modules. + (setenv "LINUX_MODULE_DIRECTORY" + "/run/booted-system/kernel/lib/modules") + + (let* ((kernel-release + (utsname:release (uname))) + (linux-module-directory + (getenv "LINUX_MODULE_DIRECTORY")) + (directory + (string-append linux-module-directory "/" + kernel-release)) + (old-umask (umask #o022))) + ;; If we're in a container, DIRECTORY might not exist, + ;; for instance because the host runs a different + ;; kernel. In that case, skip it; we'll just miss a few + ;; nodes like /dev/fuse. + (when (file-exists? directory) + (make-static-device-nodes directory)) + (umask old-umask)) + + (let ((pid (fork+exec-command + (list udevd) + #:environment-variables + (cons* + ;; The first one is for udev, the second one for + ;; eudev. + "UDEV_CONFIG_FILE=/etc/udev/udev.conf" + "EUDEV_RULES_DIRECTORY=/etc/udev/rules.d" + (string-append "LINUX_MODULE_DIRECTORY=" + (getenv "LINUX_MODULE_DIRECTORY")) + (default-environment-variables))))) + ;; Wait until udevd is up and running. This appears to + ;; be needed so that the events triggered below are + ;; actually handled. + (wait-for-udevd) + + ;; Trigger device node creation. + (system* #$(file-append udev "/bin/udevadm") + "trigger" "--action=add") + + ;; Wait for things to settle down. + (system* #$(file-append udev "/bin/udevadm") + "settle") + pid)))) + (stop #~(make-kill-destructor)) + + ;; When halting the system, 'udev' is actually killed by + ;; 'user-processes', i.e., before its own 'stop' method was called. + ;; Thus, make sure it is not respawned. + (respawn? #f) + ;; We need additional modules. + (modules `((gnu build linux-boot) ;'make-static-device-nodes' + ,@%default-modules)))))) (define udev.conf (computed-file "udev.conf" @@ -2226,14 +2224,15 @@ item of @var{packages}." (lambda (port) (format port "udev_rules=\"/etc/udev/rules.d\"~%"))))) -(define udev-etc - (match-lambda - (($ <udev-configuration> udev rules) - `(("udev" - ,(file-union - "udev" `(("udev.conf" ,udev.conf) - ("rules.d" ,(udev-rules-union (cons* udev kvm-udev-rule - rules)))))))))) +(define (udev-etc config) + (match-record config <udev-configuration> + (udev rules) + `(("udev" + ,(file-union "udev" + `(("udev.conf" ,udev.conf) + ("rules.d" + ,(udev-rules-union (cons* udev kvm-udev-rule + rules))))))))) (define udev-service-type (service-type (name 'udev) @@ -2243,11 +2242,11 @@ item of @var{packages}." (service-extension etc-service-type udev-etc))) (compose concatenate) ;concatenate the list of rules (extend (lambda (config rules) - (match config - (($ <udev-configuration> udev initial-rules) - (udev-configuration - (udev udev) - (rules (append initial-rules rules))))))) + (let ((initial-rules + (udev-configuration-rules config))) + (udev-configuration + (inherit config) + (rules (append initial-rules rules)))))) (default-value (udev-configuration)) (description "Run @command{udev}, which populates the @file{/dev} @@ -2385,23 +2384,23 @@ instance." (options gpm-configuration-options ;list of strings (default %default-gpm-options))) -(define gpm-shepherd-service - (match-lambda - (($ <gpm-configuration> gpm options) - (list (shepherd-service - (requirement '(udev)) - (provision '(gpm)) - ;; 'gpm' runs in the background and sets a PID file. - ;; Note that it requires running as "root". - (start #~(make-forkexec-constructor - (list #$(file-append gpm "/sbin/gpm") - #$@options) - #:pid-file "/var/run/gpm.pid" - #:pid-file-timeout 3)) - (stop #~(lambda (_) - ;; Return #f if successfully stopped. - (not (zero? (system* #$(file-append gpm "/sbin/gpm") - "-k")))))))))) +(define (gpm-shepherd-service config) + (match-record config <gpm-configuration> + (gpm options) + (list (shepherd-service + (requirement '(udev)) + (provision '(gpm)) + ;; 'gpm' runs in the background and sets a PID file. + ;; Note that it requires running as "root". + (start #~(make-forkexec-constructor + (list #$(file-append gpm "/sbin/gpm") + #$@options) + #:pid-file "/var/run/gpm.pid" + #:pid-file-timeout 3)) + (stop #~(lambda (_) + ;; Return #f if successfully stopped. + (not (zero? (system* #$(file-append gpm "/sbin/gpm") + "-k"))))))))) (define gpm-service-type (service-type (name 'gpm) @@ -2654,32 +2653,64 @@ to CONFIG." "/servers/socket/2") #f)))) -(define network-set-up/linux - (match-lambda - (($ <static-networking> addresses links routes) - (scheme-file "set-up-network" - (with-extensions (list guile-netlink) - #~(begin - (use-modules (ip addr) (ip link) (ip route)) - - #$@(map (lambda (address) - #~(begin - (addr-add #$(network-address-device address) - #$(network-address-value address) - #:ipv6? - #$(network-address-ipv6? address)) - ;; FIXME: loopback? - (link-set #$(network-address-device address) - #:multicast-on #t - #:up #t))) - addresses) - #$@(map (match-lambda - (($ <network-link> name type arguments) - #~(link-add #$name #$type - #:type-args '#$arguments))) - links) - #$@(map (lambda (route) - #~(route-add #$(network-route-destination route) +(define (network-set-up/linux config) + (match-record config <static-networking> + (addresses links routes) + (scheme-file "set-up-network" + (with-extensions (list guile-netlink) + #~(begin + (use-modules (ip addr) (ip link) (ip route)) + + #$@(map (lambda (address) + #~(begin + (addr-add #$(network-address-device address) + #$(network-address-value address) + #:ipv6? + #$(network-address-ipv6? address)) + ;; FIXME: loopback? + (link-set #$(network-address-device address) + #:multicast-on #t + #:up #t))) + addresses) + #$@(map (match-lambda + (($ <network-link> name type arguments) + #~(link-add #$name #$type + #:type-args '#$arguments))) + links) + #$@(map (lambda (route) + #~(route-add #$(network-route-destination route) + #:device + #$(network-route-device route) + #:ipv6? + #$(network-route-ipv6? route) + #:via + #$(network-route-gateway route) + #:src + #$(network-route-source route))) + routes) + #t))))) + +(define (network-tear-down/linux config) + (match-record config <static-networking> + (addresses links routes) + (scheme-file "tear-down-network" + (with-extensions (list guile-netlink) + #~(begin + (use-modules (ip addr) (ip link) (ip route) + (netlink error) + (srfi srfi-34)) + + (define-syntax-rule (false-if-netlink-error exp) + (guard (c ((netlink-error? c) #f)) + exp)) + + ;; Wrap calls in 'false-if-netlink-error' so this + ;; script goes as far as possible undoing the effects + ;; of "set-up-network". + + #$@(map (lambda (route) + #~(false-if-netlink-error + (route-del #$(network-route-destination route) #:device #$(network-route-device route) #:ipv6? @@ -2687,80 +2718,47 @@ to CONFIG." #:via #$(network-route-gateway route) #:src - #$(network-route-source route))) - routes) - #t)))))) - -(define network-tear-down/linux - (match-lambda - (($ <static-networking> addresses links routes) - (scheme-file "tear-down-network" - (with-extensions (list guile-netlink) - #~(begin - (use-modules (ip addr) (ip link) (ip route) - (netlink error) - (srfi srfi-34)) - - (define-syntax-rule (false-if-netlink-error exp) - (guard (c ((netlink-error? c) #f)) - exp)) - - ;; Wrap calls in 'false-if-netlink-error' so this - ;; script goes as far as possible undoing the effects - ;; of "set-up-network". - - #$@(map (lambda (route) - #~(false-if-netlink-error - (route-del #$(network-route-destination route) - #:device - #$(network-route-device route) - #:ipv6? - #$(network-route-ipv6? route) - #:via - #$(network-route-gateway route) - #:src - #$(network-route-source route)))) - routes) - #$@(map (match-lambda - (($ <network-link> name type arguments) - #~(false-if-netlink-error - (link-del #$name)))) - links) - #$@(map (lambda (address) + #$(network-route-source route)))) + routes) + #$@(map (match-lambda + (($ <network-link> name type arguments) #~(false-if-netlink-error - (addr-del #$(network-address-device - address) - #$(network-address-value address) - #:ipv6? - #$(network-address-ipv6? address)))) - addresses) - #f)))))) + (link-del #$name)))) + links) + #$@(map (lambda (address) + #~(false-if-netlink-error + (addr-del #$(network-address-device + address) + #$(network-address-value address) + #:ipv6? + #$(network-address-ipv6? address)))) + addresses) + #f))))) (define (static-networking-shepherd-service config) - (match config - (($ <static-networking> addresses links routes - provision requirement name-servers) - (let ((loopback? (and provision (memq 'loopback provision)))) - (shepherd-service + (match-record config <static-networking> + (addresses links routes provision requirement name-servers) + (let ((loopback? (and provision (memq 'loopback provision)))) + (shepherd-service - (documentation - "Bring up the networking interface using a static IP address.") - (requirement requirement) - (provision provision) + (documentation + "Bring up the networking interface using a static IP address.") + (requirement requirement) + (provision provision) - (start #~(lambda _ - ;; Return #t if successfully started. - (load #$(let-system (system target) - (if (string-contains (or target system) "-linux") - (network-set-up/linux config) - (network-set-up/hurd config)))))) - (stop #~(lambda _ - ;; Return #f is successfully stopped. + (start #~(lambda _ + ;; Return #t if successfully started. (load #$(let-system (system target) (if (string-contains (or target system) "-linux") - (network-tear-down/linux config) - (network-tear-down/hurd config)))))) - (respawn? #f)))))) + (network-set-up/linux config) + (network-set-up/hurd config)))))) + (stop #~(lambda _ + ;; Return #f is successfully stopped. + (load #$(let-system (system target) + (if (string-contains (or target system) "-linux") + (network-tear-down/linux config) + (network-tear-down/hurd config)))))) + (respawn? #f))))) (define (static-networking-shepherd-services networks) (map static-networking-shepherd-service networks)) @@ -2873,33 +2871,33 @@ to handle." (extra-env greetd-agreety-extra-env (default '())) (xdg-env? greetd-agreety-xdg-env? (default #t))) -(define greetd-agreety-tty-session-command - (match-lambda - (($ <greetd-agreety-session> _ command args extra-env) - (program-file - "agreety-tty-session-command" - #~(begin - (use-modules (ice-9 match)) - (for-each (match-lambda ((var . val) (setenv var val))) - (quote (#$@extra-env))) - (apply execl #$command #$command (list #$@args))))))) - -(define greetd-agreety-tty-xdg-session-command - (match-lambda - (($ <greetd-agreety-session> _ command args extra-env) - (program-file - "agreety-tty-xdg-session-command" - #~(begin - (use-modules (ice-9 match)) - (let* - ((username (getenv "USER")) - (useruid (passwd:uid (getpwuid username))) - (useruid (number->string useruid))) - (setenv "XDG_SESSION_TYPE" "tty") - (setenv "XDG_RUNTIME_DIR" (string-append "/run/user/" useruid))) - (for-each (match-lambda ((var . val) (setenv var val))) - (quote (#$@extra-env))) - (apply execl #$command #$command (list #$@args))))))) +(define (greetd-agreety-tty-session-command config) + (match-record config <greetd-agreety-session> + (command command-args extra-env) + (program-file + "agreety-tty-session-command" + #~(begin + (use-modules (ice-9 match)) + (for-each (match-lambda ((var . val) (setenv var val))) + (quote (#$@extra-env))) + (apply execl #$command #$command (list #$@command-args)))))) + +(define (greetd-agreety-tty-xdg-session-command config) + (match-record config <greetd-agreety-session> + (command command-args extra-env) + (program-file + "agreety-tty-xdg-session-command" + #~(begin + (use-modules (ice-9 match)) + (let* + ((username (getenv "USER")) + (useruid (passwd:uid (getpwuid username))) + (useruid (number->string useruid))) + (setenv "XDG_SESSION_TYPE" "tty") + (setenv "XDG_RUNTIME_DIR" (string-append "/run/user/" useruid))) + (for-each (match-lambda ((var . val) (setenv var val))) + (quote (#$@extra-env))) + (apply execl #$command #$command (list #$@command-args)))))) (define-gexp-compiler (greetd-agreety-session-compiler (session <greetd-agreety-session>) diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index 52de5ca7c0..d7c6ab9877 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -125,7 +125,7 @@ (let ((cuirass (cuirass-configuration-cuirass config)) (cache-directory (cuirass-configuration-cache-directory config)) (web-log-file (cuirass-configuration-web-log-file config)) - (log-file (cuirass-configuration-log-file config)) + (main-log-file (cuirass-configuration-log-file config)) (user (cuirass-configuration-user config)) (group (cuirass-configuration-group config)) (interval (cuirass-configuration-interval config)) @@ -169,7 +169,7 @@ #:user #$user #:group #$group - #:log-file #$log-file)) + #:log-file #$main-log-file)) (stop #~(make-kill-destructor))) ,(shepherd-service (documentation "Run Cuirass web interface.") diff --git a/gnu/services/getmail.scm b/gnu/services/getmail.scm index fb82d054ca..19faea782f 100644 --- a/gnu/services/getmail.scm +++ b/gnu/services/getmail.scm @@ -215,17 +215,6 @@ lines.") (parameter-alist '()) "Extra options to include.")) -(define (serialize-getmail-configuration-file field-name val) - (match-record val <getmail-configuration-file> - (retriever destination options) - #~(string-append - "[retriever]\n" - #$(serialize-getmail-retriever-configuration #f retriever) - "\n[destination]\n" - #$(serialize-getmail-destination-configuration #f destination) - "\n[options]\n" - #$(serialize-getmail-options-configuration #f options)))) - (define-configuration getmail-configuration-file (retriever (getmail-retriever-configuration (getmail-retriever-configuration)) @@ -237,6 +226,17 @@ lines.") (getmail-options-configuration (getmail-options-configuration)) "Configure getmail.")) +(define (serialize-getmail-configuration-file field-name val) + (match-record val <getmail-configuration-file> + (retriever destination options) + #~(string-append + "[retriever]\n" + #$(serialize-getmail-retriever-configuration #f retriever) + "\n[destination]\n" + #$(serialize-getmail-destination-configuration #f destination) + "\n[options]\n" + #$(serialize-getmail-options-configuration #f options)))) + (define (serialize-symbol field-name val) "") (define (serialize-getmail-configuration field-name val) "") diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index de02f16a34..702404bc6c 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2021 Christine Lemmer-Webber <cwebber@dustycloud.org> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> +;;; Copyright © 2022 Andrew Tropin <andrew@trop.in> ;;; ;;; This file is part of GNU Guix. ;;; @@ -277,8 +278,10 @@ fe80::1%lo0 apps.facebook.com\n") (define dhcp-client-shepherd-service (match-lambda - (($ <dhcp-client-configuration> package interfaces) - (let ((pid-file "/var/run/dhclient.pid")) + ((? dhcp-client-configuration? config) + (let ((package (dhcp-client-configuration-package config)) + (interfaces (dhcp-client-configuration-interfaces config)) + (pid-file "/var/run/dhclient.pid")) (list (shepherd-service (documentation "Set up networking via DHCP.") (requirement '(user-processes udev)) @@ -359,46 +362,46 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."))) (interfaces dhcpd-configuration-interfaces (default '()))) -(define dhcpd-shepherd-service - (match-lambda - (($ <dhcpd-configuration> package config-file version run-directory - lease-file pid-file interfaces) - (unless config-file - (error "Must supply a config-file")) - (list (shepherd-service - ;; Allow users to easily run multiple versions simultaneously. - (provision (list (string->symbol - (string-append "dhcpv" version "-daemon")))) - (documentation (string-append "Run the DHCPv" version " daemon")) - (requirement '(networking)) - (start #~(make-forkexec-constructor - '(#$(file-append package "/sbin/dhcpd") - #$(string-append "-" version) - "-lf" #$lease-file - "-pf" #$pid-file - "-cf" #$config-file - #$@interfaces) - #:pid-file #$pid-file)) - (stop #~(make-kill-destructor))))))) - -(define dhcpd-activation - (match-lambda - (($ <dhcpd-configuration> package config-file version run-directory - lease-file pid-file interfaces) - (with-imported-modules '((guix build utils)) - #~(begin - (unless (file-exists? #$run-directory) - (mkdir #$run-directory)) - ;; According to the DHCP manual (man dhcpd.leases), the lease - ;; database must be present for dhcpd to start successfully. - (unless (file-exists? #$lease-file) - (with-output-to-file #$lease-file - (lambda _ (display "")))) - ;; Validate the config. - (invoke/quiet - #$(file-append package "/sbin/dhcpd") - #$(string-append "-" version) - "-t" "-cf" #$config-file)))))) +(define (dhcpd-shepherd-service config) + (match-record config <dhcpd-configuration> + (package config-file version run-directory + lease-file pid-file interfaces) + (unless config-file + (error "Must supply a config-file")) + (list (shepherd-service + ;; Allow users to easily run multiple versions simultaneously. + (provision (list (string->symbol + (string-append "dhcpv" version "-daemon")))) + (documentation (string-append "Run the DHCPv" version " daemon")) + (requirement '(networking)) + (start #~(make-forkexec-constructor + '(#$(file-append package "/sbin/dhcpd") + #$(string-append "-" version) + "-lf" #$lease-file + "-pf" #$pid-file + "-cf" #$config-file + #$@interfaces) + #:pid-file #$pid-file)) + (stop #~(make-kill-destructor)))))) + +(define (dhcpd-activation config) + (match-record config <dhcpd-configuration> + (package config-file version run-directory + lease-file pid-file interfaces) + (with-imported-modules '((guix build utils)) + #~(begin + (unless (file-exists? #$run-directory) + (mkdir #$run-directory)) + ;; According to the DHCP manual (man dhcpd.leases), the lease + ;; database must be present for dhcpd to start successfully. + (unless (file-exists? #$lease-file) + (with-output-to-file #$lease-file + (lambda _ (display "")))) + ;; Validate the config. + (invoke/quiet + #$(file-append package "/sbin/dhcpd") + #$(string-append "-" version) + "-t" "-cf" #$config-file))))) (define dhcpd-service-type (service-type @@ -449,16 +452,16 @@ daemon is responsible for allocating IP addresses to its client."))) (fold loop res x) (cons (format #f "~a" x) res))))) - (match ntp-server - (($ <ntp-server> type address options) - ;; XXX: It'd be neater if fields were validated at the syntax level (for - ;; static ones at least). Perhaps the Guix record type could support a - ;; predicate property on a field? - (unless (enum-set-member? type ntp-server-types) - (error "Invalid NTP server type" type)) - (string-join (cons* (symbol->string type) - address - (flatten options)))))) + (match-record ntp-server <ntp-server> + (type address options) + ;; XXX: It'd be neater if fields were validated at the syntax level (for + ;; static ones at least). Perhaps the Guix record type could support a + ;; predicate property on a field? + (unless (enum-set-member? type ntp-server-types) + (error "Invalid NTP server type" type)) + (string-join (cons* (symbol->string type) + address + (flatten options))))) (define %ntp-servers ;; Default set of NTP servers. These URLs are managed by the NTP Pool project. @@ -497,17 +500,16 @@ deprecated. Please use <ntp-server> records instead.\n") ((($ <ntp-server>) ($ <ntp-server>) ...) ntp-servers)))) -(define ntp-shepherd-service - (lambda (config) - (match config - (($ <ntp-configuration> ntp servers allow-large-adjustment?) - (let ((servers (ntp-configuration-servers config))) - ;; TODO: Add authentication support. - (define config - (string-append "driftfile /var/run/ntpd/ntp.drift\n" - (string-join (map ntp-server->string servers) - "\n") - " +(define (ntp-shepherd-service config) + (match-record config <ntp-configuration> + (ntp servers allow-large-adjustment?) + (let ((servers (ntp-configuration-servers config))) + ;; TODO: Add authentication support. + (define config + (string-append "driftfile /var/run/ntpd/ntp.drift\n" + (string-join (map ntp-server->string servers) + "\n") + " # Disable status queries as a workaround for CVE-2013-5211: # <http://support.ntp.org/bin/view/Main/SecurityNotice#DRDoS_Amplification_Attack_using>. restrict default kod nomodify notrap nopeer noquery limited @@ -521,21 +523,21 @@ restrict -6 ::1 # option by default, as documented in the 'ntp.conf' manual. restrict source notrap nomodify noquery\n")) - (define ntpd.conf - (plain-file "ntpd.conf" config)) - - (list (shepherd-service - (provision '(ntpd)) - (documentation "Run the Network Time Protocol (NTP) daemon.") - (requirement '(user-processes networking)) - (start #~(make-forkexec-constructor - (list (string-append #$ntp "/bin/ntpd") "-n" - "-c" #$ntpd.conf "-u" "ntpd" - #$@(if allow-large-adjustment? - '("-g") - '())) - #:log-file "/var/log/ntpd.log")) - (stop #~(make-kill-destructor))))))))) + (define ntpd.conf + (plain-file "ntpd.conf" config)) + + (list (shepherd-service + (provision '(ntpd)) + (documentation "Run the Network Time Protocol (NTP) daemon.") + (requirement '(user-processes networking)) + (start #~(make-forkexec-constructor + (list (string-append #$ntp "/bin/ntpd") "-n" + "-c" #$ntpd.conf "-u" "ntpd" + #$@(if allow-large-adjustment? + '("-g") + '())) + #:log-file "/var/log/ntpd.log")) + (stop #~(make-kill-destructor))))))) (define %ntp-accounts (list (user-account @@ -742,19 +744,19 @@ daemon will keep the system clock synchronized with that of the given servers.") " ") "\n"))) entries))) -(define inetd-shepherd-service - (match-lambda - (($ <inetd-configuration> program ()) '()) ; empty list of entries -> do nothing - (($ <inetd-configuration> program entries) - (list - (shepherd-service - (documentation "Run inetd.") - (provision '(inetd)) - (requirement '(user-processes networking syslogd)) - (start #~(make-forkexec-constructor - (list #$program #$(inetd-config-file entries)) - #:pid-file "/var/run/inetd.pid")) - (stop #~(make-kill-destructor))))))) +(define (inetd-shepherd-service config) + (let ((entries (inetd-configuration-entries config))) + (if (null? entries) + '() ;do nothing + (let ((program (inetd-configuration-program config))) + (list (shepherd-service + (documentation "Run inetd.") + (provision '(inetd)) + (requirement '(user-processes networking syslogd)) + (start #~(make-forkexec-constructor + (list #$program #$(inetd-config-file entries)) + #:pid-file "/var/run/inetd.pid")) + (stop #~(make-kill-destructor)))))))) (define-public inetd-service-type (service-type @@ -938,97 +940,94 @@ applications in communication. It is used by Jami, for example."))) (define (tor-configuration->torrc config) "Return a 'torrc' file for CONFIG." - (match config - (($ <tor-configuration> tor config-file services - socks-socket-type control-socket?) - (computed-file - "torrc" - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (guix build utils) - (ice-9 match)) - - (call-with-output-file #$output - (lambda (port) - (display "\ + (match-record config <tor-configuration> + (tor config-file hidden-services socks-socket-type control-socket?) + (computed-file + "torrc" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (ice-9 match)) + + (call-with-output-file #$output + (lambda (port) + (display "\ ### These lines were generated from your system configuration: DataDirectory /var/lib/tor Log notice syslog\n" port) - (when (eq? 'unix '#$socks-socket-type) - (display "\ + (when (eq? 'unix '#$socks-socket-type) + (display "\ SocksPort unix:/var/run/tor/socks-sock UnixSocksGroupWritable 1\n" port)) - (when #$control-socket? - (display "\ + (when #$control-socket? + (display "\ ControlSocket unix:/var/run/tor/control-sock GroupWritable RelaxDirModeCheck ControlSocketsGroupWritable 1\n" - port)) + port)) - (for-each (match-lambda - ((service (ports hosts) ...) - (format port "\ + (for-each (match-lambda + ((service (ports hosts) ...) + (format port "\ HiddenServiceDir /var/lib/tor/hidden-services/~a~%" - service) - (for-each (lambda (tcp-port host) - (format port "\ + service) + (for-each (lambda (tcp-port host) + (format port "\ HiddenServicePort ~a ~a~%" - tcp-port host)) - ports hosts))) - '#$(map (match-lambda - (($ <hidden-service> name mapping) - (cons name mapping))) - services)) - - (display "\ + tcp-port host)) + ports hosts))) + '#$(map (match-lambda + (($ <hidden-service> name mapping) + (cons name mapping))) + hidden-services)) + + (display "\ ### End of automatically generated lines.\n\n" port) - ;; Append the user's config file. - (call-with-input-file #$config-file - (lambda (input) - (dump-port input port))) - #t)))))))) + ;; Append the user's config file. + (call-with-input-file #$config-file + (lambda (input) + (dump-port input port))) + #t))))))) (define (tor-shepherd-service config) "Return a <shepherd-service> running Tor." - (match config - (($ <tor-configuration> tor) - (let* ((torrc (tor-configuration->torrc config)) - (tor (least-authority-wrapper - (file-append tor "/bin/tor") - #:name "tor" - #:mappings (list (file-system-mapping - (source "/var/lib/tor") - (target source) - (writable? #t)) - (file-system-mapping - (source "/dev/log") ;for syslog - (target source)) - (file-system-mapping - (source "/var/run/tor") - (target source) - (writable? #t)) - (file-system-mapping - (source torrc) - (target source))) - #:namespaces (delq 'net %namespaces)))) - (list (shepherd-service - (provision '(tor)) - - ;; Tor needs at least one network interface to be up, hence the - ;; dependency on 'loopback'. - (requirement '(user-processes loopback syslogd)) - - ;; XXX: #:pid-file won't work because the wrapped 'tor' - ;; program would print its PID within the user namespace - ;; instead of its actual PID outside. There's no inetd or - ;; systemd socket activation support either (there's - ;; 'sd_notify' though), so we're stuck with that. - (start #~(make-forkexec-constructor - (list #$tor "-f" #$torrc) - #:user "tor" #:group "tor")) - (stop #~(make-kill-destructor)) - (actions (list (shepherd-configuration-action torrc))) - (documentation "Run the Tor anonymous network overlay."))))))) + (let* ((torrc (tor-configuration->torrc config)) + (tor (least-authority-wrapper + (file-append (tor-configuration-tor config) "/bin/tor") + #:name "tor" + #:mappings (list (file-system-mapping + (source "/var/lib/tor") + (target source) + (writable? #t)) + (file-system-mapping + (source "/dev/log") ;for syslog + (target source)) + (file-system-mapping + (source "/var/run/tor") + (target source) + (writable? #t)) + (file-system-mapping + (source torrc) + (target source))) + #:namespaces (delq 'net %namespaces)))) + (list (shepherd-service + (provision '(tor)) + + ;; Tor needs at least one network interface to be up, hence the + ;; dependency on 'loopback'. + (requirement '(user-processes loopback syslogd)) + + ;; XXX: #:pid-file won't work because the wrapped 'tor' + ;; program would print its PID within the user namespace + ;; instead of its actual PID outside. There's no inetd or + ;; systemd socket activation support either (there's + ;; 'sd_notify' though), so we're stuck with that. + (start #~(make-forkexec-constructor + (list #$tor "-f" #$torrc) + #:user "tor" #:group "tor")) + (stop #~(make-kill-destructor)) + (actions (list (shepherd-configuration-action torrc))) + (documentation "Run the Tor anonymous network overlay."))))) (define (tor-activation config) "Set up directories for Tor and its hidden services, if any." @@ -1143,19 +1142,20 @@ project's documentation} for more information." (dns network-manager-configuration-dns (default "default")) (vpn-plugins network-manager-configuration-vpn-plugins ;list of file-like - (default '()))) + (default '())) + (iwd? network-manager-configuration-iwd? (default #f))) -(define network-manager-activation +(define (network-manager-activation config) ;; Activation gexp for NetworkManager - (match-lambda - (($ <network-manager-configuration> network-manager dns vpn-plugins) - #~(begin - (use-modules (guix build utils)) - (mkdir-p "/etc/NetworkManager/system-connections") - #$@(if (equal? dns "dnsmasq") - ;; create directory to store dnsmasq lease file - '((mkdir-p "/var/lib/misc")) - '()))))) + (match-record config <network-manager-configuration> + (network-manager dns vpn-plugins) + #~(begin + (use-modules (guix build utils)) + (mkdir-p "/etc/NetworkManager/system-connections") + #$@(if (equal? dns "dnsmasq") + ;; create directory to store dnsmasq lease file + '((mkdir-p "/var/lib/misc")) + '())))) (define (vpn-plugin-directory plugins) "Return a directory containing PLUGINS, the NM VPN plugins." @@ -1188,44 +1188,47 @@ project's documentation} for more information." (cons (user-group (name "network-manager") (system? #t)) accounts)))) -(define network-manager-environment - (match-lambda - (($ <network-manager-configuration> network-manager dns vpn-plugins) - ;; Define this variable in the global environment such that - ;; "nmcli connection import type openvpn file foo.ovpn" works. - `(("NM_VPN_PLUGIN_DIR" - . ,(file-append (vpn-plugin-directory vpn-plugins) - "/lib/NetworkManager/VPN")))))) - -(define network-manager-shepherd-service - (match-lambda - (($ <network-manager-configuration> network-manager dns vpn-plugins) - (let ((conf (plain-file "NetworkManager.conf" - (string-append "[main]\ndns=" dns "\n"))) - (vpn (vpn-plugin-directory vpn-plugins))) - (list (shepherd-service - (documentation "Run the NetworkManager.") - (provision '(networking)) - (requirement '(user-processes dbus-system wpa-supplicant loopback)) - (start #~(make-forkexec-constructor - (list (string-append #$network-manager - "/sbin/NetworkManager") - (string-append "--config=" #$conf) - "--no-daemon") - #:environment-variables - (list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn - "/lib/NetworkManager/VPN") - ;; Override non-existent default users - "NM_OPENVPN_USER=" - "NM_OPENVPN_GROUP="))) - (stop #~(make-kill-destructor)))))))) +(define (network-manager-environment config) + (match-record config <network-manager-configuration> + (network-manager dns vpn-plugins) + ;; Define this variable in the global environment such that + ;; "nmcli connection import type openvpn file foo.ovpn" works. + `(("NM_VPN_PLUGIN_DIR" + . ,(file-append (vpn-plugin-directory vpn-plugins) + "/lib/NetworkManager/VPN"))))) + +(define (network-manager-shepherd-service config) + (match-record config <network-manager-configuration> + (network-manager dns vpn-plugins iwd?) + (let ((conf (plain-file "NetworkManager.conf" + (string-append + "[main]\ndns=" dns "\n" + (if iwd? "[device]\nwifi.backend=iwd\n" "")))) + (vpn (vpn-plugin-directory vpn-plugins))) + (list (shepherd-service + (documentation "Run the NetworkManager.") + (provision '(networking)) + (requirement (append '(user-processes dbus-system loopback) + (if iwd? '(iwd) '(wpa-supplicant)))) + (start #~(make-forkexec-constructor + (list (string-append #$network-manager + "/sbin/NetworkManager") + (string-append "--config=" #$conf) + "--no-daemon") + #:environment-variables + (list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn + "/lib/NetworkManager/VPN") + ;; Override non-existent default users + "NM_OPENVPN_USER=" + "NM_OPENVPN_GROUP="))) + (stop #~(make-kill-destructor))))))) (define network-manager-service-type - (let - ((config->packages - (match-lambda - (($ <network-manager-configuration> network-manager _ vpn-plugins) - `(,network-manager ,@vpn-plugins))))) + (let ((config->packages + (lambda (config) + (match-record config <network-manager-configuration> + (network-manager vpn-plugins) + `(,network-manager ,@vpn-plugins))))) (service-type (name 'network-manager) @@ -1332,9 +1335,8 @@ a network connection manager.")))) (define modem-manager-service-type (let ((config->package - (match-lambda - (($ <modem-manager-configuration> modem-manager) - (list modem-manager))))) + (lambda (config) + (list (modem-manager-configuration-modem-manager config))))) (service-type (name 'modem-manager) (extensions (list (service-extension dbus-root-service-type @@ -1405,24 +1407,25 @@ device is detected." usb-modeswitch package specified in CONFIG. The rules file will invoke usb_modeswitch.sh from the usb-modeswitch package, modified to pass the right config file." - (match config - (($ <usb-modeswitch-configuration> usb-modeswitch data config-file) - (computed-file - "usb_modeswitch.rules" - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (guix build utils)) - (let ((in (string-append #$data "/udev/40-usb_modeswitch.rules")) - (out (string-append #$output "/lib/udev/rules.d")) - (script #$(usb-modeswitch-sh usb-modeswitch config-file))) - (mkdir-p out) - (chdir out) - (install-file in out) - (substitute* "40-usb_modeswitch.rules" - (("PROGRAM=\"usb_modeswitch") - (string-append "PROGRAM=\"" script "/usb_modeswitch")) - (("RUN\\+=\"usb_modeswitch") - (string-append "RUN+=\"" script "/usb_modeswitch")))))))))) + (match-record config <usb-modeswitch-configuration> + (usb-modeswitch usb-modeswitch-data config-file) + (computed-file + "usb_modeswitch.rules" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (let ((in (string-append #$usb-modeswitch-data + "/udev/40-usb_modeswitch.rules")) + (out (string-append #$output "/lib/udev/rules.d")) + (script #$(usb-modeswitch-sh usb-modeswitch config-file))) + (mkdir-p out) + (chdir out) + (install-file in out) + (substitute* "40-usb_modeswitch.rules" + (("PROGRAM=\"usb_modeswitch") + (string-append "PROGRAM=\"" script "/usb_modeswitch")) + (("RUN\\+=\"usb_modeswitch") + (string-append "RUN+=\"" script "/usb_modeswitch"))))))))) (define usb-modeswitch-service-type (service-type @@ -1466,40 +1469,39 @@ whatever the thing is supposed to do)."))) (extra-options wpa-supplicant-configuration-extra-options ;list of strings (default '()))) -(define wpa-supplicant-shepherd-service - (match-lambda - (($ <wpa-supplicant-configuration> wpa-supplicant requirement pid-file dbus? - interface config-file extra-options) - (list (shepherd-service - (documentation "Run the WPA supplicant daemon") - (provision '(wpa-supplicant)) - (requirement (if dbus? - (cons 'dbus-system requirement) - requirement)) - (start #~(make-forkexec-constructor - (list (string-append #$wpa-supplicant - "/sbin/wpa_supplicant") - (string-append "-P" #$pid-file) - "-B" ;run in background - "-s" ;log to syslogd - #$@(if dbus? - #~("-u") - #~()) - #$@(if interface - #~((string-append "-i" #$interface)) - #~()) - #$@(if config-file - #~((string-append "-c" #$config-file)) - #~()) - #$@extra-options) - #:pid-file #$pid-file)) - (stop #~(make-kill-destructor))))))) +(define (wpa-supplicant-shepherd-service config) + (match-record config <wpa-supplicant-configuration> + (wpa-supplicant requirement pid-file dbus? + interface config-file extra-options) + (list (shepherd-service + (documentation "Run the WPA supplicant daemon") + (provision '(wpa-supplicant)) + (requirement (if dbus? + (cons 'dbus-system requirement) + requirement)) + (start #~(make-forkexec-constructor + (list (string-append #$wpa-supplicant + "/sbin/wpa_supplicant") + (string-append "-P" #$pid-file) + "-B" ;run in background + "-s" ;log to syslogd + #$@(if dbus? + #~("-u") + #~()) + #$@(if interface + #~((string-append "-i" #$interface)) + #~()) + #$@(if config-file + #~((string-append "-c" #$config-file)) + #~()) + #$@extra-options) + #:pid-file #$pid-file)) + (stop #~(make-kill-destructor)))))) (define wpa-supplicant-service-type (let ((config->package - (match-lambda - (($ <wpa-supplicant-configuration> wpa-supplicant) - (list wpa-supplicant))))) + (lambda (config) + (list (wpa-supplicant-configuration-wpa-supplicant config))))) (service-type (name 'wpa-supplicant) (extensions (list (service-extension shepherd-root-service-type @@ -1621,41 +1623,38 @@ simulation." (package openvswitch-configuration-package (default openvswitch))) -(define openvswitch-activation - (match-lambda - (($ <openvswitch-configuration> package) - (let ((ovsdb-tool (file-append package "/bin/ovsdb-tool"))) - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (guix build utils)) - (mkdir-p "/var/run/openvswitch") - (mkdir-p "/var/lib/openvswitch") - (let ((conf.db "/var/lib/openvswitch/conf.db")) - (unless (file-exists? conf.db) - (system* #$ovsdb-tool "create" conf.db))))))))) - -(define openvswitch-shepherd-service - (match-lambda - (($ <openvswitch-configuration> package) - (let ((ovsdb-server (file-append package "/sbin/ovsdb-server")) - (ovs-vswitchd (file-append package "/sbin/ovs-vswitchd"))) - (list - (shepherd-service - (provision '(ovsdb)) - (documentation "Run the Open vSwitch database server.") - (start #~(make-forkexec-constructor - (list #$ovsdb-server "--pidfile" - "--remote=punix:/var/run/openvswitch/db.sock") - #:pid-file "/var/run/openvswitch/ovsdb-server.pid")) - (stop #~(make-kill-destructor))) - (shepherd-service - (provision '(vswitchd)) - (requirement '(ovsdb)) - (documentation "Run the Open vSwitch daemon.") - (start #~(make-forkexec-constructor - (list #$ovs-vswitchd "--pidfile") - #:pid-file "/var/run/openvswitch/ovs-vswitchd.pid")) - (stop #~(make-kill-destructor)))))))) +(define (openvswitch-activation config) + (let ((ovsdb-tool (file-append (openvswitch-configuration-package config) + "/bin/ovsdb-tool"))) + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/run/openvswitch") + (mkdir-p "/var/lib/openvswitch") + (let ((conf.db "/var/lib/openvswitch/conf.db")) + (unless (file-exists? conf.db) + (system* #$ovsdb-tool "create" conf.db))))))) + +(define (openvswitch-shepherd-service config) + (let* ((package (openvswitch-configuration-package config)) + (ovsdb-server (file-append package "/sbin/ovsdb-server")) + (ovs-vswitchd (file-append package "/sbin/ovs-vswitchd"))) + (list (shepherd-service + (provision '(ovsdb)) + (documentation "Run the Open vSwitch database server.") + (start #~(make-forkexec-constructor + (list #$ovsdb-server "--pidfile" + "--remote=punix:/var/run/openvswitch/db.sock") + #:pid-file "/var/run/openvswitch/ovsdb-server.pid")) + (stop #~(make-kill-destructor))) + (shepherd-service + (provision '(vswitchd)) + (requirement '(ovsdb)) + (documentation "Run the Open vSwitch daemon.") + (start #~(make-forkexec-constructor + (list #$ovs-vswitchd "--pidfile") + #:pid-file "/var/run/openvswitch/ovs-vswitchd.pid")) + (stop #~(make-kill-destructor)))))) (define openvswitch-service-type (service-type @@ -1695,20 +1694,20 @@ COMMIT (ipv6-rules iptables-configuration-ipv6-rules (default %iptables-accept-all-rules))) -(define iptables-shepherd-service - (match-lambda - (($ <iptables-configuration> iptables ipv4-rules ipv6-rules) - (let ((iptables-restore (file-append iptables "/sbin/iptables-restore")) - (ip6tables-restore (file-append iptables "/sbin/ip6tables-restore"))) - (shepherd-service - (documentation "Packet filtering framework") - (provision '(iptables)) - (start #~(lambda _ - (invoke #$iptables-restore #$ipv4-rules) - (invoke #$ip6tables-restore #$ipv6-rules))) - (stop #~(lambda _ - (invoke #$iptables-restore #$%iptables-accept-all-rules) - (invoke #$ip6tables-restore #$%iptables-accept-all-rules)))))))) +(define (iptables-shepherd-service config) + (match-record config <iptables-configuration> + (iptables ipv4-rules ipv6-rules) + (let ((iptables-restore (file-append iptables "/sbin/iptables-restore")) + (ip6tables-restore (file-append iptables "/sbin/ip6tables-restore"))) + (shepherd-service + (documentation "Packet filtering framework") + (provision '(iptables)) + (start #~(lambda _ + (invoke #$iptables-restore #$ipv4-rules) + (invoke #$ip6tables-restore #$ipv6-rules))) + (stop #~(lambda _ + (invoke #$iptables-restore #$%iptables-accept-all-rules) + (invoke #$ip6tables-restore #$%iptables-accept-all-rules))))))) (define iptables-service-type (service-type @@ -1767,17 +1766,17 @@ table inet filter { (ruleset nftables-configuration-ruleset ; file-like object (default %default-nftables-ruleset))) -(define nftables-shepherd-service - (match-lambda - (($ <nftables-configuration> package ruleset) - (let ((nft (file-append package "/sbin/nft"))) - (shepherd-service - (documentation "Packet filtering and classification") - (provision '(nftables)) - (start #~(lambda _ - (invoke #$nft "--file" #$ruleset))) - (stop #~(lambda _ - (invoke #$nft "flush" "ruleset")))))))) +(define (nftables-shepherd-service config) + (match-record config <nftables-configuration> + (package ruleset) + (let ((nft (file-append package "/sbin/nft"))) + (shepherd-service + (documentation "Packet filtering and classification") + (provision '(nftables)) + (start #~(lambda _ + (invoke #$nft "--file" #$ruleset))) + (stop #~(lambda _ + (invoke #$nft "flush" "ruleset"))))))) (define nftables-service-type (service-type @@ -2150,23 +2149,22 @@ of the IPFS peer-to-peer storage network."))) (config-file keepalived-configuration-config-file ;file-like (default #f))) -(define keepalived-shepherd-service - (match-lambda - (($ <keepalived-configuration> keepalived config-file) - (list - (shepherd-service - (provision '(keepalived)) - (documentation "Run keepalived.") - (requirement '(loopback)) - (start #~(make-forkexec-constructor - (list (string-append #$keepalived "/sbin/keepalived") - "--dont-fork" "--log-console" "--log-detail" - "--pid=/var/run/keepalived.pid" - (string-append "--use-file=" #$config-file)) - #:pid-file "/var/run/keepalived.pid" - #:log-file "/var/log/keepalived.log")) - (respawn? #f) - (stop #~(make-kill-destructor))))))) +(define (keepalived-shepherd-service config) + (match-record config <keepalived-configuration> + (keepalived config-file) + (list (shepherd-service + (provision '(keepalived)) + (documentation "Run keepalived.") + (requirement '(loopback)) + (start #~(make-forkexec-constructor + (list (string-append #$keepalived "/sbin/keepalived") + "--dont-fork" "--log-console" "--log-detail" + "--pid=/var/run/keepalived.pid" + (string-append "--use-file=" #$config-file)) + #:pid-file "/var/run/keepalived.pid" + #:log-file "/var/log/keepalived.log")) + (respawn? #f) + (stop #~(make-kill-destructor)))))) (define %keepalived-log-rotation (list (log-rotation diff --git a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl new file mode 100644 index 0000000000..7bcac8ded0 --- /dev/null +++ b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl @@ -0,0 +1,75 @@ +;; This is an operating-system configuration template of a +;; 64-bit minimal system for a Raspberry Pi with an NFS root file-system. + +;; It neither installs firmware nor device-tree files for the Raspberry Pi. +;; It just assumes them to be existing in boot/efi in the same way that some +;; UEFI firmware with ACPI data is usually assumed to be existing on PCs. + +;; It expects the boot/efi directory to be served via TFTP and the root +;; file-system to be served via NFS. See the grub-efi-netboot-bootloader +;; description in the manual for more details. + +(use-modules (gnu) + (gnu artwork) + (gnu system nss)) +(use-service-modules admin + avahi + networking + ssh) +(use-package-modules certs + linux + raspberry-pi + ssh) + +(define %my-public-key + (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub"))) + +(define-public raspberry-pi-64-nfs-root + (operating-system + (host-name "raspberrypi-guix") + (timezone "Europe/Berlin") + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader-chain-raspi-64) + (targets (list "/boot/efi")) + (theme (grub-theme + (resolution '(1920 . 1080)) + (image (file-append + %artwork-repository + "/grub/GuixSD-fully-black-16-9.svg")))))) + (kernel-arguments '("ip=dhcp")) + (kernel (customize-linux #:linux linux-libre-arm64-generic + #:extra-version "arm64-generic-netboot" + #:configs '("CONFIG_NFS_SWAP=y" + "CONFIG_USB_USBNET=y" + "CONFIG_USB_LAN78XX=y" + "CONFIG_USB_NET_SMSC95XX=y"))) + (initrd-modules '()) + (file-systems (cons* (file-system + (mount-point "/") + (type "nfs") + (device ":/export/raspberrypi/guix") + (options "addr=10.20.30.40,vers=4.1")) + %base-file-systems)) + (swap-devices (list (swap-space + (target "/run/swapfile")))) + (users (cons* (user-account + (name "pi") + (group "users") + (supplementary-groups '("wheel" "netdev" "audio" "video")) + (home-directory "/home/pi")) + %base-user-accounts)) + (packages (cons* nss-certs + openssh + %base-packages)) + (services (cons* (service avahi-service-type) + (service dhcp-client-service-type) + (service ntp-service-type) + (service openssh-service-type + (openssh-configuration + (x11-forwarding? #t) + (authorized-keys + `(("pi" ,%my-public-key))))) + %base-services)) + (name-service-switch %mdns-host-lookup-nss))) + +raspberry-pi-64-nfs-root diff --git a/gnu/system/examples/raspberry-pi-64.tmpl b/gnu/system/examples/raspberry-pi-64.tmpl new file mode 100644 index 0000000000..7d2638dd80 --- /dev/null +++ b/gnu/system/examples/raspberry-pi-64.tmpl @@ -0,0 +1,79 @@ +;; This is an operating-system configuration template of a +;; 64-bit minimal system for a Raspberry Pi with local storage. + +;; It neither installs firmware nor device-tree files for the Raspberry Pi. +;; It just assumes them to be existing in boot/efi in the same way that some +;; UEFI firmware with ACPI data is usually assumed to be existing on PCs. + +;; It expects the boot-partition to be mounted as boot/efi in the same way +;; as it is usually expeted on PCs with UEFI firmware. + +(use-modules (gnu) + (gnu artwork) + (gnu system nss)) +(use-service-modules admin + avahi + networking + ssh) +(use-package-modules certs + linux + raspberry-pi + ssh) + +(define %my-public-key + (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub"))) + +(define-public raspberry-pi-64 + (operating-system + (host-name "raspberrypi-guix") + (timezone "Europe/Berlin") + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader-chain-raspi-64) + (targets (list "/boot/efi")) + (theme (grub-theme + (resolution '(1920 . 1080)) + (image (file-append + %artwork-repository + "/grub/GuixSD-fully-black-16-9.svg")))))) + (kernel (customize-linux #:linux linux-libre-arm64-generic + ;; It is possible to use a specific defconfig + ;; file, for example the "bcmrpi3_defconfig" with + ;; the variable shown below. Unfortunately the + ;; kernel built from the linux-libre sources with + ;; this defconfig file does not boot. + ;;#:extra-version "gnu-bcmrpi3" + ;;#:defconfig %bcmrpi3-defconfig + )) + (initrd-modules '()) + (file-systems (cons* (file-system + (mount-point "/") + (type "ext4") + (device (file-system-label "Guix"))) + (file-system + (mount-point "/boot/efi") + (type "vfat") + (device (file-system-label "EFI"))) + %base-file-systems)) + (swap-devices (list (swap-space + (target "/run/swapfile")))) + (users (cons* (user-account + (name "pi") + (group "users") + (supplementary-groups '("wheel" "netdev" "audio" "video")) + (home-directory "/home/pi")) + %base-user-accounts)) + (packages (cons* nss-certs + openssh + %base-packages)) + (services (cons* (service avahi-service-type) + (service dhcp-client-service-type) + (service ntp-service-type) + (service openssh-service-type + (openssh-configuration + (x11-forwarding? #t) + (authorized-keys + `(("pi" ,%my-public-key))))) + %base-services)) + (name-service-switch %mdns-host-lookup-nss))) + +raspberry-pi-64 diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm index 4bc32d9bd1..24fc6dbcae 100644 --- a/gnu/system/hurd.scm +++ b/gnu/system/hurd.scm @@ -75,28 +75,30 @@ info-reader)) (define %base-services/hurd - (list (service hurd-console-service-type - (hurd-console-configuration (hurd hurd))) - (service hurd-getty-service-type (hurd-getty-configuration - (tty "tty1"))) - (service hurd-getty-service-type (hurd-getty-configuration - (tty "tty2"))) - (service static-networking-service-type - (list %loopback-static-networking + (append (list (service hurd-console-service-type + (hurd-console-configuration (hurd hurd))) + (service static-networking-service-type + (list %loopback-static-networking - ;; QEMU user-mode networking. To get "eth0", you need - ;; QEMU to emulate a device for which Mach has an - ;; in-kernel driver, for instance with: - ;; --device rtl8139,netdev=net0 --netdev user,id=net0 - %qemu-static-networking)) - (syslog-service) - (service guix-service-type - (guix-configuration - (extra-options '("--disable-chroot" - "--disable-deduplication")))) - (service special-files-service-type - `(("/bin/sh" ,(file-append bash "/bin/sh")) - ("/usr/bin/env" ,(file-append coreutils "/bin/env")))))) + ;; QEMU user-mode networking. To get "eth0", you need + ;; QEMU to emulate a device for which Mach has an + ;; in-kernel driver, for instance with: + ;; --device rtl8139,netdev=net0 --netdev user,id=net0 + %qemu-static-networking)) + (service guix-service-type + (guix-configuration + (extra-options '("--disable-chroot" + "--disable-deduplication")))) + (service special-files-service-type + `(("/bin/sh" ,(file-append bash "/bin/sh")) + ("/usr/bin/env" ,(file-append coreutils + "/bin/env")))) + (syslog-service)) + (map (lambda (n) + (service hurd-getty-service-type + (hurd-getty-configuration + (tty (string-append "tty" (number->string n)))))) + (iota 6 1)))) (define %setuid-programs/hurd ;; Default set of setuid-root programs. diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm index 69080bcacb..c2fd55d48e 100644 --- a/gnu/system/linux-container.scm +++ b/gnu/system/linux-container.scm @@ -121,9 +121,7 @@ containerized OS. EXTRA-FILE-SYSTEMS is a list of file systems to add to OS." ;; different configs that are better suited to containers. (append (list console-font-service-type mingetty-service-type - agetty-service-type - ;; Reinstantiated below with smaller caches. - nscd-service-type) + agetty-service-type) (if shared-network? ;; Replace these with dummy-networking-service-type below. (list @@ -134,17 +132,13 @@ containerized OS. EXTRA-FILE-SYSTEMS is a list of file systems to add to OS." (list)))) (define services-to-add - (append - ;; Many Guix services depend on a 'networking' shepherd - ;; service, so make sure to provide a dummy 'networking' - ;; service when we are sure that networking is already set up - ;; in the host and can be used. That prevents double setup. - (if shared-network? - (list (service dummy-networking-service-type)) - '()) - (list - (nscd-service (nscd-configuration - (caches %nscd-container-caches)))))) + ;; Many Guix services depend on a 'networking' shepherd + ;; service, so make sure to provide a dummy 'networking' + ;; service when we are sure that networking is already set up + ;; in the host and can be used. That prevents double setup. + (if shared-network? + (list (service dummy-networking-service-type)) + '())) (operating-system (inherit os) @@ -155,7 +149,11 @@ containerized OS. EXTRA-FILE-SYSTEMS is a list of file systems to add to OS." (services (append (remove (lambda (service) (memq (service-kind service) services-to-drop)) - (operating-system-user-services os)) + (modify-services (operating-system-user-services os) + (nscd-service-type + config => (nscd-configuration + (inherit config) + (caches %nscd-container-caches))))) services-to-add)) (file-systems (append (map mapping->fs (if shared-network? diff --git a/guix/build-system/linux-module.scm b/guix/build-system/linux-module.scm index d6c369d65d..c1ddeaea10 100644 --- a/guix/build-system/linux-module.scm +++ b/guix/build-system/linux-module.scm @@ -66,7 +66,9 @@ (replace 'build (lambda _ (invoke "make" "modules_prepare"))) - (delete 'strip) ; faster + (delete 'strip) ;faster + (delete 'build-doc) ;costly and not useful here + (delete 'install-doc) (replace 'install (lambda* (#:key inputs #:allow-other-keys) (let ((out-lib-build (string-append #$output "/lib/modules/build"))) diff --git a/guix/build/kconfig.scm b/guix/build/kconfig.scm new file mode 100644 index 0000000000..d0189f558f --- /dev/null +++ b/guix/build/kconfig.scm @@ -0,0 +1,183 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix build kconfig) + #:use-module (ice-9 rdelim) + #:use-module (ice-9 regex) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (modify-defconfig + verify-config)) + +;; Commentary: +;; +;; Builder-side code to modify configurations for the Kconfig build system as +;; used by Linux and U-Boot. +;; +;; Code: + +(define (config-string->pair config-string) + "Parse a configuration string like \"CONFIG_EXAMPLE=m\" into a key-value pair. +An error is thrown for invalid configurations. + +\"CONFIG_A=y\" -> '(\"CONFIG_A\" . \"y\") +\"CONFIG_B=\\\"\\\"\" -> '(\"CONFIG_B\" . \"\\\"\\\"\") +\"CONFIG_C=\" -> '(\"CONFIG_C\" . \"\") +\"# CONFIG_E is not set\" -> '(\"CONFIG_E\" . #f) +\"CONFIG_D\" -> '(\"CONFIG_D\" . #f) +\"# Any comment\" -> '(#f . \"# Any comment\") +\"\" -> '(#f . \"\") +\"# CONFIG_E=y\" -> (error \"Invalid configuration\") +\"CONFIG_E is not set\" -> (error \"Invalid configuration\") +\"Anything else\" -> (error \"Invalid configuration\")" + (define config-regexp + (make-regexp + ;; (match:substring (string-match "=(.*)" "=") 1) returns "", but the + ;; pattern "=(.+)?" makes it return #f instead. From a "CONFIG_A=" we like + ;; to get "", which later emits "CONFIG_A=" again. + (string-append "^ *(#[\\t ]*)?(CONFIG_[a-zA-Z0-9_]+)([\\t ]*=" + "[\\t ]*(.*)|([\\t ]+is[\\t ]+not[\\t ]+set))?$"))) + + (define config-comment-regexp + (make-regexp "^([\\t ]*(#.*)?)$")) + + (let ((match (regexp-exec config-regexp (string-trim-right config-string)))) + (if match + (let* ((comment (match:substring match 1)) + (key (match:substring match 2)) + (unset (match:substring match 5)) + (value (and (not comment) + (not unset) + (match:substring match 4)))) + (if (eq? (not comment) (not unset)) + ;; The key is uncommented and set or commented and unset. + (cons key value) + ;; The key is set or unset ambigiously. + (error (format #f "invalid configuration, did you mean \"~a\"?" + (pair->config-string (cons key #f))) + config-string))) + ;; This is not a valid or ambigious config-string, but maybe a + ;; comment. + (if (regexp-exec config-comment-regexp config-string) + (cons #f config-string) ;keep valid comments + (error "Invalid configuration" config-string))))) + +(define (pair->config-string pair) + "Convert a PAIR back to a config-string." + (let* ((key (first pair)) + (value (cdr pair))) + (if (string? key) + (if (string? value) + (string-append key "=" value) + (string-append "# " key " is not set")) + value))) + +(define (defconfig->alist defconfig) + "Convert the content of a DEFCONFIG (or .config) file into an alist." + (with-input-from-file defconfig + (lambda () + (let loop ((alist '()) + (line (read-line))) + (if (eof-object? line) + ;; Building the alist is done, now check for duplicates. + ;; Note: the filter invocation is used to remove comments. + (let loop ((keys (map first (filter first alist))) + (duplicates '())) + (if (null? keys) + ;; The search for duplicates is done. + ;; Return the alist or throw an error on duplicates. + (if (null? duplicates) + alist + (error + (format #f "duplicate configurations in ~a" defconfig) + duplicates)) + ;; Continue the search for duplicates. + (loop (cdr keys) + (if (member (first keys) (cdr keys)) + (cons (first keys) duplicates) + duplicates)))) + ;; Build the alist. + (loop (cons (config-string->pair line) alist) + (read-line))))))) + +(define (modify-defconfig defconfig configs) + "This function can modify a given DEFCONFIG (or .config) file by adding, +changing or removing the list of strings in CONFIGS. This allows customization +of Kconfig based projects like the kernel Linux or the bootloader 'Das U-Boot'. + +These are examples for CONFIGS to add, change or remove configurations to/from +DEFCONFIG: + +'(\"CONFIG_A=\\\"a\\\"\" + \"CONFIG_B=0\" + \"CONFIG_C=y\" + \"CONFIG_D=m\" + \"CONFIG_E=\" + \"# CONFIG_G is not set\" + ;; For convenience this abbrevation can be used for not set configurations. + \"CONFIG_F\") + +Instead of a list, CONFIGS can be a string with one configuration per line." + (let* (;; Split the configs into a list of single configurations. Both a + ;; string and or a list of strings is supported, each with newlines + ;; to separate configurations. + (config-pairs (map config-string->pair + (append-map (cut string-split <> #\newline) + (if (string? configs) + (list configs) + configs)))) + ;; Generate a blocklist from all valid keys in config-pairs. + (blocklist (delete #f (map first config-pairs))) + ;; Generate an alist from the defconfig without the keys in blocklist. + (filtered-defconfig-pairs (remove (lambda (pair) + (member (first pair) blocklist)) + (defconfig->alist defconfig)))) + (with-output-to-file defconfig + (lambda () + (for-each (lambda (pair) + (display (pair->config-string pair)) + (newline)) + (append filtered-defconfig-pairs config-pairs)))))) + +(define (verify-config config defconfig) + "Verify that the CONFIG file contains all configurations from the DEFCONFIG +file. When the verification fails, raise an error with the mismatching keys +and their values." + (let* ((config-pairs (defconfig->alist config)) + (defconfig-pairs (defconfig->alist defconfig)) + (mismatching-pairs + (remove (lambda (pair) + ;; Remove all configurations, whose values are #f and + ;; whose keys are not in config-pairs, as not in + ;; config-pairs means unset, ... + (and (not (cdr pair)) + (not (assoc-ref config-pairs (first pair))))) + ;; ... from the defconfig-pairs different to config-pairs. + (lset-difference equal? + ;; Remove comments by filtering with first. + (filter first defconfig-pairs) + config-pairs)))) + (unless (null? mismatching-pairs) + (error (format #f "Mismatching configurations in ~a and ~a" + config defconfig) + (map (lambda (mismatching-pair) + (let* ((key (first mismatching-pair)) + (defconfig-value (cdr mismatching-pair)) + (config-value (assoc-ref config-pairs key))) + (cons key (list (list config-value defconfig-value))))) + mismatching-pairs))))) diff --git a/guix/import/cran.scm b/guix/import/cran.scm index 286a4c21b9..a02e746417 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -410,6 +410,7 @@ empty list when the FIELD cannot be found." ("tcl/tk" "tcl") ("booktabs" "texlive-booktabs") ("freetype2" "freetype") + ("sqlite3" "sqlite") (_ sysname))) (define cran-guix-name (cut guix-name "r-" <>)) diff --git a/guix/records.scm b/guix/records.scm index ed94c83dac..13463647c8 100644 --- a/guix/records.scm +++ b/guix/records.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. @@ -104,6 +104,10 @@ error-reporting purposes." (() #t))))))) +(define-syntax map-fields + (lambda (x) + (syntax-violation 'map-fields "bad use of syntactic keyword" x x))) + (define-syntax-parameter this-record (lambda (s) "Return the record being defined. This macro may only be used in the @@ -325,6 +329,15 @@ This expression returns a new object equal to 'x' except for its 'name' field and its 'loc' field---the latter is marked as \"innate\", so it is not inherited." + (define (rtd-identifier type) + ;; Return an identifier derived from TYPE to name its record type + ;; descriptor (RTD). + (let ((type-name (syntax->datum type))) + (datum->syntax + type + (string->symbol + (string-append "% " (symbol->string type-name) " rtd"))))) + (define (field-default-value s) (syntax-case s (default) ((field (default val) _ ...) @@ -428,10 +441,31 @@ inherited." field))) field-spec))) #`(begin - (define-record-type type + (define-record-type #,(rtd-identifier #'type) (ctor field ...) pred field-spec* ...) + + ;; Rectify the vtable type name... + (set-struct-vtable-name! #,(rtd-identifier #'type) 'type) + (cond-expand + (guile-3 + ;; ... and the record type name. + (struct-set! #,(rtd-identifier #'type) vtable-offset-user + 'type)) + (else #f)) + + (define-syntax type + (lambda (s) + "This macro lets us query record type info at +macro-expansion time." + (syntax-case s (map-fields) + ((_ map-fields macro) + #'(macro (field ...))) + (id + (identifier? #'id) + #'#,(rtd-identifier #'type))))) + (define #,(current-abi-identifier #'type) #,cookie) @@ -535,19 +569,50 @@ pairs. Stop upon an empty line (after consuming it) or EOF." (else (error "unmatched line" line)))))))) + +;;; +;;; Pattern matching. +;;; + +(define-syntax lookup-field + (lambda (s) + "Look up FIELD in the given list and return an expression that represents +its offset in the record. Raise a syntax violation when the field is not +found." + (syntax-case s () + ((_ field offset ()) + (syntax-violation 'lookup-field "unknown record type field" + s #'field)) + ((_ field offset (head tail ...)) + (free-identifier=? #'field #'head) + #'offset) + ((_ field offset (_ tail ...)) + #'(lookup-field field (+ 1 offset) (tail ...)))))) + +(define-syntax match-record-inner + (lambda (s) + (syntax-case s () + ((_ record type (field rest ...) body ...) + #`(let-syntax ((field-offset (syntax-rules () + ((_ f) + (lookup-field field 0 f))))) + (let* ((offset (type map-fields field-offset)) + (field (struct-ref record offset))) + (match-record-inner record type (rest ...) body ...)))) + ((_ record type () body ...) + #'(begin body ...))))) + (define-syntax match-record (syntax-rules () "Bind each FIELD of a RECORD of the given TYPE to it's FIELD name. +The order in which fields appear does not matter. A syntax error is raised if +an unknown field is queried. + The current implementation does not support thunked and delayed fields." - ((_ record type (field fields ...) body ...) + ;; TODO support thunked and delayed fields + ((_ record type (fields ...) body ...) (if (eq? (struct-vtable record) type) - ;; TODO compute indices and report wrong-field-name errors at - ;; expansion time - ;; TODO support thunked and delayed fields - (let ((field ((record-accessor type 'field) record))) - (match-record record type (fields ...) body ...)) - (throw 'wrong-type-arg record))) - ((_ record type () body ...) - (begin body ...)))) + (match-record-inner record type (fields ...) body ...) + (throw 'wrong-type-arg record))))) ;;; records.scm ends here diff --git a/tests/records.scm b/tests/records.scm index 00c58b0736..8504c8d5a5 100644 --- a/tests/records.scm +++ b/tests/records.scm @@ -528,4 +528,37 @@ Description: 1st line, '("a" "b" "c") '("a"))) +(test-equal "match-record, simple" + '((1 2) (a b)) + (let () + (define-record-type* <foo> foo make-foo + foo? + (first foo-first (default 1)) + (second foo-second)) + + (list (match-record (foo (second 2)) <foo> + (first second) + (list first second)) + (match-record (foo (first 'a) (second 'b)) <foo> + (second first) + (list first second))))) + +(test-equal "match-record, unknown field" + 'syntax-error + (catch 'syntax-error + (lambda () + (eval '(begin + (use-modules (guix records)) + + (define-record-type* <foo> foo make-foo + foo? + (first foo-first (default 1)) + (second foo-second)) + + (match-record (foo (second 2)) <foo> + (one two) + #f)) + (make-fresh-user-module))) + (lambda (key . args) key))) + (test-end) |