diff options
author | Christopher Baines <mail@cbaines.net> | 2024-04-09 16:44:22 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2024-04-09 16:46:34 +0100 |
commit | 6cae1db889f62051580d5a365f62585412a53a8c (patch) | |
tree | 4d3db074d50ca3e2109cced17bec77f207a0c1fd /gnu | |
parent | 410e699e0933653e69d03a4cdadf11854c6723f4 (diff) | |
parent | 35e1d9247e39f3c91512cf3d9ef1467962389e35 (diff) |
Merge remote-tracking branch 'savannah/master' into mesa-updates
Change-Id: Iad185e2ced97067b3dff8fd722435a6c5e2c00e5
Diffstat (limited to 'gnu')
130 files changed, 6242 insertions, 2114 deletions
diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm index ba26fc7c76..b22cc71305 100644 --- a/gnu/installer/newt/network.scm +++ b/gnu/installer/newt/network.scm @@ -127,8 +127,8 @@ FULL-VALUE tentatives, spaced by 1 second." (lambda _ #f)) (alarm 3)) (lambda () - (or (url-alive? "https://ci.guix.gnu.org") - (url-alive? "https://bordeaux.guix.gnu.org"))) + (or (url-alive? "https://bordeaux.guix.gnu.org") + (url-alive? "https://ci.guix.gnu.org"))) (lambda () (alarm 0)))) diff --git a/gnu/local.mk b/gnu/local.mk index f8d20e1d53..d60436f4dd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -49,7 +49,7 @@ # Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> # Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de> # Copyright © 2022 Remco van 't Veer <remco@remworks.net> -# Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com> +# Copyright © 2022, 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com> # Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com> # Copyright © 2022 muradm <mail@muradm.net> # Copyright © 2022 Hilton Chain <hako@ultrarare.space> @@ -609,6 +609,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/sml.scm \ %D%/packages/solidity.scm \ %D%/packages/sourcehut.scm \ + %D%/packages/specifications.scm \ %D%/packages/speech.scm \ %D%/packages/sphinx.scm \ %D%/packages/spice.scm \ @@ -1195,6 +1196,7 @@ dist_patch_DATA = \ %D%/packages/patches/ffmpeg-jami-libopusdec-enable-FEC.patch \ %D%/packages/patches/ffmpeg-jami-libopusenc-enable-FEC.patch \ %D%/packages/patches/ffmpeg-jami-libopusenc-reload-packet-loss-at-encode.patch \ + %D%/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch \ %D%/packages/patches/ffmpeg-jami-remove-mjpeg-log.patch \ %D%/packages/patches/ffmpeg-jami-screen-sharing-x11-fix.patch \ %D%/packages/patches/fifengine-boost-compat.patch \ @@ -1434,6 +1436,7 @@ dist_patch_DATA = \ %D%/packages/patches/gtk4-respect-GUIX_GTK4_PATH.patch \ %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \ %D%/packages/patches/gtksourceview-2-add-default-directory.patch \ + %D%/packages/patches/gwenview-kimageannotator.patch \ %D%/packages/patches/gzdoom-search-in-installed-share.patch \ %D%/packages/patches/gzdoom-find-system-libgme.patch \ %D%/packages/patches/hdf4-reproducibility.patch \ @@ -1490,8 +1493,9 @@ dist_patch_DATA = \ %D%/packages/patches/itk-snap-alt-glibc-compat.patch \ %D%/packages/patches/jami-disable-integration-tests.patch \ %D%/packages/patches/jami-libjami-headers-search.patch \ - %D%/packages/patches/jami-qml-tests-discovery.patch \ + %D%/packages/patches/jami-qwindowkit.patch \ %D%/packages/patches/jami-skip-tests-requiring-internet.patch \ + %D%/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch \ %D%/packages/patches/jami-unbundle-dependencies.patch \ %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch \ %D%/packages/patches/jamvm-1.5.1-armv7-support.patch \ @@ -1572,6 +1576,7 @@ dist_patch_DATA = \ %D%/packages/patches/liba52-use-mtune-not-mcpu.patch \ %D%/packages/patches/libaio-32bit-test.patch \ %D%/packages/patches/libaio-riscv-test5.patch \ + %D%/packages/patches/libarchive-remove-potential-backdoor.patch \ %D%/packages/patches/libbase-fix-includes.patch \ %D%/packages/patches/libbase-use-own-logging.patch \ %D%/packages/patches/libbonobo-activation-test-race.patch \ @@ -1762,7 +1767,6 @@ dist_patch_DATA = \ %D%/packages/patches/openboardview-use-system-imgui.patch \ %D%/packages/patches/openboardview-use-system-mpc.patch \ %D%/packages/patches/openbox-python3.patch \ - %D%/packages/patches/opencolorio-fix-build-with-gcc11.patch \ %D%/packages/patches/openjdk-currency-time-bomb.patch \ %D%/packages/patches/openjdk-currency-time-bomb2.patch \ %D%/packages/patches/openjdk-9-pointer-comparison.patch \ @@ -1773,7 +1777,6 @@ dist_patch_DATA = \ %D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch \ %D%/packages/patches/openjdk-21-fix-rpath.patch \ %D%/packages/patches/openmpi-mtl-priorities.patch \ - %D%/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch \ %D%/packages/patches/openssh-trust-guix-store-directory.patch \ %D%/packages/patches/openresolv-restartcmd-guix.patch \ %D%/packages/patches/openrgb-unbundle-hueplusplus.patch \ @@ -1961,10 +1964,12 @@ dist_patch_DATA = \ %D%/packages/patches/qemu-fix-agent-paths.patch \ %D%/packages/patches/qrcodegen-cpp-make-install.patch \ %D%/packages/patches/qtbase-absolute-runpath.patch \ + %D%/packages/patches/qtbase-find-tools-in-PATH.patch \ + %D%/packages/patches/qtbase-qmake-fix-includedir.patch \ + %D%/packages/patches/qtbase-qmlimportscanner-qml-import-path.patch \ %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch \ %D%/packages/patches/qtbase-qmake-use-libname.patch \ %D%/packages/patches/qtbase-5-use-TZDIR.patch \ - %D%/packages/patches/qtbase-use-TZDIR.patch \ %D%/packages/patches/qtscript-disable-tests.patch \ %D%/packages/patches/quagga-reproducible-build.patch \ %D%/packages/patches/quickswitch-fix-dmenu-check.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 1a48326059..4affcc179c 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -64,6 +64,7 @@ ;;; Copyright © 2023 Jaeme Sifat <jaeme@runbox.com> ;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr> ;;; Copyright © 2023 Tomás Ortín Fernández <tomasortin@mailbox.org> +;;; Copyright © 2024 dan <i@dan.games> ;;; ;;; This file is part of GNU Guix. ;;; @@ -99,6 +100,7 @@ #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix platform) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages acl) @@ -135,6 +137,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-compression) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages groff) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) @@ -5119,7 +5122,12 @@ Netgear devices.") version ".tar.gz")) (sha256 (base32 - "1y4qmc8i7zg2cqrmz38dxbsj8bb2h7jm1zz23gqcdygkgaymwddw")))) + "09prpw20ps6cd8qr63glbcip3jrvnnic0m7j1q02g8hjnw8z50ld")) + (snippet + ;; The 'mkdate' script generates a new 'versdate.h' header + ;; containing the build date. That makes builds + ;; non-reproducible so remove it. + #~(delete-file "mkdate")))) (build-system gnu-build-system) (arguments (list @@ -5160,56 +5168,121 @@ disk utilization, priority, username, state, and exit code.") `((release-monitoring-url . "https://www.atoptool.nl/downloadatop.php"))) (license license:gpl2+))) -;; TODO: Unvendor u-root (pkg: forth, golang, testutil). -(define fiano - (package - (name "fiano") - (version "5.0.0") +;; TODO: Pack u-root for: forth, and some tests. +(define-public fiano + (package + (name "fiano") + ;; The versioning count has been changed since commit <2021-12-01> + ;; 1eb599564549691603589219c2be34f966a32ff1. + (version "1.2.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/linuxboot/fiano.git") (commit (string-append "v" version)))) - (file-name (string-append name "-" version "-checkout")) + (file-name (git-file-name name version)) (sha256 (base32 - "03ihdwwhb7g6bihx141cn0924sjs5ps6q3ps58pk1cg0g0srrr9h")) - (modules '((guix build utils))) - (snippet - '(begin - (delete-file-recursively "vendor/golang.org") - (delete-file-recursively "vendor/github.com") - #t)))) + "0s5fx4lhgb68qbx4ql34rcm678qdf0c4xl97bgc8dx9xwwqifza1")))) (build-system go-build-system) (arguments - `(#:import-path "github.com/linuxboot/fiano" - #:unpack-path "github.com/linuxboot/fiano")) - (native-inputs - `()) + (list + #:install-source? #f + #:import-path "github.com/linuxboot/fiano" + #:unpack-path "github.com/linuxboot/fiano" + #:phases + #~(modify-phases %standard-phases + ;; XXX: Replace this part when it's implemented in go-build-system. + (replace 'build + (lambda* (#:key import-path #:allow-other-keys) + (for-each + (lambda (cmd) + (invoke "go" "build" "-v" "-x" "-ldflags=-s -w" "-trimpath" + (string-append import-path "/cmds/" cmd))) + (list "cbfs" + "create-ffs" + ;; TODO: Not packed yet in guix, long jorney: + ;; - github.com/tjfoc/gmsm + ;; + ;; "fittool" + "fmap" + "fspinfo" + "glzma" + "guid2english" + "microcode" + "utk")))) + (replace 'check + (lambda* (#:key import-path tests? #:allow-other-keys) + (when tests? + (for-each + (lambda (dir) + (invoke "go" "test" "-v" + (string-append import-path dir "/..."))) + (list "/pkg/bytes" + ;; TODO: Not packed yet in Guix, long jorney: + ;; - github.com/jedib0t + ;; + ;; "/pkg/amd" + "/pkg/cbfs" + "/pkg/compression" + "/pkg/fmap" + "/pkg/fsp" + "/pkg/guid" + "/pkg/guid2english" + ;; TODO: Not packed yet in Guix, long jorney: + ;; - github.com/tjfoc/gmsm + ;; + ;; "/pkg/intel" + "/pkg/knownguids" + "/pkg/log" + "/pkg/uefi" + "/pkg/unicode" + "/pkg/utk" + "/pkg/visitors" + "/cmds/cbfs" + "/cmds/create-ffs" + ;; TODO: Not packed yet in Guix, long jorney: + ;; - github.com/u-root/u-root + ;; + ;; "/cmds/fmap" + ;; "/cmds/fittool" + "/cmds/fspinfo" + "/cmds/glzma" + "/cmds/guid2english" + "/cmds/microcode" + "/cmds/utk"))))) + (replace 'install + (lambda _ + (let ((bindir (string-append #$output "/bin"))) + (for-each + (lambda (cmd) + (install-file cmd bindir)) + (list "cbfs" + "create-ffs" + ;; "fittool" + "fmap" + "fspinfo" + "glzma" + "guid2english" + "microcode" + "utk")))))))) (inputs - `(("go-golang-org-x-text" ,go-golang-org-x-text) - ("go-github-com-ulikunitz-xz" ,go-github-com-ulikunitz-xz))) - (synopsis "UEFI image editor") - (description "This package provides a command-line UEFI image editor.") + (list go-github-com-dustin-go-humanize + go-github-com-hashicorp-errwrap + go-github-com-hashicorp-go-multierror + go-github-com-jessevdk-go-flags + go-github-com-pierrec-lz4 + go-github-com-spf13-pflag + go-github-com-ulikunitz-xz + go-golang-org-x-text)) (home-page "https://github.com/linuxboot/fiano") + (synopsis "UEFI image editor") + (description + "This package provides a command-line UEFI image editor, including cbfs, +create-ffs, fmap, fspinfo, glzma, guid2english, microcode and utk CLI +utilities.") (license license:bsd-3))) -(define-public fiano-utk - (package - (inherit fiano) - (name "fiano-utk") - (arguments - `(#:import-path "github.com/linuxboot/fiano/cmds/utk" - #:unpack-path "github.com/linuxboot/fiano")))) - -(define-public fiano-fmap - (package - (inherit fiano) - (name "fiano-fmap") - (arguments - `(#:import-path "github.com/linuxboot/fiano/cmds/fmap" - #:unpack-path "github.com/linuxboot/fiano")))) - (define-public novena-eeprom (package (name "novena-eeprom") @@ -5462,7 +5535,14 @@ it won't take longer to install 15 machines than it would to install just 2.") (man1 (string-append man "/man1")) (man5 (string-append man "/man5")) (man7 (string-append man "/man7")) - (release "target/release") + (release ,(if (%current-target-system) + (string-append + "target/" + (platform-rust-target + (lookup-platform-by-target + (%current-target-system))) + "/release") + "target/release")) (greetd-bin (string-append release "/greetd")) (agreety-bin (string-append release "/agreety"))) (install-file greetd-bin sbin) @@ -5472,8 +5552,10 @@ it won't take longer to install 15 machines than it would to install just 2.") (install-file "greetd.5" man5) (install-file "greetd-ipc.7" man7) (install-file "agreety.1" man1)))))))) + (inputs + (list linux-pam)) (native-inputs - (list linux-pam scdoc)) + (list scdoc)) (synopsis "Minimal and flexible login manager daemon") (description "greetd is a minimal and flexible login manager daemon diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 9335cd6e18..d63822a263 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -414,7 +414,6 @@ precision.") glpk-4 gmp gsl - lapack libjpeg-turbo libpng libsamplerate @@ -426,6 +425,7 @@ precision.") mpfi mpfr ntl + openblas pari-gp perl tcsh)) diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm index 902bc31faf..b6f37732b4 100644 --- a/gnu/packages/android.scm +++ b/gnu/packages/android.scm @@ -50,6 +50,7 @@ #:use-module (gnu packages gcc) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages image) #:use-module (gnu packages java) #:use-module (gnu packages linux) diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm index afe02736ad..0b56c8b088 100644 --- a/gnu/packages/apl.scm +++ b/gnu/packages/apl.scm @@ -56,7 +56,7 @@ (home-page "https://www.gnu.org/software/apl/") (inputs (list gettext-minimal - lapack + openblas pcre2 readline sqlite)) diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index bde29f7990..6cd0bb7348 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -323,7 +323,6 @@ rendering of the atmosphere model and examine its properties. gsl gtkmm-3 hdf5 - lapack libpng libsigc++ libxml2 @@ -411,7 +410,6 @@ wide set of telescopes.") fftwf gfortran hdf5 - lapack ncurses openblas python @@ -1390,7 +1388,7 @@ deconvolution). Such post-processing is not performed by Stackistry.") qtmultimedia-5 qtpositioning qtscript - qtserialport + qtserialport-5 qttranslations qtwebengine-5 qxlsx-qt5 diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 501242a4cf..1a88698165 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -774,7 +774,7 @@ purposes developed at Queen Mary, University of London.") (define-public ardour (package (name "ardour") - (version "8.0") + (version "8.4") (source (origin (method git-fetch) (uri (git-reference @@ -791,7 +791,7 @@ purposes developed at Queen Mary, University of London.") namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }"))))) (sha256 (base32 - "1a2dbysd64njiw087ypkwlvr31qz3dvfaca55nq2bc4fmm71mgv4")) + "17gh1yaaby17zwx43h5v8dsrcznks9pn8jddc3wadq13b5x7zb7a")) (file-name (string-append name "-" version)))) (build-system waf-build-system) (arguments @@ -800,6 +800,7 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \ '(list "--cxx11" ;required by gtkmm "--optimize" "--no-phone-home" ;don't contact ardour.org + "--no-ytk" ;don't use bundled GTK2 "--freedesktop" ;build .desktop file "--test" ;build unit tests "--use-external-libs") ;use system libraries @@ -6368,7 +6369,7 @@ and DSD streams.") (define-public qpwgraph (package (name "qpwgraph") - (version "0.6.2") + (version "0.6.3") (source (origin (method git-fetch) (uri (git-reference @@ -6377,7 +6378,7 @@ and DSD streams.") (file-name (git-file-name name version)) (sha256 (base32 - "0185hxbwqxhjiyym0s7bmrm50f3p4bnvx92qqmgvg3zd7r1x8m8s")))) + "04ddcrc1r9il275jzcmr3wpii1is0s3hifc3a3h4aamxf1facdcr")))) (build-system cmake-build-system) (arguments (list #:tests? #f)) ; no tests diff --git a/gnu/packages/axoloti.scm b/gnu/packages/axoloti.scm index a36210b7d4..72802bcf15 100644 --- a/gnu/packages/axoloti.scm +++ b/gnu/packages/axoloti.scm @@ -85,110 +85,106 @@ (sha256 (base32 "1qffis277wshldr3i939b0r2x3a2mlr53samxqmr2nk1sfm2b4w9")) (modules '((guix build utils))) + ;; Remove pre-built Java binaries. (snippet - '(begin - ;; Remove pre-built Java binaries. - (delete-file-recursively "lib/") - #t)))) + '(delete-file-recursively "lib/")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no check target - #:modules ((guix build gnu-build-system) + (list + #:tests? #f ; no check target + #:modules '((guix build gnu-build-system) (guix build utils) (srfi srfi-1) (srfi srfi-26) (ice-9 match) (ice-9 regex)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-paths - (lambda* (#:key inputs #:allow-other-keys) - ;; prepare ChibiOS - (invoke "unzip" "-o" (assoc-ref inputs "chibios")) - (invoke "mv" "ChibiOS_2.6.9" "chibios") - (with-directory-excursion "chibios/ext" - (invoke "unzip" "-o" "fatfs-0.9-patched.zip")) - - ;; Remove source of non-determinism in ChibiOS - (substitute* "chibios/os/various/shell.c" - (("#ifdef __DATE__") "#if 0")) - - ;; Patch shell paths - (substitute* '("src/main/java/qcmds/QCmdCompileFirmware.java" - "src/main/java/qcmds/QCmdCompilePatch.java" - "src/main/java/qcmds/QCmdFlashDFU.java") - (("/bin/sh") (which "sh"))) - - ;; Override cross compiler base name - (substitute* "firmware/Makefile.patch" - (("arm-none-eabi-(gcc|g\\+\\+|objcopy|objdump)" tool) - (which tool))) - - ;; XXX: for some reason the whitespace substitution does not - ;; work, so we disable it. - (substitute* "firmware/Makefile.patch" - (("^BDIR=.*") "BDIR=${axoloti_home}/build\n")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + ;; prepare ChibiOS + (invoke "unzip" "-o" (assoc-ref inputs "chibios")) + (invoke "mv" "ChibiOS_2.6.9" "chibios") + (with-directory-excursion "chibios/ext" + (invoke "unzip" "-o" "fatfs-0.9-patched.zip")) - ;; Hardcode full path to compiler tools - (substitute* '("firmware/Makefile" - "firmware/flasher/Makefile" - "firmware/mounter/Makefile") - (("TRGT =.*") - (string-append "TRGT = " - (assoc-ref inputs "cross-toolchain") - "/bin/arm-none-eabi-\n"))) + ;; Remove source of non-determinism in ChibiOS + (substitute* "chibios/os/various/shell.c" + (("#ifdef __DATE__") "#if 0")) - ;; Hardcode path to "make" - (substitute* '("firmware/compile_firmware_linux.sh" - "firmware/compile_patch_linux.sh") - (("make") (which "make"))) + ;; Patch shell paths + (substitute* '("src/main/java/qcmds/QCmdCompileFirmware.java" + "src/main/java/qcmds/QCmdCompilePatch.java" + "src/main/java/qcmds/QCmdFlashDFU.java") + (("/bin/sh") (which "sh"))) - ;; Hardcode path to "dfu-util" - (substitute* "platform_linux/upload_fw_dfu.sh" - (("-f \"\\$\\{platformdir\\}/bin/dfu-util\"") "-z \"\"") - (("\\./dfu-util") (which "dfu-util"))) - #t)) - (delete 'configure) - (replace 'build - ;; Build Axoloti firmware with cross-compiler - (lambda _ - (with-directory-excursion "platform_linux" - (invoke "sh" "compile_firmware.sh")))) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (share (string-append out "/share/axoloti/")) - (doc (string-append share "doc")) - (dir (getcwd)) - (pats '("/doc/[^/]+$" - "/patches/[^/]+/[^/]+$" - "/objects/[^/]+/[^/]+$" - "/firmware/.+" - "/chibios/[^/]+$" - "/chibios/boards/ST_STM32F4_DISCOVERY/[^/]+$" - "/chibios/(ext|os|docs)/.+" - "/CMSIS/[^/]+/[^/]+$" - "/patch/[^/]+/[^/]+$" - "/[^/]+\\.txt$")) - (pattern (string-append - "(" (string-join - (map (cut string-append dir <>) - pats) - "|") ")")) - (files (find-files dir - (lambda (file stat) - (and (eq? 'regular (stat:type stat)) - (string-match pattern file)))))) - (for-each (lambda (file) - (install-file file - (string-append - share - (regexp-substitute - #f - (string-match dir (dirname file)) - 'pre 'post)))) - files) - #t)))))) + ;; Override cross compiler base name + (substitute* "firmware/Makefile.patch" + (("arm-none-eabi-(gcc|g\\+\\+|objcopy|objdump)" tool) + (which tool))) + + ;; XXX: for some reason the whitespace substitution does not + ;; work, so we disable it. + (substitute* "firmware/Makefile.patch" + (("^BDIR=.*") "BDIR=${axoloti_home}/build\n")) + + ;; Hardcode full path to compiler tools + (substitute* '("firmware/Makefile" + "firmware/flasher/Makefile" + "firmware/mounter/Makefile") + (("TRGT =.*") + (string-append "TRGT = " + (assoc-ref inputs "cross-toolchain") + "/bin/arm-none-eabi-\n"))) + + ;; Hardcode path to "make" + (substitute* '("firmware/compile_firmware_linux.sh" + "firmware/compile_patch_linux.sh") + (("make") (which "make"))) + + ;; Hardcode path to "dfu-util" + (substitute* "platform_linux/upload_fw_dfu.sh" + (("-f \"\\$\\{platformdir\\}/bin/dfu-util\"") "-z \"\"") + (("\\./dfu-util") (which "dfu-util"))))) + (delete 'configure) + (replace 'build + ;; Build Axoloti firmware with cross-compiler + (lambda _ + (with-directory-excursion "platform_linux" + (invoke "sh" "compile_firmware.sh")))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((share (string-append #$output "/share/axoloti/")) + (doc (string-append share "doc")) + (dir (getcwd)) + (pats '("/doc/[^/]+$" + "/patches/[^/]+/[^/]+$" + "/objects/[^/]+/[^/]+$" + "/firmware/.+" + "/chibios/[^/]+$" + "/chibios/boards/ST_STM32F4_DISCOVERY/[^/]+$" + "/chibios/(ext|os|docs)/.+" + "/CMSIS/[^/]+/[^/]+$" + "/patch/[^/]+/[^/]+$" + "/[^/]+\\.txt$")) + (pattern (string-append + "(" (string-join + (map (cut string-append dir <>) + pats) + "|") ")")) + (files (find-files dir + (lambda (file stat) + (and (eq? 'regular (stat:type stat)) + (string-match pattern file)))))) + (for-each (lambda (file) + (install-file file + (string-append + share + (regexp-substitute + #f + (string-match dir (dirname file)) + 'pre 'post)))) + files))))))) (inputs `(("chibios" ,(origin @@ -618,3 +614,324 @@ for sketching digital audio algorithms. The patches run on a standalone powerful microcontroller board: Axoloti Core.") (license (list license:gpl3+ ; the whole project and GUI license:bsd-3)))) ; the elfloader + +(define-public ksoloti-runtime + (package + (name "ksoloti-runtime") + (version "1.0.12-7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ksoloti/ksoloti") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "046jddrzlx1pdn53z0l8wf3rz7jsx7qn6l08ccw104gk996gr3gn")) + (modules '((guix build utils))) + ;; Remove pre-built Java binaries. + (snippet + '(delete-file-recursively "lib/")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ; no check target + #:modules '((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1) + (srfi srfi-26) + (ice-9 match) + (ice-9 regex)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + ;; prepare ChibiOS + (invoke "unzip" "-o" (assoc-ref inputs "chibios")) + (invoke "mv" "ChibiOS_2.6.9" "chibios") + (with-directory-excursion "chibios/ext" + (invoke "unzip" "-o" "fatfs-0.9-patched.zip")) + + ;; Remove source of non-determinism in ChibiOS + (substitute* "chibios/os/various/shell.c" + (("#ifdef __DATE__") "#if 0")) + + ;; Patch shell paths + (substitute* '("src/main/java/qcmds/QCmdCompileFirmware.java" + "src/main/java/qcmds/QCmdCompilePatch.java" + "src/main/java/qcmds/QCmdFlashDFU.java") + (("/bin/sh") (which "sh"))) + + ;; Override cross compiler base name + (substitute* '("firmware/Makefile.patch" + "firmware_axoloti_legacy/Makefile.patch") + (("arm-none-eabi-(gcc|g\\+\\+|objcopy|objdump|size)" tool) + (which tool))) + + ;; XXX: for some reason the whitespace substitution does not + ;; work, so we disable it. + (substitute* '("firmware/Makefile.patch" + "firmware_axoloti_legacy/Makefile.patch") + (("^BUILDDIR=.*") "BUILDDIR=${axoloti_libraries}/build\n")) + + ;; Hardcode full path to compiler tools + (substitute* '("firmware/Makefile" + "firmware/flasher/Makefile" + "firmware/mounter/Makefile" + "firmware_axoloti_legacy/Makefile" + "firmware_axoloti_legacy/flasher/Makefile" + "firmware_axoloti_legacy/mounter/Makefile") + (("TRGT =.*") + (string-append "TRGT = " + (assoc-ref inputs "cross-toolchain") + "/bin/arm-none-eabi-\n"))) + ;; XXX: Add missing entry for -size tool. This should be + ;; upstreamed. + (substitute* '("firmware_axoloti_legacy/flasher/Makefile" + "firmware_axoloti_legacy/mounter/Makefile") + (("^OD.*= \\$\\(TRGT\\)objdump" m) + (string-append m "\nSZ = $(TRGT)size"))) + + ;; Hardcode path to "make" + (substitute* '("firmware/compile_firmware_linux.sh" + "firmware/compile_patch_linux.sh" + "firmware_axoloti_legacy/compile_firmware_linux.sh" + "firmware_axoloti_legacy/compile_patch_linux.sh") + (("make") (which "make"))) + + ;; Hardcode path to "dfu-util" + (substitute* "platform_linux/upload_fw_dfu.sh" + (("-f \"\\$\\{platformdir\\}/bin/dfu-util\"") "-z \"\"") + (("\\./dfu-util") (which "dfu-util"))))) + (delete 'configure) + (replace 'build + ;; Build Axoloti firmware with cross-compiler + (lambda _ + (with-directory-excursion "platform_linux" + (substitute* "compile_firmware.sh" + (("^\"\\$\\{axoloti.*_firmware\\}/compile_firmware_linux.sh" m) + (string-append (which "bash") " " m))) + (invoke "sh" "compile_firmware.sh")))) + (replace 'install + (lambda* (#:key inputs #:allow-other-keys) + (let* ((share (string-append #$output "/share/ksoloti/")) + (doc (string-append share "doc")) + (dir (getcwd)) + (pats '("/doc/[^/]+$" + "/patches/[^/]+/[^/]+$" + "/objects/[^/]+/[^/]+$" + "/firmware/.+" + "/firmware_axoloti_legacy/.+" + "/chibios/[^/]+$" + "/chibios/boards/ST_STM32F4_DISCOVERY/[^/]+$" + "/chibios/(ext|os|docs)/.+" + "/CMSIS/[^/]+/[^/]+$" + "/patch/[^/]+/[^/]+$" + "/[^/]+\\.txt$")) + (pattern (string-append + "(" (string-join + (map (cut string-append dir <>) + pats) + "|") ")")) + (files (find-files dir + (lambda (file stat) + (and (eq? 'regular (stat:type stat)) + (string-match pattern file)))))) + (for-each (lambda (file) + (install-file file + (string-append + share + (regexp-substitute + #f + (string-match dir (dirname file)) + 'pre 'post)))) + files))))))) + (inputs + `(("chibios" + ,(origin + (method url-fetch) + (uri "mirror://sourceforge/chibios/ChibiOS%20GPL3/Version%202.6.9/ChibiOS_2.6.9.zip") + (sha256 + (base32 + "0lb5s8pkj80mqhsy47mmq0lqk34s2a2m3xagzihalvabwd0frhlj")))) + ;; for compiling patches + ("make" ,gnu-make) + ;; for compiling firmware + ("cross-toolchain" ,(make-arm-none-eabi-nano-toolchain-4.9)) + ;; for uploading compiled patches and firmware + ("dfu-util" ,dfu-util-for-axoloti))) + (native-inputs (list unzip)) + (home-page "https://ksoloti.github.io/") + (synopsis "Audio development environment for the Ksoloti board") + (description + "Ksoloti is an environment for generating and processing digital +audio. It can be a programmable virtual modular synthesizer, polysynth, drone +box, sequencer, chord generator, multi effect, sample player, looper, granular +sampler, MIDI generator/processor, CV or trigger generator, anything in +between, and more. + +The Ksoloti Core is a rework of the discontinued Axoloti Core board. In +short, Ksoloti aims for maximum compatibility with the original Axoloti, but +with some layout changes and added features. + +This package provides the runtime.") + (license license:gpl3+))) + +(define-public ksoloti-patcher + (package + (inherit ksoloti-runtime) + (name "ksoloti-patcher") + (version (package-version ksoloti-runtime)) + (arguments + (list + #:tests? #f ; no check target + #:modules '((guix build gnu-build-system) + ((guix build ant-build-system) #:prefix ant:) + (guix build utils) + (srfi srfi-1) + (srfi srfi-26) + (ice-9 match) + (ice-9 regex) + (sxml simple) + (sxml xpath) + (sxml transform)) + #:imported-modules `((guix build ant-build-system) + ,@%gnu-build-system-modules) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (setenv "JAVA_HOME" + (dirname + (dirname (search-input-file inputs "/bin/javac")))) + ;; We want to use our own jar files instead of the pre-built + ;; stuff in lib. So we replace the zipfileset tags in the + ;; build.xml with new ones that reference our jars. + (let* ((build.xml (with-input-from-file "build.xml" + (lambda _ + (xml->sxml #:trim-whitespace? #t)))) + (jars (append-map (match-lambda + (((? (cut string-prefix? "java-" <>) + label) . directory) + (find-files directory "\\.jar$")) + (_ '())) + inputs)) + (all-jars (append jars (find-files "lib" "\\.jar$"))) + (classpath (string-join all-jars ":")) + (fileset (map (lambda (jar) + `(zipfileset (@ (excludes "META-INF/*.SF") + (src ,jar)))) + all-jars))) + (call-with-output-file "build.xml" + (lambda (port) + (sxml->xml + (pre-post-order + build.xml + `( ;; Remove all zipfileset tags from the "jar" tree and + ;; inject our own tags. + (jar . ,(lambda (tag . kids) + `(jar ,@(append-map + (filter (lambda (e) + (not (eq? 'zipfileset (car e))))) + kids) + ,@fileset))) + ;; Skip the "bundle" target (and the "-post-jar" target + ;; that depends on it), because we don't need it and it + ;; confuses sxml->xml. + (target . ,(lambda (tag . kids) + (let ((name ((sxpath '(name *text*)) + (car kids)))) + (if (or (member "bundle" name) + (member "-post-jar" name)) + '() ; skip + `(,tag ,@kids))))) + (*default* . ,(lambda (tag . kids) `(,tag ,@kids))) + (*text* . ,(lambda (_ txt) + (match txt + ;; Remove timestamp. + ("${TODAY}" "(unknown)") + (_ txt)))))) + port))) + + ;; Build it! + (invoke "ant" + (string-append "-Djavac.classpath=" classpath) + "-Dbuild.runtime=true" + "-Dbuild.time=01/01/1970 00:00:00" + "-Djavac.source=1.8" + "-Djavac.target=1.8" + (string-append "-Dtag.short.version=" + #$version))))) + (replace 'install + (lambda* (#:key inputs #:allow-other-keys) + (let ((share (string-append #$output "/share/ksoloti/"))) + (install-file "dist/Ksoloti.jar" share) + + ;; We do this to ensure that this package retains references to + ;; other Java packages' jar files. + (install-file "build.xml" share) + + ;; Create a launcher script + (mkdir (string-append #$output "/bin")) + (let ((target (string-append #$output "/bin/Ksoloti"))) + (with-output-to-file target + (lambda () + (let* ((dir (string-append #$output "/share/ksoloti")) + (runtime (search-input-directory inputs + "share/ksoloti")) + (toolchain (assoc-ref inputs "cross-toolchain")) + (includes (string-append + toolchain + "/arm-none-eabi/include/:" + toolchain + "/arm-none-eabi/include/c++:" + toolchain + "/arm-none-eabi/include/c++/arm-none-eabi/armv7e-m")) + (marlin.jar + (search-input-file inputs "/share/java/marlin.jar"))) + (display + (string-append "#!" (which "sh") "\n" + "export CROSS_CPATH=" includes "\n" + "export CROSS_CPLUS_INCLUDE_PATH=" includes "\n" + "export CROSS_LIBRARY_PATH=" + toolchain "/arm-none-eabi/lib" "\n" + (which "java") + " -Xbootclasspath/a:" marlin.jar + " -Dsun.java2d.renderer=org.marlin.pisces.MarlinRenderingEngine" + " -Dsun.java2d.dpiaware=true" + " -Daxoloti_release=" runtime + " -Daxoloti_runtime=" runtime + " -jar " dir "/Ksoloti.jar"))))) + (chmod target #o555))))) + (add-after 'install 'strip-jar-timestamps + (assoc-ref ant:%standard-phases 'strip-jar-timestamps))))) + (inputs + `(("openjdk" ,openjdk11 "jdk") + ("cross-toolchain" ,(make-arm-none-eabi-nano-toolchain-4.9)) + ("java-autocomplete" ,java-autocomplete) + ("java-flatlaf" ,java-flatlaf) + ("java-flatlaf-intellij-themes" ,java-flatlaf-intellij-themes) + ("java-jgit" ,java-jgit-4.2) + ("java-jsch" ,java-jsch) + ("java-marlin-renderer" ,java-marlin-renderer) + ("java-rsyntaxtextarea" ,java-rsyntaxtextarea) + ("java-simple-xml" ,java-simple-xml) + ("java-usb4java" ,java-usb4java) + ("java-slf4j-api" ,java-slf4j-api) + ("ksoloti-runtime" ,ksoloti-runtime))) + (native-inputs + (list ant zip ;for repacking the jar + unzip)) + (description + "Ksoloti is an environment for generating and processing digital +audio. It can be a programmable virtual modular synthesizer, polysynth, drone +box, sequencer, chord generator, multi effect, sample player, looper, granular +sampler, MIDI generator/processor, CV or trigger generator, anything in +between, and more. + +The Ksoloti Core is a rework of the discontinued Axoloti Core board. In +short, Ksoloti aims for maximum compatibility with the original Axoloti, but +with some layout changes and added features. + +This package provides the patcher application."))) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 4fa39b741c..699f4cbc8f 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -41,31 +41,31 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages backup) - #:use-module (guix gexp) - #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix gexp) - #:use-module (guix git-download) - #:use-module (guix download) - #:use-module (guix utils) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system python) #:use-module (guix build-system qt) + #:use-module (guix download) + #:use-module (guix gexp) + #:use-module (guix gexp) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages acl) #:use-module (gnu packages autotools) - #:use-module (gnu packages bash) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) #:use-module (gnu packages databases) #:use-module (gnu packages datastructures) - #:use-module (gnu packages digest) #:use-module (gnu packages dbm) #:use-module (gnu packages dejagnu) + #:use-module (gnu packages digest) #:use-module (gnu packages ftp) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) @@ -259,6 +259,7 @@ backups (called chunks) to allow easy burning to CD/DVD.") (define-public libarchive (package (name "libarchive") + (replacement libarchive/fixed) (version "3.6.1") (source (origin @@ -347,6 +348,25 @@ random access nor for in-place modification. This package provides the @command{bsdcat}, @command{bsdcpio} and @command{bsdtar} commands.") (license license:bsd-2))) +(define-public libarchive/fixed + (hidden-package + (package + (inherit libarchive) + (version "3.6.1") + (source + (origin + (method url-fetch) + (uri (list (string-append "https://libarchive.org/downloads/libarchive-" + version ".tar.xz") + (string-append "https://github.com/libarchive/libarchive" + "/releases/download/v" version "/libarchive-" + version ".tar.xz"))) + (patches (search-patches "libarchive-remove-potential-backdoor.patch")) + (sha256 + (base32 + "1rj8q5v26lxxr8x4b4nqbrj7p06qvl91hb8cdxi3xx3qp771lhas"))))))) + + (define-public rdup (package (name "rdup") diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index fdf01b09ce..0beef9ace4 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -10952,13 +10952,13 @@ single-cell RNA-seq.") (define-public r-seqarray (package (name "r-seqarray") - (version "1.42.2") + (version "1.42.3") (source (origin (method url-fetch) (uri (bioconductor-uri "SeqArray" version)) (sha256 (base32 - "1bwqyvvfwwscznwi1bm4wh2pqf0fmq68g7siwbbw5ypj087ibnnm")))) + "1500vwsgdxdaafp2fb0252c0hhpz3lhrniv21nb7xnky7mbr7lk6")))) (properties `((upstream-name . "SeqArray"))) (build-system r-build-system) (propagated-inputs (list r-biostrings @@ -15037,13 +15037,13 @@ standardization of the analyses and the development of best practices.") (define-public r-microbiomestat (package (name "r-microbiomestat") - (version "1.1") + (version "1.2") (source (origin (method url-fetch) (uri (cran-uri "MicrobiomeStat" version)) (sha256 (base32 - "1j5sar85a1gksc83pc4ypxwb0c7whxglx069zarphrgqfazcr1m4")))) + "1kpc68sl63k104xy7r6f3gxan0yx0rs7ksn8ldbq8xla00ddflgq")))) (properties `((upstream-name . "MicrobiomeStat"))) (build-system r-build-system) (propagated-inputs (list r-foreach @@ -15054,7 +15054,6 @@ standardization of the analyses and the development of best practices.") r-matrix r-matrixstats r-modeest - r-phyloseq r-statmod)) (home-page "https://cran.r-project.org/package=MicrobiomeStat") (synopsis "Statistical methods for microbiome compositional data") @@ -17583,14 +17582,14 @@ Infinium HumanMethylation 450k assay.") (define-public r-biocfilecache (package (name "r-biocfilecache") - (version "2.10.1") + (version "2.10.2") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocFileCache" version)) (sha256 (base32 - "044kh1rfgb608y2v4wzbzddirhw5crj3k6i28wr78qgnzqc89mdm")))) + "00gnnc4yypvjnvh1xq4bzqi34j9i9ld1rnjnb2gsxbhaq5nzq31z")))) (properties `((upstream-name . "BiocFileCache"))) (build-system r-build-system) (propagated-inputs @@ -22404,14 +22403,14 @@ relevant, and the minimum expression of the most abundant condition.") (define-public r-catalyst (package (name "r-catalyst") - (version "1.26.0") + (version "1.26.1") (source (origin (method url-fetch) (uri (bioconductor-uri "CATALYST" version)) (sha256 (base32 - "0dfg9ib0imk8bmhycqrspnn8yvfdlchwvx39wgqxi5fb9zrppfz4")))) + "1zfb4b88j0ksvsxq8kgrjs0xqlr10yzvr772r8nhl797qzwdag08")))) (properties `((upstream-name . "CATALYST"))) (build-system r-build-system) (propagated-inputs @@ -23975,14 +23974,14 @@ using aCGH or sequencing.") (define-public r-bionero (package (name "r-bionero") - (version "1.10.2") + (version "1.10.3") (source (origin (method url-fetch) (uri (bioconductor-uri "BioNERO" version)) (sha256 (base32 - "1fk48h2v0snsg8y9pi0pav69wa95s8a8gk1rxsvrm7z1bcgi2j51")))) + "1vf3kq4lj4alvwzf0wl09lxb0ky6q0x94ajmrnihlj5saliqb73c")))) (properties `((upstream-name . "BioNERO"))) (build-system r-build-system) (propagated-inputs @@ -24470,13 +24469,13 @@ estimates, etc.") (define-public r-tcgabiolinks (package (name "r-tcgabiolinks") - (version "2.30.0") + (version "2.30.4") (source (origin (method url-fetch) (uri (bioconductor-uri "TCGAbiolinks" version)) (sha256 - (base32 "1k8xiv4bmil420176ckfda2r6y0s46dk1cm8dbywav86q28bmzzx")))) + (base32 "0br0bgcvxxfy1vclfc8i20b0bsb7rcchwfdx7lkw4f2aqxny8ja8")))) (properties `((upstream-name . "TCGAbiolinks"))) (build-system r-build-system) (propagated-inputs diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index d18d5d8611..7861987704 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -5834,7 +5834,7 @@ of nucleic acid binding proteins.") (find-files "../bin" ".*")) #t)))))) (inputs - (list gsl lapack openblas perl + (list gsl openblas perl `(,gfortran "lib"))) (home-page "https://github.com/DReichLab/EIG") (synopsis "Tools for population genetics") @@ -8673,7 +8673,9 @@ predicts the locations of structural units in the sequences.") (substitute* "Makefile" (("INSTALLDIR=.*") (string-append - "INSTALLDIR=" (assoc-ref outputs "out") "/bin\n"))) + "INSTALLDIR=" (assoc-ref outputs "out") "/bin\n")) + (("-llapack -lblas") + "-lopenblas")) #t)) (add-before 'install 'make-install-directory ;; The install directory is not created during 'make install'. @@ -8697,7 +8699,6 @@ predicts the locations of structural units in the sequences.") ("perl" ,perl) ("python" ,python-wrapper) ("blast+" ,blast+) - ("lapack" ,lapack) ("openblas" ,openblas))) (native-inputs (list which)) @@ -9662,8 +9663,8 @@ accessed/downloaded on demand across HTTP.") (arguments `(#:tests? #f ;no "check" target #:make-flags ,#~(list (string-append "LIB_LAPACK=" - #$(this-package-input "lapack") - "/lib/liblapack.so") + #$(this-package-input "openblas") + "/lib/libopenblas.so") "WITH_LAPACK=1" "FORCE_DYNAMIC=1" ;; disable phoning home @@ -9678,7 +9679,7 @@ accessed/downloaded on demand across HTTP.") "/bin/"))) (install-file "plink" bin))))))) (inputs - (list zlib lapack)) + (list zlib openblas)) (native-inputs (list unzip gcc-8)) (home-page "http://pngu.mgh.harvard.edu/~purcell/plink/") @@ -9713,7 +9714,7 @@ subsequent visualization, annotation and storage of results.") (list #:tests? #false ;TEST_EXTRACT_CHR doesn't produce expected files #:make-flags - #~(list "BLASFLAGS=-llapack -lopenblas" + #~(list "BLASFLAGS=-lopenblas" "NO_SSE42=1" "NO_AVX2=1" "STATIC_ZSTD=" @@ -9740,7 +9741,7 @@ subsequent visualization, annotation and storage of results.") (string-append (assoc-ref outputs "out") "/bin"))))))) (inputs - (list lapack openblas zlib `(,zstd "lib"))) + (list openblas zlib `(,zstd "lib"))) (native-inputs (list diffutils plink python simde)) ; for tests (home-page "https://www.cog-genomics.org/plink/") diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 99990a8980..fc13f544a1 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -81,6 +81,7 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) diff --git a/gnu/packages/clifm.scm b/gnu/packages/clifm.scm index 983a23b80a..24530ada77 100644 --- a/gnu/packages/clifm.scm +++ b/gnu/packages/clifm.scm @@ -30,7 +30,7 @@ (define-public clifm (package (name "clifm") - (version "1.17") + (version "1.18") (source (origin (method git-fetch) @@ -39,7 +39,7 @@ (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "00f5x0352dsf8f9ixkcwma7wr5pg78maavmd950nni38m647clm6")))) + (base32 "1r83wx6nxsdycnj56h9s32mraisjx1w0rsnmj9xw2nf249j8c05n")))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "CC=" diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm index 27fce6f368..d315fc9187 100644 --- a/gnu/packages/clojure.scm +++ b/gnu/packages/clojure.scm @@ -203,14 +203,14 @@ designs.") (define-public clojure-tools (package (name "clojure-tools") - (version "1.11.1.1200") + (version "1.11.1.1413") (source (origin (method url-fetch) (uri (string-append "https://download.clojure.org/install/clojure-tools-" version ".tar.gz")) - (sha256 (base32 "075naxfiddi6jqr6rqiywwy91r188n5m8yfqcxddmds2vm5rrpnv")) + (sha256 (base32 "1q0z71ifdxwvyy9gvq8mx8jbygf8cszrlhb3h22walfamnisbhwk")) ;; Remove AOT compiled JAR. The other JAR only contains uncompiled ;; Clojure source code. (snippet @@ -249,7 +249,7 @@ designs.") ":")))))))) (inputs (list rlwrap clojure - clojure-tools-deps-alpha + clojure-tools-deps java-commons-logging-minimal)) (home-page "https://clojure.org/releases/tools") (synopsis "CLI tools for the Clojure programming language") @@ -572,7 +572,72 @@ concise, powerful tests.") work with command-line arguments.") (license license:epl1.0))) +(define-public clojure-tools-deps + (package + (name "clojure-tools-deps") + (version "0.18.1354") + (home-page "https://github.com/clojure/tools.deps") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ls5nixhsjjhf3qz8kbyhmks5lw7a25zxl46yrizbw7vba3mzrpl")))) + (build-system clojure-build-system) + (arguments + `(#:source-dirs '("src/main/clojure" "src/main/resources") + #:test-dirs '("src/test/clojure") + #:doc-dirs '() + ;; FIXME: Could not initialize class org.eclipse.aether.transport.http.SslSocketFactory + #:tests? #f + #:phases + (modify-phases %standard-phases + ;; FIXME: Currently, the S3 transporter depends on ClojureScript, + ;; which is very difficult to package due to dependencies on Java + ;; libraries with non-standard build systems. Instead of actually + ;; packaging these libraries, we just remove the S3 transporter that + ;; depends on them. + (add-after 'unpack 'remove-s3-transporter + (lambda _ + (for-each delete-file + (list + (string-append + "src/main/clojure/clojure/" + "tools/deps/util/s3_aws_client.clj") + (string-append + "src/main/clojure/clojure/" + "tools/deps/util/s3_transporter.clj") + (string-append + "src/test/clojure/clojure/" + "tools/deps/util/test_s3_transporter.clj"))) + (substitute* + "src/main/clojure/clojure/tools/deps/util/maven.clj" + (("clojure.tools.deps.util.s3-transporter") + ""))))))) + (propagated-inputs (list maven-resolver-api + maven-resolver-spi + maven-resolver-impl + maven-resolver-util + maven-resolver-connector-basic + maven-resolver-provider + maven-core + maven-resolver-transport-http + maven-resolver-transport-file + clojure-tools-gitlibs + clojure-tools-cli + clojure-data-xml)) + (synopsis "Clojure library supporting clojure-tools") + (description "This package provides a functional API for transitive +dependency graph expansion and the creation of classpaths.") + (license license:epl1.0))) + (define-public clojure-tools-deps-alpha + ;; this was superseded by clojure-tools-deps + ;; https://github.com/clojure/tools.deps.alpha + ;; Keeping it to give downstream packages a chance to upgrade (package (name "clojure-tools-deps-alpha") (version "0.14.1212") diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 9e5451d5ee..0c780fe420 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2017, 2018, 2020, 2021 Marius Bakke <marius@gnu.org> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019, 2020, 2021, 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> ;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net> @@ -43,8 +43,10 @@ #:use-module (gnu packages) #:use-module (gnu packages backup) #:use-module (gnu packages compression) + #:use-module (gnu packages cpp) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) + #:use-module (gnu packages elf) #:use-module (gnu packages file) #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages libevent) @@ -434,3 +436,45 @@ and workspaces that can be used in the compiler environment of your choice.") (description "@code{cmakeos-mode} provides an Emacs major mode for editing Cmake files. It supports syntax highlighting, indenting and refilling of comments."))) + +(define-public qmsetup + (let ((commit "89fa57046241c26dfcfd97ceba174728b24bdd27") + (revision "0")) + (package + (name "qmsetup") + ;; The base version string is retrieved from the CMakeLists.txt file. + (version (git-version "0.0.1.5" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stdware/qmsetup") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0nqpblv08yqv97vjv7cxkpf160s3877gnd7jjqxnfrrknm2396r1")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/corecmd/utils_unix.cpp" + (("\"patchelf\"") + (format #f "~s" (search-input-file + inputs "bin/patchelf"))))))))) + (inputs (list patchelf syscmdline)) + (home-page "https://github.com/stdware/qmsetup") + (synopsis "CMake modules and basic libraries for C/C++ projects") + (description "QMSetup is a set of CMake Modules and Basic Libraries for +C/C++ projects. It features: +@itemize +@item Helpful CMake utilities +@item Generate configuration header files +@item Reorganize header files +@item Deploy project dependencies and fix rpaths +@item Support calling Doxygen via CMake conveniently +@item Support calling Qt Linguist Tools via CMake conveniently +@end itemize") + (license license:expat)))) diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 9048466c37..d6ac8178f3 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -17,7 +17,9 @@ ;;; Copyright © 2021 lu hui <luhuins@163.com> ;;; Copyright © 2021, 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com> ;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de> +;;; Copyright © 2023 Fries <fries1234@protonmail.com> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,6 +47,7 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system python) #:use-module (guix build-system trivial) + #:use-module (guix build-system go) #:use-module (gnu packages) #:use-module (gnu packages autogen) #:use-module (gnu packages autotools) @@ -59,7 +62,10 @@ #:use-module (gnu packages emacs) #:use-module (gnu packages flex) #:use-module (gnu packages gcc) - #:use-module (gnu packages golang) + #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-crypto) + #:use-module (gnu packages golang-web) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages graphviz) #:use-module (gnu packages llvm) #:use-module (gnu packages linux) @@ -95,23 +101,24 @@ (sha256 (base32 "1r0sbw82cf9dbcj3vgnbd4sc1lklzvijic2z5wgkvs21azcm0yzh")))) - (build-system gnu-build-system) + (build-system go-build-system) (arguments - (list #:tests? #false ;no tests - #:phases - #~(modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda _ - (setenv "HOME" "/tmp") - (invoke "bash" "Build/build.sh"))) - (replace 'install - (lambda _ - (let ((bin (string-append #$output "/bin"))) - (mkdir-p bin) - (copy-file "act.linux" - (string-append #$output "/bin/act")))))))) - (native-inputs (list go)) + (list + #:tests? #f ;no tests + #:install-source? #f + #:import-path "github.com/Autodesk/AutomaticComponentToolkit/cmd/act" + #:unpack-path "github.com/Autodesk/AutomaticComponentToolkit/" + #:phases + #~(modify-phases %standard-phases + ;; Golang produces the final binary based on the current directory + ;; name if -o options is not provided, utilize this assumption to + ;; completely relay on go-build-system. + (add-before 'build 'pretend-cmd-act + (lambda* (#:key unpack-path #:allow-other-keys) + (let ((act (string-append "src/" unpack-path "/cmd/act")) + (source (string-append "src/" unpack-path "/Source"))) + (mkdir-p act) + (copy-recursively source act))))))) (synopsis "Automatically generate software components") (description "The Automatic Component Toolkit (@dfn{ACT}) is a code generator that @@ -379,6 +386,41 @@ cloc contains code from David Wheeler's SLOCCount. Compared to SLOCCount, cloc can handle a greater variety of programming languages.") (license license:gpl2+))) +(define-public scc + (package + (name "scc") + (version "3.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/boyter/scc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rkkfg6jimlc2rkajk6ypd5v0m3zai25ga5idz2pmkmzakv82n21")))) + (build-system go-build-system) + (arguments + (list + #:install-source? #f + #:import-path "github.com/boyter/scc")) + (native-inputs + (list go-github-com-dbaggerman-cuba + go-github-com-json-iterator-go + go-github-com-mattn-go-runewidth + go-github-com-minio-blake2b-simd + go-github-com-spf13-cobra + go-golang-org-x-text + go-gopkg-in-yaml-v2)) + (home-page "https://github.com/boyter/scc") + (synopsis "Fast code counter written in Go") + (description + "@command{scc} provides a lines-of-code counter similar to tools like +@command{cloc} and @command{sloccount}. It aims to be fast as possible while +supporting @acronym{COCOMO,Constructive Cost Model} calculation and code +complexity estimation.") + (license license:expat))) + (define-public the-silver-searcher (package (name "the-silver-searcher") @@ -495,60 +537,6 @@ support, its ability for the user to define new languages searched by regular expressions, and its ability to generate emacs-style TAGS files.") (license license:gpl2+))) -(define-public withershins - (package - (name "withershins") - (version "0.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cameronwhite/withershins") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1cviqvbbcwljm1zx12j6511hazr3kscwrvcyifrkfi4fpy5z985m")))) - (build-system cmake-build-system) - (arguments - `(#:out-of-source? #f - #:configure-flags - ;; XXX A (justified!) misleading-indentation error breaks the build. - (list "-DENABLE_WERROR=OFF") - #:phases - (modify-phases %standard-phases - (add-after - 'unpack 'find-libiberty - (lambda _ - (let ((libiberty (assoc-ref %build-inputs "libiberty"))) - (substitute* "cmake/FindIberty.cmake" - (("/usr/include") (string-append libiberty "/include")) - (("libiberty.a iberty") - (string-append "NAMES libiberty.a iberty\nPATHS \"" - libiberty "/lib" "\""))) - #t))) - (replace - 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (include (string-append out "/include")) - (lib (string-append out "/lib"))) - (mkdir-p include) - (install-file "src/withershins.hpp" include) - (mkdir-p lib) - (install-file "src/libwithershins.a" lib)) - #t))))) - (home-page "https://github.com/cameronwhite/withershins") - (inputs - (list libiberty binutils ;for libbfd - zlib)) - (synopsis "C++11 library for generating stack traces") - (description - "Withershins is a simple cross-platform C++11 library for generating -stack traces.") - ;; Sources are released under Expat license, but since BFD is licensed - ;; under the GPLv3+ the combined work is GPLv3+ as well. - (license license:gpl3+))) - (define-public lcov (package (name "lcov") diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 5de17b6b51..02a20e5c62 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -38,6 +38,7 @@ ;;; Copyright © 2022 Greg Hogan <code@greghogan.com> ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com> ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com> +;;; Copyright © 2024 Vinicius Monego <monego@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -769,6 +770,32 @@ This package is mostly for compatibility and historical interest.") with the sfArk algorithm.") (license license:gpl3+))) +(define-public minizip-ng + (package + (name "minizip-ng") + (version "4.0.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zlib-ng/minizip-ng") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0lgx4s4aykxn8x3b4m4c4isasd2608bbyfm4lxc2spcc4xqwhzkz")))) + (build-system cmake-build-system) + (arguments + (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON" + "-DMZ_BUILD_TESTS=ON" + "-DMZ_BUILD_UNIT_TESTS=ON"))) + (native-inputs (list googletest pkg-config)) + (inputs (list openssl zlib `(,zstd "lib"))) + (home-page "https://github.com/zlib-ng/minizip-ng") + (synopsis "Zip manipulation library") + (description "@code{minizip-ng} is a zip manipulation library written in +C, forked from the zip manipulation library found in the zlib distribution.") + (license license:bsd-3))) + (define-public sfarkxtc (let ((commit "13cd6f93725a90d91ec5ea75babf1dbd694ac463") (revision "1")) diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index cfff141dcc..a2a3eb226e 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2020, 2021, 2023, 2024 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> -;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021, 2022, 2024 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org> @@ -478,6 +478,44 @@ the name of the library itself, which is written in C++.") (license (list license:expat ; cJSON license:bsd-4))))) ; everything else (LICENSE.txt) +(define-public pystring + (package + (name "pystring") + (version "1.1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/imageworks/pystring") + (commit (string-append "v" version)))) + (sha256 + (base32 "0h12x24skrlx4fv0k5vl8wnar8gi6bq091yp93awkwsbnm8qwkzd")) + (file-name (git-file-name name version)))) + (build-system cmake-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + ;; The install phase doesn't install the header + (add-after 'install 'install-header + (lambda _ + (mkdir-p (string-append #$output "/include")) + (copy-file + (string-append #$(package-source this-package) + "/pystring.h") + (string-append #$output + "/include/pystring.h"))))))) + (native-inputs (list pkg-config)) + (home-page "https://github.com/imageworks/pystring") + (synopsis "C++ functions matching the Python string methods") + (description + "Pystring is a collection of C++ functions which match the interface and +behavior of Python's string class methods using std::string. Implemented in +C++, it does not require or make use of a python interpreter. It provides +convenience and familiarity for common string operations not included in the +standard C++ library. It's also useful in environments where both C++ and +Python are used.") + (license license:bsd-3))) + (define-public dashel (package (name "dashel") @@ -925,6 +963,49 @@ concurrent queue for C++11.") lock-free fixed size queue written in C++11.") (license license:expat))) +(define-public syscmdline + (package + (name "syscmdline") + (version "0.0.1.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/SineStriker/syscmdline") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00n9vkyymp1dzixxl93f6pkpd3ndsk1vib7shhlxv4zvy5hjqhqw")))) + (build-system cmake-build-system) + (arguments + (list #:configure-flags + #~(list "-DSYSCMDLINE_BUILD_STATIC=OFF" ;build a shared library + "-DSYSCMDLINE_BUILD_TESTS=ON") + #:phases #~(modify-phases %standard-phases + (replace 'check + ;; There isn't currently any exposed test target. + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bin/tst_basic"))))))) + (home-page "https://github.com/SineStriker/syscmdline") + (synopsis "C++ advanced command line parser") + (description "SysCmdLine is a C++ command line parser that is inspired by +@code{QCommandLineParser} from Qt and @code{System.CommandLine} from C#. It +has features such as: +@itemize +@item Support sub-commands +@item Support case-insensitive parsing +@item Support global options +@item Support mutually exclusive options +@item Support short options and group flags +@item Support help text customization +@item Support localization +@item Simple tips for typo correction +@item Highly configurable +@item Friendly interface +@end itemize") + (license license:expat))) + (define-public gperftools (package (name "gperftools") @@ -1119,7 +1200,7 @@ code and retrieving their output.") (define-public sobjectizer (package (name "sobjectizer") - (version "5.7.2.6") + (version "5.8.2") (source (origin (method git-fetch) @@ -1127,7 +1208,7 @@ code and retrieving their output.") (url "https://github.com/Stiffstream/sobjectizer") (commit (string-append "v." version)))) (sha256 - (base32 "0n6smpjkkkw0xab8wcpy3p0dpw2v9sxgwl6azl3am6abmv4mff12")) + (base32 "0ya5xlgm3arvzvcnsajw03kc3cibbdbap9p7kgpxn00byqbxixr7")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -1136,8 +1217,7 @@ code and retrieving their output.") (modify-phases %standard-phases (add-after 'unpack 'change-directory (lambda _ - (chdir "dev") - #t))))) + (chdir "dev")))))) (home-page "https://stiffstream.com/en/products/sobjectizer.html") (synopsis "Cross-platform actor framework for C++") (description @@ -1172,7 +1252,7 @@ programs.") (define-public kokkos (package (name "kokkos") - (version "4.1.00") + (version "4.2.01") (source (origin (method git-fetch) @@ -1181,7 +1261,7 @@ programs.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "15kjpa54ssrrbid9h2nr94nh85qna5c4vq2152i4iy7gaagigy3c")) + (base32 "1bvxcy11as38ng9vdp93mrdvm7sgwqjrm67p53wr1aj7x3pq3hbp")) (modules '((guix build utils))) (snippet ;; Remove bundled googletest. diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 48a533557e..8207f09725 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -537,13 +537,13 @@ labels on the node can also be achieved.") (define-public r-collapse (package (name "r-collapse") - (version "2.0.11") + (version "2.0.12") (source (origin (method url-fetch) (uri (cran-uri "collapse" version)) (sha256 - (base32 "0aaqzipgnln6mcwgahlnvg0dhq82xnzrfn95mv4ywgpczaicwg3s")))) + (base32 "0dplfsj4lqafw0zkrqhph9sk22qpkm5i753pgwf9w9cq5d17f537")))) (properties `((upstream-name . "collapse"))) (build-system r-build-system) (propagated-inputs (list r-rcpp)) @@ -4453,13 +4453,13 @@ particularly easy to create complete web applications using httpuv alone.") (define-public r-httr2 (package (name "r-httr2") - (version "1.0.0") + (version "1.0.1") (source (origin (method url-fetch) (uri (cran-uri "httr2" version)) (sha256 (base32 - "0jaajfr1hr6bzb1vz2nw2csl2l09kbq619vsq5yrlchcarpjv1fb")))) + "1cpi2yr66g0nwd5ybz6254ivggvxql0bas2hwpakrcw1161jvs9k")))) (properties `((upstream-name . "httr2"))) (build-system r-build-system) (propagated-inputs @@ -5084,14 +5084,14 @@ expression estimates for all genes.") (define-public r-bslib (package (name "r-bslib") - (version "0.6.2") + (version "0.7.0") (source (origin (method url-fetch) (uri (cran-uri "bslib" version)) (sha256 (base32 - "0gjnb1ar6n3qg37ljy5yai0pd219zhm0n186jdzhsfwma5498ifh")) + "181cfmdvi64j978q8x69bl7wxwpjpx54a52sh4xng0pk3a2djd91")) (snippet '(for-each delete-file '("inst/components/dist/components.min.js" @@ -5133,6 +5133,7 @@ expression estimates for all genes.") (propagated-inputs (list r-base64enc r-cachem + r-fastmap r-htmltools r-jquerylib r-jsonlite @@ -7696,14 +7697,16 @@ provides an interactive R manager and worker environment.") (define-public r-rmumps (package (name "r-rmumps") - (version "5.2.1-28") + (version "5.2.1-29") (source (origin (method url-fetch) (uri (cran-uri "rmumps" version)) (sha256 - (base32 "1cq7zrq730lj1z5xirzk5fvvlvdq101ppg47n0z7c0v17rvs80n6")))) - (properties `((upstream-name . "rmumps"))) + (base32 "1sxx5kyp331dmiyqd4l5m3mdcmlpm1vbdm6cd3kgvnz8ympphlwr")))) + (properties + `((upstream-name . "rmumps") + (updater-extra-inputs . ("zlib")))) (build-system r-build-system) (inputs (list zlib)) (propagated-inputs (list r-rcpp)) @@ -9706,18 +9709,18 @@ programming} (SQP) based solver).") (define-public r-hardyweinberg (package (name "r-hardyweinberg") - (version "1.7.5") + (version "1.7.7") (source (origin (method url-fetch) (uri (cran-uri "HardyWeinberg" version)) (sha256 (base32 - "0b3szw090dsc3bkas2kvx787ww2i6zzg2qmdyivmqc8amx5arn6g")))) + "058bfb43i2vjrc2iy3q3izlijw2hh61rl47c9gcf327xlp9x6wnh")))) (properties `((upstream-name . "HardyWeinberg"))) (build-system r-build-system) (propagated-inputs - (list r-mice r-nnet r-rcpp r-rsolnp)) + (list r-mice r-nnet r-rcpp r-rsolnp r-shape)) (home-page "https://cran.r-project.org/package=HardyWeinberg") (synopsis "Statistical tests and graphics for Hardy-Weinberg equilibrium") (description @@ -17506,14 +17509,14 @@ results using @code{ggplot2}.") (define-public r-effectsize (package (name "r-effectsize") - (version "0.8.6") + (version "0.8.7") (source (origin (method url-fetch) (uri (cran-uri "effectsize" version)) (sha256 (base32 - "0gdk6f2713k2vhv7qa6dgxl6kgc6r6yb12hb27k4bbibj5njvvni")))) + "07lfa0pvqhanjyyx9hs6gdqw1zyi1y21k539jgvgnrvixfilfkb2")))) (properties `((upstream-name . "effectsize"))) (build-system r-build-system) (propagated-inputs @@ -17678,17 +17681,24 @@ repositories.") (define-public r-gh (package (name "r-gh") - (version "1.4.0") + (version "1.4.1") (source (origin (method url-fetch) (uri (cran-uri "gh" version)) (sha256 (base32 - "0wcbnnws472v1i6q012pbdxjpsd4clj6a2cscf73g6s2336rzik8")))) + "1bwj8a2lfansyfx7fiwx2nv8yzhg1fi9ja1n6fk7dbzf64m3zgbn")))) (build-system r-build-system) (propagated-inputs - (list r-cli r-gitcreds r-httr2 r-ini r-jsonlite r-rlang)) + (list r-cli + r-gitcreds + r-glue + r-httr2 + r-ini + r-jsonlite + r-lifecycle + r-rlang)) (native-inputs (list r-knitr)) (home-page "https://github.com/r-lib/gh#readme") @@ -18847,14 +18857,14 @@ features (e.g. local modes).") (define-public r-arm (package (name "r-arm") - (version "1.13-1") + (version "1.14-4") (source (origin (method url-fetch) (uri (cran-uri "arm" version)) (sha256 (base32 - "0dz9dnsky77da2mc198dr3600kz9vk75z1iihjarnsdrq68a4bf0")))) + "1g8732naydqyv5pq1fkyb1i6qddv62jdmn2ys5lbdvx2zq5cnns2")))) (build-system r-build-system) (propagated-inputs (list r-abind @@ -21582,14 +21592,14 @@ model with finite state space using the Aalen-Johansen estimator.") (define-public r-epi (package (name "r-epi") - (version "2.47.1") + (version "2.48") (source (origin (method url-fetch) (uri (cran-uri "Epi" version)) (sha256 (base32 - "1a4h6hfpwcy3lb49y949h86vr4sdnjfbqqnr4jgc45mc64fhafp1")))) + "06965d2x47hb1c7dbqyhhywgr7k9xdcms1v08m2cx52qg6cdkiyp")))) (properties `((upstream-name . "Epi"))) (build-system r-build-system) (propagated-inputs @@ -21826,14 +21836,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.11.1") + (version "1.11.2") (source (origin (method url-fetch) (uri (cran-uri "future.apply" version)) (sha256 (base32 - "0zf22vip8w50pywc47xjghca9wkvcsvvfaa2yfaydwwzc3ss3bh2")))) + "11qkv2r8ml1i95j5ra191ij5w1dvllgvr9ld5xnq43ayzaq3b9pl")))) (properties `((upstream-name . "future.apply"))) (build-system r-build-system) (arguments @@ -24857,13 +24867,13 @@ that fills this gap.") (define-public r-eulerr (package (name "r-eulerr") - (version "7.0.1") + (version "7.0.2") (source (origin (method url-fetch) (uri (cran-uri "eulerr" version)) (sha256 (base32 - "1c8yf94ga4h6rf89fyajxfsaq5z6dx1z2840371vxj7kwj9slg3c")))) + "0aw4l338nymrmna7q01vxn2cc7wyzz3lhf1bwazy55qa4hmww3af")))) (properties `((upstream-name . "eulerr"))) (build-system r-build-system) (propagated-inputs @@ -34574,14 +34584,14 @@ simple interface for all functions.") (define-public r-iml (package (name "r-iml") - (version "0.11.1") + (version "0.11.2") (source (origin (method url-fetch) (uri (cran-uri "iml" version)) (sha256 (base32 - "0fi37lv9czaxcc123f6r57607shqhs83ks96n2n0b93dl1qs0j52")))) + "1sjv0cj50iivjlb2hri401z78rmidxxh6q5akscd42k98jyw2r30")))) (properties `((upstream-name . "iml"))) (build-system r-build-system) (propagated-inputs @@ -34592,7 +34602,6 @@ simple interface for all functions.") r-future-apply r-ggplot2 r-metrics - r-prediction r-r6)) (native-inputs (list r-knitr)) (home-page "https://github.com/christophM/iml") @@ -36733,14 +36742,14 @@ package also provides functions to visualize the observed data and the MLE.") (define-public r-metafor (package (name "r-metafor") - (version "4.4-0") + (version "4.6-0") (source (origin (method url-fetch) (uri (cran-uri "metafor" version)) (sha256 (base32 - "1m4762fn4zbjpnx9vxyy9gvzyzn3avxnqpzmbj45w8241g3s1b32")))) + "0rl6w4j1fqvr7vn0dbzmir28xbi2wdn9m3lrxwjvvf47pp1lqd07")))) (properties `((upstream-name . "metafor"))) (build-system r-build-system) (propagated-inputs @@ -38383,14 +38392,14 @@ in same length matches).") (define-public r-textshape (package (name "r-textshape") - (version "1.7.3") + (version "1.7.5") (source (origin (method url-fetch) (uri (cran-uri "textshape" version)) (sha256 (base32 - "0k9injxykgj2qprc7dygd7gafvcbh3r9x84qzaa1al21pk0dz7ds")))) + "1g193dg4rhw8a1iwkyqsswlj95h9irm9xziclwc1mhd3jm5wyify")))) (properties `((upstream-name . "textshape"))) (build-system r-build-system) (propagated-inputs diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index 9d47ebb4fd..2491abcce1 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -219,7 +219,7 @@ communication, encryption, decryption, signatures, etc.") (define-public signify (package (name "signify") - (version "31") + (version "32") (home-page "https://github.com/aperezdc/signify") (source (origin (method url-fetch) @@ -227,7 +227,7 @@ communication, encryption, decryption, signatures, etc.") "/download/v" version "/signify-" version ".tar.xz")) (sha256 (base32 - "0x1bipfphnyvf2kl7n9q4gawaglma79368vb8whama6lxsggsm8i")) + "1maq4wv7934gql95rr55pj419gnbj8jkrgn1f25jcg97v5zvklbd")) (modules '((guix build utils))) (snippet '(delete-file-recursively "libbsd")))) (build-system gnu-build-system) diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm index 1715b963a9..a88fb04feb 100644 --- a/gnu/packages/debian.scm +++ b/gnu/packages/debian.scm @@ -148,6 +148,31 @@ contains the archive keys used for that.") ;; "The keys in the keyrings don't fall under any copyright." (license license:public-domain))) +(define-public pureos-archive-keyring + (package + (name "pureos-archive-keyring") + (version "2021.11.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://repo.puri.sm/pureos/pool/main/p/pureos-archive-keyring/" + "pureos-archive-keyring_" version ".tar.xz")) + (sha256 + (base32 + "1a0d084a98bycyhbw531646rbivvlfkdk6ldshl5dy6fvzmbci0d")))) + (build-system copy-build-system) + (arguments + '(#:install-plan '(("keyrings/pureos-archive-keyring.gpg" + "share/keyrings/") + ("keyrings/pureos-archive-removed-keys.gpg" + "share/keyrings/")))) + (home-page "https://source.puri.sm/pureos/core/pureos-archive-keyring") + (synopsis "GnuPG archive keys of the Pureos archive") + (description "The Pureos distribution signs its packages. This package +contains the archive keys used for that.") + (license (list license:public-domain ;; the keys + license:gpl2+)))) ;; see debian/copyright + (define-public trisquel-keyring (package (name "trisquel-keyring") @@ -233,6 +258,7 @@ contains the archive keys used for that.") (add-after 'unpack 'patch-source (lambda* (#:key inputs outputs #:allow-other-keys) (let ((debian #$(this-package-input "debian-archive-keyring")) + (pureos #$(this-package-input "pureos-archive-keyring")) (trisquel #$(this-package-input "trisquel-keyring")) (ubuntu #$(this-package-input "ubuntu-keyring"))) (substitute* "Makefile" @@ -246,6 +272,11 @@ contains the archive keys used for that.") (("/usr") debian)) (substitute* "scripts/gutsy" (("/usr") ubuntu)) + (substitute* "scripts/amber" + (("/usr/share/keyrings/pureos-archive-keyring.gpg") + (string-append + pureos + "/share/keyrings/pureos-archive-keyring.gpg"))) (substitute* "scripts/robur" (("/usr/share/keyrings/trisquel-archive-keyring.gpg") (string-append @@ -258,6 +289,8 @@ contains the archive keys used for that.") (substitute* (find-files "scripts") (("keyring.*(debian-archive-keyring.gpg)"_ keyring) (string-append "keyring " debian "/share/keyrings/" keyring)) + (("keyring.*(pureos-archive-keyring.gpg)" _ keyring) + (string-append "keyring " pureos "/share/keyrings/" keyring)) (("keyring.*(trisquel-archive-keyring.gpg)" _ keyring) (string-append "keyring " trisquel "/share/keyrings/" keyring)) (("keyring.*(ubuntu-archive-keyring.gpg)" _ keyring) @@ -284,6 +317,7 @@ contains the archive keys used for that.") #:tests? #f)) ; no tests (inputs (list debian-archive-keyring + pureos-archive-keyring trisquel-keyring ubuntu-keyring bash-minimal diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index dc3001535a..10d546b918 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -28,6 +28,7 @@ ;;; Copyright © 2023 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2023 Morgan Smith <Morgan.J.Smith@outlook.com> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -70,6 +71,7 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages graphics) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) @@ -1294,29 +1296,35 @@ 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) - (uri (git-reference - (url "https://github.com/gokcehan/lf") - (commit (string-append "r" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1piym8za0iw2s8yryh39y072f90mzisv89ffvn1jzb71f71mbfqa")))) + (version "31") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gokcehan/lf") + (commit (string-append "r" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03icsf4c3j7295s1d8s6srz5gf09a3lghgw3zfcd86p03zhkzsaf")))) (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-2.3)) (arguments - `(#:import-path "github.com/gokcehan/lf")) + (list + #:go go-1.18 + #:install-source? #f + #:import-path "github.com/gokcehan/lf")) + (native-inputs + (list go-github-com-djherbis-times + go-github-com-gdamore-tcell-v2 + go-github-com-mattn-go-runewidth + go-golang-org-x-term + go-gopkg-in-djherbis-times-v1)) (home-page "https://github.com/gokcehan/lf") (synopsis "Console file browser similar to Ranger") - (description "lf (as in \"list files\") is a terminal file manager -written in Go. It is heavily inspired by ranger with some missing and -extra features. Some of the missing features are deliberately omitted -since they are better handled by external tools.") + (description + "@code{lf} (as in \"list files\") is a terminal file manager written in +Go. It is heavily inspired by @code{ranger} with some missing and extra +features. Some of the missing features are deliberately omitted since they +are better handled by external tools.") (license license:expat))) (define-public xfe @@ -1656,7 +1664,7 @@ gone and to help you to clean it up.") (define-public nwipe (package (name "nwipe") - (version "0.35") + (version "0.36") (source (origin (method git-fetch) @@ -1665,7 +1673,7 @@ gone and to help you to clean it up.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1bj20y52qzz2ja56yf1pxqjg3lsda35c2k5hcj3lqm69jpsla2wq")))) + (base32 "075zwakv3lva46v6wab00l5x7bs2k73mzzhwlbvm839r8a6gm0dh")))) (build-system gnu-build-system) (arguments (list #:phases diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 0fe1f2c1c7..b18de182fe 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -673,7 +673,7 @@ provisioning etc.") (define-public cqfd (package (name "cqfd") - (version "5.4.0") + (version "5.5.0") (source (origin (method git-fetch) (uri (git-reference @@ -682,7 +682,7 @@ provisioning etc.") (file-name (git-file-name name version)) (sha256 (base32 - "1kilrh4ahza19lka9218s2wkfcbk5r2cq9adczhlnlfggdrqnglg")))) + "1wmrl1vv75af2pllm988xcw51j7bhb0p1xny91bcq9rkc3yxh5yz")))) (build-system gnu-build-system) (arguments ;; The test suite requires a docker daemon and connectivity. diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index f67e83aa9f..15518896ed 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -192,7 +192,7 @@ of categories with some of the activities available in that category. qtgraphicaleffects qtmultimedia-5 qtquickcontrols2-5 - qtsensors + qtsensors-5 qtsvg-5)) (home-page "https://gcompris.net/index-en.html") (synopsis "Educational games for small children") @@ -566,7 +566,7 @@ a pen-tablet display and a beamer.") (define-public fet (package (name "fet") - (version "6.18.1") + (version "6.19.0") (source (origin (method url-fetch) @@ -575,7 +575,7 @@ a pen-tablet display and a beamer.") (list (string-append directory base) (string-append directory "old/" base)))) (sha256 - (base32 "0yf94z4yybaw53jf0hzi1p53rwa91wl3g6pai7gsr4palssyfxw2")))) + (base32 "1lrlwk9i2nc2d3ay5wajgv79nxkbl8hgv77aflgncikg4ma9yn55")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 975b26813a..f35aa3e514 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -516,7 +516,7 @@ e.g. emacs-geiser-guile for Guile.") (define-public emacs-gptel (package (name "emacs-gptel") - (version "0.8.0") + (version "0.8.5") (source (origin (method git-fetch) (uri (git-reference @@ -525,7 +525,7 @@ e.g. emacs-geiser-guile for Guile.") (file-name (git-file-name name version)) (sha256 (base32 - "1n3kdylv50filla692j2vcjalw6yza80xlg90cw54m9jp9br8sch")))) + "1w9sji73dixch1b5i420j44qb3jd0zknpypz46g33pbyhg9xwqln")))) (build-system emacs-build-system) (arguments (list @@ -1668,6 +1668,10 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.") (lambda args (with-directory-excursion "lisp" (apply (assoc-ref %standard-phases 'expand-load-path) args)))) + (replace 'make-autoloads + (lambda args + (with-directory-excursion "lisp" + (apply (assoc-ref %standard-phases 'make-autoloads) args)))) (replace 'install (lambda args (with-directory-excursion "lisp" @@ -2711,15 +2715,25 @@ provides an optional IDE-like error list.") (list #:tests? #t #:test-command - #~(list "emacs" "-Q" "--batch" "-L" "." - "--eval" "(load-file \"tests/test-fb2-reader.el\")") + #~(list "buttercup" "-L" ".") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'qualify-paths (lambda* (#:key inputs #:allow-other-keys) (let ((unzip (search-input-file inputs "/bin/unzip"))) (substitute* "fb2-reader.el" - (("unzip") unzip)))))))) + (("unzip") unzip))))) + (add-after 'unpack 'fix-tests + (lambda _ + ;; Lexical binding is required for compatibility with recent + ;; Buttercup. + (emacs-batch-edit-file "tests/test-fb2-reader.el" + '(progn + (insert ";;; -*-lexical-binding:t -*-\n") + (basic-save-buffer))) + ;; Fix bogus function name. + (substitute* "tests/test-fb2-reader.el" + (("fb2-reader-render") "fb2-reader-render-xml"))))))) (inputs (list unzip)) (native-inputs (list emacs-async emacs-buttercup emacs-dash emacs-s)) @@ -4727,7 +4741,7 @@ of bibliographic references.") (define-public emacs-corfu (package (name "emacs-corfu") - (version "1.2") + (version "1.3") (source (origin (method git-fetch) @@ -4736,7 +4750,7 @@ of bibliographic references.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0l6hpsw2srmad0mhp6x46d5dsg678lvgz5l3glp1845hkg8a0pgi")))) + (base32 "1nrwh00dy2ffzd3np8yk4n0vn0r5iqqhgcr40wbnv5qzgbdw9kas")))) (build-system emacs-build-system) (arguments (list @@ -6494,7 +6508,7 @@ files and directories.") (define-public emacs-fountain-mode (package (name "emacs-fountain-mode") - (version "3.7.2") + (version "3.7.3") (source (origin (method git-fetch) @@ -6503,7 +6517,7 @@ files and directories.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0xy45inihqwaix49vxr5yiqyps4r2djkzdd4g7kkc0fv7kzrm1m4")))) + (base32 "15r0pzdmimm72jx26zgdxf7fwwcppl45vvh33xx5wnhqzd140hwn")))) (arguments (list #:phases #~(modify-phases %standard-phases @@ -7981,7 +7995,7 @@ mode-line.") (define-public emacs-robe (package (name "emacs-robe") - (version "0.8.4") + (version "0.8.6") (source (origin (method git-fetch) @@ -7990,7 +8004,7 @@ mode-line.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0kvyfyr4b0z0l964a8z9shy8nlnxzxc2ljcc02gj2pn1rn1wz0gq")))) + (base32 "14apmvbs89si3v5hsiz11dckp8fdfidm14lc090lswq7mgk7h79s")))) (build-system emacs-build-system) (arguments '(#:include (cons "^lib\\/" %default-include))) @@ -10900,7 +10914,7 @@ sgml/html integration, and indentation (working with sgml).") (define-public emacs-jinx (package (name "emacs-jinx") - (version "1.4") + (version "1.5") (source (origin (method git-fetch) @@ -10910,7 +10924,7 @@ sgml/html integration, and indentation (working with sgml).") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "14zamk2s20f6dnv23v9snya0mi1bs2nq6xpp5bj06kiymzwhcqjw")))) + (base32 "0g8sdfq6fqf6jnv7ig9cgkvmrdfzah6c94yr041anzkwappkziwx")))) (build-system emacs-build-system) (arguments (list @@ -10949,9 +10963,9 @@ sgml/html integration, and indentation (working with sgml).") (propagated-inputs (list emacs-compat)) (native-inputs (list emacs-compat enchant pkg-config texinfo)) (home-page "https://github.com/minad/jinx") - (synopsis "Emacs Enchanted Spell Checker") + (synopsis "Emacs spell checker based on Enchant library") (description "Jinx is a just-in-time spell-checker for Emacs -based on the enchant library. It lazily highlights misspelled words in the +based on the Enchant library. It lazily highlights misspelled words in the text of the visible portion of the buffer by honouring window boundaries as well as text folding, if any.") (license license:gpl3+))) @@ -12393,7 +12407,7 @@ expansion and overwriting the marked region with a new snippet completion.") (define-public emacs-marginalia (package (name "emacs-marginalia") - (version "1.5") + (version "1.6") (source (origin (method git-fetch) @@ -12402,7 +12416,7 @@ expansion and overwriting the marked region with a new snippet completion.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "12ncif2lv6d7r2g87lyjr7idbqa283ijb3qgd5a61i3760czs7d6")))) + (base32 "196gjpmzra9azhrnvlhx50dlc59390hq4wxn0f9m4n86ig4i5dr0")))) (build-system emacs-build-system) (arguments (list @@ -18384,6 +18398,25 @@ package.") memoizing functions.") (license license:unlicense))) +(define-public emacs-memory-usage + (package + (name "emacs-memory-usage") + (version "0.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/memory-usage-" + version ".el")) + (sha256 + (base32 "03qwb7sprdh1avxv3g7hhnhl41pwvnpxcpnqrikl7picy78h1gwj")))) + (build-system emacs-build-system) + (home-page "https://elpa.gnu.org/packages/memory-usage.html") + (synopsis "Analyze the memory usage of Emacs in various ways") + (description + "This package provides the command @code{memory-usage}, which lists all +buffers and how much memory they use.") + (license license:gpl3+))) + (define-public emacs-linum-relative (package (name "emacs-linum-relative") @@ -22455,7 +22488,7 @@ the pipeline, featuring the support for running @code{emacsclient}.") (define-public emacs-jupyter (package (name "emacs-jupyter") - (version "0.8.3") + (version "1.0") (source (origin (method git-fetch) @@ -22464,7 +22497,7 @@ the pipeline, featuring the support for running @code{emacsclient}.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0acn964xlpn265vry35lrkkpf9z5y4ml96xg8ifadkxwxymm1sh2")))) + (base32 "0rf8d83bzc05v0w7zpqwcd89cdvrxwzpyf55vmmzj5j755bgxvhs")))) (build-system emacs-build-system) (propagated-inputs (list emacs-company ;optional @@ -22903,7 +22936,7 @@ match and total match information in the mode-line in various search modes.") (define-public emacs-pg (package (name "emacs-pg") - (version "0.30") + (version "0.31") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/emarsden/pg-el") @@ -22911,7 +22944,7 @@ match and total match information in the mode-line in various search modes.") (file-name (git-file-name name version)) (sha256 (base32 - "1g04izsnvxinbwvzx0sj643ix5jlwdd7dkl61nvaqkkkm3g35jp6")))) + "0h9szmi1l76inr4706s2hpaldzvmnzw1dy7p2cm653pfr6gq8f6x")))) (build-system emacs-build-system) (home-page "https://github.com/emarsden/pg-el") (synopsis "Emacs Lisp interface for PostgreSQL") @@ -23621,7 +23654,7 @@ interactive commands and functions, such as @code{completing-read}.") (define-public emacs-org-ql (package (name "emacs-org-ql") - (version "0.8.4") + (version "0.8.6") (source (origin (method git-fetch) (uri (git-reference @@ -23629,12 +23662,12 @@ interactive commands and functions, such as @code{completing-read}.") (commit (string-append "v" version)))) (sha256 (base32 - "07r9bx0bh7wyj5pbkhnrn8amzz3ynri94cxcxgcn1r3ypdhk6y85")) + "0425r0qjl83d1zq2z9myish3iqa6pc9ml2jlwmffjnj5gm3vgfsj")) (file-name (git-file-name name version)))) (build-system emacs-build-system) (arguments (list - #:tests? #t + #:tests? #f ;FIXME: check phase freezes #:test-command #~(list "buttercup" "-L" "."))) (native-inputs (list emacs-buttercup emacs-with-simulated-input emacs-xr)) @@ -24261,7 +24294,7 @@ given function is invoked.") (define-public emacs-datetime (package (name "emacs-datetime") - (version "0.9.1") + (version "0.10") (source (origin (method git-fetch) @@ -24270,7 +24303,7 @@ given function is invoked.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0d918312gpdiyx7zq8kdy19bdww6jqg94hs4j5l0n63bwrxsqdx2")))) + (base32 "0prc29dhc0yvx1lv9ng9iif1x7c0k7x51x1d1z5pzz0vps0w1qsh")))) (build-system emacs-build-system) (arguments `(#:include (cons "^[^/]*\\.extmap$" %default-include))) @@ -24278,8 +24311,9 @@ given function is invoked.") (list emacs-extmap)) (home-page "https://github.com/doublep/datetime/") (synopsis "Library to work with dates in Emacs") - (description "Parsing, formatting, matching and recoding -timestamps and date-time format strings library for Emacs.") + (description + "Datetime is an Emacs library for parsing, formatting, matching and +recoding timestamps and date-time format strings.") (license license:gpl3+))) (define-public emacs-org-mind-map @@ -25281,7 +25315,7 @@ powerful Org contents.") (define-public emacs-org-re-reveal (package (name "emacs-org-re-reveal") - (version "3.26.0") + (version "3.28.1") (source (origin (method git-fetch) @@ -25290,7 +25324,7 @@ powerful Org contents.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "11if1c1a0i6i2wagjwqmvp2hfkv3slpq7r6dfbpkhlmils2hxr9p")))) + (base32 "09rcjxqv8i7d87x8cnyblpnm3flpa7mdg609fvbzbs6dsc24zpjl")))) (build-system emacs-build-system) (propagated-inputs (list emacs-htmlize emacs-org)) @@ -27472,7 +27506,7 @@ image, rotate it, save modified images, and more.") (define-public emacs-package-lint (package (name "emacs-package-lint") - (version "0.22") + (version "0.23") (source (origin (method git-fetch) @@ -27482,7 +27516,7 @@ image, rotate it, save modified images, and more.") (file-name (git-file-name name version)) (sha256 (base32 - "1myhdhb3kwq03f3p7qgb9bk8srs1wlag4ch4kl26yb9213mzx8gv")))) + "1xr7sq7pvvdw9prf2vds048s5s7fq1s0cxs21sxdc54sszy17nsg")))) (arguments (list #:include #~(cons "^data/" %default-include))) (build-system emacs-build-system) @@ -29397,7 +29431,7 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)") (define-public emacs-buttercup (package (name "emacs-buttercup") - (version "1.34") + (version "1.35") (source (origin (method git-fetch) @@ -29407,7 +29441,7 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)") (file-name (git-file-name name version)) (sha256 (base32 - "07bsbzqxsb6sbayriymy54bqcy7is7c61fpnm83mg9527w0w4g19")))) + "0s5c7ia7b873dr6rqljkb1z4bf84zb3p3wjvcvpjhdcnf67m5x10")))) (build-system emacs-build-system) (arguments (list @@ -30654,53 +30688,52 @@ the standard @code{Dockerfile} file format.") (license license:asl2.0))) (define-public emacs-lsp-mode - (let ((commit "26c4d3e54ad2956623e64132312fe864274d346f") - (revision "1")) - (package - (name "emacs-lsp-mode") - (version (git-version "8.0.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/emacs-lsp/lsp-mode") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0klnik69b5y6s2q00vyshxymlg7k4x9x6m7wpsf7z9w12qn27alx")))) - (build-system emacs-build-system) - (arguments - `(#:emacs ,emacs ;need libxml support - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'move-clients-libraries - ;; Move all clients libraries at top-level, as is done, e.g., in - ;; MELPA. - (lambda _ - (for-each (lambda (f) - (install-file f ".")) - (find-files "clients/" "\\.el$")))) - (add-before 'move-clients-libraries 'fix-patch-el-files - ;; /bin/ksh is only used on macOS, which we don't support, so we - ;; don't want to add it as input. - (lambda _ - (substitute* '("clients/lsp-csharp.el" "clients/lsp-fsharp.el") - (("/bin/ksh") "ksh"))))))) - (propagated-inputs - (list emacs-dash - emacs-f - emacs-ht - emacs-hydra - emacs-markdown-mode - emacs-spinner)) - (home-page "https://emacs-lsp.github.io/lsp-mode/") - (synopsis "Emacs client and library for the Language Server Protocol") - (description - "LSP mode is a client and library implementation for the Language + (package + (name "emacs-lsp-mode") + (version "9.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-lsp/lsp-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1p4979qbmllmmszmnyml0msxkza4pm14rdacmqczbfs3cs9n6bd3")))) + (build-system emacs-build-system) + (arguments + (list + #:emacs emacs ;need libxml support + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'move-clients-libraries + ;; Move all clients libraries at top-level, as is done, e.g., in + ;; MELPA. + (lambda _ + (for-each (lambda (f) + (install-file f ".")) + (find-files "clients/" "\\.el$")))) + (add-before 'move-clients-libraries 'fix-patch-el-files + ;; /bin/ksh is only used on macOS, which we don't support, so we + ;; don't want to add it as input. + (lambda _ + (substitute* '("clients/lsp-csharp.el" "clients/lsp-fsharp.el") + (("/bin/ksh") "ksh"))))))) + (propagated-inputs + (list emacs-dash + emacs-f + emacs-ht + emacs-hydra + emacs-markdown-mode + emacs-spinner)) + (home-page "https://emacs-lsp.github.io/lsp-mode/") + (synopsis "Emacs client and library for the Language Server Protocol") + (description + "LSP mode is a client and library implementation for the Language Server Protocol. This mode creates an IDE-like experience by providing optional integration with other popular Emacs packages like Company, Flycheck, and Projectile.") - (license license:gpl3+)))) + (license license:gpl3+))) (define* (%emacs-lsp-treemacs-upstream-source #:key commit version hash) (origin @@ -32433,7 +32466,7 @@ through Dash docsets.") (define-public emacs-devdocs (package (name "emacs-devdocs") - (version "0.6") + (version "0.6.1") (source (origin (method url-fetch) @@ -32441,7 +32474,7 @@ through Dash docsets.") "https://elpa.gnu.org/packages/" "devdocs-" version ".tar")) (sha256 - (base32 "17av2l61mr4y8la4cqiq1dnaznni4xirr5k3wdix1jzl3q1apypy")))) + (base32 "04m3jd3wymrsdlb1i7z6dz9pf1q8q38ihkbn3jisdca6xkk9jd6p")))) (build-system emacs-build-system) (home-page "https://github.com/astoff/devdocs.el") (synopsis "Emacs viewer for DevDocs") @@ -32783,14 +32816,14 @@ well as an option for visually flashing evaluated s-expressions.") (define-public emacs-tramp (package (name "emacs-tramp") - (version "2.6.2.2") + (version "2.6.3") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "tramp-" version ".tar")) (sha256 - (base32 "0bbsff2qr71f70nxhdi19b3jzpv6bgfb7x7qkrccsygvsvgyrb2h")))) + (base32 "0z44mfpvn4qy2xc2fsiahw3xir140ljna8aq45dcb7qnmr044xjb")))) (build-system emacs-build-system) (arguments (list @@ -33820,7 +33853,7 @@ time.") (define-public emacs-mastodon (package (name "emacs-mastodon") - (version "1.0.18") + (version "1.0.19") (source (origin (method git-fetch) @@ -33829,7 +33862,7 @@ time.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1l4arid01m5475wq4sy8j598ww13847sbpg9grl71r72rs83071w")))) + (base32 "096zsjlqx2cv4zq607f9n7mr60d5avhfczf3nxsa8wkjsj97qrlh")))) (build-system emacs-build-system) (arguments (list @@ -36269,20 +36302,20 @@ state to and restoring it from a file, with auto-saving and backups.") (define-public emacs-company-emoji (package (name "emacs-company-emoji") - (version "2.8.0") + (version "3.0.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/dunn/company-emoji/") + (url "https://codeberg.org/egirl/company-emoji") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0j35z7hjcg3dkwgd7mdx1yaxcmxkn00h91y9kl8qdci7m4lja460")))) + (base32 "1afy2f1ymzr518npbhy5296kaqshax5hs2ij7wgl28h0hsa2mnk1")))) (build-system emacs-build-system) (propagated-inputs (list emacs-company)) - (home-page "https://github.com/dunn/company-emoji/") + (home-page "https://codeberg.org/egirl/company-emoji") (synopsis "Company completion back-end for emoji") (description "This library is a Company back-end providing auto-completion for @@ -37988,7 +38021,11 @@ released, and track their progress in watching a series.") ;; Disable tests that need network access. (substitute* (list "tests/unit/test-webpaste-provider-creation.el" "tests/integration/test-webpaste-providers.el") - (("describe") "xdescribe"))))))) + (("describe") "xdescribe")) + (emacs-batch-edit-file "tests/integration/test-webpaste-providers.el" + '(progn + (insert ";;; -*-lexical-binding:t -*-\n") + (basic-save-buffer)))))))) (native-inputs (list emacs-buttercup)) (propagated-inputs @@ -38824,8 +38861,8 @@ headlines, keywords, tables and source blocks.") (license license:gpl3+)))) ; License is in pyimport.el (define-public emacs-straight-el - (let ((commit "039e5c9a9b5c00749602afb41341e9e77ba09429") - (revision "2")) + (let ((commit "b3760f5829dba37e855add7323304561eb57a3d4") + (revision "3")) (package (name "emacs-straight-el") (version (git-version "0" revision commit)) @@ -38838,7 +38875,7 @@ headlines, keywords, tables and source blocks.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "05avzakgkwzrj1pxa1pkcv96knqq4mnkv2cszn4cs4kmvr2mchxm")))) + (base32 "10kvm2gzn7yf2wkfprq7cm6m2la83rdi394rcrsxql3yyhd0v599")))) (build-system emacs-build-system) (arguments (list @@ -38858,12 +38895,7 @@ headlines, keywords, tables and source blocks.") (("\"git\"") (string-append "\"" (search-input-file inputs "/bin/git") - "\""))))) - (add-after 'check 'delete-tests - ;; "tests" directory includes bogus ".el" files that can make - ;; `patch-el-files' phase fail. - (lambda _ - (delete-file-recursively "tests")))))) + "\"")))))))) (native-inputs (list texinfo)) (inputs diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 01ded60c81..6f42d674e5 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -737,9 +737,7 @@ multipole-accelerated algorithm.") (list boost libgit2 qtbase-5 - ;; TODO: Needs to be renamed to qtserialport-5. when version 6 is - ;; packed. - qtserialport + qtserialport-5 qtsvg-5 zlib)) (home-page "https://fritzing.org") @@ -1588,7 +1586,7 @@ or an Ethernet connection.") (native-inputs `(("fortran" ,gfortran))) (inputs - (list lapack)) + (list openblas)) (home-page "https://github.com/stevengj/harminv") (synopsis "Harmonic inversion solver") (description @@ -1654,7 +1652,7 @@ for scientific simulations.") ("gsl" ,gsl) ("guile" ,guile-2.2) ("hdf5" ,hdf5) - ("lapack" ,lapack) + ("openblas" ,openblas) ("libctl" ,guile-libctl) ("readline" ,readline) ("zlib" ,zlib))) @@ -1696,7 +1694,7 @@ fully-vectorial and three-dimensional methods.") ("guile" ,guile-2.2) ("harminv" ,harminv) ("hdf5" ,hdf5) - ("lapack" ,lapack) + ("openblas" ,openblas) ("libctl" ,guile-libctl) ("mpb" ,mpb) ("zlib" ,zlib))) @@ -4229,7 +4227,7 @@ netlists from the drawn schematic, allowing the simulation of the circuit.") "08rqhl6a5a8s67a8yl16944zgcsnnb08xfv4klzyqwlvaqgfp783")))) (build-system gnu-build-system) (native-inputs (list qttools-5)) - (inputs (list qtbase-5 qtserialport)) + (inputs (list qtbase-5 qtserialport-5)) (arguments (list #:tests? #f ; no tests. #:phases #~(modify-phases %standard-phases diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index 40f1383a56..8afd853350 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -76,6 +76,7 @@ #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) #:use-module (gnu packages golang-crypto) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages guile) #:use-module (gnu packages jemalloc) #:use-module (gnu packages kerberos) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 8703120f2a..ee8e9df527 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -147,7 +147,7 @@ ;; <https://bitcoincore.org/en/lifecycle/#schedule>. (package (name "bitcoin-core") - (version "26.0") + (version "26.1") (source (origin (method url-fetch) (uri @@ -155,7 +155,7 @@ version "/bitcoin-" version ".tar.gz")) (sha256 (base32 - "18f0rl7nzr64m54d6hmrphg7z39mmj2ix47kv78n5nr8dqkrj7db")))) + "1vimkcm5bd6dyncy6kw16ibkcbykv526ajgh175j0jkvf5fywr4i")))) (build-system gnu-build-system) (native-inputs (list autoconf @@ -2322,7 +2322,7 @@ and manipulation.") (define-public xmrig (package (name "xmrig") - (version "6.21.0") + (version "6.21.2") (source (origin (method git-fetch) @@ -2330,7 +2330,7 @@ and manipulation.") (url "https://github.com/xmrig/xmrig") (commit (string-append "v" version)))) (file-name (git-file-name name version)) - (sha256 (base32 "1nmzgwd2r7ra7g4p0s5b77bgh099hf1kisbv4d946c9yiwbdzqgc")) + (sha256 (base32 "0rxnrn92v2w9f0zyv4zchilnrc3wa8nw4d4b4isaxx411zxgds6i")) (modules '((guix build utils))) (snippet ;; TODO: Try to use system libraries instead of bundled ones in diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 828bc7402a..21df5cd8f2 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -1503,14 +1503,16 @@ having to run @command{qmk} as root when flashing the firmware.") (define* (make-qmk-firmware/implementation keyboard keymap #:key (description "") keymap-json - keymap-source-directory) + keymap-source-directory + keyboard-source-directory) "Return a package to build the QMK firmware for KEYBOARD with KEYMAP. -Keyboard should be the name of a sub-directory under the @file{keyboards} -directory. For custom keymaps, KEYMAP-JSON, a file-like object of a JSON -representation of KEYMAP as generated by the @url{https://config.qmk.fm/, QMK -Configurator} tool or KEYMAP-SOURCE-DIRECTORY, a file-like object directory -containing the keymap source files files such as @file{keymap.c}, can be -provided." +Keyboard should be the name of a sub-directory under the @file{keyboards} directory. +For custom keymaps, KEYMAP-JSON, a file-like object of a JSON representation of +KEYMAP as generated by the @url{https://config.qmk.fm/, QMK Configurator} tool or +KEYMAP-SOURCE-DIRECTORY, a file-like object directory containing the keymap source +files files such as @file{keymap.c}, can be provided. For keyboards not available in +upstream repository, provide a file-like object directory containing the whole +keyboard definition in KEYBOARD-SOURCE-DIRECTORY." (package (name (string-append "qmk-firmware-" (string-replace-substring keyboard "_" "-") "-" @@ -1570,6 +1572,15 @@ provided." (base32 "1rmhm4rxvq8skxqn6vc4n4ly1ak6whj7c386zbsci4pxx548n9h4")))) "lib/lufa"))) + #$@(if keyboard-source-directory + #~((add-after 'unpack 'copy-keyboard-source-directory + (lambda _ + (let ((keyboard-dir #$(string-append "keyboards/" keyboard))) + (false-if-exception (delete-file-recursively + keyboard-dir)) + (copy-recursively #$keyboard-source-directory + keyboard-dir))))) + #~()) #$@(if keymap-source-directory #~((add-after 'unpack 'copy-keymap-source-directory (lambda _ diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index c65ab74832..8fecd95940 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -17,7 +17,7 @@ ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019, 2020, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com> ;;; Copyright © 2019 Jethro Cao <jethrocao@gmail.com> -;;; Copyright © 2020-2023 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2020-2024 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro> @@ -2828,14 +2828,14 @@ a.k.a. XenoCollide) as described in Game Programming Gems 7.") (define-public ode (package (name "ode") - (version "0.16.4") + (version "0.16.5") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/odedevs/ode/downloads/" "ode-" version ".tar.gz")) (sha256 - (base32 "0rrl4pn4h3g0ay0i3n61pr6bwyk9vgar17vjal56pj66h617n0vi")) + (base32 "0ya6slmy2iysx3fql7w7r56c7gsk93qp1apfjn3raw252vfmx1xs")) (modules '((guix build utils))) (snippet '(begin @@ -2868,38 +2868,34 @@ computer games, 3D authoring tools and simulation tools.") (license (list license:lgpl2.1+ license:expat)))) (define-public chipmunk - (package - (name "chipmunk") - (version "7.0.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/slembcke/Chipmunk2D") - (commit (string-append "Chipmunk-" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1qmkn01g06p3rnhmbyffmjns6wj5vhgf9cscigk3wzxcpwv1hyxb")) - (modules '((guix build utils))) - (snippet - #~(begin - ;; This is fixed in the upstream repository but the fix - ;; has not been released. - (substitute* "src/cpHastySpace.c" - (("#include <sys/sysctl.h>") "")))))) - (build-system cmake-build-system) - (arguments - (list #:tests? #f ;no test - #:configure-flags - #~(list "-DBUILD_STATIC=OFF" - "-DBUILD_DEMOS=OFF"))) - (inputs - (list freeglut libxmu libxrandr)) - (home-page "https://chipmunk-physics.net/") - (synopsis "Fast and lightweight 2D game physics library") - (description "Chipmunk is a simple, lightweight, fast and portable 2D + (let ((commit "d0239ef4599b3688a5a336373f7d0a68426414ba") + (revision "1")) + (package + (name "chipmunk") + (version (git-version "7.0.3" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/slembcke/Chipmunk2D") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1910rfnanhna99bhfiyny3ki7aip2i9p4jzmwsfcg16m9gip5fd6")) + (modules '((guix build utils))))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ;no test + #:configure-flags + #~(list "-DBUILD_STATIC=OFF" + "-DBUILD_DEMOS=OFF"))) + (inputs + (list freeglut libxmu libxrandr)) + (home-page "https://chipmunk-physics.net/") + (synopsis "Fast and lightweight 2D game physics library") + (description "Chipmunk is a simple, lightweight, fast and portable 2D rigid body physics library written in C.") - (license license:expat))) + (license license:expat)))) (define-public box2d (package diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 223449af17..6e26a15f56 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -10528,7 +10528,7 @@ and chess engines.") (native-inputs (list qttools-5)) (inputs - (list qtbase-5 qtmultimedia-5 qtspeech qtsvg-5 zlib)) + (list qtbase-5 qtmultimedia-5 qtspeech-5 qtsvg-5 zlib)) (arguments `(#:tests? #f #:phases diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index c8902de6a0..7be4cb9bb1 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2023 Andreas Enge <andreas@enge.fr> @@ -969,10 +969,18 @@ using compilers other than GCC." (if (and (target-ppc64le?) (version>=? version "11") (not (version>=? version "12"))) - #~((add-after 'unpack 'patch-powerpc - (lambda* (#:key inputs #:allow-other-keys) - (invoke "patch" "--force" "-p1" "-i" - (assoc-ref inputs "powerpc64le-patch"))))) + ;; TODO: Drop the 'else' branch below on next rebuild + ;; cycle. + (if (%current-target-system) + #~((add-after 'unpack 'patch-powerpc ;correct + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (invoke "patch" "--force" "-p1" "-i" + (assoc-ref (or native-inputs inputs) + "powerpc64le-patch"))))) + #~((add-after 'unpack 'patch-powerpc ;wrong + (lambda* (#:key inputs #:allow-other-keys) + (invoke "patch" "--force" "-p1" "-i" + (assoc-ref inputs "powerpc64le-patch")))))) '())) ;; Force rs6000 (i.e., powerpc) libdir to be /lib and not /lib64. (add-before 'chdir 'fix-rs6000-libdir diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 8117b496df..c30f28d96f 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -101,6 +101,7 @@ #:use-module (gnu packages imagemagick) #:use-module (gnu packages java) #:use-module (gnu packages kde) + #:use-module (gnu packages libunwind) #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages lua) @@ -1229,6 +1230,47 @@ development.") (home-page "https://www.gaia-gis.it/fossil/spatialite_gui/index") (license license:gpl3+))) +(define-public pdal + (package + (name "pdal") + (version "2.7.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PDAL/PDAL") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gg5lcshlmn3wwak42xr0b8a8gdr4572d7hrcvxn2291kp2c3096")))) + (build-system cmake-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ctest" "-E" ;; This test hangs. + "pdal_io_stac_reader_test"))))))) + (native-inputs (list python)) + (inputs (list gdal + h3 + libgeotiff + libunwind + libxml2 + nlohmann-json + openssl + proj + utfcpp + xz + `(,zstd "lib"))) + (home-page "https://pdal.io/") + (synopsis "Point Data Abstraction Library") + (description "PDAL is a C++ library for translating and manipulating point +cloud data. It is very much like the GDAL library which handles raster and +vector data.") + (license license:bsd-3))) + (define-public gdal (package (name "gdal") @@ -1911,6 +1953,34 @@ persisted. ") (license license:expat))) +(define-public libmseed + (package + (name "libmseed") + (version "3.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/EarthScope/libmseed") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "05sk2h19c7ja98s75b7hbn2cwnjc5l6dr59c23fgnaimmad2rfn7")))) + (build-system gnu-build-system) + (arguments + (list #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:phases #~(modify-phases %standard-phases + (delete 'configure)))) + (home-page "https://earthscope.github.io/libmseed/") + (synopsis "Library for the miniSEED data format") + (description "The miniSEED library provides a framework for manipulation +of SEED data records, a format for commonly used for seismological time +series and related data. The library includes the functionality to read +and write data records, in addition to reconstructing time series +from multiple records.") + (license license:asl2.0))) + (define-public python-rtree (package (name "python-rtree") @@ -2574,7 +2644,7 @@ track your position right from your laptop.") qtbase-5 qtimageformats-5 qtlocation - qtsensors + qtsensors-5 zlib)) (native-inputs (list doxygen @@ -2609,7 +2679,6 @@ orienteering sport.") ("gdal" ,gdal) ("geos" ,geos) ("glu" ,glu) - ("lapack" ,lapack) ("libpng" ,libpng) ("libtiff" ,libtiff) ("mesa" ,mesa) @@ -2643,6 +2712,11 @@ orienteering sport.") (guix build python-build-system)) #:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-lapack + (lambda _ + (substitute* "./configure" + (("-lblas") "-lopenblas") + (("-llapack") "-lopenblas")))) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let ((shell (search-input-file inputs "/bin/bash"))) @@ -2977,7 +3051,7 @@ growing set of geoscientific methods.") qtkeychain qtlocation qtmultimedia-5 - qtserialport + qtserialport-5 qtsvg-5 qwt ;; saga diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index cf066a8aa6..b11046f05d 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi> +;;; Copyright © 2024 Zheng Junjie <873216071@qq.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -202,12 +203,12 @@ shared NFS home directories.") (arguments (substitute-keyword-arguments (package-arguments dbus) ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'customize-config - (lambda _ - (substitute* "bus/session.conf.in" - (("@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session-local.conf") - "/var/run/jami/session-local.conf"))))))))))) + #~(modify-phases #$phases + (add-after 'unpack 'customize-config + (lambda _ + (substitute* "bus/session.conf.in" + (("@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session-local.conf") + "/var/run/jami/session-local.conf"))))))))))) (define-public dbus-1.15.0 ;; Dbus 1.15.2 has a breaking change. diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index d81cf034a1..e8f70f477e 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -1011,7 +1011,7 @@ dark, switch backgrounds and run custom commands at sunset and sunrise.") (define-public gpaste (package (name "gpaste") - (version "42.2") + (version "44.1") (source (origin (method git-fetch) (uri (git-reference @@ -1020,12 +1020,12 @@ dark, switch backgrounds and run custom commands at sunset and sunrise.") (file-name (git-file-name name version)) (sha256 (base32 - "0qq2p19p3r3lz8yfynpnf36cipv54bzdbmq1x5zgwhyl4yl41g28")) + "1amfr8hwf7401xa3fzaa8w17w3v3lxx0fkr7rqkkyfy57iavrykk")) (patches (search-patches "gpaste-fix-paths.patch")))) (build-system meson-build-system) (native-inputs - (list gcr-3 + (list gcr gettext-minimal gobject-introspection (list glib "bin") ; for glib-compile-resources @@ -1033,11 +1033,11 @@ dark, switch backgrounds and run custom commands at sunset and sunrise.") vala)) (inputs (list appstream-glib + desktop-file-utils ; for update-desktop-database gjs - gtk + gtk+ mutter - libadwaita - libarchive)) + libadwaita)) (arguments (list #:glib-or-gtk? #true #:configure-flags diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 5277476338..787cf66f09 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3278,7 +3278,7 @@ the GNOME desktop environment.") (define-public blueprint-compiler (package (name "blueprint-compiler") - (version "0.4.0") + (version "0.12.0") (source (origin (method git-fetch) (uri (git-reference @@ -3288,7 +3288,7 @@ the GNOME desktop environment.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0hj7f4xhwjc4x32r3lswwclbw37fw3spy806g4plkmym25hz4ydy")))) + "15cm2bksmygf8sifryrawxxblvvw27p4w3m42gvp3jlq50a15xm6")))) (build-system meson-build-system) (arguments (list @@ -3303,13 +3303,15 @@ the GNOME desktop environment.") #~(modify-phases %standard-phases (add-after 'wrap 'wrap-python (assoc-ref python:%standard-phases 'wrap)) - (add-after 'wrap-python 'wrap-gi - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) - (wrap-program (string-append out "/bin/blueprint-compiler") - `("GI_TYPELIB_PATH" ":" suffix (,gi-typelib-path))))))))) - (native-inputs (list gtk python-pygobject python)) + (add-before 'check 'pre-check + (lambda _ + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1")))))) + (native-inputs (list gtk + libadwaita + python + python-pygobject + xorg-server-for-tests)) (inputs (list python)) (synopsis "Template markup language") (description @@ -3318,6 +3320,22 @@ compiles to GTKBuilder XML.") (home-page "https://gitlab.gnome.org/jwestman/blueprint-compiler") (license license:lgpl3+))) +(define-public blueprint-compiler-0.4 + (package + (inherit blueprint-compiler) + (name "blueprint-compiler") + (version "0.4.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url + "https://gitlab.gnome.org/jwestman/blueprint-compiler") + (commit (string-append "v" version)))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0hj7f4xhwjc4x32r3lswwclbw37fw3spy806g4plkmym25hz4ydy")))))) + (define-public cambalache (package (name "cambalache") @@ -7784,7 +7802,7 @@ javascript engine and the GObject introspection framework.") (define-public gedit (package (name "gedit") - (version "44.1") + (version "44.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7792,7 +7810,7 @@ javascript engine and the GObject introspection framework.") name "-" version ".tar.xz")) (sha256 (base32 - "1nlgbnagahymb8l41kgz3nwc4p9cj3zx39428z6zik44fa6kfqh4")))) + "0j8p7lnf05sbw194babasfhvpd3pp29f17kvzn16ffnh34psn3y9")))) (build-system meson-build-system) (arguments (list @@ -10309,6 +10327,7 @@ playing media, scanning, and much more.") pulseaudio shared-mime-info system-config-printer + xdg-desktop-portal xdg-user-dirs yelp zenity)) @@ -12632,7 +12651,7 @@ non-privileged user.") (define-public geary (package (name "geary") - (version "43.0") + (version "44.1") (source (origin (method git-fetch) (uri (git-reference @@ -12641,7 +12660,7 @@ non-privileged user.") (file-name (git-file-name name version)) (sha256 (base32 - "05b8c5ljzx1ly7wq8jzpv8psxmsdlz395sr17xwj49nh495nflz5")))) + "1cx1jfaxsbkxm8774wf8n7ss2n73bzgk4yi2f9i3ab698ygh0h68")))) (build-system meson-build-system) (arguments (list #:glib-or-gtk? #t @@ -13422,7 +13441,7 @@ profiler via Sysprof, debugging support, and more.") (define-public komikku (package (name "komikku") - (version "1.17.0") + (version "1.34.2") (source (origin (method git-fetch) @@ -13432,7 +13451,7 @@ profiler via Sysprof, debugging support, and more.") (file-name (git-file-name name version)) (sha256 (base32 - "0snb6vdgb3l2mw0kr0yb4zjpq46w56rpi554vqn5ks6qwywvs58g")))) + "044m3z7h1hi2avx4z6qgjzhgn1fkf1iclxhr4j7pb6flbqvwnxhs")))) (build-system meson-build-system) (arguments (list @@ -13469,6 +13488,7 @@ profiler via Sysprof, debugging support, and more.") python-beautifulsoup4 python-brotli python-cloudscraper + python-colorthief python-dateparser python-emoji python-keyring @@ -13485,7 +13505,8 @@ profiler via Sysprof, debugging support, and more.") python-unidecode webkitgtk)) (native-inputs - (list desktop-file-utils + (list blueprint-compiler + desktop-file-utils gettext-minimal `(,glib "bin") gobject-introspection diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index e23755302d..0763361b9c 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -79,6 +79,7 @@ #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix deprecation) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu)) @@ -163,14 +164,14 @@ tool to extract metadata from a file and print the results.") (define-public libmicrohttpd (package (name "libmicrohttpd") - (version "0.9.77") + (version "1.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-" version ".tar.gz")) (sha256 (base32 - "185hfvdxs3njcja5rz5c9v73x4x97k0s8vkah396000ja6hj6w4y")))) + "151bi13xx8dz5c9v33chp6ch5q8wmbxb9z7l37g4vqsdkgy0k7m8")))) (build-system gnu-build-system) (arguments (list #:configure-flags @@ -188,77 +189,12 @@ authentication and support for SSL3 and TLS.") (license license:lgpl2.1+) (home-page "https://www.gnu.org/software/libmicrohttpd/"))) -(define-public gnurl - (package - (name "gnurl") - (version "7.70.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gnunet/gnurl-" version ".tar.gz")) - (sha256 - (base32 - "0px9la8v4bj1dzxb95fx3yxk0rcjqjrxpj733ga27cza45wwzkqa")))) - (build-system gnu-build-system) - (outputs '("out" - "doc")) ; 1.8 MiB of man3 pages - (inputs `(("gnutls" ,gnutls/dane) - ("libidn2" ,libidn2) - ("zlib" ,zlib))) - (native-inputs - (list libtool perl pkg-config python)) - (arguments - `(#:configure-flags - ;; All of these produce errors during configure. - (list "--disable-ftp" - "--disable-file" - "--disable-ldap" - "--disable-rtsp" - "--disable-dict" - "--disable-telnet" - "--disable-tftp" - "--disable-pop3" - "--disable-imap" - "--disable-smb" - "--disable-smtp" - "--disable-gopher" - "--without-ssl" - "--without-libpsl" - "--without-librtmp" - "--disable-ntlm-wb") - #:phases - (modify-phases %standard-phases - (add-after 'install 'move-man3-pages - (lambda* (#:key outputs #:allow-other-keys) - ;; Move section 3 man pages to "doc". - (let ((out (assoc-ref outputs "out")) - (doc (assoc-ref outputs "doc"))) - (mkdir-p (string-append doc "/share/man")) - (rename-file (string-append out "/share/man/man3") - (string-append doc "/share/man/man3")) - #t))) - ;; We have to patch runtests.pl in tests/ directory - (replace 'check - (lambda _ - (substitute* "tests/runtests.pl" - (("/bin/sh") (which "sh"))) - - ;; Make test output more verbose. - (invoke "make" "-C" "tests" "test")))))) - (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL") - (description - "Gnurl is a microfork of cURL, a command line tool for transferring data -with URL syntax. While cURL supports many crypto backends, libgnurl only -supports HTTP, HTTPS and GnuTLS.") - (license (license:non-copyleft "file://COPYING" - "See COPYING in the distribution.")) - (properties '((ftp-server . "ftp.gnu.org") - (ftp-directory . "/gnunet"))) - (home-page "https://gnunet.org/en/gnurl.html"))) +(define-deprecated/public-alias gnurl curl) (define-public gnunet (package (name "gnunet") - (version "0.20.0") + (version "0.21.1") (source (origin (method url-fetch) @@ -266,7 +202,7 @@ supports HTTP, HTTPS and GnuTLS.") ".tar.gz")) (sha256 (base32 - "064mmhksznbsymanikwqkgmdhk2f0zjll2aq2cmxa14wm5w9w0jn")))) + "0p3q9590bm0d6q6p17jcbq2yiciqmvk5ys6pwdrp4257mhz8prlk")))) (build-system gnu-build-system) (inputs (list bluez @@ -306,15 +242,17 @@ supports HTTP, HTTPS and GnuTLS.") #~(modify-phases %standard-phases (add-after 'unpack 'disable-problematic-tests (lambda _ - (substitute* "src/cadet/Makefile.in" - ;; The speed_reliable tests appear to be unreliable (see: - ;; https://bugs.gnunet.org/view.php?id=7787). - (("test_cadet_[0-9]+_speed_reliable\\$\\(EXEEXT)") + ;; The 'test_communicator_bidirect-tcp' fails + ;; non-deterministically (see: + ;; https://bugs.gnunet.org/view.php?id=8689). + (substitute* "src/service/transport/Makefile.in" + (("test_communicator_bidirect-tcp\\$\\(EXEEXT) ") "")) - (substitute* "src/core/Makefile.in" - ;; The 'test_core_api' test fails non-deterministically (see: - ;; https://bugs.gnunet.org/view.php?id=7784). - (("test_core_api\\$\\(EXEEXT) ") "")))) + ;; The 'test_fs_search_with_and' fails non-deterministically + ;; (see: https://bugs.gnunet.org/view.php?id=8692). + (substitute* "src/service/fs/Makefile.in" + (("test_fs_search_with_and\\$\\(EXEEXT) ") + "")))) (add-before 'check 'set-env-var-for-tests (lambda _ (setenv "LANG" "en_US.UTF-8"))) @@ -433,20 +371,17 @@ The following services are supported: (license (list license:agpl3+ license:gpl3+ license:fdl1.3+ license:lgpl3+)) (home-page "https://git.gnunet.org/gnunet-scheme.git"))) -;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk" -;; does not seem to be fully functional. This has been reported upstream: -;; http://lists.gnu.org/archive/html/gnunet-developers/2016-02/msg00004.html (define-public gnunet-gtk (package (inherit gnunet) (name "gnunet-gtk") - (version "0.20.0") + (version "0.21.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-" version ".tar.gz")) (sha256 (base32 - "0bandj2f24v4wfq1v5j73zn5jp25dn8r7y0wd7znlkmbh86fb4g9")))) + "1b7xfypa0s7zlijgvya8p3rvljnn65w5cjkaw6x83v9ra8l6s0dx")))) (arguments (list #:configure-flags #~(list "--with-libunique" diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 1bf6eee2ff..e7c583a266 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -944,7 +944,7 @@ passphrase when @code{gpg} is run and needs it."))) (define-public pinentry-rofi (package (name "pinentry-rofi") - (version "2.0.3") + (version "2.1.0") (source (origin (method git-fetch) (uri (git-reference @@ -952,7 +952,7 @@ passphrase when @code{gpg} is run and needs it."))) (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0kjzvgni9srl8h5c52pqrvgdxs6avv0nhgk19apd97sx10qdwdhk")))) + (base32 "1v5rl2kkvkj1pw3bn20gwa2pa7caan3hbqnr6fshv5j7h56919i7")))) (build-system gnu-build-system) (arguments `(#:modules diff --git a/gnu/packages/golang-check.scm b/gnu/packages/golang-check.scm index 1558536182..4984d552d3 100644 --- a/gnu/packages/golang-check.scm +++ b/gnu/packages/golang-check.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2023 Benjamin <benjamin@uvy.fr> ;;; Copyright © 2023 Felix Lechner <felix.lechner@lease-up.com> +;;; Copyright © 2023 Fries <fries1234@protonmail.com> ;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space> ;;; Copyright © 2023 Katherine Cox-Buday <cox.katherine.e@gmail.com> ;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com> @@ -122,6 +123,36 @@ @end itemize\n") (license license:expat)))) +(define-public go-github-com-chzyer-test + (package + (name "go-github-com-chzyer-test") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chzyer/test") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1axdlcnx2qjsn5wsr2pr1m0w0a8k4nk5kkrngh742fgh81vzzy8s")))) + (build-system go-build-system) + (arguments + (list + ;; Tests relating to a in-memory disk fail due to a Segfault see + ;; <https://github.com/chzyer/test/issues/4>. + #:tests? #f + #:import-path "github.com/chzyer/test")) + (propagated-inputs + (list go-github-com-chzyer-logex)) + (home-page "https://github.com/chzyer/test") + (synopsis "Testing library for Go") + ;; Description is not provided, see + ;; <https://github.com/chzyer/test/issues/3>. + (description + "A testing library for Go programs.") + (license license:expat))) + (define-public go-github-com-davecgh-go-spew (package (name "go-github-com-davecgh-go-spew") @@ -160,6 +191,42 @@ style). @end itemize") (license license:isc))) +(define-public go-github-com-felixge-fgprof + (package + (name "go-github-com-felixge-fgprof") + (version "0.9.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/felixge/fgprof") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "00h4kphvmbcdgad0wmqbaclc4a1pipdb55ay41mwh6cnkdjjvhp0")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/felixge/fgprof")) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-google-pprof)) + (home-page "https://github.com/felixge/fgprof") + (synopsis "Sampling profiler for Golang") + (description + "@code{fgprof} is a sampling Go profiler providing analyze On-CPU as well +as @url{http://www.brendangregg.com/offcpuanalysis.html, Off-CPU} (e.g. I/O) +time together. + +Go's builtin sampling CPU profiler can only show On-CPU time, but it's better +than fgprof at that. Go also includes tracing profilers that can analyze I/O, +but they can't be combined with the CPU profiler. + +fgprof is designed for analyzing applications with mixed I/O and CPU +workloads. This kind of profiling is also known as wall-clock profiling.") + (license license:expat))) + (define-public go-github-com-frankban-quicktest (package (name "go-github-com-frankban-quicktest") @@ -288,6 +355,57 @@ also update a file with new \"golden\" output that is deemed correct.") values for the purpose of fuzz testing.") (license license:asl2.0)))) +;; XXX: Placing to (gnu package profiling) creates some failing cycles. +(define-public go-github-com-google-pprof + (package + (name "go-github-com-google-pprof") + (version "0.0.0-20240402174815-29b9bb013b0f") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/pprof") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09l37q5dql0q0zj8amlnrynajfvp1vrp846q5vgiwsbwz9b78f18")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/google/pprof" + #:phases + #~(modify-phases %standard-phases + ;; To make this package smaller to use as a library where just + ;; source is required. + (delete 'build)))) + (propagated-inputs + (list go-github-com-chzyer-readline + go-github-com-ianlancetaylor-demangle + go-golang-org-x-sys)) + (home-page "https://github.com/google/pprof") + (synopsis "Visualization and analysis of profiling data") + (description + "@code{pprof} is a tool for visualization and analysis of profiling data. + +It reads a collection of profiling samples in profile.proto format and +generates reports to visualize and help analyze the data. It can generate +both text and graphical reports (through the use of the dot visualization +package).") + (license (list + ;; For go code: LICENSE + license:asl2.0 + ;; For svgpan: third_party/svgpan/LICENSE + ;; original source <https://code.google.com/archive/p/svgpan/>. + license:bsd-3 + ;; For d3flamegraph: third_party/d3flamegraph/D3_LICENSE + ;; + ;; Bundle of d3-flame-graph and d3-selection JavaScript library + ;; (NPM) <https://www.npmjs.com/package/d3-flame-graph> and + ;; <https://www.npmjs.com/package/d3-selection>. + license:asl2.0 ; for bundle and d3-flame-graph + license:isc ; for d3-selection + )))) + (define-public go-github-com-hexops-gotextdiff (package (name "go-github-com-hexops-gotextdiff") @@ -441,17 +559,17 @@ differently.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1hh6n7q92y0ai8k6rj2yzw6wwxikhyiyk4j92zgvf1zad0gmqqmz")))) + (base32 "1hh6n7q92y0ai8k6rj2yzw6wwxikhyiyk4j92zgvf1zad0gmqqmz")))) (build-system go-build-system) (arguments - (list #:import-path "github.com/onsi/ginkgo")) + (list + #:import-path "github.com/onsi/ginkgo")) (propagated-inputs - (list go-golang-org-x-sys - go-golang-org-x-tools - go-github-com-go-task-slim-sprig + (list go-github-com-go-task-slim-sprig go-github-com-nxadm-tail - go-github-com-onsi-gomega)) + go-github-com-onsi-gomega + go-golang-org-x-sys + go-golang-org-x-tools)) (home-page "https://github.com/onsi/ginkgo") (synopsis "BDD-style testing framework for Go") (description @@ -460,6 +578,104 @@ builds on top of Go's builtin @code{testing} library and is complemented by the Gomega matcher library.") (license license:expat))) +(define-public go-github-com-onsi-ginkgo-v2 + (package + (inherit go-github-com-onsi-ginkgo) + (name "go-github-com-onsi-ginkgo-v2") + (version "2.17.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/onsi/ginkgo") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "089x6pz5563ldbxiwaqvd2g4dqfzlr25dflmas3gfq51ibwzh4vz")))) + (arguments + (list + #:go go-1.20 + #:import-path "github.com/onsi/ginkgo/v2")) + (propagated-inputs + (list go-github-com-go-logr-logr + ;; go-github-com-google-pprof ; not packed yet in Guix, for profiling + go-github-com-onsi-gomega + go-github-com-go-task-slim-sprig + go-golang-org-x-net + go-golang-org-x-sys + go-golang-org-x-tools)))) + +(define-public go-github-com-onsi-gomega + (package + (name "go-github-com-onsi-gomega") + (version "1.19.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/onsi/gomega") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "092phwk97sk4sv0nbx5pfhqs6x3x1lnrjwyda1m6b6zwrfmq5c6i")))) + (build-system go-build-system) + (arguments + (list #:import-path "github.com/onsi/gomega" + ;; Unless we disable the tests, we have a circular dependency on + ;; ginkgo/v2. + #:tests? #f)) + (propagated-inputs + (list go-github-com-golang-protobuf-proto + go-golang-org-x-net + go-golang-org-x-sys + go-golang-org-x-text + go-google-golang-org-protobuf + go-gopkg-in-yaml-v2)) + (home-page "https://github.com/onsi/gomega") + (synopsis "Matcher library for Ginkgo") + (description + "Gomega is the preferred matcher/assertion library for the Ginkgo test +framework.") + (license license:expat))) + +(define-public go-github-com-pkg-profile + (package + (name "go-github-com-pkg-profile") + (version "1.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pkg/profile") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ifr9gnycjwh7dbvsb5vgs9kzlr548cb4m45zvl8i8lgd3qhppy1")))) + (build-system go-build-system) + (arguments + (list + ;; XXX: Unit tests failing, see + ;; <https://github.com/pkg/profile/issues/68>. + #:tests? #f + #:import-path "github.com/pkg/profile" + #:phases + #~(modify-phases %standard-phases + ;; profile drops a cpu.pprof file inside its source directory + ;; after tests which makes it unreproducible so we remove it. + (add-after 'check 'delete-test-file + (lambda* (#:key import-path tests? #:allow-other-keys) + (when tests? + (delete-file (string-append "src/" import-path + "/cpu.pprof")))))))) + (propagated-inputs + (list go-github-com-felixge-fgprof)) + (home-page "https://github.com/pkg/profile") + (synopsis "Simple profiling for Go") + (description + "Profile provides a simple way to manage runtime/pprof profiling of your +Go application.") + (license license:bsd-2))) + (define-public go-github-com-prashantv-gostub (package (name "go-github-com-prashantv-gostub") @@ -860,6 +1076,20 @@ thoroughly (description "This package turns unkeyed struct literals (@code{T{1, 2, 3}}) into keyed ones (@code{T{A: 1, B: 2, C: 3}}) in Go."))) +(define-public go-pprof + (package + (inherit go-github-com-google-pprof) + (name "go-pprof") + (arguments + (list + #:install-source? #f + #:go go-1.19 + #:import-path "github.com/google/pprof")) + (description + (string-append (package-description go-github-com-google-pprof) + " This package provides an command line interface (CLI) +tool.")))) + (define-public go-staticcheck (package (inherit go-honnef-co-go-tools) diff --git a/gnu/packages/golang-compression.scm b/gnu/packages/golang-compression.scm index a1ad00f588..f40664d8f7 100644 --- a/gnu/packages/golang-compression.scm +++ b/gnu/packages/golang-compression.scm @@ -28,7 +28,8 @@ #:use-module (guix git-download) #:use-module (guix packages) #:use-module (guix utils) - #:use-module (gnu packages)) + #:use-module (gnu packages) + #:use-module (gnu packages golang-xyz)) ;;; Commentary: ;;; @@ -190,6 +191,52 @@ time, as otherwise the internal gzip library will likely be faster.") "This package provides a library for reading RAR archives with Golang.") (license license:bsd-2))) +(define-public go-github-com-pierrec-lz4 + (package + (name "go-github-com-pierrec-lz4") + (version "2.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pierrec/lz4") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0vfn01gd3hcpbj6gb4ig3pw6bv0g4j5780awr0fv4kf9id8gjvyy")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/pierrec/lz4")) + (home-page "https://github.com/pierrec/lz4") + (synopsis "LZ4 compression in pure Go") + (description + "@code{lz4} provides a streaming interface to +@url{http://fastcompression.blogspot.fr/2013/04/lz4-streaming-format-final.html, +LZ4 data streams} as well as low level compress and uncompress functions for +LZ4 data blocks. The implementation is based on the reference C +@url{https://github.com/lz4/lz4, one}.") + (license license:bsd-3))) + +(define-public go-github-com-pierrec-lz4-v4 + (package + (inherit go-github-com-pierrec-lz4) + (name "go-github-com-pierrec-lz4-v4") + (version "4.1.21") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pierrec/lz4") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nc2aprbw4s6cx2mijaqdswkgnizx8fqb0mzha82wrznl3gz69ni")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/pierrec/lz4/v4")))) + (define-public go-github-com-ulikunitz-xz (package (name "go-github-com-ulikunitz-xz") @@ -217,6 +264,28 @@ any dependency on any C code.") (license license:bsd-3))) ;;; +;;; Executables: +;;; + +(define-public go-lz4c + (package + (inherit go-github-com-pierrec-lz4-v4) + (name "go-lz4c") + (arguments + (list + #:install-source? #f + #:import-path "github.com/pierrec/lz4/cmd/lz4c" + #:unpack-path "github.com/pierrec/lz4")) + (native-inputs + (list go-code-cloudfoundry-org-bytefmt + go-github-com-pierrec-cmdflag + go-github-com-schollz-progressbar-v3)) + (description + (string-append (package-description go-github-com-pierrec-lz4-v4) + " This package provides an additional command line +interface tool to compress and decompress LZ4 files.")))) + +;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar ;;; functionality or similar names. diff --git a/gnu/packages/golang-crypto.scm b/gnu/packages/golang-crypto.scm index 8d0e0ddb64..3b95965f6b 100644 --- a/gnu/packages/golang-crypto.scm +++ b/gnu/packages/golang-crypto.scm @@ -592,17 +592,11 @@ Stealing encryption and decryption methods.") (build-system go-build-system) (arguments '(#:import-path "github.com/libp2p/go-libp2p-peer")) - (native-inputs + (propagated-inputs (list go-github-com-btcsuite-btcd-btcec go-github-com-gogo-protobuf - go-github-com-gxed-hashland-keccakpg go-github-com-libp2p-go-libp2p-crypto - go-github-com-minio-blake2b-simd - go-github-com-minio-sha256-simd - go-github-com-mr-tron-base58 - go-github-com-multiformats-go-multihash - go-github-com-spaolacci-murmur3 - go-golang-org-x-crypto)) + go-github-com-multiformats-go-multihash)) (home-page "https://github.com/libp2p/go-libp2p-peer") (synopsis "PKI based identities for use in go-libp2p") (description "PKI based identities for use in @command{go-libp2p}.") @@ -812,7 +806,7 @@ Architecture Processors\" by J. Guilford et al.") (build-system go-build-system) (arguments '(#:import-path "github.com/multiformats/go-multihash")) - (native-inputs + (propagated-inputs (list go-github-com-mr-tron-base58 go-github-com-gxed-hashland-keccakpg go-github-com-minio-blake2b-simd diff --git a/gnu/packages/golang-web.scm b/gnu/packages/golang-web.scm index e19ca4f5ff..5c6d9126ef 100644 --- a/gnu/packages/golang-web.scm +++ b/gnu/packages/golang-web.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2022 jgart via Guix-patches via <guix-patches@gnu.org> ;;; Copyright © 2022 muradm <mail@muradm.net> ;;; Copyright © 2022, 2023 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2023 Fries <fries1234@protonmail.com> ;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space> ;;; Copyright © 2023 Katherine Cox-Buday <cox.katherine.e@gmail.com> ;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr> @@ -1188,6 +1189,40 @@ Microsoft AD PAC authorization data.") transforms one JSON document into another through a JMESPath expression.") (license license:asl2.0))) +(define-public go-github-com-json-iterator-go + (package + (name "go-github-com-json-iterator-go") + (version "1.1.12") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/json-iterator/go") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1c8f0hxm18wivx31bs615x3vxs2j3ba0v6vxchsjhldc8kl311bz")))) + (build-system go-build-system) + (arguments + (list #:import-path "github.com/json-iterator/go")) + (native-inputs + (list go-github-com-davecgh-go-spew + go-github-com-google-gofuzz + go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-modern-go-concurrent + go-github-com-modern-go-reflect2)) + (home-page "https://github.com/json-iterator/go") + (synopsis "High-performance replacement for Golang @code{encoding/json}") + (description + "This package implements encoding and decoding of JSON as defined in +@uref{https://rfc-editor.org/rfc/rfc4627.html,RFC 4627} and provides +interfaces with identical syntax of standard lib encoding/json. Converting +from encoding/json to jsoniter is no more than replacing the package with +jsoniter and variable type declarations (if any). jsoniter interfaces gives +100% compatibility with code using standard lib.") + (license license:expat))) + (define-public go-github-com-julienschmidt-httprouter (package (name "go-github-com-julienschmidt-httprouter") @@ -1257,14 +1292,8 @@ router.") (arguments (list #:import-path "github.com/multiformats/go-multiaddr")) - (native-inputs - (list go-github-com-gxed-hashland-keccakpg - go-github-com-minio-blake2b-simd - go-github-com-minio-sha256-simd - go-github-com-mr-tron-base58 - go-github-com-multiformats-go-multihash - go-github-com-spaolacci-murmur3 - go-golang-org-x-crypto)) + (propagated-inputs + (list go-github-com-multiformats-go-multihash)) (home-page "https://github.com/multiformats/go-multiaddr") (synopsis "Composable and future-proof network addresses") (description @@ -1305,15 +1334,8 @@ following: ;; TODO: Tests fail because they try to access the network. #:tests? #f #:import-path "github.com/multiformats/go-multiaddr-net")) - (native-inputs - (list go-github-com-gxed-hashland-keccakpg - go-github-com-minio-blake2b-simd - go-github-com-minio-sha256-simd - go-github-com-mr-tron-base58 - go-github-com-multiformats-go-multiaddr - go-github-com-multiformats-go-multihash - go-github-com-spaolacci-murmur3 - go-golang-org-x-crypto)) + (propagated-inputs + (list go-github-com-multiformats-go-multiaddr)) (home-page "https://github.com/multiformats/go-multiaddr-net") (synopsis "Multiaddress net tools") (description diff --git a/gnu/packages/golang-xyz.scm b/gnu/packages/golang-xyz.scm index e1ac32273c..dfd4190a7d 100644 --- a/gnu/packages/golang-xyz.scm +++ b/gnu/packages/golang-xyz.scm @@ -1,25 +1,32 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2019 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017-2020 Leo Famulari <leo@famulari.name> ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net> +;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com> ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr> ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com> -;;; Copyright © 2019 Leo Famulari <leo@famulari.name> -;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org> +;;; Copyright © 2019, 2021 Vagrant Cascadian <vagrant@debian.org> +;;; Copyright © 2019-2021 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2019-2022 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> -;;; Copyright © 2020, 2021 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2020, 2021 raingloom <raingloom@riseup.net> ;;; Copyright © 2021 Collin J. Doering <collin@rekahsoft.ca> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> +;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> +;;; Copyright © 2021 raingloom <raingloom@riseup.net> ;;; Copyright © 2021, 2023, 2024 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2022 Dhruvin Gandhi <contact@dhruvin.dev> ;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev> ;;; Copyright © 2023 Benjamin <benjamin@uvy.fr> +;;; Copyright © 2023 Fries <fries1234@protonmail.com> ;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space> ;;; Copyright © 2023 Katherine Cox-Buday <cox.katherine.e@gmail.com> +;;; Copyright © 2023 Nguyễn Gia Phong <mcsinyx@disroot.org> ;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr> +;;; Copyright © 2023 Sergey Trofimov <sarg@sarg.org.ru> ;;; Copyright © 2023 Thomas Ieong <th.ieong@free.fr> ;;; Copyright © 2023 Timo Wilken <guix@twilken.net> ;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com> @@ -43,6 +50,7 @@ (define-module (gnu packages golang-xyz) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system go) + #:use-module (guix build-system copy) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) @@ -54,7 +62,8 @@ #:use-module (gnu packages golang-check) #:use-module (gnu packages golang-compression) #:use-module (gnu packages golang-crypto) - #:use-module (gnu packages linux)) + #:use-module (gnu packages linux) + #:use-module (gnu packages specifications)) ;;; Commentary: ;;; @@ -68,6 +77,37 @@ ;;; Libraries: ;;; +(define-public go-code-cloudfoundry-org-bytefmt + (package + (name "go-code-cloudfoundry-org-bytefmt") + (version "0.0.0-20240329144308-0c372429d24b") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cloudfoundry/bytefmt") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0aqzbiy3idddyj39i7ydkjhnmpcbwr99g094kqiw72m9flrvrnxj")) + (snippet + #~(begin (use-modules (guix build utils)) + (delete-file-recursively "vendor"))))) + (build-system go-build-system) + (arguments + (list + #:go go-1.20 + #:import-path "code.cloudfoundry.org/bytefmt")) + (native-inputs + (list go-github-com-onsi-gomega + go-github-com-onsi-ginkgo-v2)) + (home-page "https://pkg.go.dev/code.cloudfoundry.org/bytefmt") + (synopsis "Human readable byte formatter for Golang") + (description + "Package bytefmt contains helper methods and constants for converting to and from +a human-readable byte format.") + (license license:asl2.0))) + (define-public go-github-com-a8m-envsubst (package (name "go-github-com-a8m-envsubst") @@ -575,6 +615,61 @@ similar to Go's standard library @code{json} and @code{xml} package.") "This package is a Go library that draws progress bars on the terminal.") (license license:bsd-3))) +(define-public go-github-com-chzyer-logex + (package + (name "go-github-com-chzyer-logex") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chzyer/logex") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0c9yr3r7dl3lcs22cvmh9iknihi9568wzmdywmc2irkjdrn8bpxw")))) + (build-system go-build-system) + (arguments + (list + ;; See <https://github.com/chzyer/logex/issues/4> and + ;; <https://github.com/chzyer/logex/pull/7>. + #:tests? #f + #:import-path "github.com/chzyer/logex")) + (home-page "https://github.com/chzyer/logex") + (synopsis "Golang log library") + (description + "This package provides a Golang log library supporting tracing and log +levels that works by wrapping the standard @code{log} library.") + (license license:expat))) + +(define-public go-github-com-chzyer-readline + (package + (name "go-github-com-chzyer-readline") + (version "1.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chzyer/readline") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1msh9qcm7l1idpmfj4nradyprsr86yhk9ch42yxz7xsrybmrs0pb")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/chzyer/readline")) + (native-inputs + (list go-github-com-chzyer-test)) + (propagated-inputs + (list go-github-com-chzyer-logex + go-golang-org-x-sys)) + (home-page "https://github.com/chzyer/readline") + (synopsis "Pure Go readline library") + (description + "Readline is a pure Go implementation of a GNU-Readline like library.") + (license license:expat))) + (define-public go-github-com-coocood-freecache (package (name "go-github-com-coocood-freecache") @@ -834,6 +929,34 @@ gist (https://gist.github.com/kballard/272720).") (description "This package provides functionality to generate Go code.") (license license:expat))) +(define-public go-github-com-dbaggerman-cuba + (package + (name "go-github-com-dbaggerman-cuba") + (version "0.3.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dbaggerman/cuba") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1sbria32fh2bzc8agnm9p5id5z15mrqj4fyxhnkq05bh2qjkrwc7")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/dbaggerman/cuba")) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-karrick-godirwalk)) + (home-page "https://github.com/dbaggerman/cuba") + (synopsis "Goroutine parallelism library") + (description + "This package provides a library for Goroutines that helps to implement +more complicated parallel cases.") + (license license:expat))) + (define-public go-github-com-dimchansky-utfbom (package (name "go-github-com-dimchansky-utfbom") @@ -879,6 +1002,32 @@ Mark} detection.") atimes for files.") (license license:expat))) +(define-public go-github-com-djherbis-times + (package + (name "go-github-com-djherbis-times") + (version "1.6.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/djherbis/times") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0a70nqkc592ipbgb3ib4yg8i2yj2hlhalpzzksdlhilm5a3689ic")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/djherbis/times")) + (propagated-inputs + (list go-golang-org-x-sys)) + (home-page "https://github.com/djherbis/times") + (synopsis "File times - atime, mtime, ctime and btime for Golang") + (description + "Package @code{times} provides a platform-independent way to get atime, +mtime,ctime and btime for files.") + (license license:expat))) + (define-public go-github-com-dustin-gojson (package (name "go-github-com-dustin-gojson") @@ -991,87 +1140,64 @@ Differentiation between text and binary files}. @end itemize") (license license:expat))) -(define-public go-github-com-hashicorp-errwrap - (package - (name "go-github-com-hashicorp-errwrap") - (version "1.1.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/hashicorp/errwrap") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0p5wdz8p7dmwphmb33gwhy3iwci5k9wkfqmmfa6ay1lz0cqjwp7a")))) - (build-system go-build-system) - (arguments - (list - #:import-path "github.com/hashicorp/errwrap")) - (home-page "https://github.com/hashicorp/errwrap") - (synopsis "Wrapping and querying errors for Golang") - (description - "@code{errwrap} is a package for Go that formalizes the pattern of -wrapping errors and checking if an error contains another error.") - (license license:mpl2.0))) - -(define-public go-github-com-hashicorp-hcl +(define-public go-github-com-go-logr-logr (package - (name "go-github-com-hashicorp-hcl") - (version "1.0.0") + (name "go-github-com-go-logr-logr") + (version "1.4.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/hashicorp/hcl") + (url "https://github.com/go-logr/logr") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66")))) + (base32 "0x0q9jkk2p5pz4lii1qs8ifnsib4ib5s8pigmjwdmagl976g8nhm")))) (build-system go-build-system) (arguments (list - #:import-path "github.com/hashicorp/hcl")) - (native-inputs - (list go-github-com-davecgh-go-spew)) - (synopsis "Go implementation of HashiCorp Configuration Language V1") + #:go go-1.18 + #:import-path "github.com/go-logr/logr" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-examples-and-benchmarks + (lambda* (#:key import-path #:allow-other-keys) + (delete-file-recursively + (string-append "src/" import-path "/examples")) + (delete-file-recursively + (string-append "src/" import-path "/funcr/example")) + (delete-file-recursively + (string-append "src/" import-path "/benchmark"))))))) + (home-page "https://github.com/go-logr/logr") + (synopsis "Minimal logging API for Go") (description - "This package contains the main implementation of the @acronym{HCL, -HashiCorp Configuration Language}. HCL is designed to be a language for -expressing configuration which is easy for both humans and machines to read.") - (home-page "https://github.com/hashicorp/hcl") - (license license:mpl2.0))) + "Package @code{logr} defines a general-purpose logging API and abstract +interfaces to back that API. Packages in the Go ecosystem can depend on it, +while callers can implement logging with whatever backend is appropriate.") + (license license:asl2.0))) -(define-public go-github-com-hashicorp-hcl-v2 +(define-public go-github-com-hashicorp-errwrap (package - (name "go-github-com-hashicorp-hcl-v2") - (version "2.11.1") + (name "go-github-com-hashicorp-errwrap") + (version "1.1.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/hashicorp/hcl") + (url "https://github.com/hashicorp/errwrap") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0f9flmmkj7fr1337fc56cqy73faq87ix375hnz3id4wc023przv1")))) + (base32 "0p5wdz8p7dmwphmb33gwhy3iwci5k9wkfqmmfa6ay1lz0cqjwp7a")))) (build-system go-build-system) (arguments (list - #:import-path "github.com/hashicorp/hcl/v2")) - (native-inputs - (list go-github-com-davecgh-go-spew)) - (inputs - (list go-github-com-agext-levenshtein - go-github-com-apparentlymart-go-textseg-v13 - go-github-com-mitchellh-go-wordwrap - go-github-com-zclconf-go-cty)) - (synopsis "Go implementation of HashiCorp Configuration Language V2") + #:import-path "github.com/hashicorp/errwrap")) + (home-page "https://github.com/hashicorp/errwrap") + (synopsis "Wrapping and querying errors for Golang") (description - "This package contains the main implementation of the @acronym{HCL, -HashiCorp Configuration Language}. HCL is designed to be a language for -expressing configuration which is easy for both humans and machines to read.") - (home-page "https://github.com/hashicorp/hcl") + "@code{errwrap} is a package for Go that formalizes the pattern of +wrapping errors and checking if an error contains another error.") (license license:mpl2.0))) (define-public go-github-com-hashicorp-go-hclog @@ -1212,6 +1338,65 @@ a collection of versions properly, handles prerelease/beta versions, can increment versions.") (license license:mpl2.0))) +(define-public go-github-com-hashicorp-hcl + (package + (name "go-github-com-hashicorp-hcl") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hashicorp/hcl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/hashicorp/hcl")) + (native-inputs + (list go-github-com-davecgh-go-spew)) + (synopsis "Go implementation of HashiCorp Configuration Language V1") + (description + "This package contains the main implementation of the @acronym{HCL, +HashiCorp Configuration Language}. HCL is designed to be a language for +expressing configuration which is easy for both humans and machines to read.") + (home-page "https://github.com/hashicorp/hcl") + (license license:mpl2.0))) + +(define-public go-github-com-hashicorp-hcl-v2 + (package + (name "go-github-com-hashicorp-hcl-v2") + (version "2.11.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hashicorp/hcl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0f9flmmkj7fr1337fc56cqy73faq87ix375hnz3id4wc023przv1")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/hashicorp/hcl/v2")) + (native-inputs + (list go-github-com-davecgh-go-spew)) + (inputs + (list go-github-com-agext-levenshtein + go-github-com-apparentlymart-go-textseg-v13 + go-github-com-mitchellh-go-wordwrap + go-github-com-zclconf-go-cty)) + (synopsis "Go implementation of HashiCorp Configuration Language V2") + (description + "This package contains the main implementation of the @acronym{HCL, +HashiCorp Configuration Language}. HCL is designed to be a language for +expressing configuration which is easy for both humans and machines to read.") + (home-page "https://github.com/hashicorp/hcl") + (license license:mpl2.0))) + (define-public go-github-com-hhrutter-tiff (package (name "go-github-com-hhrutter-tiff") @@ -1367,6 +1552,34 @@ storing only one copy of each unique string in memory. All functions may be called concurrently with themselves and each other.") (license license:expat))) +(define-public go-github-com-ianlancetaylor-demangle + ;; No release, see <https://github.com/ianlancetaylor/demangle/issues/21>. + (package + (name "go-github-com-ianlancetaylor-demangle") + (version "0.0.0-20230524184225-eabc099b10ab") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ianlancetaylor/demangle") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1pvlg1adp50hnw8dz7il473xb197ixirg26cy5hj3ngb4qlajwvc")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/ianlancetaylor/demangle")) + (home-page "https://github.com/ianlancetaylor/demangle") + (synopsis "Symbol name demangler written in Go") + (description + "This package defines functions that demangle GCC/LLVM C++ and Rust +symbol names. This package recognizes names that were mangled according to +the C++ ABI defined at https://codesourcery.com/cxx-abi/ and the +@url{https://rust-lang.github.io/rfcs/2603-rust-symbol-name-mangling-v0.html,Rust +ABI}.") + (license license:bsd-3))) + (define-public go-github-com-k0kubun-pp (package (name "go-github-com-k0kubun-pp") @@ -1394,6 +1607,56 @@ called concurrently with themselves and each other.") customized globally.") (license license:expat))) +(define-public go-github-com-karrick-godirwalk + (package + (name "go-github-com-karrick-godirwalk") + (version "1.17.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/karrick/godirwalk") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0jyvai5vpmx86l71hg9j6lxc2b4v32ajvcmjlz40zimfb9ip11q9")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/karrick/godirwalk")) + (home-page "https://github.com/karrick/godirwalk") + (synopsis "Fast directory traversal library for Go") + (description + "This package provides functions to read and traverse directory trees.") + (license license:bsd-2))) + +(define-public go-github-com-kballard-go-shellquote + ;; No release, see <https://github.com/kballard/go-shellquote/issues/13>. + (let ((commit "95032a82bc518f77982ea72343cc1ade730072f0") + (revision "1")) + (package + (name "go-github-com-kballard-go-shellquote") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kballard/go-shellquote") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rspvmnsikdq95jmx3dykxd4k1rmgl98ryjrysvl0cf18hl1vq80")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/kballard/go-shellquote")) + (synopsis "Shell-style string joins and splits") + (description + "Shellquote provides utilities for joining/splitting strings using sh's +word-splitting rules.") + (home-page "https://github.com/kballard/go-shellquote") + (license license:expat)))) + (define-public go-github-com-lib-pq (package (name "go-github-com-lib-pq") @@ -1486,33 +1749,6 @@ Printf/Sprintf etc.") (native-inputs (list go-github-com-stretchr-testify)))) -(define-public go-github-com-kballard-go-shellquote - ;; No release, see <https://github.com/kballard/go-shellquote/issues/13>. - (let ((commit "95032a82bc518f77982ea72343cc1ade730072f0") - (revision "1")) - (package - (name "go-github-com-kballard-go-shellquote") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/kballard/go-shellquote") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1rspvmnsikdq95jmx3dykxd4k1rmgl98ryjrysvl0cf18hl1vq80")))) - (build-system go-build-system) - (arguments - (list - #:import-path "github.com/kballard/go-shellquote")) - (synopsis "Shell-style string joins and splits") - (description - "Shellquote provides utilities for joining/splitting strings using sh's -word-splitting rules.") - (home-page "https://github.com/kballard/go-shellquote") - (license license:expat)))) - (define-public go-github-com-marcinbor85-gohex ;; No release, see <https://github.com/marcinbor85/gohex/issues/5>. (let ((commit "baab2527a9a2a4abb3dc06baabedfa5e0268b8d8") @@ -1582,6 +1818,107 @@ implementing features like: (description "This package provides an idiomatic Go retry module.") (license license:expat))) +(define-public go-github-com-mattn-go-colorable + (package + (name "go-github-com-mattn-go-colorable") + (version "0.1.13") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mattn/go-colorable") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05hl2ddp67p5kj3ix4zzqqjh4fan4ban3vgw8f98simwigs3q41j")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/mattn/go-colorable")) + (propagated-inputs + (list go-github-com-mattn-go-isatty)) + (home-page "https://github.com/mattn/go-colorable") + (synopsis "Handle ANSI color escapes on Windows") + (description + "This package provides @code{colorable}, a module that makes it possible +to handle ANSI color escapes on Windows.") + (license license:expat))) + +(define-public go-github-com-mattn-go-isatty + (package + (name "go-github-com-mattn-go-isatty") + (version "0.0.20") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mattn/go-isatty") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0g63n9wpb991qnq9mn2kvd8jk1glrp6gnd851kvwz2wmzdkggiga")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/mattn/go-isatty")) + (propagated-inputs + (list go-golang-org-x-sys)) + (home-page "https://github.com/mattn/go-isatty") + (synopsis "Provide @code{isatty} for Golang") + (description + "This package provides @code{isatty}, a Go module that can tell you +whether a file descriptor points to a terminal and the type of the terminal.") + (license license:expat))) + +(define-public go-github-com-mattn-go-pointer + (package + (name "go-github-com-mattn-go-pointer") + (version "0.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mattn/go-pointer") + (commit (string-append "v" version)))) + (sha256 + (base32 + "1px9kj2xwwi7r00qxxpidr23xi823kw0pkd6f50lib8bp60x3n7p")) + (file-name (git-file-name name version)))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/mattn/go-pointer")) + (home-page "https://github.com/mattn/go-pointer") + (synopsis "Utility for cgo") + (description + "This package allows for a cgo argument to be passed a Go pointer.") + (license license:expat))) + +(define-public go-github-com-mattn-go-runewidth + (package + (name "go-github-com-mattn-go-runewidth") + (version "0.0.14") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mattn/go-runewidth") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1iaqw5pd7f4f2xz37540kp0828p2820g4vxx3hz089hwl331sx1v")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/mattn/go-runewidth")) + (propagated-inputs + (list go-github-com-rivo-uniseg)) + (home-page "https://github.com/mattn/go-runewidth") + (synopsis "Rune width implementation for Go") + (description + "This package provides functions to get the fixed width of a character or +string.") + (license license:expat))) + (define-public go-github-com-mattn-go-shellwords (package (name "go-github-com-mattn-go-shellwords") @@ -1612,6 +1949,54 @@ implementing features like: the @code{cpan} module @code{Parse::CommandLine}.") (license license:expat))) +(define-public go-github-com-mattn-go-sqlite3 + (package + (name "go-github-com-mattn-go-sqlite3") + (version "1.14.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mattn/go-sqlite3") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04anvqkc37mmc3z1dy4xfa6cas67zlxnnab0ywii7sylk864mhxz")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/mattn/go-sqlite3")) + (home-page "https://github.com/mattn/go-sqlite3") + (synopsis "Sqlite3 driver for Go") + (description + "This package provides a Sqlite3 driver for Go using +@code{database/sql}.") + (license license:expat))) + +(define-public go-github-com-mattn-go-zglob + (package + (name "go-github-com-mattn-go-zglob") + (version "0.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mattn/go-zglob") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1923lvakm66mzy62jmngdvcmbmiqclinsvnghs3907rgygnx1qc1")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/mattn/go-zglob")) + (home-page "https://github.com/mattn/go-zglob") + (synopsis "Glob library that descends into other directories") + (description + "This package provides a glob library that implements descending into +other directories. It is optimized for filewalking.") + (license license:expat))) + (define-public go-github-com-miekg-dns (package (name "go-github-com-miekg-dns") @@ -1642,6 +2027,53 @@ Domain Name Service}. The API follows the less-is-more principle, by presenting a small interface.") (license license:bsd-3))) +(define-public go-github-com-modern-go-concurrent + (package + (name "go-github-com-modern-go-concurrent") + (version "1.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/modern-go/concurrent") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs")))) + (build-system go-build-system) + (arguments + (list #:import-path "github.com/modern-go/concurrent")) + (home-page "https://github.com/modern-go/concurrent") + (synopsis "Concurrency utilities for Go") + (description + "A Go library providing various concurrency utilities including a backport +of @code{sync.Map} to Go versions below 1.9 and a cancellable Goroutine with +explicit ownership.") + (license license:asl2.0))) + +(define-public go-github-com-modern-go-reflect2 + (package + (name "go-github-com-modern-go-reflect2") + (version "1.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/modern-go/reflect2") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05a89f9j4nj8v1bchfkv2sy8piz746ikj831ilbp54g8dqhl8vzr")))) + (build-system go-build-system) + (arguments + (list #:import-path "github.com/modern-go/reflect2")) + (home-page "https://github.com/modern-go/reflect2") + (synopsis "Cheaper reflect API") + (description + "This library provides a reflect api for Go programs +without the runtime cost of the standard library reflect.Value.") + (license license:asl2.0))) + (define-public go-github-com-mreiferson-go-options (package (name "go-github-com-mreiferson-go-options") @@ -1693,6 +2125,92 @@ command line flags, config files, and default struct values.") @url{https://github.com/judwhite/go-svc/raw/master/svc/svc_windows_test.go,here}.") (license license:expat)))) +(define-public go-github-com-multiformats-go-base32 + (package + (name "go-github-com-multiformats-go-base32") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/multiformats/go-base32") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ala6gaa5r5mqcg6cdwfg492hpz41cjbfwyn1ljd6qvya3n0qqiv")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/multiformats/go-base32")) + (home-page "https://github.com/multiformats/go-base32") + (synopsis "Go @code{base32} encoding package with @code{NoPadding} option") + (description + "@code{base32} encoding package from Go with @code{NoPadding} option") + (license license:bsd-3))) + +(define-public go-github-com-multiformats-go-base36 + (package + (name "go-github-com-multiformats-go-base36") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/multiformats/go-base36") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1wfhsmxkvm97pglfwgiw3ad5g9vqc9nhd61i0kyvsb9lc006g8qq")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/multiformats/go-base36")) + (home-page "https://github.com/multiformats/go-base36") + (synopsis "Optimized @code{base36} codec for Go") + (description + "Optimized codec for @code{[]byte} <=> @code{base36} string conversion.") + (license (list license:asl2.0 license:expat)))) + +(define-public go-github-com-multiformats-go-multibase + (package + (name "go-github-com-multiformats-go-multibase") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/multiformats/go-multibase") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11za5yqiq9bkxfg0lvjzgr5d0kawkf2szxj90by9vfnalihqgkrr")))) + (build-system go-build-system) + (arguments + (list + #:go go-1.21 + #:import-path "github.com/multiformats/go-multibase" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'copy-multibase-specs + (lambda* (#:key import-path #:allow-other-keys) + (copy-recursively + (string-append #$(this-package-native-input + "specification-multibase") + "/share/multibase/") + (string-append "src/" import-path "/spec"))))))) + (native-inputs + (list specification-multibase)) + (propagated-inputs + (list go-github-com-mr-tron-base58 + go-github-com-multiformats-go-base32 + go-github-com-multiformats-go-base36)) + (home-page "https://github.com/multiformats/go-multibase") + (synopsis "Implementation of multibase parser in Go") + (description + "Implementation of @url{https://github.com/multiformats/multibase, +multibase} (self identifying base encodings) in Go.") + (license license:expat))) + (define-public go-github-com-multiformats-go-varint (package (name "go-github-com-multiformats-go-varint") @@ -1897,6 +2415,30 @@ comparison library, to Go. Both a library and a command-line tool are included in this package.") (license license:expat))) +(define-public go-github-com-pierrec-cmdflag + (package + (name "go-github-com-pierrec-cmdflag") + (version "0.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pierrec/cmdflag") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nxmqkjwd7i3blmspvxib352vm6167h2ffqy4m9zc3fb9srvrpqc")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/pierrec/cmdflag")) + (home-page "https://github.com/pierrec/cmdflag") + (synopsis "Augment the flag package with commands") + (description + "Package @code{cmdflag} provides simple command line commands processing +on top of the standard library @code{flag} package.") + (license license:bsd-3))) + (define-public go-github-com-prometheus-client-model (let ((commit "14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016") (revision "2")) @@ -1957,6 +2499,50 @@ Metrics library.") (home-page "https://github.com/rcrowley/go-metrics") (license license:bsd-2)))) +(define-public go-github-com-schollz-progressbar-v3 + (package + (name "go-github-com-schollz-progressbar-v3") + (version "3.13.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/schollz/progressbar") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1hjahr5r52i7w6iyvl3rpzr46iignhfdh4694fl7m2b4gkaw9gd6")))) + (build-system go-build-system) + (arguments + (list #:import-path "github.com/schollz/progressbar/v3" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-examples + (lambda* (#:key import-path #:allow-other-keys) + (delete-file-recursively + (string-append "src/" import-path "/examples")))) + (replace 'check + (lambda* (#:key tests? import-path #:allow-other-keys) + (when tests? + ;; The full test suite requires Internet access, so only + ;; run the short tests. + (invoke "go" "test" "-test.short" import-path))))))) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-github-com-mattn-go-runewidth + go-github-com-mitchellh-colorstring + go-golang-org-x-term)) + (home-page "https://github.com/schollz/progressbar") + (synopsis "Simple command-line interface (CLI) progress bar") + (description + "This package provides a very simple thread-safe progress bar. The +@code{progressbar} implements an @code{io.Writer} so it can automatically +detect the number of bytes written to a stream, so you can use it as a +@code{progressbar} for an @code{io.Reader}. When @code{progressbar}'s length +is undetermined, a customizable spinner is shown.") + (license license:expat))) + (define-public go-github-com-shirou-gopsutil (package (name "go-github-com-shirou-gopsutil") @@ -2077,17 +2663,16 @@ Use waterutil with it to work with TUN/TAP packets/frames.") (define-public go-github-com-songmu-gitconfig (package (name "go-github-com-songmu-gitconfig") - (version "0.1.0") - (home-page "https://github.com/songmu/gitconfig") + (version "0.1.1") (source (origin (method git-fetch) (uri (git-reference - (url home-page) + (url "https://github.com/songmu/gitconfig") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1y01h496a7pfj1g2bclls5b0nl3vnj7nz610jj1dzq9kxrwxk7fk")))) + (base32 "0p7b5n4h4vsjpb7ipfn4n1p8i978d8mlx8pi0m5dla57mj8v56hj")))) (build-system go-build-system) (arguments (list @@ -2098,11 +2683,38 @@ Use waterutil with it to work with TUN/TAP packets/frames.") #:import-path "github.com/Songmu/gitconfig")) (propagated-inputs (list go-github-com-goccy-yaml)) + (home-page "https://github.com/songmu/gitconfig") (synopsis "Go library to get configuration values from gitconfig") (description "@{gitconfig} is a package to get configuration values from gitconfig.") (license license:expat))) +(define-public go-github-com-spf13-cobra + (package + (name "go-github-com-spf13-cobra") + (version "1.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/spf13/cobra") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mhnqfgcwwcknlhk7n07i02q3iqq6ihksj4dwz296zci8ry3w0d0")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/spf13/cobra")) + (propagated-inputs + (list go-github-com-spf13-pflag)) + (home-page "https://github.com/spf13/cobra") + (synopsis "Go library for creating CLI applications") + (description + "Cobra is both a library for creating powerful modern CLI applications as +well as a program to generate applications and command files.") + (license license:asl2.0))) + (define-public go-github-com-stathat-go (let ((commit "74669b9f388d9d788c97399a0824adbfee78400e") (revision "0")) @@ -2199,6 +2811,38 @@ Use waterutil with it to work with TUN/TAP packets/frames.") query information regarding the number of CPUs available to the system.") (license license:asl2.0))) +(define-public go-github-com-tkuchiki-go-timezone + (package + (name "go-github-com-tkuchiki-go-timezone") + (version "0.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tkuchiki/go-timezone") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rmvg4hh0br51vbsxacani2g0v5xxsayp8q4xli9jag25zi5rhd1")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/tkuchiki/go-timezone")) + (home-page "https://github.com/tkuchiki/go-timezone") + (synopsis "Timezone utility for Golang") + (description + "This package provides provides an utility for timezone manipulation, +implementing the following features: + +@itemize +@item this library uses only the standard package +@item supports getting offset from timezone abbreviation, which is not +supported by the time package +@item determine whether the specified time.Time is daylight saving time +@item change the location of time.Time by specifying the timezone +@end itemize") + (license license:expat))) + (define-public go-github-com-vividcortex-ewma (package (name "go-github-com-vividcortex-ewma") @@ -2394,6 +3038,43 @@ Go.") (package-arguments go-github-com-op-go-logging) ((#:import-path _) "gopkg.in/op/go-logging.v1"))))) +(define-public go-gopkg-in-yaml-v2 + (package + (name "go-gopkg-in-yaml-v2") + (version "2.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gopkg.in/yaml.v2") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1pbmrpj7gcws34g8vwna4i2nhm9p6235piww36436xhyaa10cldr")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; https://github.com/go-yaml/yaml/issues/441 and + ;; https://github.com/go-yaml/yaml/pull/442 + ;; Don't assume 64-bit wide integers + (substitute* "decode_test.go" + (("bin: (-0b1000000000000000000000000000000000000000000000000000000000000000)" all number) + (string-append "int64_min_base2: " number)) + (("map\\[string\\]interface\\{\\}\\{\"bin\": -9223372036854775808\\}") + "map[string]int64{\"int64_min_base2\": math.MinInt64}")))))) + (build-system go-build-system) + (arguments + (list + #:import-path "gopkg.in/yaml.v2")) + (native-inputs + (list go-gopkg-in-check-v1)) + (home-page "https://gopkg.in/yaml.v2") + (synopsis "YAML reader and writer for the Go language") + (description + "This package provides a Go library for encode and decode YAML +values.") + (license license:asl2.0))) + ;;; ;;; Executables: ;;; diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 385da42eda..fb558c1b9c 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -1881,7 +1881,7 @@ retry strategies, such as fixed delay, backoff delay, and random delay.") (build-system go-build-system) (arguments `(#:import-path "howett.net/plist")) (inputs - (list go-github.com-jessevdk-go-flags go-github-com-kr-pretty + (list go-github-com-jessevdk-go-flags go-github-com-kr-pretty go-gopkg-in-check-v1 go-gopkg-in-yaml-v2)) (home-page "https://github.com/DHowett/go-plist") (synopsis "Apple property list transcoder") @@ -2839,9 +2839,9 @@ Under Windows, the console APIs are used. Otherwise, ANSI texts are output.") specified by @uref{https://tools.ietf.org/html/rfc2141, IETF RFC 2141}.") (license license:expat))) -(define-public go-github.com-jessevdk-go-flags +(define-public go-github-com-jessevdk-go-flags (package - (name "go-github.com-jessevdk-go-flags") + (name "go-github-com-jessevdk-go-flags") (version "1.5.0") (source (origin (method git-fetch) @@ -3674,31 +3674,6 @@ containers.") (description "Safe and easy casting from one type to another in Go") (license license:expat))) -(define-public go-github-com-spf13-cobra - (package - (name "go-github-com-spf13-cobra") - (version "1.8.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/spf13/cobra") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0mhnqfgcwwcknlhk7n07i02q3iqq6ihksj4dwz296zci8ry3w0d0")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/spf13/cobra")) - (propagated-inputs - (list go-github-com-spf13-pflag)) - (home-page "https://github.com/spf13/cobra") - (synopsis "Go library for creating CLI applications") - (description "Cobra is both a library for creating powerful modern CLI -applications as well as a program to generate applications and command files.") - (license license:asl2.0))) - (define-public go-github-com-spf13-jwalterweatherman (package (name "go-github-com-spf13-jwalterweatherman") @@ -4265,43 +4240,6 @@ which satisfies the cron expression.") (description "Go library for ini files") (license license:asl2.0))) -(define-public go-gopkg-in-yaml-v2 - (package - (name "go-gopkg-in-yaml-v2") - (version "2.4.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gopkg.in/yaml.v2.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1pbmrpj7gcws34g8vwna4i2nhm9p6235piww36436xhyaa10cldr")) - (modules '((guix build utils))) - (snippet - '(begin - ;; https://github.com/go-yaml/yaml/issues/441 and - ;; https://github.com/go-yaml/yaml/pull/442 - ;; Don't assume 64-bit wide integers - (substitute* "decode_test.go" - (("bin: (-0b1000000000000000000000000000000000000000000000000000000000000000)" all number) - (string-append "int64_min_base2: " number)) - (("map\\[string\\]interface\\{\\}\\{\"bin\": -9223372036854775808\\}") - "map[string]int64{\"int64_min_base2\": math.MinInt64}")))))) - (build-system go-build-system) - (arguments - '(#:import-path "gopkg.in/yaml.v2")) - (native-inputs - (list go-gopkg-in-check-v1)) - (home-page "https://gopkg.in/yaml.v2") - (synopsis "YAML reader and writer for the Go language") - (description - "This package provides a Go library for encode and decode YAML -values.") - (license license:asl2.0))) - (define-public go-gopkg-in-yaml-v3 (package (name "go-gopkg-in-yaml-v3") @@ -4351,82 +4289,6 @@ The yaml package supports most of YAML 1.2, but preserves some behavior from (description "This package provides a Golang Matrix client.") (license license:asl2.0))) -(define-public go-github-com-mattn-go-isatty - (package - (name "go-github-com-mattn-go-isatty") - (version "0.0.20") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mattn/go-isatty") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0g63n9wpb991qnq9mn2kvd8jk1glrp6gnd851kvwz2wmzdkggiga")))) - (build-system go-build-system) - (propagated-inputs - (list go-golang-org-x-sys)) - (arguments - '(#:import-path "github.com/mattn/go-isatty")) - (home-page "https://github.com/mattn/go-isatty") - (synopsis "Provide @code{isatty} for Golang") - (description "This package provides @code{isatty}, a Go module that can -tell you whether a file descriptor points to a terminal and the type of the -terminal.") - (license license:expat))) - -(define-public go-github-com-mattn-go-colorable - (package - (name "go-github-com-mattn-go-colorable") - (version "0.1.13") - (home-page "https://github.com/mattn/go-colorable") - (source - (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "05hl2ddp67p5kj3ix4zzqqjh4fan4ban3vgw8f98simwigs3q41j")))) - (build-system go-build-system) - (propagated-inputs - (list go-github-com-mattn-go-isatty)) - (arguments - '(#:import-path "github.com/mattn/go-colorable")) - (synopsis "Handle ANSI color escapes on Windows") - (description "This package provides @code{colorable}, a module that -makes it possible to handle ANSI color escapes on Windows.") - (license license:expat))) - -(define-public go-github-com-mattn-go-pointer - (let ((commit "a0a44394634f41e4992b173b24f14fecd3318a67") - (revision "1")) - (package - (name "go-github-com-mattn-go-pointer") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mattn/go-pointer") - (commit commit))) - (sha256 - (base32 - "09w7hcyc0zz2g23vld6jbcmq4ar27xakp1ldjvh549i5izf2anhz")) - (file-name (git-file-name name version)))) - (build-system go-build-system) - (arguments - '(#:import-path "github.com/mattn/go-pointer")) - (home-page "https://github.com/mattn/go-pointer") - (synopsis "Utility for cgo") - (description - "This package allows for a cgo argument to be passed a Go pointer.") - (license license:expat)))) - (define-public go-github-com-mgutz-ansi (let ((commit "9520e82c474b0a04dd04f8a40959027271bab992") (revision "0")) @@ -5016,20 +4878,14 @@ required by Go's standard Hash interface.") (build-system go-build-system) (arguments '(#:import-path "github.com/libp2p/go-libp2p-metrics")) - (native-inputs + (propagated-inputs (list go-github-com-libp2p-go-flow-metrics go-github-com-libp2p-go-libp2p-peer go-github-com-libp2p-go-libp2p-protocol go-github-com-libp2p-go-libp2p-crypto - go-github-com-mr-tron-base58 go-github-com-multiformats-go-multihash go-github-com-btcsuite-btcd-btcec - go-github-com-gogo-protobuf - go-github-com-gxed-hashland-keccakpg - go-github-com-minio-blake2b-simd - go-github-com-minio-sha256-simd - go-github-com-spaolacci-murmur3 - go-golang-org-x-crypto)) + go-github-com-gogo-protobuf)) (home-page "https://github.com/libp2p/go-libp2p-metrics") (synopsis "Connection wrapper for go-libp2p that provides bandwidth metrics") (description "A connection wrapper for @command{go-libp2p} that provides bandwidth @@ -5786,21 +5642,6 @@ 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") @@ -6677,50 +6518,6 @@ improved and cleaner API.") Proxy functionality.") (license license:expat))) -(define-public go-github-com-mattn-go-zglob - (package - (name "go-github-com-mattn-go-zglob") - (version "0.0.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mattn/go-zglob") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1923lvakm66mzy62jmngdvcmbmiqclinsvnghs3907rgygnx1qc1")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/mattn/go-zglob")) - (home-page "https://github.com/mattn/go-zglob") - (synopsis "Glob library that descends into other directories") - (description "A glob library that implements descending into other -directories. It is optimized for filewalking.") - (license license:expat))) - -(define-public go-github-com-mattn-go-sqlite3 - (package - (name "go-github-com-mattn-go-sqlite3") - (version "1.14.6") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mattn/go-sqlite3") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "04anvqkc37mmc3z1dy4xfa6cas67zlxnnab0ywii7sylk864mhxz")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/mattn/go-sqlite3")) - (home-page "https://github.com/mattn/go-sqlite3") - (synopsis "Sqlite3 driver for Go") - (description "This package provides a Sqlite3 driver for Go using -@code{database/sql}.") - (license license:expat))) - (define-public go-github-com-bits-and-blooms-bitset (package (name "go-github-com-bits-and-blooms-bitset") @@ -9186,31 +8983,6 @@ parser.") @url{https://unicode.org/reports/tr29/, Unicode Standard Annex #29}.") (license license:expat))) -(define-public go-github-com-mattn-go-runewidth - (package - (name "go-github-com-mattn-go-runewidth") - (version "0.0.14") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mattn/go-runewidth") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1iaqw5pd7f4f2xz37540kp0828p2820g4vxx3hz089hwl331sx1v")))) - (build-system go-build-system) - (arguments '(#:import-path "github.com/mattn/go-runewidth")) - (propagated-inputs - (list go-github-com-rivo-uniseg)) - (home-page "https://github.com/mattn/go-runewidth") - (synopsis "Rune width implementation for Go") - (description - "This package provides functions to get the fixed width of a character or -string.") - (license license:expat))) - - (define-public go-github-com-charmbracelet-bubbletea (package (name "go-github-com-charmbracelet-bubbletea") @@ -9640,51 +9412,6 @@ kubernetes-sigs/yaml is a permanent fork of "Colorstring provides functions for colorizing strings for terminal output.") (license license:expat))) -(define-public go-github-com-schollz-progressbar-v3 - (package - (name "go-github-com-schollz-progressbar-v3") - (version "3.13.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/schollz/progressbar") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1hjahr5r52i7w6iyvl3rpzr46iignhfdh4694fl7m2b4gkaw9gd6")))) - (build-system go-build-system) - (arguments - (list #:import-path "github.com/schollz/progressbar/v3" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-examples - (lambda* (#:key import-path #:allow-other-keys) - (delete-file-recursively - (string-append "src/" import-path "/examples")))) - (replace 'check - (lambda* (#:key tests? import-path #:allow-other-keys) - (when tests? - ;; The full test suite requires Internet access, so only - ;; run the short tests. - (invoke "go" "test" "-test.short" import-path))))))) - (propagated-inputs - (list go-golang-org-x-term - go-github-com-stretchr-testify - go-github-com-mitchellh-colorstring - go-github-com-mattn-go-runewidth - go-github-com-mattn-go-isatty - go-github-com-davecgh-go-spew)) - (home-page "https://github.com/schollz/progressbar") - (synopsis "Simple command-line interface (CLI) progress bar") - (description - "This package provides a very simple thread-safe progress bar. The -@code{progressbar} implements an @code{io.Writer} so it can automatically -detect the number of bytes written to a stream, so you can use it as a -@code{progressbar} for an @code{io.Reader}. When @code{progressbar}'s length -is undetermined, a customizable spinner is shown.") - (license license:expat))) - (define-public go-git-sr-ht-emersion-go-scfg (package (name "go-git-sr-ht-emersion-go-scfg") @@ -10316,37 +10043,6 @@ serialiser for Go.") library bevacqua/fuzzysearch.") (license license:expat))) -(define-public go-github-com-onsi-gomega - (package - (name "go-github-com-onsi-gomega") - (version "1.19.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/onsi/gomega") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "092phwk97sk4sv0nbx5pfhqs6x3x1lnrjwyda1m6b6zwrfmq5c6i")))) - (build-system go-build-system) - (arguments - (list #:import-path "github.com/onsi/gomega" - ;; Unless we disable the tests, we have a circular dependency on - ;; ginkgo/v2. - #:tests? #f)) - (propagated-inputs (list go-github-com-golang-protobuf-proto - go-golang-org-x-net - go-golang-org-x-sys - go-golang-org-x-text - go-google-golang-org-protobuf - go-gopkg-in-yaml-v2)) - (home-page "https://github.com/onsi/gomega") - (synopsis "Matcher library for Ginkgo") - (description - "Gomega is the preferred matcher library for the Ginkgo test framework.") - (license license:expat))) - ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm index e3aa6ba478..179ff450ab 100644 --- a/gnu/packages/graph.scm +++ b/gnu/packages/graph.scm @@ -195,7 +195,7 @@ distributions in empirical data. SIAM Review 51, 661-703 (2009)}).") (list arpack-ng bliss glpk - lapack + ;lapack openblas plfit suitesparse-cxsparse)) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 188e066766..ec1d7c9569 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -74,6 +74,7 @@ #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) + #:use-module (gnu packages game-development) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) @@ -461,7 +462,7 @@ applications.") (define-public openvdb (package (name "openvdb") - (version "8.2.0") + (version "11.0.0") (source (origin (method git-fetch) (uri (git-reference @@ -471,14 +472,14 @@ applications.") (file-name (git-file-name name version)) (sha256 (base32 - "0856697hnwk8xsp29kx8y2p1kliy0bdwfsznxm38v4690vna15rk")))) + "0r6q7bl8513ggrvx3n73j1s3f7n5x1rxy5xi471qyrya95gy6c60")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")))) (inputs - (list boost c-blosc ilmbase tbb zlib)) + (list boost c-blosc jemalloc tbb zlib)) (native-inputs (list pkg-config)) (home-page "https://www.openvdb.org/") @@ -493,14 +494,14 @@ typically encountered in feature film production.") (define-public blender (package (name "blender") - (version "3.3.5") ;3.3.x is the current LTS version + (version "3.6.10") ;3.6.x is the current LTS version (source (origin (method url-fetch) (uri (string-append "https://download.blender.org/source/" "blender-" version ".tar.xz")) (sha256 (base32 - "1pwl4lbc00g0bj97rd8l9fnrv3w1gny9ci6mrma3pp2acgs56502")))) + "1srwr365y40hhpjmfsg52rphdybvin0ay2r23pknm7b9pkpw0wqs")))) (build-system cmake-build-system) (arguments (list @@ -521,6 +522,11 @@ typically encountered in feature film production.") "-DWITH_OPENVDB=ON" "-DWITH_OPENSUBDIV=ON" "-DWITH_PYTHON_INSTALL=OFF" + "-DWITH_SYSTEM_BULLET=ON" + "-DWITH_SYSTEM_EIGEN3=ON" + "-DWITH_SYSTEM_FREETYPE=ON" + "-DWITH_SYSTEM_GLOG=ON" + "-DWITH_SYSTEM_LZO=ON" (string-append "-DPYTHON_LIBRARY=python" #$python-version) (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python") @@ -536,32 +542,22 @@ typically encountered in feature film production.") (string-append "-DPYTHON_NUMPY_PATH=" (assoc-ref %build-inputs "python-numpy") "/lib/python" #$python-version - "/site-packages/") - ;; OpenEXR propagates ilmbase, but its include files do not - ;; appear in the C_INCLUDE_PATH, so we need to add - ;; "$ilmbase/include/OpenEXR/" to the C_INCLUDE_PATH to - ;; satisfy the dependency on "half.h" and "Iex.h". - (string-append "-DCMAKE_CXX_FLAGS=-I" - (search-input-directory %build-inputs - "include/OpenEXR")))) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-broken-import - (lambda _ - (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py" - (("import encode_bin") - "from . import encode_bin"))))))) + "/site-packages/"))))) (inputs (list boost + bullet + eigen embree ffmpeg-5 fftw - freetype + freetype-with-brotli glew + glog gmp ;needed for boolean operations on meshes - ilmbase + imath jack-1 jemalloc + libepoxy libjpeg-turbo libpng libsndfile @@ -569,9 +565,10 @@ typically encountered in feature film production.") libx11 libxi libxrender + lzo openal opencolorio - openexr-2 + openexr openimageio openjpeg opensubdiv @@ -707,7 +704,7 @@ baking tools to produce normal maps.") (define-public openshadinglanguage (package (name "openshadinglanguage") - (version "1.11.16.0") + (version "1.13.8.0") (source (origin (method git-fetch) @@ -716,52 +713,46 @@ baking tools to produce normal maps.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0x0lc163vl2b57l75bf5zxlr6vm2y1f1izlxdnrw3vsapv3r9k9g")))) + (base32 "1ji4bw8z4ylsh0jvir3d40p6xyhr63g588gh3bag7bzsr3flsb02")))) (build-system cmake-build-system) (arguments - `(#:configure-flags (list "-DUSE_PARTIO=OFF") ; TODO: not packaged - #:phases - (modify-phases %standard-phases - (add-after 'set-paths 'add-ilmbase-include-path - (lambda* (#:key inputs #:allow-other-keys) - ;; OpenEXR 2 propagates ilmbase, but its include files do not - ;; appear in the C_INCLUDE_PATH. - (let ((headers (string-append - (assoc-ref inputs "ilmbase") - "/include/OpenEXR"))) - (setenv "C_INCLUDE_PATH" - (string-append headers ":" - (or (getenv "C_INCLUDE_PATH") ""))) - (setenv "CPLUS_INCLUDE_PATH" - (string-append headers ":" - (or (getenv "CPLUS_INCLUDE_PATH") "")))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ctest" "--exclude-regex" - (string-join - (list - "osl-imageio" ; OIIO not compiled with freetype - "osl-imageio.opt" ; OIIO not compiled with freetype - "texture-udim" ; file does not exist - "texture-udim.opt" ; file does not exist - "example-deformer" ; could not find OSLConfig - "python-oslquery") ; no module oslquery - "|")))))))) + (list #:configure-flags + #~(list "-DUSE_PARTIO=OFF" ; TODO: not packaged + (string-append "-DLLVM_BC_GENERATOR=" + #$(this-package-native-input "clang") + "/bin/clang++")) + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke + "ctest" "--exclude-regex" + (string-join + (list + "osl-imageio" ; file does not exist + "osl-imageio.opt" ; file does not exist + "osl-imageio.opt.rs_bitcode" ; file does not exist + "texture-udim" ; file does not exist + "texture-udim.opt" ; file does not exist + "texture-udim.opt.rs_bitcode" ; file does not exist + "example-deformer" ; could not find OSLConfig + "python-oslquery") ; no module oslquery + "|")))))))) (native-inputs (list bison - clang-9 + clang flex - llvm-9 + llvm pybind11 python-wrapper)) (inputs (list boost imath - openexr-2 + openexr openimageio pugixml - qtbase-5 + qtbase zlib)) (home-page "https://github.com/AcademySoftwareFoundation/OpenShadingLanguage") (synopsis "Shading language for production GI renderers") @@ -1311,40 +1302,38 @@ with strong support for multi-part, multi-channel use cases.") (define-public openimageio (package (name "openimageio") - (version "2.2.21.0") + (version "2.5.10.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/OpenImageIO/oiio") - (commit (string-append "Release-" version)))) + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "0aicxbshzv1g9d8d08vsj1a9klaycxaifvvp565qjv70wyma2vkr")))) + "06x3lqj9qjh5m0zbr5g2g9ii6jk340pgzrhr4fb353y1y2pkx5sw")))) (build-system cmake-build-system) - ;; FIXME: To run all tests successfully, test image sets from multiple - ;; third party sources have to be present. For details see - ;; <https://github.com/OpenImageIO/oiio/blob/master/INSTALL.md> (arguments - `(#:tests? #f - #:configure-flags (list "-DUSE_EXTERNAL_PUGIXML=1"))) + (list #:tests? #f ; half the tests require online data or use redirection + #:configure-flags #~(list "-DUSE_EXTERNAL_PUGIXML=1" + "-DOIIO_BUILD_TESTS=false"))) (native-inputs (list pkg-config)) (inputs - `(("boost" ,boost) - ("fmt" ,fmt-8) - ("libheif" ,libheif) - ("libpng" ,libpng) - ("libjpeg" ,libjpeg-turbo) - ("libtiff" ,libtiff) - ("giflib" ,giflib) - ("openexr" ,openexr-2) - ("ilmbase" ,ilmbase) - ("pugixml" ,pugixml) - ("python" ,python-wrapper) - ("pybind11" ,pybind11) - ("robin-map" ,robin-map) - ("zlib" ,zlib))) + (list boost + fmt + giflib + imath + libheif + libjpeg-turbo + libpng + libtiff + openexr + pugixml + pybind11 + python-wrapper + robin-map + zlib)) (synopsis "C++ library for reading and writing images") (description "OpenImageIO is a library for reading and writing images, and a bunch of @@ -1881,7 +1870,7 @@ requirements.") (define-public opensubdiv (package (name "opensubdiv") - (version "3.4.0") + (version "3.6.0") (source (origin (method git-fetch) (uri (git-reference @@ -1891,20 +1880,19 @@ requirements.") (file-name (git-file-name name version)) (sha256 (base32 - "0cippg6aqc5dlya1cmh3908pwssrg52fwgyylnvz5343yrxmgk12")))) + "0h9scxiigijzlpv4r0s0nhxlndhv1cmarb2bqgmlwcln1jjvlb4n")))) (build-system cmake-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'configure 'set-glew-location - (lambda* (#:key inputs #:allow-other-keys) - (setenv "GLEW_LOCATION" (assoc-ref inputs "glew")) - #t)) - (add-before 'check 'start-xorg-server - (lambda* (#:key inputs #:allow-other-keys) - ;; The test suite requires a running X server. - (system "Xvfb :1 &") - (setenv "DISPLAY" ":1") - #t))))) + (list #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'set-glew-location + (lambda _ + (setenv "GLEW_LOCATION" #$(this-package-input "glew")))) + (add-before 'check 'start-xorg-server + (lambda* (#:key inputs #:allow-other-keys) + ;; The test suite requires a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1")))))) (native-inputs (list xorg-server-for-tests)) (inputs diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index b463e15d48..b0098e780e 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1166,23 +1166,17 @@ application suites.") "--no-suite=failing" "--no-suite=flaky" "--no-suite=headless" ; requires mutter… - "--no-suite=gsk-compare-broadway") + "--no-suite=gsk-compare-broadway" + ;; These seem to fail on aarch64, and Debian has + ;; also disabled these, see: + ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050075 + "--no-suite=wayland_failing" + "--no-suite=wayland_gles_failing") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file (assoc-ref glib-or-gtk:%standard-phases 'generate-gdk-pixbuf-loaders-cache-file)) - #$@(if (target-aarch64?) - #~((add-after 'unpack 'skip-failing-test - (lambda _ - ;; MESA: error: ZINK: failed to load libvulkan.so.1 - ;; libEGL warning: egl: failed to create dri2 screen - ;; MESA: error: ZINK: failed to load libvulkan.so.1 - ;; glx: failed to create drisw screen - ;; failed to load driver: zink - (substitute* "testsuite/gsk/meson.build" - ((".*big-checkerboard-scaled-down2',\n") ""))))) - #~()) (add-after 'unpack 'patch-rst2man (lambda _ (substitute* "docs/reference/gtk/meson.build" diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 3d36b6a53c..49b708b443 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -48,6 +48,7 @@ ;;; Copyright © 2022 jgart <jgart@dismail.de> ;;; Copyright © 2023 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2024 Ilya Chernyshov <ichernyshovvv@gmail.com> +;;; Copyright © 2024 Artyom Bologov <mail@aartaka.me> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2025,8 +2026,8 @@ for MySQL.") (license license:gpl2+))) (define-public guile-lmdb - (let ((commit "438143ca9ba157faec6f4c2740092c31c733fbfe") - (revision "0")) + (let ((commit "ea9aa1d4b13e03f9fd23ec73d8884f4fae79666b") + (revision "1")) (package (name "guile-lmdb") (version (git-version "0.0.1" revision commit)) @@ -2038,7 +2039,7 @@ for MySQL.") (file-name (git-file-name name version)) (sha256 (base32 - "0p43c8ppbhzpi944in0z2jqr7acl8pm7s1x0p5f0idqda6n6f828")))) + "1li92ldyjvbqkhqnkndgw0jk1avkzq9jkbmk8dqiby4na72sxi8k")))) (build-system guile-build-system) (arguments (list @@ -2059,7 +2060,8 @@ for MySQL.") Most names are the same as LMDB ones, except for prefix absence. Several conveniences are added on top: @itemize -@item @code{call-with-env-and-txn} and @code{call-with-cursor} wrappers. +@item @code{call-with-env-and-txn}, @code{call-with-cursor}, and +@code{call-with-wrapped-cursor} helpers and respective @code{with-} macros. @item @code{for-cursor} procedure for cursor iteration. @item @code{val} and @code{stat} types. @item Error signaling instead of integer return values. @@ -2725,14 +2727,14 @@ library.") (define-public guile-lib (package (name "guile-lib") - (version "0.2.7") + (version "0.2.8") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/guile-lib/guile-lib-" version ".tar.gz")) (sha256 (base32 - "1ph4z4a64m75in36pdb4dw63dzdq3hdgh16gq33q460jby23pvz4")))) + "1nb7swbliw9vx1ivhgd2m0r0p7nlkszw6s41zcgfwb5v1kp05sb4")))) (build-system gnu-build-system) (arguments '(#:make-flags '("GUILE_AUTO_COMPILE=0") ;placate guild warnings @@ -3487,7 +3489,7 @@ from @code{tree-il}.") (define-public guile-hoot (package (name "guile-hoot") - (version "0.3.0") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append "https://spritely.institute/files/releases" @@ -3495,7 +3497,7 @@ from @code{tree-il}.") version ".tar.gz")) (sha256 (base32 - "1zgcp7xnx84gwdpxj0wga7xrcxcifp9fyp06b6d54gbxq4as8an1")))) + "0mlj9b9dzhd8k8jg9fgwxyxdy8rsynfq81vm00rjgbh2ivpgr3x2")))) (build-system gnu-build-system) (arguments '(#:make-flags '("GUILE_AUTO_COMPILE=0" @@ -4255,7 +4257,7 @@ debugging code.") (define-public guile-png (package (name "guile-png") - (version "0.7.2") + (version "0.7.3") (source (origin (method git-fetch) (uri (git-reference @@ -4264,7 +4266,7 @@ debugging code.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1ad03r84j17rwfxbxqb0qmf70ggqs01kjyman3x1581lm5dk1757")))) + "0hgdp8fgyg6rdy130fsn4nnb58c98lsrayjyy5491l53814ggy65")))) (build-system gnu-build-system) (arguments (list @@ -4518,6 +4520,45 @@ default dynamic library path. There are up to three bindings for each function: raw, typed, and functional.") (license license:lgpl3+)))) +(define-public guile-gsl + (let ((commit "e6d1477b0d0456f500c32610a5cae6ebb1b8acfe") + (revision "0")) + (package + (name "guile-gsl") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aartaka/guile-gsl") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1b4brimmg3phahia9dm0wkcp1f29wnbvmi0q8di5sz7pf7qjzsy0")))) + (build-system guile-build-system) + (arguments + (list + #:source-directory "modules" + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'substitute-gsl-so + (lambda _ + (let ((gsl (string-append #$(this-package-input "gsl") + "/lib/libgsl.so")) + (gslcblas (string-append #$(this-package-input "gsl") + "/lib/libgslcblas.so"))) + (substitute* '("modules/gsl/core.scm") + (("libgsl.so") gsl) + (("libgslcblas.so") gslcblas)))))))) + (native-inputs (list guile-3.0)) + (inputs (list guile-3.0 gsl)) + (home-page "https://github.com/aartaka/guile-gsl") + (synopsis "Bindings for GNU Scientific library in Guile") + (description + "This package provides a Guile Scheme wrapper for @code{libgsl.so}. +Implements vector, matrix,and BLAS operations.") + (license license:gpl3+)))) + (define-public guile-ffi-fftw (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0") (revision "2")) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 3476af2a51..e27801eeb7 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -457,7 +457,7 @@ without requiring the source code to be rewritten.") (define-public guile-next (let ((version "3.0.9") (revision "0") - (commit "fb1f5e28b1a575247fd16184b1c83b8838b09716")) + (commit "db7efa5d204b2e46ce9eb82f417d8c12d394858d")) (package (inherit guile-3.0) (name "guile-next") @@ -471,7 +471,7 @@ without requiring the source code to be rewritten.") (file-name (git-file-name name version)) (sha256 (base32 - "1lcc6sz0f3x253pr4a0fggsfkaxmxxw63cspfm2mjis6h82g6jxm")))) + "1mg7pd0ya7i9swgnb38ay99cjwiw61ni0ypyywjrpv6iyvmx8m8q")))) (arguments (substitute-keyword-arguments (package-arguments guile-3.0) ((#:phases phases '%standard-phases) diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm index 5d9e5757a0..b5943f2f47 100644 --- a/gnu/packages/haskell-xyz.scm +++ b/gnu/packages/haskell-xyz.scm @@ -5325,18 +5325,15 @@ Accounting.") (build-system haskell-build-system) (properties '((upstream-name . "hmatrix"))) (arguments - `(#:extra-directories ("lapack"))) + `(#:configure-flags '("--flags=openblas") + #:extra-directories ("openblas"))) (inputs (list ghc-random ghc-split ghc-storable-complex ghc-semigroups ghc-vector - ;;("openblas" ,openblas) - lapack)) - ;; Guix's OpenBLAS is built with the flag "NO_LAPACK=1" which - ;; disables inclusion of the LAPACK functions. - ;; (arguments `(#:configure-flags '("--flags=openblas"))) + openblas)) (home-page "https://github.com/albertoruiz/hmatrix") (synopsis "Haskell numeric linear algebra library") (description "The HMatrix package provices a Haskell library for diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm index 9d16109b05..6c199792f8 100644 --- a/gnu/packages/image-processing.scm +++ b/gnu/packages/image-processing.scm @@ -260,57 +260,36 @@ of external libraries that provide additional functionality.") (define-public opencolorio (package (name "opencolorio") - (version "1.1.1") + (version "2.3.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/AcademySoftwareFoundation/OpenColorIO") (commit (string-append "v" version)))) - (patches (search-patches "opencolorio-fix-build-with-gcc11.patch")) (sha256 - (base32 "12srvxca51czpfjl0gabpidj9n84mw78ivxy5w75qhq2mmc798sb")) - (file-name (git-file-name name version)) - (modules '((guix build utils))) - (snippet - `(begin - ;; Remove bundled tarballs, patches, and .jars(!). XXX: Upstream - ;; claims to have fixed USE_EXTERNAL_YAML, but it still fails with: - ;; https://github.com/AcademySoftwareFoundation/OpenColorIO/issues/517 - ;; When removing it, also remove it from the licence field comment. - (for-each delete-file-recursively - (filter - (lambda (full-name) - (let ((file (basename full-name))) - (not (or (string-prefix? "yaml-cpp-0.3" file) - (string=? "unittest.h" file))))) - (find-files "ext" ".*"))) - - #t)))) + (base32 "1h33s2pfy28nj836kx6xx3iks7v38g3kx7c4f6zn1dpskl0zf809")) + (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments - `(#:configure-flags - (list (string-append "-DCMAKE_CXX_FLAGS=" - "-Wno-error=deprecated-declarations " - "-Wno-error=unused-function") - "-DOCIO_BUILD_STATIC=OFF" - ;; "-DUSE_EXTERNAL_YAML=ON" - "-DUSE_EXTERNAL_TINYXML=ON" - "-DUSE_EXTERNAL_LCMS=ON") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-test-suite - (lambda _ - (substitute* "src/core_tests/CMakeLists.txt" - (("/bin/sh") (which "bash"))) - #t))))) + ;; XXX: GPU tests are failing. + (list #:configure-flags #~(list "-DOCIO_BUILD_GPU_TESTS=false"))) (native-inputs - (list git pkg-config)) + ;; XXX: OCIO has unit tests for OpenShadingLanguage, but they fail. + ;; They also require OIIO, but OCIO is an optional dependency to it. + (list pybind11-2.10 python-wrapper)) (inputs - ;; XXX Adding freeglut, glew, ilmbase, mesa, and openimageio for - ;; ocioconvert fails: error: conflicting declaration ?typedef void - ;; (* PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum, GLenum, GLfloat*) - (list lcms openexr-2 tinyxml)) + (list expat + freeglut + glew + imath + lcms + libglvnd + minizip-ng + openexr + pystring + yaml-cpp + zlib)) (home-page "https://opencolorio.org") (synopsis "Color management for visual effects and animation") (description @@ -323,9 +302,7 @@ back-end configuration options suitable for high-end production usage. OCIO is compatible with the @acronym{ACES, Academy Color Encoding Specification} and is @acronym{LUT, look-up table}-format agnostic, supporting many popular formats.") - (license (list license:expat ; docs/ociotheme/static, ext/yaml-cpp-* - license:zlib ; src/core/md5 - license:bsd-3)))) ; the rest + (license license:bsd-3))) (define-public vtk (package diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 6accf68ef0..fae45363ad 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -28,7 +28,7 @@ ;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com> -;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021, 2022, 2023, 2024 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org> @@ -2547,7 +2547,7 @@ by AOM, including with alpha.") (define-public libheif (package (name "libheif") - (version "1.12.0") + (version "1.17.6") (source (origin (method git-fetch) @@ -2556,16 +2556,14 @@ by AOM, including with alpha.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0cp2d216hp7gw3n56x3g5q5n8jb9ganyanrlibxw8fw16il8nca6")))) + (base32 "00rc8ffc2s9dz9szhy0f0raas8wnn5cyni1imd5lqz79by6qz7x6")))) (build-system cmake-build-system) - (arguments - `(#:tests? #f)) ;no test target although there is a tests folder (native-inputs (list autoconf automake libtool pkg-config)) (inputs - `(("gdk-pixbuf" ,gdk-pixbuf) ;optional - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng))) + (list gdk-pixbuf ; optional + libjpeg-turbo + libpng)) ;; Propagated to satisfy 'libheif.pc'. (propagated-inputs (list dav1d libaom libde265 x265)) @@ -2606,7 +2604,16 @@ Format) file format decoder and encoder.") "-DJPEGXL_FORCE_SYSTEM_BROTLI=true" "-DJPEGXL_FORCE_SYSTEM_LCMS2=true" "-DJPEGXL_FORCE_SYSTEM_HWY=true" - "-DJPEGXL_BUNDLE_LIBPNG=false"))) + "-DJPEGXL_BUNDLE_LIBPNG=false") + ,@(if (target-riscv64?) + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-atomic + (lambda _ + (substitute* "lib/jxl/enc_xyb.cc" + (("#include \"lib/jxl/enc_xyb.h\"" a) + (string-append a "\n#include <atomic>"))))))) + '()))) (native-inputs (list asciidoc doxygen googletest pkg-config python)) (inputs diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index cbe2c36f45..39b915a518 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -69,6 +69,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm index bae9ede8e0..81c9a3d3c2 100644 --- a/gnu/packages/jami.scm +++ b/gnu/packages/jami.scm @@ -78,8 +78,8 @@ ;;; When updating Jami, make sure that the patches used for ffmpeg-jami are up ;;; to date with those listed in ;;; <https://review.jami.net/plugins/gitiles/jami-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak>. -(define %jami-nightly-version "20240124.3") -(define %jami-daemon-commit "205904ed4dd736b8a0ea6c913ecb91d637b79867") +(define %jami-nightly-version "20240325.0") +(define %jami-daemon-commit "32f39e65483cb22729eb922d72434013b337f2c9") (define-public libjami (package @@ -93,7 +93,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0knq84c5f11bgan0076mhi0kpc7l6wwxj41jpssdy0y1lfzgqd8a")) + "0kha2v46l5hmycklhyxrs2qybm640nbrk98z1xvicjxyq6bfszh4")) (patches (search-patches "libjami-ac-config-files.patch" "jami-disable-integration-tests.patch")))) @@ -106,25 +106,13 @@ ;; user scripts too, until more general purpose Scheme bindings are made ;; available (see: test/agent/README.md). #:configure-flags #~(list "--enable-agent" "--enable-debug") - #:make-flags - #~(list - "V=1" ;build verbosely - ;; The 'ut_media_player' is known to fail (see: - ;; https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/935). - "XFAIL_TESTS=ut_media_player") + #:make-flags #~(list"V=1") ;build verbosely #:phases #~(modify-phases %standard-phases (add-after 'unpack 'change-directory/maybe (lambda _ ;; Allow building from the tarball or a git checkout. (false-if-exception (chdir "daemon")))) - (add-after 'change-directory/maybe 'extend-scheduler-test-timeout - (lambda _ - ;; The ut_scheduler unit test may fail on slower machines (see: - ;; https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/939). - (substitute* "test/unitTest/scheduler.cpp" - (("std::chrono::seconds\\(3)") - "std::chrono::seconds(30)")))) (add-after 'install 'delete-static-libraries ;; Remove 100+ MiB of static libraries. "--disable-static" cannot ;; be used as the test suite requires access to private symbols @@ -239,11 +227,12 @@ QSortFilterProxyModel conveniently exposed for QML.") (file-name (git-file-name name version)) (sha256 (base32 - "06q4cdizpix12yzjrnhdwqwybskhc58cissffdnf1zw5pbv0mqag")) + "08lv8azjd47n56i25d9ax248xmidixpsnwh5kc4qjxib7985bdhs")) (patches (search-patches "jami-libjami-headers-search.patch" - "jami-qml-tests-discovery.patch" + "jami-qwindowkit.patch" "jami-skip-tests-requiring-internet.patch" + "jami-tests-qtwebengine-ifdef-to-if.patch" "jami-unbundle-dependencies.patch")))) (build-system qt-build-system) (outputs '("out" "debug")) @@ -252,13 +241,15 @@ QSortFilterProxyModel conveniently exposed for QML.") #:qtbase qtbase #:configure-flags #~(list "-DWITH_DAEMON_SUBMODULE=OFF" - "-DENABLE_TESTS=ON" + "-DBUILD_TESTING=ON" ;; Disable the webengine since it grows the closure size by ;; about 450 MiB and requires more resources. "-DWITH_WEBENGINE=OFF" ;; Use libwrap to link directly to libjami instead of ;; communicating via D-Bus to jamid, the Jami daemon. - "-DENABLE_LIBWRAP=ON") + "-DENABLE_LIBWRAP=ON" + ;; Ensure FetchContent contribs are looked from the system. + "-DFETCHCONTENT_TRY_FIND_PACKAGE_MODE=ALWAYS") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'fix-version-string @@ -292,8 +283,9 @@ QSortFilterProxyModel conveniently exposed for QML.") (display "Running unit tests...\n") (invoke "tests/unit_tests") - ;; XXX: The QML test suite fails, exiting with status code 1 (see: - ;; https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/883). + ;; The qml_tests suite is not run, as it currently exits with + ;; an unclear status of 1 (see: + ;; https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1605). ;; (display "Running functional tests...\n") ;; (invoke "tests/qml_tests") )))))) @@ -301,7 +293,9 @@ QSortFilterProxyModel conveniently exposed for QML.") (list googletest pkg-config python + qthttpserver qttools + qtwebsockets vulkan-headers)) (inputs (list ffmpeg-jami @@ -319,6 +313,7 @@ QSortFilterProxyModel conveniently exposed for QML.") qtnetworkauth qtpositioning qtsvg + qwindowkit tidy-html ;used by src/app/htmlparser.h vulkan-loader)) (home-page "https://jami.net") diff --git a/gnu/packages/java-graphics.scm b/gnu/packages/java-graphics.scm index dab8c8f380..d62d082b1d 100644 --- a/gnu/packages/java-graphics.scm +++ b/gnu/packages/java-graphics.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2019, 2024 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2023 Frank Pursel <frank.pursel@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -21,6 +21,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix modules) #:use-module (guix utils) @@ -149,6 +150,114 @@ ascii art drawings that contain characters that resemble lines like @samp{|} @samp{/} @samp{-}), into proper bitmap graphics.") (license license:lgpl3))) +(define-public java-flatlaf + (package + (name "java-flatlaf") + (version "3.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JFormDesigner/FlatLaf") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qr7g8s5m89q5k31mnxk18lflz3l2hid4i055mim3b0m4vjs40pi")) + (modules '((guix build utils))) + (snippet + '(for-each + delete-file + (find-files "flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/" + ".*"))))) + (build-system ant-build-system) + (arguments + (list + #:tests? #false ;XXX requires junit5 + #:jar-name "flatlaf.jar" + #:source-dir '(list "flatlaf-core/src/main/java") + #:test-dir '(list "flatlaf-core/src/test") + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'build-native-code + (lambda* (#:key inputs #:allow-other-keys) + (let* ((jdk (assoc-ref inputs "jdk")) + (suffix #$(match (%current-system) + ("i686-linux" "i686") + ("armhf-linux" "armhf") + ("aarch64-linux" "aarch64") + ("x86_64-linux" "x86_64") + (_ "generic"))) + (lib #$(match (%current-system) + ("i686-linux" + "/lib/i386") + ("x86_64-linux" + "/lib/amd64") + ("armhf-linux" + "/lib/arm") + ("aarch64-linux" + "/lib/aarch64") + ("powerpc-linux" + "/lib/ppc") + ;; We need a catch-all, dropping + ;; '-linux' works in most cases. + (_ + (string-append + "/lib/" + (string-drop-right + (%current-system) 6))))) + (filename + (string-append "libflatlaf-linux-" suffix ".so")) + (target-dir + (string-append (getcwd) + "/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives"))) + (with-directory-excursion "flatlaf-natives/flatlaf-natives-linux/" + (invoke "gcc" "-shared" "-O3" "-fPIC" + "src/main/cpp/ApiVersion.cpp" + "src/main/cpp/X11WmUtils.cpp" + "-Isrc/main/headers" + "-ljawt" + (string-append "-L" jdk lib) + (string-append "-I" jdk "/include") + (string-append "-I" jdk "/include/linux") + "-o" filename) + (install-file filename target-dir))))) + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "flatlaf-core/src/main/resources" + "build/classes")))))) + (inputs (list libx11 libxt)) + (home-page "https://www.formdev.com/flatlaf/") + (synopsis "Flat Look and Feel for Java Swing applications") + (description "FlatLaf is a cross-platform Look and Feel for Java Swing +desktop applications. It looks almost flat (no shadows or gradients), clean, +simple and elegant. FlatLaf comes with Light, Dark, IntelliJ and Darcula +themes, scales on HiDPI displays and runs on Java 8 or newer. + +The look is heavily inspired by Darcula and IntelliJ themes from IntelliJ IDEA +2019.2+ and uses almost the same colors and icons.") + (license license:asl2.0))) + +(define-public java-flatlaf-intellij-themes + (package + (inherit java-flatlaf) + (name "java-flatlaf-intellij-themes") + (arguments + (list + #:tests? #false ;there are none + #:jar-name "flatlaf-intellij-themes.jar" + #:source-dir '(list "flatlaf-intellij-themes/src/main/java") + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "flatlaf-intellij-themes/src/main/resources" + "build/classes")))))) + (inputs (list java-flatlaf)) + (synopsis "FlatLaf addon with popular themes") + (description "This addon for FlatLaf bundles many popular third party +themes from JetBrains Plugins Repository into a JAR and provides Java classes +to use them."))) + (define-public java-piccolo2d-core (package (name "java-piccolo2d-core") @@ -212,7 +321,7 @@ features not found in the core libraries."))) (define-public java-marlin-renderer (package (name "java-marlin-renderer") - (version "0.9.4.2") + (version "0.9.4.8") (source (origin (method git-fetch) (uri (git-reference @@ -224,11 +333,17 @@ features not found in the core libraries."))) (file-name (git-file-name name version)) (sha256 (base32 - "12vb8fmxf1smnyv6w8i1khahy76v6r29j1qwabbykxff8i9ndxqv")))) + "0gcqp9iq0j5n08gdssh8gp0daj3n5zrx0dll1l4ljhbj2b9jm9ym")))) (build-system ant-build-system) (arguments - `(#:jar-name "marlin.jar" - #:test-include (list "src/test/java/RunJUnitTest.java"))) + (list + #:jar-name "marlin.jar" + #:test-include '(list "src/test/java/RunJUnitTest.java") + #:phases + '(modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "src/main/resources" "build/classes")))))) (inputs (list java-hamcrest-core java-junit)) (home-page "https://github.com/bourgesl/marlin-renderer/") diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index c6e7443f85..fba96b06a8 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017, 2019, 2020, 2022, 2023 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2017-2020, 2022, 2023 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017-2020, 2022-2024 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2021 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> @@ -826,20 +826,29 @@ roots, or wrestle with obscure build systems.") (define-public quickjs (package (name "quickjs") - (version "2021-03-27") + (version "2024-01-13") (source (origin (method url-fetch) (uri (string-append "https://bellard.org/quickjs/quickjs-" version ".tar.xz")) (sha256 (base32 - "06pywwpmfwjz225h59wf90q96a2fd66qfcw5xa6m6y9k9k7glnx4")))) + "00rf45l1bx0yhlv11gn3bbyfqw9724c153bc93mlp9dzjpwghjrw")) + (snippet + #~(begin (use-modules (guix build utils)) + (for-each delete-file + '("doc/quickjs.pdf" + "doc/quickjs.html" + "doc/jsbignum.pdf" + "doc/jsbignum.html")))))) (build-system gnu-build-system) (arguments (list #:make-flags - #~(list "prefix=" - (string-append "DESTDIR=" #$output) - #$@(if (target-riscv64?) '("LDFLAGS=-latomic") '())) + #~(list (string-append "PREFIX=" #$output) + #$@(if (or (target-riscv64?) + (target-ppc32?)) + '("LDFLAGS=-latomic") + '())) #:phases #~(modify-phases %standard-phases (delete 'configure) (replace 'check @@ -848,11 +857,12 @@ roots, or wrestle with obscure build systems.") (invoke "make" "microbench"))))))) (home-page "https://bellard.org/quickjs/") (synopsis "Small embeddable Javascript engine") - (description "QuickJS supports the ES2020 specification including modules, -asynchronous generators, proxies, BigInt and BigDecimal. It can compile -Javascript sources to executables with no external dependency. It includes a -command line interpreter with contextual colorization implemented in -Javascript and a small built-in standard library with C library wrappers.") + (description "QuickJS supports the ES2023 specification including modules, +asynchronous generators, proxies, BigInt, BigDecimal, BigFloat and operator +overloading. It can compile Javascript sources to executables with no external +dependency. It includes a command line interpreter with contextual colorization +implemented in Javascript and a small built-in standard library with C library +wrappers.") (license license:expat))) (define-public duktape diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index c177c33d0d..f487ac9a30 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -103,7 +103,7 @@ (define-public extra-cmake-modules (package (name "extra-cmake-modules") - (version "5.114.0") + (version "6.0.0") (source (origin (method url-fetch) (uri (string-append @@ -112,7 +112,7 @@ name "-" version ".tar.xz")) (sha256 (base32 - "0z4nqravsfzlsgvkg5rha2d0qxfr3pfncw7z2fxzzqvzj7mfk6im")))) + "030dyw4krnq8hcp0dsqb15zxb7x7r8c33lbdgmmia5xpkpqjp693")))) (build-system cmake-build-system) (native-inputs ;; Add test dependency, except on armhf where building it is too @@ -569,7 +569,7 @@ Internet).") (define-public kcolorpicker (package (name "kcolorpicker") - (version "0.3.0") + (version "0.3.1") (source (origin (method git-fetch) @@ -579,7 +579,7 @@ Internet).") (file-name (git-file-name name version)) (sha256 (base32 - "1zg078mkdapsd6vq7qy2vxbfzn6i382ss1a1w0xzvpy148ifaj42")))) + "1px40rasvz0r5db9av125q9mlyjz4xdnckg2767i3fndj3ic0vql")))) (build-system qt-build-system) (propagated-inputs (list qtbase-5)) (arguments @@ -1160,9 +1160,17 @@ protocols used in KDE Plasma.") (lambda* (#:key tests? #:allow-other-keys) (when tests? (invoke "ctest" "-E" - ;; XXX: maybe is upstream bug - "(kwayland-testWaylandRegistry|\ -kwayland-testPlasmaShell|kwayland-testPlasmaWindowModel)"))))))) + (string-append + "(" + (string-join + ;; XXX: maybe is upstream bug + '("kwayland-testWaylandRegistry" + "kwayland-testPlasmaShell" + "kwayland-testPlasmaWindowModel" + ;; The 'kwayland-testXdgForeign' may fail on + ;; powerpc64le with a 'Subprocess aborted' error. + "kwayland-testXdgForeign") "|") + ")")))))))) (home-page "https://community.kde.org/Frameworks") (synopsis "Qt-style API to interact with the wayland client and server") (description "As the names suggest they implement a Client respectively a @@ -1853,7 +1861,7 @@ by applications to write metadata.") (define-public kimageannotator (package (name "kimageannotator") - (version "0.7.0") + (version "0.7.1") (source (origin (method git-fetch) @@ -1863,10 +1871,11 @@ by applications to write metadata.") (file-name (git-file-name name version)) (sha256 (base32 - "1ac0cxbq88zzvkgs5d39xpzk0h7xhl57yswgd760x77py0rl5bqf")))) + "1f1y4r5rb971v2g34fgjbr14g0mdms5h66yl5k0p1zf50kr2wnic")))) (build-system qt-build-system) (arguments - (list #:configure-flags #~'("-DBUILD_TESTS=ON") + (list #:configure-flags #~'("-DBUILD_SHARED_LIBS=ON" + "-DBUILD_TESTS=ON") #:phases #~(modify-phases %standard-phases (replace 'check @@ -1880,8 +1889,6 @@ by applications to write metadata.") (list qttools-5 xorg-server-for-tests)) (inputs (list googletest qtsvg-5 kcolorpicker)) - (propagated-inputs - (list qtbase-5)) (home-page "https://github.com/ksnip/kImageAnnotator") (synopsis "Image annotating library") (description "This library provides tools to annotate images.") @@ -1991,7 +1998,7 @@ asynchronous jobs.") phonon qtdeclarative-5 qtbase-5 - qtspeech + qtspeech-5 qtx11extras)) (arguments (list #:phases #~(modify-phases %standard-phases @@ -2033,9 +2040,6 @@ covers feedback and persistent events.") qtbase-5)) (arguments (list - ;; The `plasma-querytest' test is known to fail when tests are run in parallel: - ;; <https://sources.debian.org/src/kpackage/5.107.0-1/debian/changelog/#L92> - #:parallel-tests? #f #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch @@ -2062,6 +2066,13 @@ covers feedback and persistent events.") "filePath(\"etc\", QStringLiteral(\"passwd\"))") (("\"/bin/ls\"") "\"/etc/passwd\"")))) + (add-after 'unpack 'disable-problematic-tests + (lambda _ + ;; The 'plasma-query' test fails non-deterministically, as + ;; reported e.g. in <https://bugs.gentoo.org/919151>. + (substitute* "autotests/CMakeLists.txt" + ((".*querytest.*") + "")))) (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd))))))) @@ -3255,7 +3266,7 @@ library.") kwidgetsaddons kwindowsystem qtbase-5 - qtspeech)) + qtspeech-5)) (home-page "https://community.kde.org/Frameworks") (synopsis "Text editing widgets") (description "KTextWidgets provides widgets for displaying and editing text. diff --git a/gnu/packages/kde-pim.scm b/gnu/packages/kde-pim.scm index 09552f33f4..5780b9dbca 100644 --- a/gnu/packages/kde-pim.scm +++ b/gnu/packages/kde-pim.scm @@ -849,7 +849,7 @@ functions for accessing calendar data using the kcalcore API.") qtdeclarative-5 qtkeychain qtnetworkauth-5 - qtspeech + qtspeech-5 qtwebchannel-5 qtwebengine-5 qtxmlpatterns)) @@ -1994,7 +1994,7 @@ unnecessary network operations.") kwidgetsaddons kxmlgui qtbase-5 - qtspeech + qtspeech-5 sonnet)) (arguments `(#:tests? #f)) ;; TODO - test suite hangs diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm index cf45fa59f7..1d41d35a56 100644 --- a/gnu/packages/kde-plasma.scm +++ b/gnu/packages/kde-plasma.scm @@ -793,7 +793,7 @@ PipeWire in Qt projects.") libkscreen libxi plasma-wayland-protocols - qtsensors + qtsensors-5 qtbase-5 qtx11extras xcb-util)) diff --git a/gnu/packages/kde-utils.scm b/gnu/packages/kde-utils.scm index 6735bf2aea..6001607ad6 100644 --- a/gnu/packages/kde-utils.scm +++ b/gnu/packages/kde-utils.scm @@ -152,7 +152,7 @@ well as CD-ROM images.") qtcharts qtdeclarative-5 qtmultimedia-5 - qtserialport)) + qtserialport-5)) (home-page "https://atelier.kde.org") (synopsis "Desktop interface to control 3D printers powered by AtCore") (description "Atelier provides interface to control and manage your printer. @@ -729,7 +729,7 @@ combinations are distinct enough to be readable and accessible.") "1830r6ylpn3l7y2frl8cih5cpjgbkfrib9jq7jklf8aszhlsihf2")))) (build-system qt-build-system) (native-inputs (list extra-cmake-modules)) - (inputs (list qtcharts qtdeclarative-5 qtserialport)) + (inputs (list qtcharts qtdeclarative-5 qtserialport-5)) (home-page "https://invent.kde.org/libraries/atcore") (synopsis "Library for connection and management of 3D printers") (description @@ -875,7 +875,7 @@ whom pressing buttons hurts.") kxmlgui breeze-icons ;; default icon set qtbase-5 - qtspeech)) + qtspeech-5)) (home-page "https://apps.kde.org/kmouth/") (synopsis "Type-and-say frontend for speech synthesizers") (description "KMouth is a program which enables persons that cannot speak diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index c49f9053fd..38992150c7 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -233,14 +233,15 @@ browser for easy news reading.") (define-public gwenview (package (name "gwenview") - (version "23.04.3") + (version "23.08.5") (source (origin (method url-fetch) (uri (string-append "mirror://kde/stable/release-service/" version "/src/gwenview-" version ".tar.xz")) (sha256 - (base32 "0vijsq4174p4asdjq47bzdp2xkfn8hpg7b4dgp3yvapfxwjgp148")))) + (base32 "0f4h2vf8nkz1jcrxw98n52divvdmxh434659m1pd4l5pag0d3z54")) + (patches (search-patches "gwenview-kimageannotator.patch")))) (build-system qt-build-system) (arguments (list #:phases @@ -249,9 +250,18 @@ browser for easy news reading.") (lambda* (#:key tests? #:allow-other-keys) (when tests? (invoke "ctest" "-E" - "(placetreemodeltest|historymodeltest|contextmanagertest|urlutilstest)"))))))) + (string-append + "(" + (string-join '("placetreemodeltest" + "historymodeltest" + "contextmanagertest" + "urlutilstest") + "|") + ")")))))))) (native-inputs - (list extra-cmake-modules kdoctools pkg-config)) + (list extra-cmake-modules + kdoctools + pkg-config)) (inputs (list baloo cfitsio @@ -272,7 +282,7 @@ browser for easy news reading.") libtiff phonon purpose - qtimageformats + qtimageformats-5 qtsvg-5 qtwayland-5 qtx11extras @@ -1603,7 +1613,7 @@ creating routes by drag and drop and more.") kio kparts kpty - qtspeech + qtspeech-5 kwallet kwindowsystem libkexiv2 diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 57f30fca0d..948d5dbccc 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2024 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de> @@ -137,11 +137,11 @@ version of libusb to run with newer libusb.") (define-public libusb4java ;; There is no public release so we take the latest version from git. - (let ((commit "396d642a57678a0d9663b062c980fe100cc0ea1e") + (let ((commit "0842e8104d8772da873314e233aa625f5651fd34") (revision "1")) (package (name "libusb4java") - (version (string-append "0-" revision "." (string-take commit 9))) + (version (git-version "1.3.1" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -150,23 +150,16 @@ version of libusb to run with newer libusb.") (file-name (git-file-name name version)) (sha256 (base32 - "0wqgapalhfh9v38ycbl6i2f5lh1wpr6fzwn5dwd0rdacypkd1gml")))) + "16hz0h8fvrr764gwj90yny1kxpf0y7p2czr7pdrw3qby21fqkzrq")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; there are no tests - #:phases - (modify-phases %standard-phases - ;; FIXME: libusb 1.0.22 deprecated libusb_set_debug, so the build - ;; fails because libusb4java uses a deprecated procedure. - (add-after 'unpack 'disable-Werror - (lambda _ - (substitute* "CMakeLists.txt" - (("-Werror") "")) - #t)) - (add-before 'configure 'set-JAVA_HOME - (lambda* (#:key inputs #:allow-other-keys) - (setenv "JAVA_HOME" (assoc-ref inputs "jdk")) - #t))))) + (list + #:tests? #f ;there are no tests + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'set-JAVA_HOME + (lambda _ + (setenv "JAVA_HOME" #$(this-package-native-input "jdk"))))))) (inputs (list libusb)) (native-inputs @@ -213,7 +206,7 @@ Go-like binding.") (define-public java-usb4java (package (name "java-usb4java") - (version "1.2.0") + (version "1.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -222,43 +215,38 @@ Go-like binding.") (file-name (git-file-name name version)) (sha256 (base32 - "0aip6k24czz5g58qwb963mpick0b6ks774drfpdd8gcdvj9iv87j")))) + "0fwf8d2swgm8pmvssy53ixnc0pb5bfvc8iy42mf3dwgvr1zzvgmv")))) (build-system ant-build-system) (arguments - `(#:jar-name "usb4java.jar" - #:phases - (modify-phases %standard-phases - ;; Usually, native libusb4java libraries for all supported systems - ;; would be included in the jar and extracted at runtime. Since we - ;; build everything from source we cannot just bundle pre-built - ;; binaries for other systems. Instead, we patch the loader to - ;; directly return the appropriate library for this system. The - ;; downside is that the jar will only work on the same architecture - ;; that it was built on. - (add-after 'unpack 'copy-libusb4java - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/main/java/org/usb4java/Loader.java" - (("private static String extractLibrary" line) - (string-append - line "(final String a, final String b) {" - "return \"" - (assoc-ref inputs "libusb4java") "/lib/libusb4java.so" - "\"; }\n" - "private static String _extractLibrary"))) - #t)) - (add-after 'unpack 'disable-broken-tests - (lambda _ - (with-directory-excursion "src/test/java/org/usb4java" - ;; These tests should only be run when USB devices are present. - (substitute* '("LibUsbGlobalTest.java" - "TransferTest.java") - (("this.context = new Context\\(\\);") - "this.context = null;") - (("LibUsb.init") "//")) - (substitute* "DeviceListIteratorTest.java" - (("this.iterator.remove" line) - (string-append "assumeUsbTestsEnabled();" line)))) - #t))))) + (list + #:jar-name "usb4java.jar" + #:phases + #~(modify-phases %standard-phases + ;; Usually, native libusb4java libraries for all supported systems + ;; would be included in the jar and extracted at runtime. Since we + ;; build everything from source we cannot just bundle pre-built + ;; binaries for other systems. Instead, we patch the loader to + ;; directly return the appropriate library for this system. The + ;; downside is that the jar will only work on the same architecture + ;; that it was built on. + (add-after 'unpack 'copy-libusb4java + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/main/java/org/usb4java/Loader.java" + (("private static String extractLibrary" line) + (string-append + line "(final String a, final String b) {" + "return \"" + (search-input-file inputs "/lib/libusb4java.so") + "\"; }\n" + "private static String _extractLibrary"))))) + (add-after 'unpack 'disable-broken-tests + (lambda _ + (with-directory-excursion "src/test/java/org/usb4java" + ;; These tests should only be run when USB devices are present. + (substitute* '("LibUsbGlobalTest.java" + "TransferTest.java") + (("this.context = new Context\\(\\);") + "this.context = null;")))))))) (inputs (list libusb4java java-commons-lang3 java-junit java-hamcrest-core)) (home-page "http://usb4java.org/") diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 2c6df78518..c66fd80d38 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -34,7 +34,7 @@ ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de> ;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com> -;;; Copyright © 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019, 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Stefan Stefanović <stefanx2ovic@gmail.com> ;;; Copyright © 2019-2022 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net> @@ -114,6 +114,7 @@ #:use-module (gnu packages calendar) #:use-module (gnu packages check) #:use-module (gnu packages cpio) + #:use-module (gnu packages crates-io) #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) #:use-module (gnu packages compression) @@ -123,6 +124,7 @@ #:use-module (gnu packages disk) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) + #:use-module (gnu packages dlang) #:use-module (gnu packages elf) #:use-module (gnu packages file) #:use-module (gnu packages flex) @@ -143,6 +145,7 @@ #:use-module (gnu packages haskell-apps) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages image) + #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages libunwind) #:use-module (gnu packages libusb) #:use-module (gnu packages llvm) @@ -166,6 +169,7 @@ #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages rrdtool) #:use-module (gnu packages rsync) @@ -197,6 +201,7 @@ #:use-module (guix build-system meson) #:use-module (guix build-system pyproject) #:use-module (guix build-system python) + #:use-module (guix build-system qt) #:use-module (guix build-system trivial) #:use-module (guix build-system linux-module) #:use-module (guix download) @@ -497,17 +502,17 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "mainline" kernel. -(define-public linux-libre-6.8-version "6.8.1") +(define-public linux-libre-6.8-version "6.8.4") (define-public linux-libre-6.8-gnu-revision "gnu") (define deblob-scripts-6.8 (linux-libre-deblob-scripts linux-libre-6.8-version linux-libre-6.8-gnu-revision (base32 "1kqwcm8baq3zx1z8jrgnvm9yps3y9jbf4pv1pbqqprpdscgl9089") - (base32 "04xk6myysrfrhfpq6zah8wk2ska7idmr968nh6pcd0ixbhas2k92"))) + (base32 "0j9pj370zismhzw18iyx3lwcby3l3160xgpmh5xa8i8cr38r2z5h"))) (define-public linux-libre-6.8-pristine-source (let ((version linux-libre-6.8-version) - (hash (base32 "0s7zgk9m545v8y7qjhv7cprrh58j46gpmb8iynyhy2hlwcv8j34d"))) + (hash (base32 "0qwywy89an1w0yvs5957kqyv74mwgxady521w2lmyq00zjaw9pnm"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.8))) @@ -517,17 +522,17 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "stable" kernels. That is, the most recently released major ;; versions that are still supported upstream. -(define-public linux-libre-6.7-version "6.7.10") +(define-public linux-libre-6.7-version "6.7.12") (define-public linux-libre-6.7-gnu-revision "gnu") (define deblob-scripts-6.7 (linux-libre-deblob-scripts linux-libre-6.7-version linux-libre-6.7-gnu-revision (base32 "1ddngihfmwffgvxxv8xsppi76r6grvdxr6zzfzvgl9qw07a6c9fd") - (base32 "1lhsy2qnmz47r8m926k1kng912m64j7pnpcvd1ddgdqpq5byp88j"))) + (base32 "16zh4cj1q7khl943ij4fzc815plbcdllns93chv6725gsm338hsl"))) (define-public linux-libre-6.7-pristine-source (let ((version linux-libre-6.7-version) - (hash (base32 "00vw90mypcliq0d72jdh1ql2dfmm7gpswln2qycxdz7rfsrrzfd9"))) + (hash (base32 "113rf3jqfpf3wcv637zbq5ww2hpaaf23y6dsmkds01l8jkipjabc"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.7))) @@ -536,52 +541,52 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; Here are the support timelines: ;; <https://www.kernel.org/category/releases.html> -(define-public linux-libre-6.6-version "6.6.22") +(define-public linux-libre-6.6-version "6.6.25") (define-public linux-libre-6.6-gnu-revision "gnu") (define deblob-scripts-6.6 (linux-libre-deblob-scripts linux-libre-6.6-version linux-libre-6.6-gnu-revision (base32 "1qm8f3fq4yx59f7b6yky5ryyf229ypxnry922sr8cy0s7mp62cmv") - (base32 "014w19b9igdy3rpwrqn21why151zlc9hdx2b1qvdkjsbz6smx3lp"))) + (base32 "17hq5pirvxaq1yscb204950xlakrd4r4mknjqayh1rzj4rzngzyq"))) (define-public linux-libre-6.6-pristine-source (let ((version linux-libre-6.6-version) - (hash (base32 "1x52c6ywmspp3naishzsknhy7i0b7mv9baxx25a0y987cjsygqr3"))) + (hash (base32 "0i0zvqlj02rm6wpbidji0rn9559vrpfc1b8gbfjk70lhhyz11llr"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.6))) -(define-public linux-libre-6.1-version "6.1.82") +(define-public linux-libre-6.1-version "6.1.84") (define-public linux-libre-6.1-gnu-revision "gnu") (define deblob-scripts-6.1 (linux-libre-deblob-scripts linux-libre-6.1-version linux-libre-6.1-gnu-revision (base32 "1sf80f2i4vf888xjcn84ymn4w5ynn30ib9033zwmv7f09yvfhapy") - (base32 "08y5smwgbl2l74dlk850pbvn8d1y14cqvll2gbx80vmvfwlzp8c3"))) + (base32 "1kp8zl97x1hsmvmdwaq8s8gndfmf8chvlhsw216f86ishi2prws3"))) (define-public linux-libre-6.1-pristine-source (let ((version linux-libre-6.1-version) - (hash (base32 "01pcrcjp5mifjjmfz7j1jb8nhq8nkxspavxmv1l7d1qnskcx4l6i"))) + (hash (base32 "0ykhl4i6yhryzgjkdbdz4pd3b1ghv84h6mpn7bdx0ra7w7mx55xg"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.1))) -(define-public linux-libre-5.15-version "5.15.152") +(define-public linux-libre-5.15-version "5.15.153") (define-public linux-libre-5.15-gnu-revision "gnu") (define deblob-scripts-5.15 (linux-libre-deblob-scripts linux-libre-5.15-version linux-libre-5.15-gnu-revision (base32 "18ac30kxg2mf2f6gk3p935hzhz2qs110jy4xwk21kblnnkskbxj8") - (base32 "1a4la9nfdl5qiyfbzhgbqhl638wy1crkgpfnfaj0qf3hg4jsg0g4"))) + (base32 "121shkzgixmywa19xx5f2yxg1primarpg4bxin3jyw0214xbfh2n"))) (define-public linux-libre-5.15-pristine-source (let ((version linux-libre-5.15-version) - (hash (base32 "0zm4wkryj4mim4fr7pf5g9rlzh31yb1c40lkp85lvcm5yhjm507h"))) + (hash (base32 "1g44gjcwcdq5552vwinljqwiy90bxax72jjvdasp71x88khv3pfp"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.15))) -(define-public linux-libre-5.10-version "5.10.213") +(define-public linux-libre-5.10-version "5.10.214") (define-public linux-libre-5.10-gnu-revision "gnu1") (define deblob-scripts-5.10 (linux-libre-deblob-scripts @@ -591,12 +596,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "12csh2zyjrqzgqcv799gv8h4xaw1irxh2zqddn4jqp5p7psx4j5k"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "105df7w6m5a3fngi6ajqs5qblaq4lbxsgcppllrk7v1r68i31kw4"))) + (hash (base32 "0n7m82hw2rkw5mhdqw0vvmq7kq0s43jalr53sbv09wl17vai9w20"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.272") +(define-public linux-libre-5.4-version "5.4.273") (define-public linux-libre-5.4-gnu-revision "gnu1") (define deblob-scripts-5.4 (linux-libre-deblob-scripts @@ -606,12 +611,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0x0xg0fcykpd117x3q0gim8jilhx922ashhckjvafxv2gk2zzjhj"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "0rp3waqrm489crcrms2ls7fxcw5jdkjhazvx82z68gj0kaaxb69m"))) + (hash (base32 "0hs7af3mcnk5mmp3c5vjl187nva2kzsdx487nd12a8m7zb9wz84b"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.310") +(define-public linux-libre-4.19-version "4.19.311") (define-public linux-libre-4.19-gnu-revision "gnu1") (define deblob-scripts-4.19 (linux-libre-deblob-scripts @@ -621,7 +626,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0fgkp3v7qgqpn7l1987xcwwlrmwsbscqnxfv06p8nkavrhymrv3c"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "0sfy2g9jzxd8ia0idll72l7npi2kssdkz29h8jjxhilgmg299v4m"))) + (hash (base32 "10dww3cyazcf3wjzh8igpa0frb8gvl6amnksh42zfkji4mskh2r6"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) @@ -1136,12 +1141,6 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") "aarch64-linux" "powerpc64le-linux" "riscv64-linux") #:configuration-file kernel-config)) -(define-public linux-libre-version linux-libre-6.7-version) -(define-public linux-libre-gnu-revision linux-libre-6.7-gnu-revision) -(define-public linux-libre-pristine-source linux-libre-6.7-pristine-source) -(define-public linux-libre-source linux-libre-6.7-source) -(define-public linux-libre linux-libre-6.7) - (define-public linux-libre-6.8 (make-linux-libre* linux-libre-6.8-version linux-libre-6.8-gnu-revision @@ -1150,6 +1149,12 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") "aarch64-linux" "powerpc64le-linux" "riscv64-linux") #:configuration-file kernel-config)) +(define-public linux-libre-version linux-libre-6.8-version) +(define-public linux-libre-gnu-revision linux-libre-6.8-gnu-revision) +(define-public linux-libre-pristine-source linux-libre-6.8-pristine-source) +(define-public linux-libre-source linux-libre-6.8-source) +(define-public linux-libre linux-libre-6.8) + (define-public linux-libre-6.6 (make-linux-libre* linux-libre-6.6-version linux-libre-6.6-gnu-revision @@ -1202,11 +1207,11 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") ;; Linux-Libre. ;; Reference: <https://www.kernel.org/category/releases.html> -(define-public linux-libre-lts-version linux-libre-6.1-version) -(define-public linux-libre-lts-gnu-revision linux-libre-6.1-gnu-revision) -(define-public linux-libre-lts-pristine-source linux-libre-6.1-pristine-source) -(define-public linux-libre-lts-source linux-libre-6.1-source) -(define-public linux-libre-lts linux-libre-6.1) +(define-public linux-libre-lts-version linux-libre-6.6-version) +(define-public linux-libre-lts-gnu-revision linux-libre-6.6-gnu-revision) +(define-public linux-libre-lts-pristine-source linux-libre-6.6-pristine-source) +(define-public linux-libre-lts-source linux-libre-6.6-source) +(define-public linux-libre-lts linux-libre-6.6) ;;; @@ -1382,9 +1387,9 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") (define-public linux-libre-with-bpf (let ((base-linux-libre (make-linux-libre* - linux-libre-6.6-version - linux-libre-6.6-gnu-revision - linux-libre-6.6-source + linux-libre-6.8-version + linux-libre-6.8-gnu-revision + linux-libre-6.8-source '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "powerpc64le-linux" "riscv64-linux") #:extra-version "bpf" @@ -1811,7 +1816,7 @@ supported under @file{/sys/class/backlight/}.") (define-public v4l2loopback-linux-module (package (name "v4l2loopback-linux-module") - (version "0.12.7") + (version "0.13.1") (source (origin (method git-fetch) (uri (git-reference @@ -1820,7 +1825,7 @@ supported under @file{/sys/class/backlight/}.") (file-name (git-file-name name version)) (sha256 (base32 - "1yghxl7gjr1zxi3a1kiz6d7yh68z64xayzm925zan4jqhrwv1h68")))) + "0580pzac0bfb98phmsm5rxmarx22wiprca13n8bk23sdgkzwb706")))) (build-system linux-module-build-system) (arguments (list #:tests? #f)) ; no test suite @@ -7134,6 +7139,130 @@ not as a replacement for it.") license:public-domain ; nist/dfft.c license:gpl3+)))) ; everything else +(define-public hotspot + (package + (name "hotspot") + (version "1.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KDAB/hotspot") + (commit (string-append "v" version)) + ;; Include the bundled perfparser and PrefixTickLabels + ;; libraries, which are to be used in source form. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0wz4qr3dwjji79x7kj44g7xp11qsscp3b95h6627k8p7xbpi2vhd")))) + (build-system qt-build-system) + (arguments + (list + ;; As mentioned in the option help text, the KAuth helper cannot be + ;; installed to a custom prefix and the build fails with "file cannot + ;; create directory: /polkit-1/actions. Maybe need administrative" + ;; (see: https://bugs.kde.org/show_bug.cgi?id=363678). + #:configure-flags #~(list "-DINSTALL_KAUTH_HELPER=OFF") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-perfparser + ;; XXX: This phase is copied from qt-creator: keep them in sync! + (lambda* (#:key inputs #:allow-other-keys) + ;; perfparser attempts to dynamically load the demangle + ;; libraries; use their absolute file name to avoid having to + ;; set LD_LIBRARY_PATH. + (let ((librustc_demangle.so + (with-exception-handler (lambda (ex) + (if (search-error? ex) + #f + (raise-exception ex))) + (lambda () + (search-input-file inputs "lib/librustc_demangle.so")) + #:unwind? #t))) + (substitute* "3rdparty/perfparser/app/demangler.cpp" + (("loadDemangleLib\\(QStringLiteral\\(\"rustc_demangle\")" + all) + (if librustc_demangle.so + (format #f "loadDemangleLib(QStringLiteral(~s)" + librustc_demangle.so) + all)) ;no rustc_demangle; leave unchanged + (("loadDemangleLib\\(QStringLiteral\\(\"d_demangle\")") + (format #f "loadDemangleLib(QStringLiteral(~s)" + (search-input-file inputs + "lib/libd_demangle.so"))))))) + (add-after 'unpack 'path-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/perfoutputwidgetkonsole.cpp" + (("\"tail\"") + (format #f "~s" (search-input-file inputs "bin/tail")))) + (substitute* "src/perfrecord.cpp" + (("\"perf( )?\"" _ space) + (string-append "\"" (search-input-file inputs "bin/perf") + (or space "") "\""))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; The 'tst_models' and 'tst_callgraphgenerator' fail, with + ;; the later seemingly requiring sudo or access to the kernel + ;; trace points. + (invoke "ctest" "-E" + (string-append + "(" + (string-join + ;; The 'tst_models' expected output doesn't exactly + ;; match. + '("tst_models" + ;; The 'tst_callgraphgenerator' perf invocation + ;; fails when run in the build container. + "tst_callgraphgenerator" + ;; The 'tst_perfparser' test requires sudo/access + ;; to the kernel scheduler trace points. + "tst_perfparser") + "|") + ")")))))))) + (native-inputs + (list extra-cmake-modules + vulkan-headers)) + (inputs + (append + (list coreutils-minimal + d-demangler + elfutils + karchive + kconfig + kcoreaddons + kddockwidgets-1 ;see https://github.com/KDAB/hotspot/issues/610 + kgraphviewer + kio + kiconthemes + kitemmodels + kitemviews + knotifications + kparts + ksyntaxhighlighting + kwindowsystem + libxkbcommon + perf + qcustomplot + qtbase-5 + qtdeclarative-5 + qtquickcontrols2-5 + qtsvg-5 + qtx11extras + solid + threadweaver + `(,zstd "lib")) + (if (supported-package? rust-rustc-demangle-capi-0.1) + (list rust-rustc-demangle-capi-0.1) + '()))) + (home-page "https://github.com/KDAB/hotspot") + (synopsis "Performance analysis GUI for Linux perf") + (description "Hotspot is a standalone GUI for performance data analysis. +It aims to be similar to KCachegrind, but for data collected with the +@command{perf}, a profiler for use with the kernel Linux. Its main feature is +graphically visualizing a @file{perf.data} file.") + (license (list license:gpl2+ license:gpl3+)))) ;dual licensed + (define-public ecryptfs-utils (package (name "ecryptfs-utils") diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 1c47b7a7c6..5ce928fc84 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -25584,17 +25584,17 @@ Lisp, including: (substitute* "src/configuration.lisp" (("\"libblas.so.3gf\"") (string-append "\"" (assoc-ref inputs "lapack") - "/lib/libblas.so\"")) + "/lib/libopenblas.so\"")) (("\"liblapack.so.3gf\"") (string-append "\"" (assoc-ref inputs "lapack") - "/lib/liblapack.so\"")))))))) + "/lib/libopenblas.so\"")))))))) (inputs `(("anaphora" ,sbcl-anaphora) ("alexandria" ,sbcl-alexandria) ("cffi" ,sbcl-cffi) ("cl-num-utils" ,sbcl-cl-num-utils) ("cl-slice" ,sbcl-cl-slice) - ("lapack" ,lapack) + ("lapack" ,openblas) ("let-plus" ,sbcl-let-plus))) (native-inputs (list sbcl-clunit)) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 219b183753..83ff93719e 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -874,7 +874,6 @@ interface.") ("sdl-mixer" ,sdl-mixer) ("sdl-net" ,sdl-net) ("sdl-ttf" ,sdl-ttf) - ("lapack" ,lapack) ("libxft" ,libxft) ("fontconfig" ,fontconfig) ("gsl" ,gsl) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 23791dfd03..4e54ca3350 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -541,6 +541,16 @@ Performance is achieved by using the LLVM JIT compiler.") (build-system cmake-build-system) (arguments (list + #:configure-flags #~'("-DLLAMA_BLAS=ON" + "-DLLAMA_BLAS_VENDOR=OpenBLAS" + + "-DLLAMA_NATIVE=OFF" ;no '-march=native' + "-DLLAMA_FMA=OFF" ;and no '-mfma', etc. + "-DLLAMA_AVX2=OFF" + "-DLLAMA_AVX512=OFF" + "-DLLAMA_AVX512_VBMI=OFF" + "-DLLAMA_AVX512_VNNI=OFF") + #:modules '((ice-9 textual-ports) (guix build utils) ((guix build python-build-system) #:prefix python:) @@ -575,8 +585,10 @@ Performance is achieved by using the LLVM JIT compiler.") (lambda _ (copy-file "bin/main" (string-append #$output "/bin/llama"))))))) (inputs (list python)) + (native-inputs (list pkg-config)) (propagated-inputs - (list python-numpy python-pytorch python-sentencepiece)) + (list python-numpy python-pytorch python-sentencepiece openblas)) + (properties '((tunable? . #true))) ;use AVX512, FMA, etc. when available (home-page "https://github.com/ggerganov/llama.cpp") (synopsis "Port of Facebook's LLaMA model in C/C++") (description "This package provides a port to Facebook's LLaMA collection @@ -1255,7 +1267,7 @@ model packaging, deployment and workflow management.") ("hdf5" ,hdf5) ("atlas" ,atlas) ("arpack" ,arpack-ng) - ("lapack" ,lapack) + ("openblas" ,openblas) ("glpk" ,glpk) ("libxml2" ,libxml2) ("lzo" ,lzo) @@ -1650,7 +1662,6 @@ than 8 bits, and at the end only some significant 8 bits are kept.") libnsl)) (inputs `(("giflib" ,giflib) - ("lapack" ,lapack) ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libx11" ,libx11) @@ -2518,7 +2529,6 @@ written in C++.") (base32 "16w90za8narkfi590cxj4p7vc1f5sdxc927g5hk6kh4l3mf6iisl")))) (inputs (list alsa-lib - lapack ;compared to base kaldi, replacing `(,gfortran "lib") glib gstreamer jack-2 @@ -2537,7 +2547,6 @@ written in C++.") (replace 'configure (lambda _ (let ((portaudio #$(this-package-input "portaudio")) - (lapack #$(this-package-input "lapack")) (openfst #$(this-package-input "openfst")) (openblas #$(this-package-input "openblas"))) #$@(if (target-x86?) @@ -2571,7 +2580,7 @@ written in C++.") (string-append "OPENBLASROOT=\"" openblas "\"")) (("-L\\$OPENBLASLIBDIR -l:libopenblas.a -l:libblas.a -l:liblapack.a -l:libf2c.a") (string-append "-L$OPENBLASLIBDIR -lopenblas " - "-L" lapack "/lib -lblas -llapack"))) + "-L" openblas "/lib -lopenblas"))) (mkdir-p #$output) ; must exist (setenv "CONFIG_SHELL" (which "bash")) (setenv "OPENFST_VER" #$(package-version openfst)) @@ -3501,7 +3510,7 @@ learning libraries.") (define-public xgboost (package (name "xgboost") - (version "1.5.2") + (version "1.7.6") (source (origin (method git-fetch) @@ -3511,7 +3520,7 @@ learning libraries.") (file-name (git-file-name name version)) (patches (search-patches "xgboost-use-system-dmlc-core.patch")) (sha256 - (base32 "0qx04y7cz8z7qv6bk9q7d7ba9b7xzj53l83l2x9ykdwhzacc3dn0")))) + (base32 "16fbm5y3hn6ccflmbdlmn7krrdq7c0az3mxd8j1d23s9ky8niw05")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DGOOGLE_TEST=ON"))) @@ -3538,40 +3547,7 @@ in a fast and accurate way.") (build-system pyproject-build-system) (arguments (list - #:test-flags - '(list "tests/python" - ;; FIXME: CLI tests fail with PermissionError. - "--ignore" "tests/python/test_cli.py" - "-k" - (string-append - "not test_cli_regression_demo" - ;; These tests use the Boston dataset that has been - ;; removed from scipy. - " and not test_sklearn_demo" - " and not test_sklearn_parallel_demo" - " and not test_predict_shape" - " and not test_num_parallel_tree" - " and not test_boston_housing_regression" - " and not test_boston_housing_rf_regression" - " and not test_parameter_tuning" - " and not test_regression_with_custom_objective" - " and not test_RFECV" - ;; Pandas incompatibility? Says: - ;; '_CalibratedClassifier' object has no attribute - ;; 'base_estimator' - " and not test_pandas_input" - ;; Accuracy problems? - " and not test_exact" - " and not test_approx" - " and not test_hist" - ;; The tests below open a network connection. - " and not test_model_compatibility" - " and not test_get_group" - " and not test_cv_no_shuffle" - " and not test_cv" - " and not test_training" - ;; "'['./runexp.sh']' returned non-zero exit status 1" - " and not test_cli_binary_classification")) + #:tests? #f ; all tests require network access #:phases #~(modify-phases %standard-phases (add-after 'unpack 'preparations @@ -5160,8 +5136,7 @@ linear algebra routines needed for structured matrices (or operators).") (lambda _ (chdir "src"))) (replace 'configure (lambda _ - (let* ((lapack #$(this-package-input "lapack")) - (openfst #$(this-package-input "openfst")) + (let* ((openfst #$(this-package-input "openfst")) (openblas #$(this-package-input "openblas")) (kaldi #$(this-package-input "kaldi"))) (substitute* "./Makefile" @@ -5171,8 +5146,7 @@ linear algebra routines needed for structured matrices (or operators).") "") (("-lopenblas -llapack -lblas -lf2c") (string-append - "-L" openblas "/lib " "-lopenblas " - "-L" lapack "/lib " "-llapack -lblas ")) + "-L" openblas "/lib " "-lopenblas ")) (("-lfst -lfstngram") (string-append "-L" openfst "/lib " "-lfst -lfstngram ")) @@ -5194,7 +5168,7 @@ linear algebra routines needed for structured matrices (or operators).") (for-each (lambda (x) (install-file x src)) (find-files "." "\\.h$")))))))) - (inputs (list kaldi openfst lapack openblas)) + (inputs (list kaldi openfst openblas)) (home-page "https://alphacephei.com/vosk") (synopsis "Speech recognition toolkit based on @code{kaldi}") (description "\ diff --git a/gnu/packages/magic-wormhole.scm b/gnu/packages/magic-wormhole.scm index 3c63319710..dbb943c5c6 100644 --- a/gnu/packages/magic-wormhole.scm +++ b/gnu/packages/magic-wormhole.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019 Leo Famulari <leo@famulari.name> ;;; Copyright © 2024 normally_js <normally_js@posteo.net> ;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2024 TakeV <takev@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:use-module (guix gexp) #:use-module (guix packages) #:use-module (gnu packages check) + #:use-module (gnu packages python-compression) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz)) @@ -101,14 +103,14 @@ together, allowing them to pretend they have a direct connection.") (define-public magic-wormhole (package (name "magic-wormhole") - (version "0.13.0") + (version "0.14.0") (source (origin (method url-fetch) (uri (pypi-uri "magic-wormhole" version)) (sha256 (base32 - "05hm5pnrxli69a28h3pbgx6s6pwy8279l506kha7y3i7hs1dcfxc")))) + "105hsv7ck83bs29929zpb29aygr69q00mxpgq9xw7xxzi2gj6v80")))) (build-system pyproject-build-system) (arguments (list @@ -130,12 +132,14 @@ together, allowing them to pretend they have a direct connection.") python-click python-hkdf python-humanize + python-iterable-io python-noiseprotocol python-pynacl python-spake2 python-tqdm python-twisted - python-txtorcon)) + python-txtorcon + python-zipstream-ng)) (home-page "https://github.com/magic-wormhole/magic-wormhole") (synopsis "Securely transfer data between computers") (description diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 479591889f..03760f3f3e 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -402,6 +402,7 @@ triangulations.") (add-after 'unpack 'find-libraries (lambda* (#:key inputs #:allow-other-keys) (setenv "CVXOPT_BLAS_LIB" "openblas") + (setenv "CVXOPT_LAPACK_LIB" "openblas") (setenv "CVXOPT_BUILD_FFTW" "1") (setenv "CVXOPT_BUILD_GLPK" "1") (setenv "CVXOPT_BUILD_GSL" "1") @@ -410,7 +411,6 @@ triangulations.") (list fftw glpk gsl - lapack openblas suitesparse)) (home-page "https://www.cvxopt.org") @@ -1071,7 +1071,7 @@ halfspaces) or by their double description with both representations.") (native-inputs (list pkg-config)) (inputs - (list eigen lapack gfortran)) + (list eigen openblas gfortran)) (synopsis "Fortran subroutines for solving eigenvalue problems") (description "ARPACK-NG is a collection of Fortran77 subroutines designed to solve @@ -1198,7 +1198,7 @@ provide LAPACK for someone who does not have access to a Fortran compiler.") (inputs `(("mpi" ,openmpi) ("fortran" ,gfortran) - ("lapack" ,lapack))) ;for testing only + ("lapack" ,openblas))) ;for testing only (arguments `(#:configure-flags `("-DBUILD_SHARED_LIBS:BOOL=YES") #:phases (modify-phases %standard-phases @@ -1434,7 +1434,7 @@ Extern C linkage permits the package routines to be called from C++.") "153kj4wx386609g21hw3cv5yxps62qqrc64zwb9ryd2xad1w1a4y")))) (build-system gnu-build-system) (native-inputs (list gfortran pkg-config)) - (inputs (list cbc ipopt lapack)) + (inputs (list cbc ipopt openblas)) (home-page "https://coin-or.github.io/Bonmin/") (synopsis "Basic Open-source Nonlinear Mixed INteger programming") (description "Bonmin is a code for solving general MINLP (Mixed Integer @@ -2152,7 +2152,7 @@ the resulting text.") ;; SOURCE_DATE_EPOCH (lambda _ (setenv "FORCE_SOURCE_DATE" "1")))))) - (inputs (list lapack fftw)) + (inputs (list openblas fftw)) ;; FIXME: Even though the fonts are available dvips complains: ;; "Font cmmi10 not found; characters will be left blank." (native-inputs @@ -2400,7 +2400,8 @@ online as well as original implementations of various other algorithms.") "08gznhwhqv1x4baksz350ih8q16r5rd0k8vals6078m3h94khr4b")))) (build-system gnu-build-system) (arguments - '(#:phases (modify-phases %standard-phases + '(#:configure-flags (list "--with-lapack=-lopenblas") + #:phases (modify-phases %standard-phases (add-after 'install 'add--L-flags-in-ipopt.pc (lambda* (#:key inputs outputs #:allow-other-keys) ;; The '.pc' file lists '-llapack -lblas' in "Libs"; @@ -2413,14 +2414,14 @@ online as well as original implementations of various other algorithms.") (("Libs: (.*)-llapack -lblas(.*)$" _ before after) (string-append "Libs: " before " " after "\n" "Libs.private: " before - "-L" lapack "/lib -llapack -lblas " + "-L" openblas "/lib -lopenblas" after "\n"))) #t)))))) (native-inputs (list gfortran pkg-config)) (inputs ;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL. - (list lapack)) ;for both libblas and liblapack + (list openblas)) ;for both libblas and liblapack (home-page "https://www.coin-or.org") (synopsis "Large-scale nonlinear optimizer") (description @@ -2763,9 +2764,9 @@ fixed point (16.16) format.") (lambda* (#:key tests? #:allow-other-keys) (substitute* "test/Makefile" (("LIBBLAS .*") - "LIBBLAS = -lblas\n") + "LIBBLAS = -lopenblas\n") (("LIBLAPACK .*") - "LIBLAPACK = -llapack\n")) + "LIBLAPACK = -lopenblas\n")) (when tests? (with-directory-excursion "test" (mkdir "obj") @@ -2784,7 +2785,7 @@ fixed point (16.16) format.") "/include/FLAME.h") (string-append static "/include")))))))) (inputs (list gfortran)) - (native-inputs (list lapack perl python-wrapper)) + (native-inputs (list openblas perl python-wrapper)) (synopsis "High-performance library for @acronym{DLA, dense linear algebra} computations") (description "@code{libflame} is a portable library for dense matrix computations, providing much of the functionality present in LAPACK, developed @@ -2858,7 +2859,7 @@ with constraints.") (native-inputs (list pkg-config)) ;; These inputs need to be propagated to satisfy dependent packages. (propagated-inputs (list eigen gflags glog)) - (inputs (list openblas lapack suitesparse)) + (inputs (list openblas suitesparse)) (synopsis "C++ library for solving large optimization problems") (description "Ceres Solver is a C++ library for modeling and solving large, @@ -2925,7 +2926,7 @@ can solve two kinds of problems: (define-public octave-cli (package (name "octave-cli") - (version "8.4.0") + (version "9.1.0") (source (origin (method url-fetch) @@ -2933,7 +2934,7 @@ can solve two kinds of problems: version ".tar.xz")) (sha256 (base32 - "1a58zyrl1lx6b6wr2jbf6w806vjxr3jzbh6n85iinag47qxdg6kg")))) + "0jqk3amfkqzn1c5rzb9gm3v7r2y5xcgx6cgi4r5w8mpa9814nrgd")))) (build-system gnu-build-system) (inputs (list alsa-lib @@ -2956,10 +2957,10 @@ can solve two kinds of problems: libjpeg-turbo hdf5 - lapack libsndfile libxft mesa + openblas pcre portaudio qhull @@ -3263,11 +3264,11 @@ compilers.") glu gmp hdf5 - lapack libx11 libxext mesa metis + openblas opencascade-occt)) (inputs (list fontconfig @@ -4444,7 +4445,6 @@ void mc64ad_dist (int *a, int *b, int *c, int *d, int *e, double *f, int *g, (inputs `(("gfortran" ,gfortran) ("blas" ,openblas) - ("lapack" ,lapack) ("combblas" ,combinatorial-blas))) (propagated-inputs `(("mpi" ,openmpi) ;headers include MPI heades @@ -4455,7 +4455,7 @@ void mc64ad_dist (int *a, int *b, int *c, int *d, int *e, double *f, int *g, #:configure-flags (list "-DBUILD_SHARED_LIBS:BOOL=YES" "-DTPL_ENABLE_COMBBLASLIB=YES" "-DTPL_BLAS_LIBRARIES=-lopenblas" - "-DTPL_LAPACK_LIBRARIES=-llapack" + "-DTPL_LAPACK_LIBRARIES=-lopenblas" (string-append "-DTPL_PARMETIS_LIBRARIES=" (string-join '("ptscotchparmetis" "ptscotch" "ptscotcherr" @@ -4731,15 +4731,14 @@ schemes.") (inputs `(("fortran" ,gfortran) ("blas" ,openblas) - ("lapack" ,lapack) ("zlib" ,zlib))) (arguments `(#:configure-flags `(,(string-append "BLAS_LIBS=-L" (assoc-ref %build-inputs "blas") " -lopenblas") ,(string-append "LAPACK_LIBS=-L" - (assoc-ref %build-inputs "lapack") - " -llapack")) + (assoc-ref %build-inputs "blas") + " -lopenblas")) #:phases (modify-phases %standard-phases (add-before 'check 'mpi-setup ,%openmpi-setup)))) @@ -4989,7 +4988,7 @@ full text searching.") (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no test target (inputs - (list openblas lapack arpack-ng)) + (list openblas arpack-ng)) (home-page "https://arma.sourceforge.net/") (synopsis "C++ linear algebra library") (description @@ -6791,7 +6790,6 @@ A unique design feature of Trilinos is its focus on packages.") (list arpack-ng openblas gfortran - lapack muparser zlib)) (propagated-inputs @@ -7108,7 +7106,7 @@ set.") texlive-xcolor texlive-xypic)))) (inputs - (list openblas lapack)) + (list openblas)) (arguments `(#:modules ((srfi srfi-1) ,@%gnu-build-system-modules) @@ -7809,7 +7807,6 @@ symmetric matrices.") (inputs (list `(,gfortran "lib") gmp - lapack metis mpc mpfr @@ -8047,7 +8044,7 @@ easily be incorporated into existing simulation codes.") "0nx4sqhmi126m14myzm7syv2053harav9snl0a247wnkcgs5rxrv")))) (inputs (modify-inputs (package-inputs sundials) - (prepend gfortran lapack))) + (prepend gfortran openblas))) (arguments '(#:configure-flags `("-DCMAKE_C_FLAGS=-O2 -g -fcommon" "-DSUNDIALS_INDEX_SIZE=32" @@ -9792,7 +9789,6 @@ computation is supported via MPI.") fftw gettext-minimal hdf5-1.10 - lapack libarchive libx11 libxml2 diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 03b7368ae0..24a9810c43 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -88,6 +88,7 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gperf) #:use-module (gnu packages graphviz) #:use-module (gnu packages gstreamer) diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index e16c6bb964..3916d4c406 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -410,6 +410,7 @@ interface for the Music Player Daemon.") gsettings-desktop-schemas gobject-introspection adwaita-icon-theme + gvfs python-pygobject)) (synopsis "Elegant client for the Music Player Daemon") (description "Sonata is an elegant graphical client for the Music Player diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index 85afc8cefc..f1e4414bac 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2018, 2019 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2014-2023 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014-2024 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2017 Dave Love <fx@gnu.org> @@ -78,7 +78,9 @@ "doc" ;400+ section 3 man pages "debug")) (inputs - (append (list libx11 cairo ncurses expat) + (append (if (%current-target-system) + '() ;fewer dependencies when cross-compiling + (list libx11 cairo ncurses expat)) (if (target-arm32?) '() (list numactl)))) (propagated-inputs ;; hwloc.pc lists it in 'Requires.private'. diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 99de032825..a4feada47d 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2019 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2015-2023 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015-2024 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2016 Al McElrath <hello@yrns.org> ;;; Copyright © 2016, 2017, 2019, 2021-2023 Efraim Flashner <efraim@flashner.co.il> @@ -135,6 +135,7 @@ #:use-module (gnu packages gnunet) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gpodder) #:use-module (gnu packages graphics) #:use-module (gnu packages graphviz) @@ -208,7 +209,7 @@ (define-public alsa-scarlett-gui (package (name "alsa-scarlett-gui") - (version "0.3.3") + (version "0.4.0") (source (origin (method git-fetch) (uri (git-reference @@ -217,7 +218,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "1nd764vd7qfy2x8dqapiyh5yrxjimm8b4himhm1qkgpf5hvh734l")))) + "1397z3c232n3zpqmpc77lbwv8z5szsbagawl3l7hiizn152hkgpv")))) (build-system gnu-build-system) (arguments (list @@ -243,7 +244,7 @@ "/share/glib-2.0/schemas")))))) (delete 'configure)))) (inputs - (list alsa-lib glib gtk)) + (list alsa-lib glib gtk openssl)) (native-inputs (list `(,glib "bin") pkg-config)) (home-page "https://github.com/geoffreybennett/alsa-scarlett-gui") @@ -2186,7 +2187,7 @@ your own lessons.") (define-public powertabeditor (package (name "powertabeditor") - (version "2.0.0-alpha14") + (version "2.0.0-alpha19") (source (origin (method git-fetch) (uri (git-reference @@ -2195,30 +2196,29 @@ your own lessons.") (file-name (git-file-name name version)) (sha256 (base32 - "1wsvni2aa9h2bpndlic7ckch4n600ahwm56n521y5vxivwjx3jmj")))) + "1fbrfw1ky57nms47pcfdrrwpa2jmgc8vgc68sz96wkvs49zzm5d1")))) (build-system cmake-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check (lambda _ (invoke "bin/pte_tests"))) - (add-after 'unpack 'fix-pugixml-detection - (lambda _ - (substitute* "cmake/third_party/pugixml.cmake" - (("add_library") "#add_library")) - #t))))) + (list + #:phases + '(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? (invoke "bin/pte_tests"))))))) (inputs - `(("alsa-lib" ,alsa-lib) - ("boost" ,boost) - ("minizip" ,minizip) - ("pugixml" ,pugixml) - ("qtbase" ,qtbase-5) - ("rapidjson" ,rapidjson) - ("rtmidi" ,rtmidi) - ("timidity" ,timidity++) - ("zlib" ,zlib))) + (list alsa-lib + boost + minizip + nlohmann-json + pugixml + qtbase-5 + qttools-5 ;for Qt5LinguistTools + rtmidi + timidity++ + zlib)) (native-inputs (list doctest pkg-config)) - (home-page "https://github.com/powertab/powertabedito") + (home-page "https://github.com/powertab/powertabeditor") (synopsis "Guitar tablature editor") (description "Power Tab Editor 2.0 is the successor to the famous original Power Tab @@ -3098,6 +3098,39 @@ using a system-independent interface.") "This package provides Python bindings to the PortMidi library.") (license license:expat)))) +(define-public python-pysmf + (let ((commit "8a98a557470301f5a471d07d37f334a5b8892602") + (revision "1")) + (package + (name "python-pysmf") + (version (git-version "0.1.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mididings/pysmf") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ic24k8jr7iwcrj7xaw5b9i22al05rxfpjw39bbjsg7v09kvygcv")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'fix-build-system + (lambda _ + (substitute* "setup.py" + (("from subprocess") "import sys; from subprocess"))))))) + (inputs (list libsmf glib)) + (native-inputs (list pkg-config python-cython python-pytest)) + (home-page "https://github.com/mididings/pysmf") + (synopsis "Read and write Standard MIDI files") + (description + "pysmf is a Python extension module for reading and writing Standard +MIDI files, based on libsmf.") + (license license:bsd-2)))) + (define-public frescobaldi (package (name "frescobaldi") @@ -4395,6 +4428,69 @@ standard MIDI file with the csvmidi program.") (home-page "https://www.fourmilab.ch/webtools/midicsv/") (license license:public-domain))) +(define-public mididings + (let ((commit "d98265be8afe7da20a5c7cfd0515f0d5fae5c53a") + (revision "1")) + (package + (name "mididings") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mididings/mididings") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a8i4yac5jjkq0vh73nwkv0j7vnvfwbzzagam4xdl1gpnc26n5xi")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'build-manpages + (lambda _ + (with-directory-excursion "doc/man" + (for-each (lambda (doc) + (system (format #false + "scdoc < ~a.scd > ~a.1" doc doc))) + '(livedings mididings send_midi)))))))) + (inputs + (list alsa-lib + boost + jack-2 + `(,python "tk") + python-dbus + python-decorator + python-pyinotify + python-pyliblo + python-pysmf)) + (native-inputs (list python-pytest pkg-config scdoc)) + (home-page "https://github.com/mididings/mididings") + (synopsis "MIDI router and processor") + (description + "mididings is a MIDI router/processor based on Python, supporting ALSA +and JACK MIDI. Features include: + +@itemize +@item MIDI routing and filtering; filter events depending on their event type, + channel, note number, velocity, etc., and freely route them between an + arbitrary number of input and output ports. +@item Modifying and converting MIDI events; transpose notes, apply velocity + curves, change controller values and ranges, or convert events to any other + MIDI event type. mididings also includes more complex functions like a + diatonic harmonizer, floating split points, latched notes, and more. +@item Seamless switching between patches; set up different \"scenes\", each + with its own MIDI routing and processing, and switch between them at any time, + even while playing. Switching scenes does not affect notes already held, and + does not result in dropouts or stuck notes! +@item MIDI event monitoring, running external commands; print MIDI event data + to the console to help debugging your patches and configuring your MIDI + controllers. In addition to its MIDI output, mididings can also execute shell + commands and send OSC or DBUS messages. +@end itemize") + (license license:gpl2+)))) + (define-public gx-guvnor-lv2 (package (name "gx-guvnor-lv2") @@ -5727,7 +5823,7 @@ at @code{musicbrainz.org}.") (define-public clyrics (package (name "clyrics") - (version "0.13") + (version "0.16") (source (origin (method git-fetch) @@ -5736,7 +5832,7 @@ at @code{musicbrainz.org}.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0py31linlbphl18wxj5v00gggvxp9djg466mjncf5wpa147hs8r3")))) + (base32 "1izlqnzr1a504djhzk1a5k8dwwrkd5iyjfsfm5x48sb3vjlr1fr3")))) (build-system trivial-build-system) (inputs (list bash ; for the wrapped program @@ -6723,7 +6819,7 @@ and as an LV2 plugin.") ;; distros to make necessary changes to integrate the software into the ;; distribution. (name "zrythm") - (version "1.0.0-beta.4.9.1") + (version "1.0.0-beta.4.12.5") (source (origin (method url-fetch) @@ -6731,49 +6827,46 @@ and as an LV2 plugin.") version ".tar.xz")) (sha256 (base32 - "0skdb4bpw4v5175yw9wijrc6j36mxjq8i7p8nn9650lipxg6bshd")))) + "1kixf8rlim5qvkhcm65rf35mxkxv3hij039jc9rvh710vl2xxm0g")))) (build-system meson-build-system) (arguments - (list #:glib-or-gtk? #t - #:configure-flags - #~(list "-Dtests=true" - "-Dmanpage=false" ;fish-completions breaks this - "-Ddseg_font=false" - "-Dextra_optimizations=false" ;machine-specific - "-Dgraphviz=enabled" ;for exporting routing graphs - "-Dguile=enabled" ;for Guile scripting - "-Djack=enabled" ;for JACK audio/MIDI backend - "-Drtaudio=enabled" ;for RtAudio backend (ALSA) - "-Drtmidi=enabled" ;for RtMidi backend (ALSA sequencer) - "-Dsdl=enabled") ;for SDL audio backend (which uses ALSA) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-tests - (lambda _ - ;; io_mkdir must be called with a GError value, not plain - ;; NULL, or else the assertion in io_mkdir segfaults. - (substitute* "tests/helpers/zrythm.h" - (("success = io_mkdir \\(tmp_log_dir, NULL\\);" m) - (string-append "err = NULL; -success = io_mkdir (tmp_log_dir, &err);"))) - - ;; zrythm: fails because curl wants to access the internet. - ;; project: unknown failure XXX - ;; The other tests fail with this error: - ;; error: attempt to map invalid URI `' - ;; This means that lilv is given an empty LV2 plugin URI. - ;; This is probably because we don't provide all LV2 - ;; plugins that are needed for running the tests. - (substitute* "tests/meson.build" - (("foreach name, info : tests") - "\ + (list + #:glib-or-gtk? #t + #:configure-flags + '(list "-Dtests=true" + "-Dmanpage=false" ;fish-completions breaks this + "-Ddseg_font=false" + "-Dextra_optimizations=false" ;machine-specific + "-Dgraphviz=enabled" ;for exporting routing graphs + "-Dguile=enabled" ;for Guile scripting + "-Djack=enabled" ;for JACK audio/MIDI backend + "-Drtaudio=enabled" ;for RtAudio backend (ALSA) + "-Drtmidi=enabled" ;for RtMidi backend (ALSA sequencer) + "-Dsdl=enabled") ;for SDL audio backend (which uses ALSA) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda _ + ;; zrythm: fails because curl wants to access the internet. + ;; project: unknown failure XXX + ;; The other tests fail with this error: + ;; error: attempt to map invalid URI `' + ;; This means that lilv is given an empty LV2 plugin URI. + ;; This is probably because we don't provide all LV2 + ;; plugins that are needed for running the tests. + (substitute* "tests/meson.build" + (("foreach name, info : tests") + "\ disabled_tests = { - 'zrythm': 0, - 'project': 0, - 'audio/midi_track': 0, - 'integration/recording': 0, 'actions/mixer_selections_action': 0, - 'actions/tracklist_selections': 0 + 'actions/tracklist_selections': 0, + 'dsp/audio_region': 0, + 'dsp/audio_track': 0, + 'dsp/midi_track': 0, + 'dsp/pool': 0, + 'integration/recording': 0, + 'project': 0, + 'zrythm': 0 } enabled_tests = {} foreach name, info : tests @@ -6781,17 +6874,21 @@ success = io_mkdir (tmp_log_dir, &err);"))) enabled_tests += {name: info} endif endforeach - foreach name, info : enabled_tests")))) - (add-before 'build 'disable-guile-auto-compilation - (lambda _ - (setenv "GUILE_AUTO_COMPILE" "0"))) - (add-after 'install 'wrap-program - (lambda _ - (wrap-program (string-append #$output "/bin/zrythm") - ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Zrythm to load - ;; its own SVG icons in pure environments. - `("GDK_PIXBUF_MODULE_FILE" = - (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))) + foreach name, info : enabled_tests")) + ;; Requires internet access + (substitute* "data/meson.build" + (("if appstream.*\\(\\)") + "if false")))) + (add-before 'build 'disable-guile-auto-compilation + (lambda _ + (setenv "GUILE_AUTO_COMPILE" "0"))) + (add-after 'install 'wrap-program + (lambda _ + (wrap-program (string-append #$output "/bin/zrythm") + ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Zrythm to load + ;; its own SVG icons in pure environments. + `("GDK_PIXBUF_MODULE_FILE" = + (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))) (inputs (list alsa-lib boost @@ -6810,7 +6907,6 @@ success = io_mkdir (tmp_log_dir, &err);"))) jack-2 json-glib libadwaita - libaudec (module-ref (resolve-interface '(gnu packages debug)) 'libbacktrace) libcyaml @@ -6820,8 +6916,10 @@ success = io_mkdir (tmp_log_dir, &err);"))) libsndfile libyaml lilv + lsp-dsp-lib lv2 pango + pcre pipewire pulseaudio reproc @@ -6829,6 +6927,7 @@ success = io_mkdir (tmp_log_dir, &err);"))) rtmidi rubberband sdl2 + soxr vamp xdg-utils xxhash diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 8501545b0f..0f35bca9f3 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -3757,7 +3757,7 @@ communication over HTTP.") (define-public restinio (package (name "restinio") - (version "0.7.1") + (version "0.7.2") (source (origin (method git-fetch) (uri (git-reference @@ -3766,7 +3766,7 @@ communication over HTTP.") (file-name (git-file-name name version)) (sha256 (base32 - "06p9gcnzgynsgfxxa1lk58pq5755px7sn00x2xh21qjnspwld1sy")))) + "03ajv1d034z6sjf2xapy8zq1mq2xkz5dqvn51vz2p26ws5axbzrn")))) (build-system cmake-build-system) (arguments (list @@ -3776,24 +3776,13 @@ communication over HTTP.") "-DRESTINIO_DEP_LLHTTP=system" "-DRESTINIO_DEP_FMT=system" "-DRESTINIO_DEP_EXPECTED_LITE=system" - "-DRESTINIO_DEP_CATCH2=system" - ;; No support to use a system provided so_5 - ;; (see: - ;; https://github.com/Stiffstream/restinio/issues/207). - "-DRESTINIO_WITH_SOBJECTIZER=OFF") + "-DRESTINIO_DEP_CATCH2=find" + "-DRESTINIO_DEP_SOBJECTIZER=find") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'change-directory (lambda _ - (chdir "dev"))) - (add-after 'change-directory 'use-system-catch2 - ;; It's not currently possible to select a system-provided catch2, - ;; so patch the build system (see: - ;; https://github.com/Stiffstream/restinio/issues/208). - (lambda _ - (substitute* "CMakeLists.txt" - (("add_subdirectory\\(catch2\\)") - "find_package(Catch2 REQUIRED)"))))))) + (chdir "dev")))))) (native-inputs (list catch2-3 expected-lite @@ -3986,8 +3975,8 @@ A very simple IM client working over the DHT. (define-public dhtnet ;; There is no tag nor release; use the latest available commit. - (let ((revision "1") - (commit "41848a2c770d7eb0940d731014b81643f85e0d07")) + (let ((revision "2") + (commit "024c46fb1f14276d4adf15764ed97b733890826e")) (package (name "dhtnet") ;; The base version is taken from the CMakeLists.txt file. @@ -4000,7 +3989,7 @@ A very simple IM client working over the DHT. (file-name (git-file-name name version)) (sha256 (base32 - "18v2pjrxfrd26p2z27s90marx7b593nz1xwi47lnp2ja7lm1pj4m")))) + "191gmfdg22hkmxvzh5i19lr512q4bhgajhlg9mxxgb7jq0842mc6")))) (outputs (list "out" "debug")) (build-system cmake-build-system) (arguments @@ -4016,11 +4005,10 @@ A very simple IM client working over the DHT. ;; The connectionManager test currently segfaults (see: ;; https://git.jami.net/savoirfairelinux/dhtnet/-/issues/18). ((".*tests_connectionManager.*") "") - ;; The fileutils test fail, asserting an unexpected returned - ;; value for the removeAll call when the directory to be - ;; removed is missing (see: - ;; https://git.jami.net/savoirfairelinux/dhtnet/-/issues/17). - ((".*tests_fileutils.*") ""))))))) + ;; The ICE tests fail inside the containerized build + ;; environment, perhaps relying on a name resolver (see: + ;; https://git.jami.net/savoirfairelinux/dhtnet/-/issues/25). + ((".*tests_ice.*") ""))))))) (native-inputs (list cppunit pkg-config)) ;; This library depends on the Jami fork of pjproject that adds ICE ;; support. @@ -4551,7 +4539,7 @@ network.") (define-public ngtcp2 (package (name "ngtcp2") - (version "1.3.0") + (version "1.4.0") (source (origin (method url-fetch) @@ -4559,7 +4547,7 @@ network.") "releases/download/v" version "/" "ngtcp2-" version ".tar.xz")) (sha256 - (base32 "16qkik9185ygkr351a7q59l1rv6dzw51j4f7vkzfvzh385kqdqy3")))) + (base32 "0jnay7m4zkg6v2zcidswv9xbyjgsvjbhwf8ykqjcw1jwkwxl7ldm")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index b70e925d51..7fad276b4e 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -8342,9 +8342,14 @@ library FFTW.") (properties '((tunable? . #t))) (build-system dune-build-system) (arguments - `(#:tests? #f)) ; No test target. + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'find-openblas + (lambda* _ + (setenv "LACAML_LIBS" "-lopenblas")))) + #:tests? #f)) ; No test target. (native-inputs - (list openblas lapack ocaml-base ocaml-stdio)) + (list openblas ocaml-base ocaml-stdio)) (home-page "https://mmottl.github.io/lacaml/") (synopsis "OCaml-bindings to BLAS and LAPACK") diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index a0ede07d54..289ee7e8d6 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013-2023 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2024 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2017, 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com> ;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com> @@ -649,6 +649,18 @@ the Nix package manager.") (modify-inputs (package-propagated-inputs guix) (delete "guile-ssh")))))) +(define-public (guix-for-channels channels) + "Return a package corresponding to CHANNELS." + (package + (inherit guix) + (source (find guix-channel? channels)) + (build-system channel-build-system) + (arguments + `(#:channels ,(remove guix-channel? channels))) + (inputs '()) + (native-inputs '()) + (propagated-inputs '()))) + (define-public current-guix-package ;; This parameter allows callers to override the package that 'current-guix' ;; returns. This is useful when 'current-guix' cannot compute it by itself, @@ -1781,8 +1793,8 @@ in an isolated environment, in separate namespaces.") (license license:gpl3+))) (define-public nar-herder - (let ((commit "50de312c3a818afd6a93adc17d16ae4ff97ba436") - (revision "25")) + (let ((commit "6ceb0a3b3000ce85a9263833b2398cb44a2871eb") + (revision "26")) (package (name "nar-herder") (version (git-version "0" revision commit)) @@ -1793,7 +1805,7 @@ in an isolated environment, in separate namespaces.") (commit commit))) (sha256 (base32 - "0nrgh75509ys9cb0p9w5gbsakyz4pcbx6mbfhq47pcjf6h69phb2")) + "15vxpm1i3pyv47yp0xgsm3pn4gq0kcqfd4a02q62vyjmbqf0hrpi")) (file-name (string-append name "-" version "-checkout")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index b2a5648842..ae9065d75d 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -65,14 +65,14 @@ (define-public parallel (package (name "parallel") - (version "20240222") + (version "20240322") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/parallel/parallel-" version ".tar.bz2")) (sha256 - (base32 "0ml5xicx4lwg2irhl38pdysmq1rmgxcn3m7pjci653r3grm9p87b")) + (base32 "15baksvj028im496wivr55mz9zqh74njrrd7djxggarx42d045qb")) (snippet '(begin (use-modules (guix build utils)) diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 1dbf138ad4..eb64a7f306 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -94,6 +94,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-crypto) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages kerberos) diff --git a/gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch b/gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch new file mode 100644 index 0000000000..f2da4f478f --- /dev/null +++ b/gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch @@ -0,0 +1,1451 @@ +diff --git a/configure b/configure +index 3cd3bdfb44..0756ad95ea 100755 +--- a/configure ++++ b/configure +@@ -297,6 +297,7 @@ External library support: + --enable-libxcb-shm enable X11 grabbing shm communication [autodetect] + --enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect] + --enable-libxcb-shape enable X11 grabbing shape rendering [autodetect] ++ --enable-libpipewire enable screen grabbing using pipewire [autodetect] + --enable-libxvid enable Xvid encoding via xvidcore, + native MPEG-4/Xvid encoder exists [no] + --enable-libxml2 enable XML parsing using the C library libxml2, needed +@@ -1747,6 +1748,8 @@ EXTERNAL_AUTODETECT_LIBRARY_LIST=" + libxcb_shm + libxcb_shape + libxcb_xfixes ++ libpipewire ++ libgio_unix + lzma + mediafoundation + metal +@@ -3709,6 +3712,7 @@ pad_opencl_filter_deps="opencl" + pan_filter_deps="swresample" + perspective_filter_deps="gpl" + phase_filter_deps="gpl" ++pipewiregrab_filter_deps="libpipewire libgio_unix pthreads" + pp7_filter_deps="gpl" + pp_filter_deps="gpl postproc" + prewitt_opencl_filter_deps="opencl" +@@ -6928,6 +6932,18 @@ if enabled libxcb; then + enabled libxcb_xfixes && check_pkg_config libxcb_xfixes xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image + fi + ++# Starting with version 0.3.52, PipeWire's spa library uses the __LOCALE_C_ONLY macro to determine ++# whether the locale_t type (introduced in POSIX.1-2008) and some related functions are available (see ++# https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2390 for more information). ++# Unfortunately, this macro is specific to uclibc, which can cause build issues on systems that use a ++# different implementation of libc if POSIX 2008 support isn't enabled (which is the case for FFmpeg currently). ++# As a workaround for this problem, we add a compilation flag to ensure that __LOCALE_C_ONLY is always defined. ++add_cppflags -D__LOCALE_C_ONLY ++enabled libpipewire && check_pkg_config libpipewire "libpipewire-0.3 >= 0.3.40" pipewire/pipewire.h pw_init ++if enabled libpipewire; then ++ enabled libgio_unix && check_pkg_config libgio_unix gio-unix-2.0 gio/gio.h g_main_loop_new ++fi ++ + check_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs" + + # d3d11va requires linking directly to dxgi and d3d11 if not building for +diff --git a/libavfilter/Makefile b/libavfilter/Makefile +index b3d3d981dd..abe7c3cd0d 100644 +--- a/libavfilter/Makefile ++++ b/libavfilter/Makefile +@@ -583,6 +583,7 @@ OBJS-$(CONFIG_NULLSRC_FILTER) += vsrc_testsrc.o + OBJS-$(CONFIG_OPENCLSRC_FILTER) += vf_program_opencl.o opencl.o + OBJS-$(CONFIG_PAL75BARS_FILTER) += vsrc_testsrc.o + OBJS-$(CONFIG_PAL100BARS_FILTER) += vsrc_testsrc.o ++OBJS-$(CONFIG_PIPEWIREGRAB_FILTER) += vsrc_pipewiregrab.o + OBJS-$(CONFIG_RGBTESTSRC_FILTER) += vsrc_testsrc.o + OBJS-$(CONFIG_SIERPINSKI_FILTER) += vsrc_sierpinski.o + OBJS-$(CONFIG_SMPTEBARS_FILTER) += vsrc_testsrc.o +diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c +index d7db46c2af..87204fec71 100644 +--- a/libavfilter/allfilters.c ++++ b/libavfilter/allfilters.c +@@ -548,6 +548,7 @@ extern const AVFilter ff_vsrc_nullsrc; + extern const AVFilter ff_vsrc_openclsrc; + extern const AVFilter ff_vsrc_pal75bars; + extern const AVFilter ff_vsrc_pal100bars; ++extern const AVFilter ff_vsrc_pipewiregrab; + extern const AVFilter ff_vsrc_rgbtestsrc; + extern const AVFilter ff_vsrc_sierpinski; + extern const AVFilter ff_vsrc_smptebars; +diff --git a/libavfilter/vsrc_pipewiregrab.c b/libavfilter/vsrc_pipewiregrab.c +new file mode 100644 +index 0000000000..ff9c3468ab +--- /dev/null ++++ b/libavfilter/vsrc_pipewiregrab.c +@@ -0,0 +1,1373 @@ ++/* ++ * PipeWire input grabber (ScreenCast) ++ * Copyright (C) 2024 Savoir-faire Linux, Inc. ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg 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 ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++/** ++ * @file ++ * PipeWireGrab video source ++ * @author Firas Ashkar <firas.ashkar at savoirfairelinux.com> ++ * @author Abhishek Ojha <abhishek.ojha at savoirfairelinux.com> ++ * @author François-Simon Fauteux-Chapleau <francois-simon.fauteux-chapleau at savoirfairelinux.com> ++ */ ++ ++#include "config.h" ++ ++#include <fcntl.h> ++#include <linux/dma-buf.h> ++#include <math.h> ++#include <pthread.h> ++#include <stdatomic.h> ++#include <stdlib.h> ++#include <string.h> ++#include <sys/mman.h> ++#include <sys/queue.h> ++ ++#include "libavutil/internal.h" ++#include "libavutil/mathematics.h" ++#include "libavutil/opt.h" ++#include "libavutil/parseutils.h" ++#include "libavutil/time.h" ++#include "libavutil/avstring.h" ++#include "libavformat/avformat.h" ++#include "libavformat/internal.h" ++#include "libavutil/avassert.h" ++#include "avfilter.h" ++#include "internal.h" ++ ++#include <pipewire/pipewire.h> ++#include <pipewire/thread-loop.h> ++#include <spa/debug/types.h> ++#include <spa/param/video/format-utils.h> ++#include <spa/param/video/raw.h> ++#include <spa/param/video/type-info.h> ++ ++#include <gio/gio.h> ++#include <gio/gunixfdlist.h> ++ ++#ifndef __USE_XOPEN2K8 ++#define F_DUPFD_CLOEXEC \ ++ 1030 /* Duplicate file descriptor with close-on-exit set. */ ++#endif ++ ++#define REQUEST_PATH "/org/freedesktop/portal/desktop/request/%s/%s" ++#define BYTES_PER_PIXEL 4 /* currently all formats assume 4 bytes per pixel */ ++#define MAX_SPA_PARAM 4 /* max number of params for spa pod */ ++ ++#define CURSOR_META_SIZE(width, height) \ ++ (sizeof(struct spa_meta_cursor) + sizeof(struct spa_meta_bitmap) + \ ++ width * height * 4) ++ ++/** ++ * PipeWire capture types ++ */ ++typedef enum { ++ DESKTOP_CAPTURE = 1, ++ WINDOW_CAPTURE = 2, ++} pw_capture_type; ++ ++/** ++ * XDG Desktop Portal supported cursor modes ++ */ ++enum PortalCursorMode { ++ PORTAL_CURSOR_MODE_HIDDEN = 1 << 0, ++ PORTAL_CURSOR_MODE_EMBEDDED = 1 << 1, ++}; ++ ++typedef struct PipewireGrabContext { ++ const AVClass *class; ++ ++ pthread_cond_t pipewire_initialization_cond_var; ++ pthread_mutex_t pipewire_initialization_mutex; ++ atomic_int pipewire_initialization_over; ++ ++ int pw_init_called; ++ ++ pthread_mutex_t current_frame_mutex; ++ AVFrame *current_frame; ++ ++ GDBusConnection *connection; ++ GDBusProxy *proxy; ++ GCancellable *cancellable; ++ ++ char *sender_name; ++ char *session_handle; ++ ++ uint64_t pipewire_external_node; // only needed because FFmpeg doesn't have a uint32 AVOption type ++ uint32_t pipewire_node; ++ int pipewire_fd; ++ ++ uint32_t available_cursor_modes; ++ ++ GMainLoop *glib_main_loop; ++ struct pw_thread_loop *thread_loop; ++ struct pw_context *context; ++ ++ struct pw_core *core; ++ struct spa_hook core_listener; ++ ++ struct pw_stream *stream; ++ struct spa_hook stream_listener; ++ struct spa_video_info format; ++ ++ pw_capture_type capture_type; ++ ++ int draw_mouse; ++ ++ uint32_t width, height; ++ ++ size_t frame_size; ++ uint8_t Bpp; ++ enum AVPixelFormat av_pxl_format; ++ ++ int64_t time_frame; ++ int64_t frame_duration; ++ ++ AVRational framerate; ++ ++ int portal_error; ++ int pipewire_error; ++} PipewireGrabContext; ++ ++/** ++ * DBus method/event marshalling structure ++ */ ++struct DbusCallData { ++ AVFilterContext *ctx; ++ char *request_path; ++ guint signal_id; ++ gulong cancelled_id; ++}; ++ ++ ++#define OFFSET(x) offsetof(PipewireGrabContext, x) ++#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM ++static const AVOption pipewiregrab_options[] = { ++ { "framerate", "set video frame rate", OFFSET(framerate), AV_OPT_TYPE_VIDEO_RATE, { .str = "ntsc" }, 0, INT_MAX, FLAGS }, ++ { "draw_mouse", "draw the mouse pointer", OFFSET(draw_mouse), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, FLAGS }, ++ { "capture_type", "set the capture type (1 for screen, 2 for window)", OFFSET(capture_type), AV_OPT_TYPE_INT, { .i64 = 1 }, 1, 2, FLAGS }, ++ { "fd", "set file descriptor to be used by PipeWire", OFFSET(pipewire_fd), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, FLAGS }, ++ { "node", "set PipeWire node", OFFSET(pipewire_external_node), AV_OPT_TYPE_UINT64, { .i64 = 0 }, 0, 0xffffffff, FLAGS }, ++ { NULL }, ++}; ++ ++AVFILTER_DEFINE_CLASS(pipewiregrab); ++ ++/** ++ * Helper function to allow portal_init_screencast to stop and return an error ++ * code if a DBus operation/callback fails. ++ * ++ * @param ctx ++ * @param error error code ++ * @param message error message ++ */ ++static void portal_abort(AVFilterContext *ctx, int error, const char *message) ++{ ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ pw_ctx->portal_error = error; ++ av_log(ctx, AV_LOG_ERROR, "Aborting: %s\n", message); ++ ++ if (pw_ctx->glib_main_loop && ++ g_main_loop_is_running(pw_ctx->glib_main_loop)) ++ g_main_loop_quit(pw_ctx->glib_main_loop); ++} ++ ++/** ++ * Callback to handle PipeWire core info events ++ * ++ * @param user_data pointer to the filter's AVFilterContext ++ * @param info pw_core_info ++ */ ++static void on_core_info_callback(void *user_data, const struct pw_core_info *info) ++{ ++ AVFilterContext *ctx = user_data; ++ av_log(ctx, AV_LOG_DEBUG, "Server version: %s\n", info->version); ++ av_log(ctx, AV_LOG_INFO, "Library version: %s\n", pw_get_library_version()); ++ av_log(ctx, AV_LOG_DEBUG, "Header version: %s\n", pw_get_headers_version()); ++} ++ ++/** ++ * Callback to handle PipeWire core done events ++ * ++ * @param user_data pointer to the filter's AVFilterContext ++ * @param id PipeWire object id of calling ++ * @param seq PipeWire object sequence ++ */ ++static void on_core_done_callback(void *user_data, uint32_t id, int seq) ++{ ++ AVFilterContext *ctx = user_data; ++ PipewireGrabContext *pw_ctx; ++ ++ if (!ctx || !ctx->priv) ++ return; ++ ++ pw_ctx = ctx->priv; ++ ++ if (id == PW_ID_CORE) ++ pw_thread_loop_signal(pw_ctx->thread_loop, false); ++} ++ ++/** ++ * Callback to handle Pipewire core error events ++ * ++ * @param user_data pointer to the filter's AVFilterContext ++ * @param id PipeWire object id of calling ++ * @param seq PipeWire object sequence ++ * @param res error number ++ * @param message error message ++ */ ++static void on_core_error_callback(void *user_data, uint32_t id, int seq, ++ int res, const char *message) ++{ ++ AVFilterContext *ctx = user_data; ++ PipewireGrabContext *pw_ctx; ++ ++ if (!ctx) ++ return; ++ ++ av_log(ctx, AV_LOG_ERROR, ++ "PipeWire core error: %s (id=%u, seq=%d, res=%d: %s)\n", ++ message, id, seq, res, g_strerror(-res)); ++ ++ pw_ctx = ctx->priv; ++ if (!pw_ctx) { ++ av_log(ctx, AV_LOG_ERROR, ++ "Invalid private context data\n"); ++ return; ++ } ++ ++ pw_thread_loop_signal(pw_ctx->thread_loop, false); ++ ++ pw_ctx->pipewire_error = res; ++ atomic_store(&pw_ctx->pipewire_initialization_over, 1); ++ pthread_cond_signal(&pw_ctx->pipewire_initialization_cond_var); ++} ++ ++/** ++ * PipeWire core events callbacks ++ */ ++static const struct pw_core_events core_events = { ++ PW_VERSION_CORE_EVENTS, ++ .info = on_core_info_callback, ++ .done = on_core_done_callback, ++ .error = on_core_error_callback, ++}; ++ ++/** ++ * Helper function: convert spa video format to AVPixelFormat ++ * ++ * @param video_format spa video format to convert ++ * @return the corresponding AVPixelFormat ++ */ ++static enum AVPixelFormat ++spa_video_format_to_av_pixel_format(enum spa_video_format video_format) ++{ ++ switch (video_format) { ++ case SPA_VIDEO_FORMAT_RGBA: ++ case SPA_VIDEO_FORMAT_RGBx: ++ return AV_PIX_FMT_RGBA; ++ ++ case SPA_VIDEO_FORMAT_BGRA: ++ case SPA_VIDEO_FORMAT_BGRx: ++ return AV_PIX_FMT_BGRA; ++ ++ default: ++ return AV_PIX_FMT_NONE; ++ } ++} ++ ++/** ++ * Callback to free a DbusCallData object's memory and unsubscribe from the ++ * associated dbus signal. ++ * ++ * @param ptr_dbus_call_data DBus marshalling structure ++ */ ++static void dbus_call_data_free(struct DbusCallData *ptr_dbus_call_data) ++{ ++ AVFilterContext *ctx; ++ PipewireGrabContext *pw_ctx; ++ ++ if (!ptr_dbus_call_data) ++ return; ++ ++ ctx = ptr_dbus_call_data->ctx; ++ if (!ctx || !ctx->priv) ++ return; ++ ++ pw_ctx = ctx->priv; ++ ++ if (ptr_dbus_call_data->signal_id) ++ g_dbus_connection_signal_unsubscribe(pw_ctx->connection, ++ ptr_dbus_call_data->signal_id); ++ ++ if (ptr_dbus_call_data->cancelled_id > 0) ++ g_signal_handler_disconnect(pw_ctx->cancellable, ++ ptr_dbus_call_data->cancelled_id); ++ ++ g_clear_pointer(&ptr_dbus_call_data->request_path, g_free); ++ av_free(ptr_dbus_call_data); ++} ++ ++/** ++ * DBus callback of cancelled events ++ * ++ * @param cancellable (not used) ++ * @param user_data DBus marshalling structure ++ */ ++static void on_cancelled_callback(GCancellable *cancellable, gpointer user_data) ++{ ++ struct DbusCallData *ptr_dbus_call_data = user_data; ++ AVFilterContext *ctx = ptr_dbus_call_data->ctx; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ if (!pw_ctx) ++ return; ++ ++ g_dbus_connection_call(pw_ctx->connection, "org.freedesktop.portal.Desktop", ++ ptr_dbus_call_data->request_path, ++ "org.freedesktop.portal.Request", "Close", NULL, ++ NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); ++ ++ av_log(ctx, AV_LOG_WARNING, "Portal request cancelled\n"); ++ ++ pw_ctx->portal_error = ECANCELED; ++ g_main_loop_quit(pw_ctx->glib_main_loop); ++} ++ ++/** ++ * PipeWire callback of parameters changed events ++ * ++ * @param user_data DBus marshalling structure ++ * @param id contains chan param type ++ * @param param pointer to changed param structure ++ */ ++static void on_stream_param_changed_callback(void *user_data, uint32_t id, ++ const struct spa_pod *param) ++{ ++ struct spa_pod_builder pod_builder; ++ const struct spa_pod *params[MAX_SPA_PARAM]; ++ uint32_t n_params = 0; ++ uint8_t params_buffer[4096]; ++ int result; ++ PipewireGrabContext *pw_ctx; ++ AVFilterContext *ctx = user_data; ++ ++ if (!ctx || !ctx->priv || !param) ++ return; ++ ++ if (id != SPA_PARAM_Format) { ++ av_log(ctx, AV_LOG_WARNING, ++ "Ignoring non-Format param change\n"); ++ return; ++ } ++ ++ pw_ctx = ctx->priv; ++ ++ result = spa_format_parse(param, &pw_ctx->format.media_type, ++ &pw_ctx->format.media_subtype); ++ if (result < 0) { ++ av_log(ctx, AV_LOG_ERROR, "Unable to parse media type\n"); ++ pw_ctx->pipewire_error = AVERROR(EINVAL); ++ goto end; ++ } ++ ++ if (pw_ctx->format.media_type != SPA_MEDIA_TYPE_video || ++ pw_ctx->format.media_subtype != SPA_MEDIA_SUBTYPE_raw) { ++ av_log(ctx, AV_LOG_ERROR, "Unexpected media type\n"); ++ pw_ctx->pipewire_error = AVERROR(EINVAL); ++ goto end; ++ } ++ ++ spa_format_video_raw_parse(param, &pw_ctx->format.info.raw); ++ ++ av_log(ctx, AV_LOG_INFO, "Negotiated format:\n"); ++ ++ av_log(ctx, AV_LOG_INFO, "Format: %d (%s)\n", ++ pw_ctx->format.info.raw.format, ++ spa_debug_type_find_name(spa_type_video_format, ++ pw_ctx->format.info.raw.format)); ++ av_log(ctx, AV_LOG_INFO, "Size: %dx%d\n", ++ pw_ctx->format.info.raw.size.width, ++ pw_ctx->format.info.raw.size.height); ++ av_log(ctx, AV_LOG_INFO, "Framerate: %d/%d\n", ++ pw_ctx->format.info.raw.framerate.num, ++ pw_ctx->format.info.raw.framerate.denom); ++ ++ pw_ctx->width = pw_ctx->format.info.raw.size.width; ++ pw_ctx->height = pw_ctx->format.info.raw.size.height; ++ pw_ctx->Bpp = BYTES_PER_PIXEL; ++ pw_ctx->frame_size = pw_ctx->width * pw_ctx->height * pw_ctx->Bpp; ++ if (pw_ctx->frame_size + AV_INPUT_BUFFER_PADDING_SIZE > INT_MAX) { ++ av_log(ctx, AV_LOG_ERROR, "Captured area is too large\n"); ++ pw_ctx->pipewire_error = AVERROR(EINVAL); ++ goto end; ++ } ++ ++ pw_ctx->av_pxl_format = ++ spa_video_format_to_av_pixel_format(pw_ctx->format.info.raw.format); ++ if (pw_ctx->av_pxl_format == AV_PIX_FMT_NONE) { ++ av_log(ctx, AV_LOG_ERROR, ++ "Unsupported buffer format: %d\n", pw_ctx->format.info.raw.format); ++ pw_ctx->pipewire_error = AVERROR(EINVAL); ++ goto end; ++ } ++ ++ /* Video crop */ ++ pod_builder = SPA_POD_BUILDER_INIT(params_buffer, sizeof(params_buffer)); ++ params[n_params++] = spa_pod_builder_add_object( ++ &pod_builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, ++ SPA_PARAM_META_type, SPA_POD_Id(SPA_META_VideoCrop), ++ SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_region))); ++ ++ /* Cursor */ ++ params[n_params++] = spa_pod_builder_add_object( ++ &pod_builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, ++ SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Cursor), SPA_PARAM_META_size, ++ SPA_POD_CHOICE_RANGE_Int(CURSOR_META_SIZE(64, 64), ++ CURSOR_META_SIZE(1, 1), ++ CURSOR_META_SIZE(1024, 1024))); ++ ++ /* Buffer options */ ++ params[n_params++] = spa_pod_builder_add_object( ++ &pod_builder, SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, ++ SPA_PARAM_BUFFERS_dataType, ++ SPA_POD_Int((1 << SPA_DATA_MemPtr) | (1 << SPA_DATA_MemFd))); ++ ++ /* Meta header */ ++ params[n_params++] = spa_pod_builder_add_object( ++ &pod_builder, SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, ++ SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header), ++ SPA_PARAM_META_size, ++ SPA_POD_Int(sizeof(struct spa_meta_header))); ++ ++ pw_stream_update_params(pw_ctx->stream, params, n_params); ++ ++end: ++ // Signal pipewiregrab_init that PipeWire initialization is over (either ++ // because it was completed successfully or because there was an error, in ++ // which case pw_ctx->pipewire_error will have been set to a nonzero value). ++ atomic_store(&pw_ctx->pipewire_initialization_over, 1); ++ pthread_cond_signal(&pw_ctx->pipewire_initialization_cond_var); ++} ++ ++/** ++ * PipeWire callback of state changed events ++ * ++ * @param user_data DBus marshalling structure ++ * @param old PipeWire stream old state ++ * @param state PipeWire stream current state ++ * @param error received error information ++ */ ++static void on_stream_state_changed_callback(void *user_data, ++ enum pw_stream_state old, ++ enum pw_stream_state state, ++ const char *error) ++{ ++ AVFilterContext *ctx = user_data; ++ if (!ctx) ++ return; ++ ++ av_log(ctx, AV_LOG_INFO, "stream state: \"%s\"\n", ++ pw_stream_state_as_string(state)); ++} ++ ++/** ++ * Find most recent buffer received in a PipeWire stream ++ * ++ * @param stream stream to get buffer from ++ * @return most recent buffer in the stream ++ */ ++static struct pw_buffer *find_most_recent_buffer_and_recycle_olders(struct pw_stream *stream) ++{ ++ struct pw_buffer *pw_buf = NULL; ++ while (1) { ++ struct pw_buffer *aux = pw_stream_dequeue_buffer(stream); ++ if (!aux) ++ break; ++ if (pw_buf) ++ pw_stream_queue_buffer(stream, pw_buf); ++ pw_buf = aux; ++ } ++ return pw_buf; ++} ++ ++/** ++ * Our data processing function ++ * ++ * @param user_data DBus marshalling structure ++ */ ++static void on_stream_process_callback(void *user_data) ++{ ++ struct spa_buffer *spa_buf = NULL; ++ struct pw_buffer *pw_buf = NULL; ++ uint8_t *map = NULL; ++ void *sdata = NULL; ++ struct spa_meta_header *header = NULL; ++ struct spa_meta_region *frame_region; ++ uint32_t frame_width; ++ uint32_t frame_height; ++ AVFilterContext *ctx = user_data; ++ PipewireGrabContext *pw_ctx = NULL; ++ ++ if (!ctx || !ctx->priv) ++ return; ++ ++ pw_ctx = ctx->priv; ++ ++ // We need to wait for pw_ctx->current_frame to have been allocated before ++ // we can use it to get frames from the PipeWire thread to FFmpeg ++ pthread_mutex_lock(&pw_ctx->current_frame_mutex); ++ if (!pw_ctx->current_frame) { ++ pthread_mutex_unlock(&pw_ctx->current_frame_mutex); ++ return; ++ } ++ pthread_mutex_unlock(&pw_ctx->current_frame_mutex); ++ ++ // Get a buffer from PipeWire ++ pw_buf = find_most_recent_buffer_and_recycle_olders(pw_ctx->stream); ++ if (!pw_buf) { ++ av_log(ctx, AV_LOG_ERROR, "Out of buffers\n"); ++ return; ++ } ++ ++ // Check whether the buffer is corrupted ++ spa_buf = pw_buf->buffer; ++ header = spa_buffer_find_meta_data(spa_buf, ++ SPA_META_Header, sizeof(*header)); ++ if (header && (header->flags & SPA_META_HEADER_FLAG_CORRUPTED)) { ++ av_log(ctx, AV_LOG_ERROR, "Corrupted PipeWire buffer\n"); ++ goto end; ++ } ++ ++ // Get a pointer to the buffer's data ++ if (spa_buf->datas[0].type == SPA_DATA_MemFd ) { ++ map = mmap(NULL, spa_buf->datas[0].maxsize + spa_buf->datas[0].mapoffset, ++ PROT_READ, MAP_PRIVATE, spa_buf->datas[0].fd, 0); ++ if (map == MAP_FAILED) { ++ av_log(ctx, AV_LOG_ERROR, "mmap failed! error %s\n", g_strerror(errno)); ++ goto end; ++ } ++ sdata = SPA_PTROFF(map, spa_buf->datas[0].mapoffset, uint8_t); ++ } else if (spa_buf->datas[0].type == SPA_DATA_MemPtr) { ++ if (spa_buf->datas[0].data == NULL) { ++ av_log(ctx, AV_LOG_ERROR, "No data\n"); ++ goto end; ++ } ++ map = NULL; ++ sdata = spa_buf->datas[0].data; ++ } else { ++ av_log(ctx, AV_LOG_ERROR, "Buffer is not valid\n"); ++ goto end; ++ } ++ ++ if ((frame_region = spa_buffer_find_meta_data(spa_buf, SPA_META_VideoCrop, ++ sizeof(*frame_region))) ++ && spa_meta_region_is_valid(frame_region)) { ++ frame_width = frame_region->region.size.width; ++ frame_height = frame_region->region.size.height; ++ } else { ++ frame_width = pw_ctx->width; ++ frame_height = pw_ctx->height; ++ } ++ ++ // Update current_frame with the new data ++ pthread_mutex_lock(&pw_ctx->current_frame_mutex); ++ memcpy(pw_ctx->current_frame->data[0], sdata, spa_buf->datas[0].chunk->size); ++ pw_ctx->current_frame->width = frame_width; ++ pw_ctx->current_frame->height = frame_height; ++ pthread_mutex_unlock(&pw_ctx->current_frame_mutex); ++ ++ // Cleanup ++ if (spa_buf->datas[0].type == SPA_DATA_MemFd) ++ munmap(map, spa_buf->datas[0].maxsize + spa_buf->datas[0].mapoffset); ++end: ++ pw_stream_queue_buffer(pw_ctx->stream, pw_buf); ++ return; ++} ++ ++static const struct pw_stream_events stream_events = { ++ PW_VERSION_STREAM_EVENTS, ++ .state_changed = on_stream_state_changed_callback, ++ .param_changed = on_stream_param_changed_callback, ++ .process = on_stream_process_callback, ++}; ++ ++static struct DbusCallData *subscribe_to_signal(AVFilterContext *ctx, ++ const char *path, ++ GDBusSignalCallback callback) ++{ ++ struct DbusCallData *ptr_dbus_call_data; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ ptr_dbus_call_data = (struct DbusCallData *)av_mallocz(sizeof(struct DbusCallData)); ++ if (!ptr_dbus_call_data) ++ return NULL; ++ ++ ptr_dbus_call_data->ctx = ctx; ++ ptr_dbus_call_data->request_path = g_strdup(path); ++ ptr_dbus_call_data->cancelled_id = ++ g_signal_connect(pw_ctx->cancellable, "cancelled", ++ G_CALLBACK(on_cancelled_callback), ++ ptr_dbus_call_data /* user_data */); ++ ptr_dbus_call_data->signal_id = g_dbus_connection_signal_subscribe( ++ pw_ctx->connection, "org.freedesktop.portal.Desktop" /*sender*/, ++ "org.freedesktop.portal.Request" /*interface_name*/, ++ "Response" /*member: dbus signal name*/, ++ ptr_dbus_call_data->request_path /*object_path*/, NULL, ++ G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE, callback, ptr_dbus_call_data, NULL); ++ ++ return ptr_dbus_call_data; ++} ++ ++static int play_pipewire_stream(AVFilterContext *ctx) ++{ ++ int ret; ++ const struct spa_pod *ptr_spa_pod; ++ uint8_t buffer[4096]; ++ struct spa_pod_builder spa_pod_bldr = { ++ 0, ++ }; ++ ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ pw_init(NULL, NULL); ++ pw_ctx->pw_init_called = 1; ++ ++ pw_ctx->thread_loop = ++ pw_thread_loop_new("thread loop", NULL); ++ if (!pw_ctx->thread_loop) { ++ av_log(ctx, AV_LOG_ERROR, "pw_thread_loop_new failed\n"); ++ return AVERROR(ENOMEM); ++ } ++ ++ pw_ctx->context = ++ pw_context_new(pw_thread_loop_get_loop(pw_ctx->thread_loop), NULL, 0); ++ if (!pw_ctx->context) { ++ av_log(ctx, AV_LOG_ERROR, "pw_context_new failed\n"); ++ ret = AVERROR(ENOMEM); ++ goto fail; ++ } ++ ++ if (pw_thread_loop_start(pw_ctx->thread_loop) < 0) { ++ av_log(ctx, AV_LOG_ERROR, "pw_thread_loop_start failed\n"); ++ ret = AVERROR(EFAULT); ++ goto fail; ++ } ++ ++ pw_thread_loop_lock(pw_ctx->thread_loop); ++ ++ // Core ++ pw_ctx->core = ++ pw_context_connect_fd(pw_ctx->context, ++ fcntl(pw_ctx->pipewire_fd, F_DUPFD_CLOEXEC, 3), ++ NULL, 0); ++ if (!pw_ctx->core) { ++ ret = AVERROR(errno); ++ av_log(ctx, AV_LOG_ERROR, "pw_context_connect_fd failed\n"); ++ pw_thread_loop_unlock(pw_ctx->thread_loop); ++ goto fail; ++ } ++ ++ pw_core_add_listener(pw_ctx->core, &pw_ctx->core_listener, &core_events, ++ ctx /* user_data */); ++ ++ // Stream ++ pw_ctx->stream = pw_stream_new( ++ pw_ctx->core, "wayland grab", ++ pw_properties_new(PW_KEY_MEDIA_TYPE, "Video", PW_KEY_MEDIA_CATEGORY, ++ "Capture", PW_KEY_MEDIA_ROLE, "Screen", NULL)); ++ ++ if (!pw_ctx->stream) { ++ av_log(ctx, AV_LOG_ERROR, "pw_stream_new failed\n"); ++ ret = AVERROR(ENOMEM); ++ pw_thread_loop_unlock(pw_ctx->thread_loop); ++ goto fail; ++ } ++ ++ pw_stream_add_listener(pw_ctx->stream, &pw_ctx->stream_listener, ++ &stream_events, ctx /* user_data */); ++ ++ // Stream parameters ++ spa_pod_bldr = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer)); ++ ptr_spa_pod = spa_pod_builder_add_object( ++ &spa_pod_bldr, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, ++ SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video), ++ SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), ++ SPA_FORMAT_VIDEO_format, ++ SPA_POD_CHOICE_ENUM_Id(4, SPA_VIDEO_FORMAT_RGBA, SPA_VIDEO_FORMAT_RGBx, ++ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA), ++ SPA_FORMAT_VIDEO_size, ++ SPA_POD_CHOICE_RANGE_Rectangle(&SPA_RECTANGLE(320, 240), ++ &SPA_RECTANGLE(1, 1), ++ &SPA_RECTANGLE(4096, 4096)), ++ SPA_FORMAT_VIDEO_framerate, ++ SPA_POD_CHOICE_RANGE_Fraction( ++ &SPA_FRACTION(pw_ctx->framerate.num, ++ pw_ctx->framerate.den), ++ &SPA_FRACTION(0, 1), &SPA_FRACTION(144, 1))); ++ ++ ret = pw_stream_connect( ++ pw_ctx->stream, PW_DIRECTION_INPUT, pw_ctx->pipewire_node, ++ PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_MAP_BUFFERS, &ptr_spa_pod, 1); ++ if (ret != 0) { ++ av_log(ctx, AV_LOG_ERROR, "pw_stream_connect failed\n"); ++ pw_thread_loop_unlock(pw_ctx->thread_loop); ++ goto fail; ++ } ++ ++ av_log(ctx, AV_LOG_INFO, "Starting screen capture ...\n"); ++ pw_thread_loop_unlock(pw_ctx->thread_loop); ++ return 0; ++ ++fail: ++ if (pw_ctx->core) { ++ pw_core_disconnect(pw_ctx->core); ++ pw_ctx->core = NULL; ++ } ++ if (pw_ctx->context) { ++ pw_context_destroy(pw_ctx->context); ++ pw_ctx->context = NULL; ++ } ++ if (pw_ctx->thread_loop) { ++ pw_thread_loop_destroy(pw_ctx->thread_loop); ++ pw_ctx->thread_loop = NULL; ++ } ++ ++ return ret; ++} ++ ++static void portal_open_pipewire_remote(AVFilterContext *ctx) ++{ ++ GUnixFDList* fd_list = NULL; ++ GVariant* result = NULL; ++ GError* error = NULL; ++ int fd_index; ++ GVariantBuilder builder; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT); ++ ++ result = g_dbus_proxy_call_with_unix_fd_list_sync( ++ pw_ctx->proxy, "OpenPipeWireRemote", ++ g_variant_new("(oa{sv})", pw_ctx->session_handle, &builder), ++ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &fd_list, pw_ctx->cancellable, ++ &error); ++ if (error) ++ goto fail; ++ ++ g_variant_get(result, "(h)", &fd_index); ++ g_variant_unref(result); ++ ++ pw_ctx->pipewire_fd = g_unix_fd_list_get(fd_list, fd_index, &error); ++ g_object_unref(fd_list); ++ if (error) ++ goto fail; ++ ++ g_main_loop_quit(pw_ctx->glib_main_loop); ++ return; ++ ++fail: ++ av_log(ctx, AV_LOG_ERROR, ++ "Error retrieving PipeWire fd: %s\n", error->message); ++ g_error_free(error); ++ portal_abort(ctx, EIO, "Failed to open PipeWire remote"); ++} ++ ++static void on_start_response_received_callback( ++ GDBusConnection *connection, const char *sender_name, ++ const char *object_path, const char *interface_name, ++ const char *signal_name, GVariant *parameters, gpointer user_data) ++{ ++ GVariant* stream_properties = NULL; ++ GVariant* streams = NULL; ++ GVariant* result = NULL; ++ GVariantIter iter; ++ uint32_t response; ++ ++ struct DbusCallData *ptr_dbus_call_data = user_data; ++ AVFilterContext *ctx = ptr_dbus_call_data->ctx; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ if (!pw_ctx) { ++ portal_abort(ctx, EINVAL, "Invalid private context data"); ++ return; ++ } ++ ++ g_clear_pointer(&ptr_dbus_call_data, dbus_call_data_free); ++ ++ g_variant_get(parameters, "(u@a{sv})", &response, &result); ++ ++ if (response) { ++ g_variant_unref(result); ++ portal_abort( ++ ctx, EACCES, "Failed to start screencast, denied or cancelled by user"); ++ return; ++ } ++ ++ streams = g_variant_lookup_value(result, "streams", G_VARIANT_TYPE_ARRAY); ++ ++ g_variant_iter_init(&iter, streams); ++ av_assert0(g_variant_iter_n_children(&iter) == 1); ++ ++ g_variant_iter_loop(&iter, "(u@a{sv})", &pw_ctx->pipewire_node, ++ &stream_properties); ++ ++ av_log(ctx, AV_LOG_INFO, "Monitor selected, setting up screencast\n\n"); ++ ++ g_variant_unref(result); ++ g_variant_unref(streams); ++ g_variant_unref(stream_properties); ++ ++ portal_open_pipewire_remote(ctx); ++} ++ ++static int portal_call_dbus_method(AVFilterContext *ctx, ++ const gchar *method_name, GVariant *parameters) ++{ ++ GVariant* result; ++ GError* error = NULL; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ result = g_dbus_proxy_call_sync(pw_ctx->proxy, method_name, parameters, ++ G_DBUS_CALL_FLAGS_NONE, -1, ++ pw_ctx->cancellable, &error); ++ if (error) { ++ av_log(ctx, AV_LOG_ERROR, ++ "Call to DBus method '%s' failed: %s\n", ++ method_name, error->message); ++ g_error_free(error); ++ return EIO; ++ } ++ g_variant_unref(result); ++ return 0; ++} ++ ++static void portal_start(AVFilterContext *ctx) ++{ ++ int ret; ++ const char *request_token; ++ g_autofree char *request_path; ++ GVariantBuilder builder; ++ GVariant *parameters; ++ struct DbusCallData *ptr_dbus_call_data; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ if (!pw_ctx) { ++ portal_abort(ctx, EINVAL, "Invalid private context data"); ++ return; ++ } ++ ++ request_token = "pipewiregrabStart"; ++ request_path = g_strdup_printf(REQUEST_PATH, pw_ctx->sender_name, request_token); ++ ++ av_log(ctx, AV_LOG_INFO, "Asking for monitor…\n"); ++ ++ ptr_dbus_call_data = subscribe_to_signal(ctx, request_path, ++ on_start_response_received_callback); ++ if (!ptr_dbus_call_data) { ++ portal_abort(ctx, ENOMEM, "Failed to allocate DBus call data"); ++ return; ++ } ++ ++ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT); ++ g_variant_builder_add(&builder, "{sv}", "handle_token", ++ g_variant_new_string(request_token)); ++ parameters = g_variant_new("(osa{sv})", pw_ctx->session_handle, "", &builder); ++ ++ ret = portal_call_dbus_method(ctx, "Start", parameters); ++ if (ret != 0) ++ portal_abort(ctx, ret, "Failed to start screen cast session"); ++} ++ ++static void on_select_sources_response_received_callback( ++ GDBusConnection *connection, const char *sender_name, ++ const char *object_path, const char *interface_name, ++ const char *signal_name, GVariant *parameters, gpointer user_data) ++{ ++ GVariant* ret = NULL; ++ uint32_t response; ++ struct DbusCallData *ptr_dbus_call_data = user_data; ++ AVFilterContext *ctx = ptr_dbus_call_data->ctx; ++ ++ av_log(ctx, AV_LOG_INFO, ++ "Response to select source received\n"); ++ ++ g_clear_pointer(&ptr_dbus_call_data, dbus_call_data_free); ++ ++ g_variant_get(parameters, "(u@a{sv})", &response, &ret); ++ g_variant_unref(ret); ++ if (response) { ++ portal_abort( ++ ctx, EACCES, "Failed to select screencast sources, denied or cancelled by user"); ++ return; ++ } ++ ++ portal_start(ctx); ++} ++ ++static void portal_select_sources(AVFilterContext *ctx) ++{ ++ int ret; ++ const char *request_token; ++ g_autofree char *request_path; ++ GVariantBuilder builder; ++ GVariant *parameters; ++ struct DbusCallData *ptr_dbus_call_data; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ request_token = "pipewiregrabSelectSources"; ++ request_path = g_strdup_printf(REQUEST_PATH, pw_ctx->sender_name, request_token); ++ ++ ptr_dbus_call_data = subscribe_to_signal(ctx, request_path, ++ on_select_sources_response_received_callback); ++ if (!ptr_dbus_call_data) { ++ portal_abort(ctx, ENOMEM, "Failed to allocate DBus call data"); ++ return; ++ } ++ ++ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT); ++ g_variant_builder_add(&builder, "{sv}", "types", ++ g_variant_new_uint32(pw_ctx->capture_type)); ++ g_variant_builder_add(&builder, "{sv}", "multiple", ++ g_variant_new_boolean(FALSE)); ++ g_variant_builder_add(&builder, "{sv}", "handle_token", ++ g_variant_new_string(request_token)); ++ ++ if ((pw_ctx->available_cursor_modes & PORTAL_CURSOR_MODE_EMBEDDED) ++ && pw_ctx->draw_mouse) ++ g_variant_builder_add(&builder, "{sv}", "cursor_mode", ++ g_variant_new_uint32(PORTAL_CURSOR_MODE_EMBEDDED)); ++ else ++ g_variant_builder_add(&builder, "{sv}", "cursor_mode", ++ g_variant_new_uint32(PORTAL_CURSOR_MODE_HIDDEN)); ++ parameters = g_variant_new("(oa{sv})", pw_ctx->session_handle, &builder); ++ ++ ret = portal_call_dbus_method(ctx, "SelectSources", parameters); ++ if (ret != 0) ++ portal_abort(ctx, ret, "Failed to select sources for screen cast session"); ++} ++ ++static void on_create_session_response_received_callback( ++ GDBusConnection *connection, const char *sender_name, ++ const char *object_path, const char *interface_name, ++ const char *signal_name, GVariant *parameters, gpointer user_data) ++{ ++ uint32_t response; ++ GVariant* result = NULL; ++ struct DbusCallData *ptr_dbus_call_data = user_data; ++ AVFilterContext *ctx = ptr_dbus_call_data->ctx; ++ ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ if (!pw_ctx) { ++ portal_abort(ctx, EINVAL, "Invalid private context data"); ++ return; ++ } ++ ++ g_clear_pointer(&ptr_dbus_call_data, dbus_call_data_free); ++ ++ g_variant_get(parameters, "(u@a{sv})", &response, &result); ++ ++ if (response != 0) { ++ g_variant_unref(result); ++ portal_abort( ++ ctx, EACCES, "Failed to create screencast session, denied or cancelled by user"); ++ return; ++ } ++ ++ av_log(ctx, AV_LOG_DEBUG, "Screencast session created\n"); ++ ++ g_variant_lookup(result, "session_handle", "s", &pw_ctx->session_handle); ++ g_variant_unref(result); ++ ++ portal_select_sources(ctx); ++} ++ ++/** ++ * Function to create a screen cast session ++ * ++ * @param ctx ++ */ ++static void portal_create_session(AVFilterContext *ctx) ++{ ++ int ret; ++ GVariantBuilder builder; ++ GVariant *parameters; ++ const char *request_token; ++ g_autofree char *request_path; ++ struct DbusCallData *ptr_dbus_call_data; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ request_token = "pipewiregrabCreateSession"; ++ request_path = g_strdup_printf(REQUEST_PATH, pw_ctx->sender_name, request_token); ++ ++ ptr_dbus_call_data = subscribe_to_signal(ctx, request_path, ++ on_create_session_response_received_callback); ++ if (!ptr_dbus_call_data) { ++ portal_abort(ctx, ENOMEM, "Failed to allocate DBus call data"); ++ return; ++ } ++ ++ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT); ++ g_variant_builder_add(&builder, "{sv}", "handle_token", ++ g_variant_new_string(request_token)); ++ g_variant_builder_add(&builder, "{sv}", "session_handle_token", ++ g_variant_new_string("pipewiregrab")); ++ parameters = g_variant_new("(a{sv})", &builder); ++ ++ ret = portal_call_dbus_method(ctx, "CreateSession", parameters); ++ if (ret != 0) ++ portal_abort(ctx, ret, "Failed to create screen cast session"); ++} ++ ++/** ++ * Helper function: get available cursor modes and update the ++ * PipewireGrabContext accordingly ++ * ++ * @param ctx ++ */ ++static void portal_update_available_cursor_modes(AVFilterContext *ctx) ++{ ++ GVariant* cached_cursor_modes = NULL; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ cached_cursor_modes = ++ g_dbus_proxy_get_cached_property(pw_ctx->proxy, "AvailableCursorModes"); ++ ++ pw_ctx->available_cursor_modes = ++ cached_cursor_modes ? g_variant_get_uint32(cached_cursor_modes) : 0; ++ ++ g_variant_unref(cached_cursor_modes); ++} ++ ++static int create_dbus_proxy(AVFilterContext *ctx) ++{ ++ GError* error = NULL; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ pw_ctx->proxy = g_dbus_proxy_new_sync( ++ pw_ctx->connection, G_DBUS_PROXY_FLAGS_NONE, NULL, ++ "org.freedesktop.portal.Desktop", ++ "/org/freedesktop/portal/desktop", ++ "org.freedesktop.portal.ScreenCast", NULL, &error); ++ if (error) { ++ av_log(ctx, AV_LOG_ERROR, ++ "Error creating proxy: %s\n", error->message); ++ g_error_free(error); ++ return EPERM; ++ } ++ return 0; ++} ++ ++/** ++ * Create DBus connection and related objects ++ * ++ * @param ctx ++ */ ++static int create_dbus_connection(AVFilterContext *ctx) ++{ ++ char *aux; ++ GError* error = NULL; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ ++ pw_ctx->cancellable = g_cancellable_new(); ++ ++ pw_ctx->connection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error); ++ if (error) { ++ av_log(ctx, AV_LOG_ERROR, ++ "Error getting session bus: %s\n", error->message); ++ g_error_free(error); ++ return EPERM; ++ } ++ ++ aux = g_strdup(g_dbus_connection_get_unique_name(pw_ctx->connection) + 1); ++ pw_ctx->sender_name = av_strireplace(aux, ".", "_"); ++ av_log(ctx, AV_LOG_DEBUG, "Initialized (sender name: %s)\n", ++ pw_ctx->sender_name); ++ return 0; ++} ++ ++ ++/** ++ * Use XDG Desktop Portal's ScreenCast interface to open a file descriptor that ++ * can be used by PipeWire to access the screen cast streams. ++ * (https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.ScreenCast.html) ++ * ++ * @param ctx ++ */ ++static int portal_init_screencast(AVFilterContext *ctx) ++{ ++ int ret = 0; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ GMainContext *glib_main_context; ++ ++ // Create a new GLib context and set it as the default for the current thread. ++ // This ensures that the callbacks from DBus operations started in this thread are ++ // handled by the GLib main loop defined below, even if pipewiregrab_init was ++ // called by a program which also uses GLib and already had its own main loop running. ++ glib_main_context = g_main_context_new(); ++ g_main_context_push_thread_default(glib_main_context); ++ pw_ctx->glib_main_loop = g_main_loop_new(glib_main_context, FALSE); ++ if (!pw_ctx->glib_main_loop) { ++ av_log(ctx, AV_LOG_ERROR, "g_main_loop_new failed\n"); ++ ret = ENOMEM; ++ } ++ ++ ret = create_dbus_connection(ctx); ++ if (ret != 0) ++ goto exit_glib_loop; ++ ++ ret = create_dbus_proxy(ctx); ++ if (ret != 0) ++ goto exit_glib_loop; ++ ++ portal_update_available_cursor_modes(ctx); ++ portal_create_session(ctx); ++ if (pw_ctx->portal_error) { ++ ret = pw_ctx->portal_error; ++ goto exit_glib_loop; ++ } ++ ++ g_main_loop_run(pw_ctx->glib_main_loop); ++ // The main loop will run until it's stopped by portal_open_pipewire_remote (if ++ // all DBus method calls were successfully), portal_abort (in case of error) or ++ // on_cancelled_callback (if a DBus request is cancelled). ++ // In the latter two cases, pw_ctx->portal_error gets set to a nonzero value. ++ if (pw_ctx->portal_error) ++ ret = pw_ctx->portal_error; ++ ++exit_glib_loop: ++ g_main_loop_unref(pw_ctx->glib_main_loop); ++ pw_ctx->glib_main_loop = NULL; ++ g_main_context_pop_thread_default(glib_main_context); ++ g_main_context_unref(glib_main_context); ++ ++ return AVERROR(ret); ++} ++ ++static av_cold int pipewiregrab_init(AVFilterContext *ctx) ++{ ++ int ret; ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ if (!pw_ctx) { ++ av_log(ctx, AV_LOG_ERROR, ++ "Invalid private context data!\n"); ++ return AVERROR(EINVAL); ++ } ++ ++ atomic_init(&pw_ctx->pipewire_initialization_over, 0); ++ pthread_cond_init(&pw_ctx->pipewire_initialization_cond_var, NULL); ++ pthread_mutex_init(&pw_ctx->pipewire_initialization_mutex, NULL); ++ pthread_mutex_init(&pw_ctx->current_frame_mutex, NULL); ++ ++ pw_ctx->pipewire_node = pw_ctx->pipewire_external_node; ++ if (pw_ctx->pipewire_fd == 0) { ++ ret = portal_init_screencast(ctx); ++ if (ret != 0) { ++ atomic_store(&pw_ctx->pipewire_initialization_over, 1); ++ pthread_cond_signal(&pw_ctx->pipewire_initialization_cond_var); ++ return ret; ++ } ++ } ++ ++ ret = play_pipewire_stream(ctx); ++ if (ret != 0) ++ return ret; ++ ++ // Wait until PipeWire initialization is over ++ pthread_mutex_lock(&pw_ctx->pipewire_initialization_mutex); ++ while (!atomic_load(&pw_ctx->pipewire_initialization_over)) { ++ pthread_cond_wait(&pw_ctx->pipewire_initialization_cond_var, ++ &pw_ctx->pipewire_initialization_mutex); ++ } ++ pthread_mutex_unlock(&pw_ctx->pipewire_initialization_mutex); ++ ++ if (pw_ctx->pipewire_error) ++ return pw_ctx->pipewire_error; ++ ++ return 0; ++} ++ ++static void pipewiregrab_uninit(AVFilterContext *ctx) ++{ ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ if (!pw_ctx) ++ return; ++ ++ if (pw_ctx->glib_main_loop && ++ g_main_loop_is_running(pw_ctx->glib_main_loop)) { ++ // Cancel ongoing DBus operation, if any ++ g_cancellable_cancel(pw_ctx->cancellable); ++ pthread_mutex_lock(&pw_ctx->pipewire_initialization_mutex); ++ while (!atomic_load(&pw_ctx->pipewire_initialization_over)) { ++ pthread_cond_wait(&pw_ctx->pipewire_initialization_cond_var, ++ &pw_ctx->pipewire_initialization_mutex); ++ } ++ pthread_mutex_unlock(&pw_ctx->pipewire_initialization_mutex); ++ } ++ g_clear_object(&pw_ctx->cancellable); ++ ++ // PipeWire cleanup ++ if (pw_ctx->thread_loop) { ++ pw_thread_loop_signal(pw_ctx->thread_loop, false); ++ pw_thread_loop_unlock(pw_ctx->thread_loop); ++ pw_thread_loop_stop(pw_ctx->thread_loop); ++ } ++ if (pw_ctx->stream) { ++ pw_stream_disconnect(pw_ctx->stream); ++ g_clear_pointer(&pw_ctx->stream, pw_stream_destroy); ++ pw_ctx->stream = NULL; ++ } ++ if (pw_ctx->core){ ++ pw_core_disconnect(pw_ctx->core); ++ pw_ctx->core = NULL; ++ } ++ if (pw_ctx->context) { ++ pw_context_destroy(pw_ctx->context); ++ pw_ctx->context = NULL; ++ } ++ if (pw_ctx->thread_loop) { ++ pw_thread_loop_destroy(pw_ctx->thread_loop); ++ pw_ctx->thread_loop = NULL; ++ } ++ if (pw_ctx->pw_init_called) { ++ pw_deinit(); ++ pw_ctx->pw_init_called = 0; ++ } ++ if (pw_ctx->pipewire_fd > 0) { ++ close(pw_ctx->pipewire_fd); ++ pw_ctx->pipewire_fd = 0; ++ } ++ av_frame_free(&pw_ctx->current_frame); ++ ++ // DBus cleanup ++ if (pw_ctx->session_handle) { ++ g_dbus_connection_call( ++ pw_ctx->connection, "org.freedesktop.portal.Desktop", ++ pw_ctx->session_handle, "org.freedesktop.portal.Session", "Close", ++ NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); ++ ++ g_clear_pointer(&pw_ctx->session_handle, g_free); ++ } ++ g_clear_object(&pw_ctx->connection); ++ g_clear_object(&pw_ctx->proxy); ++ g_clear_pointer(&pw_ctx->sender_name, g_free); ++} ++ ++static int pipewiregrab_config_props(AVFilterLink *outlink) ++{ ++ AVFrame *frame; ++ PipewireGrabContext *pw_ctx = outlink->src->priv; ++ ++ AVRational time_base = av_inv_q(pw_ctx->framerate); ++ pw_ctx->frame_duration = av_rescale_q(1, time_base, AV_TIME_BASE_Q); ++ pw_ctx->time_frame = av_gettime_relative(); ++ ++ outlink->w = pw_ctx->width; ++ outlink->h = pw_ctx->height; ++ outlink->time_base = AV_TIME_BASE_Q; ++ outlink->frame_rate = pw_ctx->framerate; ++ ++ frame = ff_get_video_buffer(outlink, pw_ctx->width, pw_ctx->height); ++ if (!frame) ++ return AVERROR(ENOMEM); ++ pthread_mutex_lock(&pw_ctx->current_frame_mutex); ++ pw_ctx->current_frame = frame; ++ pthread_mutex_unlock(&pw_ctx->current_frame_mutex); ++ ++ return 0; ++} ++ ++/** ++ * Helper function: calculate the wait time based ++ * on the frame duration ++ * ++ * @param pw_ctx ++ * @return current time ++ */ ++static int64_t wait_frame(PipewireGrabContext *pw_ctx) ++{ ++ int64_t curtime, delay; ++ ++ /* Calculate the time of the next frame */ ++ pw_ctx->time_frame += pw_ctx->frame_duration; ++ ++ /* wait based on the frame rate */ ++ while (1) { ++ curtime = av_gettime_relative(); ++ delay = pw_ctx->time_frame - curtime; ++ if (delay <= 0) ++ break; ++ av_usleep(delay); ++ } ++ ++ return curtime; ++} ++ ++static int pipewiregrab_request_frame(AVFilterLink *outlink) ++{ ++ int ret; ++ PipewireGrabContext *pw_ctx = outlink->src->priv; ++ AVFrame *frame = av_frame_alloc(); ++ if (!frame) ++ return AVERROR(ENOMEM); ++ ++ wait_frame(pw_ctx); ++ ++ pthread_mutex_lock(&pw_ctx->current_frame_mutex); ++ ret = av_frame_ref(frame, pw_ctx->current_frame); ++ pthread_mutex_unlock(&pw_ctx->current_frame_mutex); ++ if (ret < 0) { ++ av_frame_free(&frame); ++ return ret; ++ } ++ ++ frame->pts = av_gettime(); ++ frame->duration = pw_ctx->frame_duration; ++ frame->sample_aspect_ratio = (AVRational) {1, 1}; ++ frame->format = pw_ctx->av_pxl_format; ++ ++ return ff_filter_frame(outlink, frame); ++} ++ ++static int pipewiregrab_query_formats(AVFilterContext *ctx) ++{ ++ PipewireGrabContext *pw_ctx = ctx->priv; ++ enum AVPixelFormat pix_fmts[] = {pw_ctx->av_pxl_format, AV_PIX_FMT_NONE}; ++ ++ return ff_set_common_formats_from_list(ctx, pix_fmts); ++} ++ ++static const AVFilterPad pipewiregrab_outputs[] = { ++ { ++ .name = "default", ++ .type = AVMEDIA_TYPE_VIDEO, ++ .request_frame = pipewiregrab_request_frame, ++ .config_props = pipewiregrab_config_props, ++ }, ++}; ++ ++const AVFilter ff_vsrc_pipewiregrab= { ++ .name = "pipewiregrab", ++ .description = NULL_IF_CONFIG_SMALL("Capture screen or window using PipeWire."), ++ .priv_size = sizeof(struct PipewireGrabContext), ++ .priv_class = &pipewiregrab_class, ++ .init = pipewiregrab_init, ++ .uninit = pipewiregrab_uninit, ++ .inputs = NULL, ++ FILTER_OUTPUTS(pipewiregrab_outputs), ++ FILTER_QUERY_FUNC(pipewiregrab_query_formats), ++}; diff --git a/gnu/packages/patches/gwenview-kimageannotator.patch b/gnu/packages/patches/gwenview-kimageannotator.patch new file mode 100644 index 0000000000..92b994a0b5 --- /dev/null +++ b/gnu/packages/patches/gwenview-kimageannotator.patch @@ -0,0 +1,29 @@ +Submitted By: Douglas R. Reno <renodr at linuxfromscratch dot org> +Date: 2024-02-26 +Initial Package Version: 23.08.5 +Upstream Status: Rejected (Qt6 port is primary now) +Origin: Self +Description: Fixes building Gwenview with recent kImageAnnotator + and kColorPicker versions by adjusting their paths + and FOUND variables so that the correct libraries are + selected. + +--- gwenview-23.08.5.orig/CMakeLists.txt 2024-02-26 15:02:29.702754535 -0600 ++++ gwenview-23.08.5/CMakeLists.txt 2024-02-26 15:09:48.012866877 -0600 +@@ -166,11 +166,11 @@ if(NOT WITHOUT_X11) + endif() + + if (QT_MAJOR_VERSION STREQUAL "5") +- find_package(kImageAnnotator) +- set_package_properties(kImageAnnotator PROPERTIES URL "https://github.com/ksnip/kImageAnnotator" DESCRIPTION "The kImageAnnotator library provides tools to annotate" TYPE REQUIRED) +- if(kImageAnnotator_FOUND) +- set(KIMAGEANNOTATOR_FOUND 1) +- find_package(kColorPicker REQUIRED) ++ find_package(kImageAnnotator-Qt5) ++ set_package_properties(kImageAnnotator-Qt5 PROPERTIES URL "https://github.com/ksnip/kImageAnnotator" DESCRIPTION "The kImageAnnotator library provides tools to annotate" TYPE REQUIRED) ++ if(kImageAnnotator-Qt5_FOUND) ++ set(kImageAnnotator_FOUND 1) ++ find_package(kColorPicker-Qt5 REQUIRED) + if(NOT kImageAnnotator_VERSION VERSION_LESS 0.5.0) + set(KIMAGEANNOTATOR_CAN_LOAD_TRANSLATIONS 1) + endif() diff --git a/gnu/packages/patches/jami-qml-tests-discovery.patch b/gnu/packages/patches/jami-qml-tests-discovery.patch deleted file mode 100644 index 11fd69571c..0000000000 --- a/gnu/packages/patches/jami-qml-tests-discovery.patch +++ /dev/null @@ -1,15 +0,0 @@ -Upstream status: https://review.jami.net/c/jami-client-qt/+/25640 - -diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt -index d50908cf..587c9d15 100644 ---- a/tests/CMakeLists.txt -+++ b/tests/CMakeLists.txt -@@ -73,6 +73,8 @@ endif() - - string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE) - -+set(QUICK_TEST_SOURCE_DIR "${CMAKE_SOURCE_DIR}tests/qml/src") -+ - set(QML_TESTS_SOURCE_FILES - ${CMAKE_SOURCE_DIR}/tests/qml/main.cpp - ${TEST_QML_RESOURCES} diff --git a/gnu/packages/patches/jami-qwindowkit.patch b/gnu/packages/patches/jami-qwindowkit.patch new file mode 100644 index 0000000000..65248a6940 --- /dev/null +++ b/gnu/packages/patches/jami-qwindowkit.patch @@ -0,0 +1,37 @@ +Upstream-status: https://lists.gnu.org/archive/html/jami/2024-03/msg00008.html + +This makes it possible to use the system-provided qwindowkit library. + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6d2dccfb..8dedff50 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -100,13 +100,13 @@ endif() + + # qwindowkit (frameless window) + add_fetch_content( +- TARGET qwindowkit ++ TARGET QWindowKit + URL https://github.com/stdware/qwindowkit.git + BRANCH 79b1f3110754f9c21af2d7dacbd07b1a9dbaf6ef + PATCHES ${QWINDOWKIT_PATCHES} + OPTIONS ${QWINDOWKIT_OPTIONS} + ) +-list(APPEND CLIENT_INCLUDE_DIRS ${QWindowKit_BINARY_DIR}/include) ++ + list(APPEND CLIENT_LIBS QWindowKit::Quick) + + set(CMAKE_AUTOMOC ON) +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt +index b2730b71..4960899e 100644 +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -48,7 +48,7 @@ target_include_directories(test_common_obj PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/src) + target_link_directories(test_common_obj PRIVATE ${CLIENT_LINK_DIRS}) +-target_link_libraries(test_common_obj ${QML_TEST_LIBS}) ++target_link_libraries(test_common_obj ${QML_TEST_LIBS} ${CLIENT_LIBS}) + target_compile_definitions(test_common_obj PRIVATE BUILD_TESTING="ON") + + set(COMMON_TESTS_SOURCES diff --git a/gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch b/gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch new file mode 100644 index 0000000000..63bfde6af0 --- /dev/null +++ b/gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch @@ -0,0 +1,26 @@ +Upstream-status: https://lists.gnu.org/archive/html/jami/2024-03/msg00005.html + +Fix macro value checking. + +diff --git a/tests/qml/main.cpp b/tests/qml/main.cpp +index 2fbecebe..8cb3de69 100644 +--- a/tests/qml/main.cpp ++++ b/tests/qml/main.cpp +@@ -35,7 +35,7 @@ + #include <QtQuickTest/quicktest.h> + #include <QSignalSpy> + +-#ifdef WITH_WEBENGINE ++#if WITH_WEBENGINE + #include <QtWebEngineCore> + #include <QtWebEngineQuick> + #endif +@@ -192,7 +192,7 @@ main(int argc, char** argv) + // Allow the user to enable fatal warnings for certain tests. + Utils::remove_argument(argv, argc, "--failonwarn", [&]() { qputenv("QT_FATAL_WARNINGS", "1"); }); + +-#ifdef WITH_WEBENGINE ++#if WITH_WEBENGINE + QtWebEngineQuick::initialize(); + #endif + QTEST_SET_MAIN_SOURCE_PATH diff --git a/gnu/packages/patches/jami-unbundle-dependencies.patch b/gnu/packages/patches/jami-unbundle-dependencies.patch index dab82b26cb..2732087daf 100644 --- a/gnu/packages/patches/jami-unbundle-dependencies.patch +++ b/gnu/packages/patches/jami-unbundle-dependencies.patch @@ -16,13 +16,14 @@ Change-Id: I637959fefce6a21b0ee73a793acb6c3c42dcdce0 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index 38e7a4e2..3f1bd599 100644 +index e802357f..6d2dccfb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -545,19 +545,33 @@ add_subdirectory(3rdparty/SortFilterProxyModel) +@@ -600,20 +600,34 @@ add_subdirectory(3rdparty/SortFilterProxyModel) set(SFPM_OBJECTS $<TARGET_OBJECTS:SortFilterProxyModel>) # md4c +-set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE) -set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE) -add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL) -list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src) @@ -34,6 +35,7 @@ index 38e7a4e2..3f1bd599 100644 + list(APPEND CLIENT_LIBS md4c::md4c-html) +else() + message("Using bundled md4c-html library") ++ set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE) + set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE) + add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL) + list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src) diff --git a/gnu/packages/patches/libarchive-remove-potential-backdoor.patch b/gnu/packages/patches/libarchive-remove-potential-backdoor.patch new file mode 100644 index 0000000000..2b9a9e2ffe --- /dev/null +++ b/gnu/packages/patches/libarchive-remove-potential-backdoor.patch @@ -0,0 +1,47 @@ +Remove code added by 'JiaT75', the malicious actor that backdoored `xz`: + +https://github.com/libarchive/libarchive/pull/2101 + +At libarchive, they are reviewing all code contributed by this actor: + +https://github.com/libarchive/libarchive/issues/2103 + +See the original disclosure and subsequent discussion for more +information about this incident: + +https://seclists.org/oss-sec/2024/q1/268 + +Patch copied from upstream source repository: + +https://github.com/libarchive/libarchive/pull/2101/commits/e200fd8abfb4cf895a1cab4d89b67e6eefe83942 + +From 6110e9c82d8ba830c3440f36b990483ceaaea52c Mon Sep 17 00:00:00 2001 +From: Ed Maste <emaste@freebsd.org> +Date: Fri, 29 Mar 2024 18:02:06 -0400 +Subject: [PATCH] tar: make error reporting more robust and use correct errno + (#2101) + +As discussed in #1609. +--- + tar/read.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/tar/read.c b/tar/read.c +index af3d3f42..a7f14a07 100644 +--- a/tar/read.c ++++ b/tar/read.c +@@ -371,8 +371,9 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer) + if (r != ARCHIVE_OK) { + if (!bsdtar->verbose) + safe_fprintf(stderr, "%s", archive_entry_pathname(entry)); +- fprintf(stderr, ": %s: ", archive_error_string(a)); +- fprintf(stderr, "%s", strerror(errno)); ++ safe_fprintf(stderr, ": %s: %s", ++ archive_error_string(a), ++ strerror(archive_errno(a))); + if (!bsdtar->verbose) + fprintf(stderr, "\n"); + bsdtar->return_value = 1; +-- +2.41.0 + diff --git a/gnu/packages/patches/opencolorio-fix-build-with-gcc11.patch b/gnu/packages/patches/opencolorio-fix-build-with-gcc11.patch deleted file mode 100644 index 06507db206..0000000000 --- a/gnu/packages/patches/opencolorio-fix-build-with-gcc11.patch +++ /dev/null @@ -1,37 +0,0 @@ -Fix build failure with GCC 11: - ------- -[...] -/tmp/guix-build-opencolorio-1.1.1.drv-0/source/src/core/ImageDesc.cpp:60:51: error: ‘this’ pointer is null [-Werror=nonnull] - 60 | os << "width=" << packedImg->getWidth() << ", "; - | ^ -/tmp/guix-build-opencolorio-1.1.1.drv-0/source/src/core/ImageDesc.cpp:274:10: note: in a call to non-static member function ‘long int OpenColorIO::v1::PackedImageDesc::getWidth() const’ - 274 | long PackedImageDesc::getWidth() const - | ^~~~~~~~~~~~~~~ -/tmp/guix-build-opencolorio-1.1.1.drv-0/source/src/core/ImageDesc.cpp:61:53: error: ‘this’ pointer is null [-Werror=nonnull] - 61 | os << "height=" << packedImg->getHeight() << ", "; - | ^ -/tmp/guix-build-opencolorio-1.1.1.drv-0/source/src/core/ImageDesc.cpp:279:10: note: in a call to non-static member function ‘long int OpenColorIO::v1::PackedImageDesc::getHeight() const’ - 279 | long PackedImageDesc::getHeight() const - | ^~~~~~~~~~~~~~~ -cc1plus: all warnings being treated as errors -[...] ------- - -Patch copied from Gentoo: - -https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7e726d850502018b6760da78dbd4a419603016b8 - -diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index 1eb691b6..cff9bd83 100644 ---- a/src/core/CMakeLists.txt -+++ b/src/core/CMakeLists.txt -@@ -23,8 +23,6 @@ if(WIN32) - if("${CMAKE_BUILD_TYPE}" STREQUAL "Release") - set(EXTERNAL_COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS} /WX") - endif() --else() -- set(EXTERNAL_COMPILE_FLAGS "${EXTERNAL_COMPILE_FLAGS} -Werror") - endif() - - # SHARED diff --git a/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch b/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch deleted file mode 100644 index 1af9868b9a..0000000000 --- a/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 1036d77b34a5fa15e56f516b81b9928006848cbd Mon Sep 17 00:00:00 2001 -From: Damien Miller <djm@mindrot.org> -Date: Fri, 22 Dec 2023 17:56:26 +1100 -Subject: [PATCH] better detection of broken -fzero-call-used-regs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -gcc 13.2.0 on ppc64le refuses to compile some function, including -cipher.c:compression_alg_list() with an error: - -> sorry, unimplemented: argument ‘used’ is not supportedcw -> for ‘-fzero-call-used-regs’ on this target - -This extends the autoconf will-it-work test with a similarly- -structured function that seems to catch this. - -Spotted/tested by Colin Watson; bz3645 ---- - -Taken from upsteam, and for Guix by jackhill@jackhill.us -Thanks Marcel van der Boom for noticing: https://issues.guix.gnu.org/67948#2 - -m4/openssh.m4 | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git a/m4/openssh.m4 b/m4/openssh.m4 -index 5d4c56280..033df501c 100644 ---- a/m4/openssh.m4 -+++ b/m4/openssh.m4 -@@ -20,18 +20,24 @@ char *f2(char *s, ...) { - va_end(args); - return strdup(ret); - } -+const char *f3(int s) { -+ return s ? "good" : "gooder"; -+} - int main(int argc, char **argv) { -- (void)argv; - char b[256], *cp; -+ const char *s; - /* Some math to catch -ftrapv problems in the toolchain */ - int i = 123 * argc, j = 456 + argc, k = 789 - argc; - float l = i * 2.1; - double m = l / 0.5; - long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; -+ (void)argv; - f(1); -- snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); -+ s = f3(f(2)); -+ snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); - if (write(1, b, 0) == -1) exit(0); -- cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o); -+ cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s); -+ if (write(1, cp, 0) == -1) exit(0); - free(cp); - /* - * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does --- -2.41.0 - diff --git a/gnu/packages/patches/qtbase-find-tools-in-PATH.patch b/gnu/packages/patches/qtbase-find-tools-in-PATH.patch new file mode 100644 index 0000000000..d5e38b09be --- /dev/null +++ b/gnu/packages/patches/qtbase-find-tools-in-PATH.patch @@ -0,0 +1,49 @@ +Patch retrieved from NixOS + +https://github.com/NixOS/nixpkgs/blob/93ecdaa1f34354c9476062dc4fe323b442c087d5/pkgs/development/libraries/qt-6/patches/0006-qtbase-find-tools-in-PATH.patch + +From a8b9fae710a2bd5e743f5e16364eaa8c38dbd784 Mon Sep 17 00:00:00 2001 +From: rewine <luhongxu@deepin.org> +Date: Wed, 29 Mar 2023 11:51:33 +0800 +Subject: [PATCH 06/11] qtbase-find-tools-in-PATH + +1. find qt's tools in `QTTOOLSPATH` env + qt assumes that all components use the same install prefix + we can't get the real prefix for qttools when build qtbase + we will add /libexec to `QTTOOLSPATH` in qtToolsHook + find_path will also search in 'PATH' by default + see `CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` + +2. disable tool_dependencies_enabled + We can guarantee the build order of qt components in nixpkgs + tools in qttools always build before qtdoc + qdoc_bin is not a build target now, since we find it in `QTTOOLSPATH` +--- + cmake/QtDocsHelpers.cmake | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/cmake/QtDocsHelpers.cmake b/cmake/QtDocsHelpers.cmake +index 48ed5a324bf..91d8d41fb1f 100644 +--- a/cmake/QtDocsHelpers.cmake ++++ b/cmake/QtDocsHelpers.cmake +@@ -47,9 +47,14 @@ function(qt_internal_add_docs) + set(doc_tools_libexec "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_LIBEXECDIR}") + endif() + +- set(qdoc_bin "${doc_tools_bin}/qdoc${CMAKE_EXECUTABLE_SUFFIX}") +- set(qtattributionsscanner_bin "${doc_tools_libexec}/qtattributionsscanner${CMAKE_EXECUTABLE_SUFFIX}") +- set(qhelpgenerator_bin "${doc_tools_libexec}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}") ++ set(tool_dependencies_enabled FALSE) ++ ++ find_path(qdoc_path name qdoc PATHS ENV QTTOOLSPATH) ++ find_path(qtattributionsscanner_path name qtattributionsscanner PATHS ENV QTTOOLSPATH) ++ find_path(qhelpgenerator_path name qhelpgenerator PATHS ENV QTTOOLSPATH) ++ set(qdoc_bin "${qdoc_path}/qdoc${CMAKE_EXECUTABLE_SUFFIX}") ++ set(qtattributionsscanner_bin "${qtattributionsscanner_path}/qtattributionsscanner${CMAKE_EXECUTABLE_SUFFIX}") ++ set(qhelpgenerator_bin "${qhelpgenerator_path}/qhelpgenerator${CMAKE_EXECUTABLE_SUFFIX}") + + get_target_property(target_type ${target} TYPE) + if (NOT target_type STREQUAL "INTERFACE_LIBRARY") +-- +2.42.0 + diff --git a/gnu/packages/patches/qtbase-qmake-fix-includedir.patch b/gnu/packages/patches/qtbase-qmake-fix-includedir.patch new file mode 100644 index 0000000000..766689c4fd --- /dev/null +++ b/gnu/packages/patches/qtbase-qmake-fix-includedir.patch @@ -0,0 +1,29 @@ +Patch retrieved from NixOS +https://github.com/NixOS/nixpkgs/blob/93ecdaa1f34354c9476062dc4fe323b442c087d5/pkgs/development/libraries/qt-6/patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch + +From 6088085d3074316dd74639fc6c1233e5862aff11 Mon Sep 17 00:00:00 2001 +From: Nick Cao <nickcao@nichi.co> +Date: Fri, 14 Apr 2023 09:34:46 +0800 +Subject: [PATCH 03/11] qtbase: qmake: fix includedir in generated pkg-config + +--- + qmake/generators/makefile.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp +index 11d2f0ff7df..c78ed0d3485 100644 +--- a/qmake/generators/makefile.cpp ++++ b/qmake/generators/makefile.cpp +@@ -3412,8 +3412,7 @@ MakefileGenerator::writePkgConfigFile() + << varGlue("QMAKE_PKGCONFIG_CFLAGS", "", " ", " ") + // << varGlue("DEFINES","-D"," -D"," ") + ; +- if (!project->values("QMAKE_DEFAULT_INCDIRS").contains(includeDir)) +- t << "-I${includedir}"; ++ t << "-I${includedir}"; + if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle") + && libDir != QLatin1String("/Library/Frameworks")) { + t << " -F${libdir}"; +-- +2.42.0 + diff --git a/gnu/packages/patches/qtbase-qmlimportscanner-qml-import-path.patch b/gnu/packages/patches/qtbase-qmlimportscanner-qml-import-path.patch new file mode 100644 index 0000000000..b73a1fba73 --- /dev/null +++ b/gnu/packages/patches/qtbase-qmlimportscanner-qml-import-path.patch @@ -0,0 +1,33 @@ +Retrieved from nixpkgs. +Modified to use QML_IMPORT_PATH instead of QML2_IMPORT_PATH. + +From d7a9a3b0ecdbb1b5829f25954d763d767f1c8794 Mon Sep 17 00:00:00 2001 +From: Nick Cao <nickcao@nichi.co> +Date: Tue, 10 Oct 2023 10:12:56 -0400 +Subject: [PATCH 07/11] qtbase: pass to qmlimportscanner the QML2_IMPORT_PATH + +--- + src/tools/macdeployqt/shared/shared.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp +index 2ae4f998944..ba10ae02bcd 100644 +--- a/src/tools/macdeployqt/shared/shared.cpp ++++ b/src/tools/macdeployqt/shared/shared.cpp +@@ -1297,6 +1297,13 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf + argumentList.append( "-importPath"); + argumentList.append(qmlImportsPath); + ++ // In a modularized installation of qt as we have in Nix, instead, we will ++ // read the paths from the environment, as they are spread in multiple ++ // locations and normally set in the environment like this ++ auto envQmlImportPaths = ::qgetenv("QML_IMPORT_PATH").split(':'); ++ for (const QString &importPath : envQmlImportPaths) ++ argumentList << "-importPath" << importPath; ++ + // run qmlimportscanner + QProcess qmlImportScanner; + qmlImportScanner.start(qmlImportScannerPath, argumentList); +-- +2.42.0 + diff --git a/gnu/packages/patches/qtbase-use-TZDIR.patch b/gnu/packages/patches/qtbase-use-TZDIR.patch deleted file mode 100644 index 98bf7493e9..0000000000 --- a/gnu/packages/patches/qtbase-use-TZDIR.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 1075606f8b2f9e153c82f8e50cbd69cea9c72e87 Mon Sep 17 00:00:00 2001 -From: Edward Welbourne <edward.welbourne@qt.io> -Date: Mon, 11 Sep 2023 11:41:39 +0200 -Subject: [PATCH] Support the TZDIR environment variable - -On Linux / glibc, this overrides the default system location for the -zone info. So check for files there first. Break out a function to -manage the trying of (now three) zoneinfo directories when opening a -file by name relative to there. - -Pick-to: 6.6 6.5 -Task-number: QTBUG-116017 -Change-Id: I1f97107aabd9015c0a5543639870f1d70654ca67 ---- -* Rebased on top of v6.5.2. - - src/corelib/time/qtimezoneprivate_tz.cpp | 73 ++++++++++++++++-------- - 1 file changed, 49 insertions(+), 24 deletions(-) - -diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp -index 067191d816..a8b2fc894e 100644 ---- a/src/corelib/time/qtimezoneprivate_tz.cpp -+++ b/src/corelib/time/qtimezoneprivate_tz.cpp -@@ -51,17 +51,41 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash; - - static bool isTzFile(const QString &name); - -+// Open a named file under the zone info directory: -+static bool openZoneInfo(QString name, QFile *file) -+{ -+ // At least on Linux / glibc (see man 3 tzset), $TZDIR overrides the system -+ // default location for zone info: -+ const QString tzdir = qEnvironmentVariable("TZDIR"); -+ if (!tzdir.isEmpty()) { -+ file->setFileName(QDir(tzdir).filePath(name)); -+ if (file->open(QIODevice::ReadOnly)) -+ return true; -+ } -+ // Try modern system path first: -+ constexpr auto zoneShare = "/usr/share/zoneinfo/"_L1; -+ if (tzdir != zoneShare && tzdir != zoneShare.chopped(1)) { -+ file->setFileName(zoneShare + name); -+ if (file->open(QIODevice::ReadOnly)) -+ return true; -+ } -+ // Fall back to legacy system path: -+ constexpr auto zoneLib = "/usr/lib/zoneinfo/"_L1; -+ if (tzdir != zoneLib && tzdir != zoneLib.chopped(1)) { -+ file->setFileName(zoneShare + name); -+ if (file->open(QIODevice::ReadOnly)) -+ return true; -+ } -+ return false; -+} -+ - // Parse zone.tab table for territory information, read directories to ensure we - // find all installed zones (many are omitted from zone.tab; even more from - // zone1970.tab). - static QTzTimeZoneHash loadTzTimeZones() - { -- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); -- if (!QFile::exists(path)) -- path = QStringLiteral("/usr/lib/zoneinfo/zone.tab"); -- -- QFile tzif(path); -- if (!tzif.open(QIODevice::ReadOnly)) -+ QFile tzif; -+ if (!openZoneInfo("zone.tab"_L1, &tzif)) - return QTzTimeZoneHash(); - - QTzTimeZoneHash zonesHash; -@@ -91,6 +115,7 @@ static QTzTimeZoneHash loadTzTimeZones() - } - } - -+ const QString path = tzif.fileName(); - const qsizetype cut = path.lastIndexOf(u'/'); - Q_ASSERT(cut > 0); - const QDir zoneDir = QDir(path.first(cut)); -@@ -761,20 +786,13 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::findEntry(const QByteArray &ianaId) - tzif.setFileName(QStringLiteral("/etc/localtime")); - if (!tzif.open(QIODevice::ReadOnly)) - return ret; -- } else { -- // Open named tz, try modern path first, if fails try legacy path -- tzif.setFileName("/usr/share/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId)); -- if (!tzif.open(QIODevice::ReadOnly)) { -- tzif.setFileName("/usr/lib/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId)); -- if (!tzif.open(QIODevice::ReadOnly)) { -- // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ -- auto check = validatePosixRule(ianaId); -- if (check.isValid) { -- ret.m_hasDst = check.hasDst; -- ret.m_posixRule = ianaId; -- } -- return ret; -- } -+ } else if (!openZoneInfo(QString::fromLocal8Bit(ianaId), &tzif)) { -+ // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ -+ auto check = validatePosixRule(ianaId); -+ if (check.isValid) { -+ ret.m_hasDst = check.hasDst; -+ ret.m_posixRule = ianaId; -+ return ret; - } - } - -@@ -1317,7 +1335,8 @@ private: - { - // On most distros /etc/localtime is a symlink to a real file so extract - // name from the path -- const auto zoneinfo = "/zoneinfo/"_L1; -+ const QString tzdir = qEnvironmentVariable("TZDIR"); -+ constexpr auto zoneinfo = "/zoneinfo/"_L1; - QString path = QStringLiteral("/etc/localtime"); - long iteration = getSymloopMax(); - // Symlink may point to another symlink etc. before being under zoneinfo/ -@@ -1325,9 +1344,15 @@ private: - // symlink, like America/Montreal pointing to America/Toronto - do { - path = QFile::symLinkTarget(path); -- int index = path.indexOf(zoneinfo); -- if (index >= 0) // Found zoneinfo file; extract zone name from path: -- return QStringView{ path }.mid(index + zoneinfo.size()).toUtf8(); -+ // If it's a zoneinfo file, extract the zone name from its path: -+ int index = tzdir.isEmpty() ? -1 : path.indexOf(tzdir); -+ if (index >= 0) { -+ const auto tail = QStringView{ path }.sliced(index + tzdir.size()).toUtf8(); -+ return tail.startsWith(u'/') ? tail.sliced(1) : tail; -+ } -+ index = path.indexOf(zoneinfo); -+ if (index >= 0) -+ return QStringView{ path }.sliced(index + zoneinfo.size()).toUtf8(); - } while (!path.isEmpty() && --iteration > 0); - - return QByteArray(); - -base-commit: af457a9f0f7eb1a2a7d11f495da508faab91a442 --- -2.41.0 - diff --git a/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch b/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch index 5f06ec53b4..df76fab910 100644 --- a/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch +++ b/gnu/packages/patches/qtdeclarative-disable-qmlcache.patch @@ -1,16 +1,31 @@ Retrieved from https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/development/libraries/qt-6/patches/qtdeclarative-default-disable-qmlcache.patch +From 2d561e0a80f2d123a7348187975ee845f9dcd9e0 Mon Sep 17 00:00:00 2001 +From: Nick Cao <nickcao@nichi.co> +Date: Tue, 10 Oct 2023 11:12:27 -0400 +Subject: [PATCH] qtdeclarative: disable qml disk cache + +--- + src/qml/jsruntime/qv4engine.cpp | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp -index 852cde9e..165f1b57 100644 +index d1b4c4fff6..50f8a07420 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp -@@ -2093,7 +2093,7 @@ void ExecutionEngine::registerModule(const QString &_name, const QJSValue &modul - - bool ExecutionEngine::diskCacheEnabled() const +@@ -2232,11 +2232,7 @@ ExecutionEngine::DiskCacheOptions ExecutionEngine::diskCacheOptions() const { -- return (!disableDiskCache() && !debugger()) || forceDiskCache(); -+ return forceDiskCache(); + if (forceDiskCache()) + return DiskCache::Enabled; +- if (disableDiskCache() || debugger()) +- return DiskCache::Disabled; +- static const DiskCacheOptions options = qmlGetConfigOption< +- DiskCacheOptions, transFormDiskCache>("QML_DISK_CACHE"); +- return options; ++ return DiskCache::Disabled; } void ExecutionEngine::callInContext(QV4::Function *function, QObject *self, +-- +2.42.0 diff --git a/gnu/packages/patches/xgboost-use-system-dmlc-core.patch b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch index 6b2a1651a5..cbc0feed1c 100644 --- a/gnu/packages/patches/xgboost-use-system-dmlc-core.patch +++ b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch @@ -1,13 +1,13 @@ -# This patch was imported from Debian: https://sources.debian.org/src/xgboost/1.5.1-1/debian/patches/cmake-dmlc-core.patch/ +# This patch was imported from Debian: https://sources.debian.org/patches/xgboost/1.7.4-1/cmake-dmlc-core.patch/ Index: xgboost/CMakeLists.txt =================================================================== --- xgboost.orig/CMakeLists.txt +++ xgboost/CMakeLists.txt -@@ -164,7 +164,9 @@ endif (USE_NCCL) - - # dmlc-core - msvc_use_static_runtime() +@@ -205,7 +205,9 @@ msvc_use_static_runtime() + if (FORCE_SHARED_CRT) + set(DMLC_FORCE_SHARED_CRT ON) + endif () -add_subdirectory(${xgboost_SOURCE_DIR}/dmlc-core) +add_library(dmlc SHARED IMPORTED) +find_library(DMLC_LIBRARY dmlc) @@ -15,7 +15,7 @@ Index: xgboost/CMakeLists.txt if (MSVC) if (TARGET dmlc_unit_tests) -@@ -222,7 +224,7 @@ set_target_properties(runxgboost PROPERT +@@ -267,7 +269,7 @@ set_target_properties(runxgboost PROPERT #-- End CLI for xgboost # Common setup for all targets @@ -24,7 +24,7 @@ Index: xgboost/CMakeLists.txt xgboost_target_properties(${target}) xgboost_target_link_libraries(${target}) xgboost_target_defs(${target}) -@@ -273,7 +275,7 @@ install(DIRECTORY ${xgboost_SOURCE_DIR}/ +@@ -318,7 +320,7 @@ install(DIRECTORY ${xgboost_SOURCE_DIR}/ # # https://github.com/dmlc/xgboost/issues/6085 if (BUILD_STATIC_LIB) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index eb2089790d..80b17098c7 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> -;;; Copyright © 2016-2022 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016-2022, 2024 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> ;;; Copyright © 2016, 2018, 2020, 2021 Roel Janssen <roel@gnu.org> @@ -8079,16 +8079,31 @@ of data.") (define-public perl-mozilla-ca (package (name "perl-mozilla-ca") - (version "20200520") + (version "20240313") (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/A/AB/ABH/Mozilla-CA-" + (uri (string-append "mirror://cpan/authors/id/L/LW/LWP/Mozilla-CA-" version ".tar.gz")) (sha256 (base32 - "09n7hwrh63c5gqvygqvvgvklcbvsm7g0p4nmq0b4mwhb64101jmk")))) + "1rwq2qb8f101ihq5gmdmr9vsnx7ybnln85489y4k761hks9p6j32")) + (snippet + #~(begin (use-modules (guix build utils)) + (delete-file "lib/Mozilla/CA/cacert.pem") + (substitute* "lib/Mozilla/CA.pm" + (("my \\$file.*") "my $file = $ENV{SSL_CERT_FILE};\n") + (("return.*") + (string-append + "if (!File::Spec->file_name_is_absolute($file)) {\n" + " $file = \"/etc/ssl/certs/ca-certificates.crt\";\n" + " }\n" + " return $file;\n")) + (("provides a copy of.*") + "provides a link to the user's or the system's SSL\n")))))) (build-system perl-build-system) + (arguments + (list #:tests? #f)) ; Tests rely on embedded cacert.pem. (home-page "https://metacpan.org/release/Mozilla-CA") (synopsis "Mozilla's CA cert bundle in PEM format") (description "@code{Mozilla::CA} provides a copy of Mozilla's bundle of diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index ed7f4abbb0..89c99a8881 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -276,14 +276,14 @@ colors, styles, options and details.") (define-public asymptote (package (name "asymptote") - (version "2.88") + (version "2.89") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/asymptote/" version "/asymptote-" version ".src.tgz")) (sha256 - (base32 "1fzm58md2kc32sj19bksnd8yzkg47z5pblkxp28r7vm67xs1mrqd")) + (base32 "0nvzlnabxjn74ybv3jns9vsr33prlvlg3i20hskz31agxss64kpn")) (modules '((guix build utils))) (snippet ;; Remove bundled RapidJSON. diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index b95f56729a..7eae40a220 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -58,14 +58,14 @@ (define-public a2ps (package (name "a2ps") - (version "4.15.5") + (version "4.15.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/a2ps/a2ps-" version ".tar.gz")) (sha256 (base32 - "0zys627j17dcqryzrbc473mxzwyshsbxq7j5cabn7hp70i0ipfw1")) + "1x5xdy8g5640bs11nsn7n15v5rb5bsvgi32v3lc6j6di3j09vzw7")) (modules '((guix build utils))) (snippet ;; Remove timestamp from the installed 'README' file. diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm index 2ea457cdba..76e29b6c90 100644 --- a/gnu/packages/python-build.scm +++ b/gnu/packages/python-build.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2015, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2015, 2020, 2023 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2020, 2023 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> @@ -260,6 +260,7 @@ Included are implementations of: (package (name "python-pip") (version "23.1") + (replacement python-pip/fixed) (source (origin (method url-fetch) @@ -277,6 +278,41 @@ Included are implementations of: Python Package Index (PyPI).") (license license:expat))) +(define python-pip/fixed + (package + (inherit python-pip) + (source (origin + (inherit (package-source python-pip)) + (snippet + #~(begin + (delete-file "src/pip/_vendor/certifi/cacert.pem") + (delete-file "src/pip/_vendor/certifi/core.py") + (with-output-to-file "src/pip/_vendor/certifi/core.py" + (lambda _ + (display "\"\"\" +certifi.py +~~~~~~~~~~ +This file is a Guix-specific version of core.py. + +This module returns the installation location of SSL_CERT_FILE or +/etc/ssl/certs/ca-certificates.crt, or its contents. +\"\"\" +import os + +_CA_CERTS = None + +try: + _CA_CERTS = os.environ [\"SSL_CERT_FILE\"] +except: + _CA_CERTS = os.path.join(\"/etc\", \"ssl\", \"certs\", \"ca-certificates.crt\") + +def where() -> str: + return _CA_CERTS + +def contents() -> str: + with open(where(), \"r\", encoding=\"ascii\") as data: + return data.read()"))))))))) + (define-public python-setuptools (package (name "python-setuptools") diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index 16e9fc7a4b..947dd189d3 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2020, 2022, 2023 Marius Bakke <marius@gnu.org> ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2023, 2024 Troy Figiel <troy@troyfigiel.com> +;;; Copyright © 2024 TakeV <takev@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -717,6 +718,26 @@ install: libbitshuffle.so wrapper. It provides a backport of the @code{Path} object.") (license license:expat))) +(define-public python-zipstream-ng + (package + (name "python-zipstream-ng") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "zipstream-ng" version)) + (sha256 + (base32 "1z4zdqqs2rg3z36khgj96bpggv34av337isfv7yxg32prawj687r")))) + (build-system pyproject-build-system) + (native-inputs + (list python-pytest python-pytest-cov)) + (home-page "https://github.com/pR0Ps/zipstream-ng") + (synopsis "Streamable zip file generator") + (description + "This package provides a modern and easy to use streamable zip file +generator") + (license license:lgpl3))) + (define-public python-zopfli (package (name "python-zopfli") diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 3e1472a6c9..d25059c86b 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -469,6 +469,7 @@ for example, for recording or replaying web content.") (package (name "python-certifi") (version "2022.6.15") + (replacement python-certifi/fixed) (source (origin (method url-fetch) (uri (pypi-uri "certifi" version)) @@ -484,6 +485,41 @@ for example, for recording or replaying web content.") is used by the Requests library to verify HTTPS requests.") (license license:asl2.0))) +(define python-certifi/fixed + (package + (inherit python-certifi) + (source (origin + (inherit (package-source python-certifi)) + (snippet + #~(begin + (delete-file "certifi/cacert.pem") + (delete-file "certifi/core.py") + (with-output-to-file "certifi/core.py" + (lambda _ + (display "\"\"\" +certifi.py +~~~~~~~~~~ +This file is a Guix-specific version of core.py. + +This module returns the installation location of SSL_CERT_FILE or +/etc/ssl/certs/ca-certificates.crt, or its contents. +\"\"\" +import os + +_CA_CERTS = None + +try: + _CA_CERTS = os.environ [\"SSL_CERT_FILE\"] +except: + _CA_CERTS = os.path.join(\"/etc\", \"ssl\", \"certs\", \"ca-certificates.crt\") + +def where() -> str: + return _CA_CERTS + +def contents() -> str: + with open(where(), \"r\", encoding=\"ascii\") as data: + return data.read()"))))))))) + (define-public python-cryptography-vectors (package (name "python-cryptography-vectors") diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 93d3b25272..862e101f6a 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016, 2022-2024 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016-2020, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2019, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2020, 2021, 2022, 2023, 2024 Vinicius Monego <monego@posteo.net> @@ -2287,6 +2287,26 @@ Python, from the Sheffield machine learning group. GPy implements a range of machine learning algorithms based on GPs.") (license license:bsd-3))) +(define-public python-pods + (package + (name "python-pods") + (version "0.1.14") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pods" version)) + (sha256 + (base32 "157xxs12qbnz1g6agy0a4dqhsa4msbqryrxpg5w3r3pb8gxdl4dh")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;no test suite + (propagated-inputs (list python-pandas python-pyyaml python-scipy + python-tables)) + (home-page "https://github.com/lawrennd/ods") + (synopsis "Python software for Open Data Science") + (description "This package provides utilities and tools for open data +science including tools for accessing data sets in Python.") + (license license:bsd-3))) + (define-public python-pyfma (package (name "python-pyfma") diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 268363f3d9..ecd93943f1 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -151,6 +151,7 @@ ;;; Copyright © 2024 Ian Eure <ian@retrospec.tv> ;;; Copyright © 2024 Adriel Dumas--Jondeau <leirda@disroot.org> ;;; Copyright © 2024 Navid Afkhami <navid.afkhami@mdc-berlin.de> +;;; Copyright © 2024 TakeV <takev@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1078,6 +1079,25 @@ names for 256 color terminal setups.") as functions or string constants to form colored terminal output.") (license license:expat))) +(define-public python-colorthief + (package + (name "python-colorthief") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "colorthief" version)) + (sha256 + (base32 "08bjsmmkihyksms2vgndslln02rvw56lkxz28d39qrnxbg4v1707")))) + (build-system pyproject-build-system) + (propagated-inputs (list python-pillow)) + (home-page "https://github.com/fengsp/color-thief-py") + (synopsis "Grab the color palette of an image") + (description + "This package provides methods to determine the dominant color +of an image, as well as constructing a representative color palette.") + (license license:bsd-3))) + (define-public python-construct-classes (package (name "python-construct-classes") @@ -20731,6 +20751,35 @@ implementation has been adapted, improved, and fixed from Molten.") running in.") (license license:isc))) +(define-public python-shshsh + (package + (name "python-shshsh") + (version "1.0.5") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/zqqqqz2000/shshsh") + (commit + "fd21c8696aebaae04507760c16cb45979291fef5"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wzqyj1a6jj6cyv5ymzy834qm2lyq80yy1kfz0q0zayq9gm1cj7f")))) + (build-system pyproject-build-system) + (native-inputs + (list python-poetry-core + python-pytest + python-tox)) + (home-page "https://github.com/zqqqqz2000/shshsh") + (synopsis "Write Shell commands simply and safely within Python") + (description "This package provides a way to write Shell commands from +within Python. Python functions can be chained together to process input +Bash control characters are escapted so that parameters can be passed +without worrying about command injection.") + (license license:expat))) + (define-public python-memcached (package (name "python-memcached") @@ -34972,6 +35021,28 @@ sources. For example, it allows you to have all your casting and parsing rules in a single place.") (license license:bsd-3))) +(define-public python-iterable-io + (package + (name "python-iterable-io") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "iterable-io" version)) + (sha256 + (base32 "0g4cn522n4dv6ly8pwf97dc62rr4f7my38v0bh6vmac7jmrip7pv")))) + (build-system pyproject-build-system) + (home-page "https://github.com/pR0Ps/iterable-io") + (synopsis "Adapt generators and other iterables to a file-like interface") + (description + "@code{iterable-io} is a small Python library that provides an adapter so +that it's possible to read from +@url{https://docs.python.org/3/glossary.html#term-iterable,iterable} objects +in the same way as +@url{https://docs.python.org/3/glossary.html#term-file-object,file-like} +objects.") + (license license:lgpl3))) + (define-public python-iteround (package (name "python-iteround") diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 12a5148cb1..5df25ac165 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2015, 2016, 2017, 2021 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com> -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2015-2020, 2023 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2017 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org> @@ -96,6 +96,7 @@ #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix search-paths) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) @@ -424,6 +425,7 @@ data types.") (inherit python-2) (name "python") (version "3.10.7") + (replacement python-3.10/fixed) (source (origin (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" @@ -982,6 +984,80 @@ data types.") (properties '((cpe-name . "python"))) (license license:psfl))) +(define python-3.10/fixed + (package + (inherit python-3.10) + (arguments + (substitute-keyword-arguments (package-arguments python-3.10) + ((#:phases phases) + #~(modify-phases #$phases + ;; Also remove the bundled CA certificates. + ;; TODO: Rename this phase when merging back into python. + (replace 'remove-windows-binaries + (lambda _ + ;; Delete .exe from embedded .whl (zip) files + (for-each + (lambda (whl) + (let ((dir "whl-content") + (circa-1980 (* 10 366 24 60 60))) + (mkdir-p dir) + (with-directory-excursion dir + (let ((whl (string-append "../" whl))) + (invoke "unzip" whl) + (for-each delete-file + (find-files "." "\\.exe$")) + (delete-file whl) + + ;; Search for cacert.pem, delete it, and rewrite the + ;; file which directs python to look for it. + (let ((cacert (find-files "." "cacert\\.pem"))) + (unless (null? cacert) + (let ((certifi (dirname (car cacert)))) + (delete-file (string-append certifi "/cacert.pem")) + (delete-file (string-append certifi "/core.py")) + (with-output-to-file (string-append certifi "/core.py") + (lambda _ + (display "\"\"\" +certifi.py +~~~~~~~~~~ +This file is a Guix-specific version of core.py. + +This module returns the installation location of SSL_CERT_FILE or +/etc/ssl/certs/ca-certificates.crt, or its contents. +\"\"\" +import os + +_CA_CERTS = None + +try: + _CA_CERTS = os.environ [\"SSL_CERT_FILE\"] +except: + _CA_CERTS = os.path.join(\"/etc\", \"ssl\", \"certs\", \"ca-certificates.crt\") + +def where() -> str: + return _CA_CERTS + +def contents() -> str: + with open(where(), \"r\", encoding=\"ascii\") as data: + return data.read()")))))) + + ;; Reset timestamps to prevent them from ending + ;; up in the Zip archive. + (ftw "." (lambda (file stat flag) + (utime file circa-1980 circa-1980) + #t)) + (apply invoke "zip" "-X" whl + (find-files "." #:directories? #t)))) + (delete-file-recursively dir))) + (find-files "Lib/ensurepip" "\\.whl$")))))))) + (native-search-paths + (list (guix-pythonpath-search-path (package-version python-3.10)) + $SSL_CERT_FILE + ;; Used to locate tzdata by the zoneinfo module introduced in + ;; Python 3.9. + (search-path-specification + (variable "PYTHONTZPATH") + (files (list "share/zoneinfo"))))))) ;; Next 3.x version. (define-public python-next python-3.12) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 5866d33394..13af841455 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -28,8 +28,9 @@ ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2022 Yash Tiwari <yasht@mailbox.org> ;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com> -;;; Copyright © 2022 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2022, 2024 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2023 Herman Rimm <herman@rimm.ee> +;;; Copyright © 2024 Foundation Devices, Inc. <hello@foundation.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -67,6 +68,7 @@ #:use-module (gnu packages bash) #:use-module (gnu packages base) #:use-module (gnu packages bison) + #:use-module (gnu packages crypto) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) @@ -99,6 +101,7 @@ #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) + #:use-module (gnu packages logging) #:use-module (gnu packages maths) #:use-module (gnu packages markup) #:use-module (gnu packages networking) @@ -110,6 +113,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages pretty-print) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-build) @@ -249,6 +253,64 @@ window managers, that don't provide Qt integration by themselves.") (home-page "https://qt5ct.sourceforge.io/") (license license:bsd-2))) +(define-public kddockwidgets + (package + (name "kddockwidgets") + (version "2.0.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KDAB/KDDockWidgets") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1fcmfz9my3219r0kh2y8yfvq372pd65z4s6hm0js7j8qb47lr02p")))) + (build-system cmake-build-system) + (arguments (list #:configure-flags #~(list "-DKDDockWidgets_TESTS=ON"))) + (inputs + (list fmt + nlohmann-json + qtbase-5 + qtdeclarative-5 + qtquickcontrols2-5 + qtx11extras + spdlog)) + (home-page "https://github.com/KDAB/KDDockWidgets") + (synopsis "KDAB's Dock Widget Framework for Qt") + (description "KDDockWidgets is a Qt dock widget library suitable for +replacing QDockWidget and implementing advanced functionalities missing in +Qt. Some of its features include: +@itemize +@item Advanced docking that QDockWidget doesn't support +@item Layout engine honouring size constraints and some size policies +@item Lazy separator resize +@item Reordering tabs with mouse +@item Partial layout save/restore, affecting only a chosen subset +@item Double-click on title bar to maximize +@item Double-click on separator to distribute equally +@item Show close button on tabs +@item Allow to make a dock widget non-closable and/or non-dockable +@item Optional minimize and maximize button on the title bar +@item FloatingWindows can be utility windows or full native ones. +@end itemize") + (license (list license:gpl2 license:gpl3)))) ;dual-licensed + +(define-public kddockwidgets-1 + (package + (inherit kddockwidgets) + (name "kddockwidgets") + (version "1.7.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KDAB/KDDockWidgets") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bz08f1fv3qbza101q0q0w70nd67z3h6azs5wr3ypmva9kvfg4ck")))))) + (define-public kvantum (package (name "kvantum") @@ -654,27 +716,28 @@ developers using C++ or QML, a CSS & JavaScript like language.") (package (inherit qtbase-5) (name "qtbase") - (version "6.5.2") + (version "6.6.3") (source (origin (inherit (package-source qtbase-5)) (uri (qt-url name version)) (sha256 (base32 - "0s8jwzdcv97dfy8n3jjm8zzvllv380l73mwdva7rs2nqnhlwgd1x")) + "0qklvzg242ilxw29jd2vsz6s8ni4dpraf4ghfa4dykhc705zv4q4")) (modules '((guix build utils))) (snippet ;; corelib uses bundled harfbuzz, md4, md5, sha3 '(with-directory-excursion "src/3rdparty" (for-each delete-file-recursively - ;; The bundled pcre2 copy is kept, as its headers - ;; are required by some internal bootstrap target - ;; used for the tools. (list "double-conversion" "freetype" "harfbuzz-ng" - "libpng" "libjpeg" "sqlite" "xcb" "zlib")))) - (patches (search-patches "qtbase-use-TZDIR.patch" - "qtbase-moc-ignore-gcc-macro.patch" - "qtbase-absolute-runpath.patch" - "qtbase-qmake-use-libname.patch")))) + "pcre2" "md4c" "libpng" "libjpeg" + "sqlite" "xcb" "zlib")))) + (patches + (search-patches "qtbase-moc-ignore-gcc-macro.patch" + "qtbase-absolute-runpath.patch" + "qtbase-qmake-use-libname.patch" + "qtbase-qmlimportscanner-qml-import-path.patch" + "qtbase-find-tools-in-PATH.patch" + "qtbase-qmake-fix-includedir.patch")))) (build-system cmake-build-system) (arguments (substitute-keyword-arguments (package-arguments qtbase-5) @@ -752,6 +815,12 @@ developers using C++ or QML, a CSS & JavaScript like language.") "qmake/library/qmakebuiltins.cpp") (("/bin/sh") (search-input-file inputs "bin/bash"))) + + (substitute* "tests/auto/tools/qt_cmake_create/\ +tst_qt_cmake_create.cpp" + (("/bin/sh") + (which "sh"))) + (substitute* "src/corelib/CMakeLists.txt" (("/bin/ls") (search-input-file inputs "bin/ls"))))) @@ -781,7 +850,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") ;; 'qtbase-qmake-use-libname.patch' patch. (setenv "LIBRARY_PATH" (string-append #$output "/lib:" (getenv "LIBRARY_PATH"))) - (setenv "QML2_IMPORT_PATH" + (setenv "QML_IMPORT_PATH" (string-append #$output "/lib/qt6/qml")) (setenv "QT_PLUGIN_PATH" (string-append #$output "/lib/qt6/plugins")) @@ -814,6 +883,38 @@ developers using C++ or QML, a CSS & JavaScript like language.") (string-join (append (list + ;; The 'tst_qdialogbuttonbox' may fail non-deterministically + ;; (see: https://bugreports.qt.io/browse/QTBUG-123939). + "tst_qdialogbuttonbox" + + ;; The 'test_standalone_test' fails with a + ;; "get_property could not find TARGET Qt6::Core" error + ;; (see: https://bugreports.qt.io/browse/QTBUG-123940). + "test_standalone_test" + + ;; The 'test_collecting_plugins' fails with a "Unknown + ;; platform linux-g++" error (see: + ;; https://bugreports.qt.io/browse/QTBUG-123941). + "test_collecting_plugins" + + ;; The 'tst_selftests' fails with the following error: + ;; with expansion: + ;; false + ;; with messages: + ;; test := "keyboard" + ;; arguments := QList("-o", "-,tap") + ;; Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. + ;; Qt depends on a UTF-8 locale, but has failed to switch to one. + ;; If this causes problems, reconfigure your locale. See the locale(1) manual + ;; for more information. + + ;; See https://bugreports.qt.io/browse/QTBUG-113371 + ;; Adding glibc-utf8-locales to native-inpus is no help. + ;; TODO: when core-updates is merged, check again. + "tst_selftests" + + ;; The 'tst_qsystemsemaphore' test sometimes fails. + "tst_qsystemsemaphore" ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE". "tst_moc" @@ -912,7 +1013,11 @@ developers using C++ or QML, a CSS & JavaScript like language.") ;; "'Unable to fetch row' || 'database is ;; locked'" (see: ;; https://bugreports.qt.io/browse/QTBUG-117114). - "tst_qsqlthread"))) + "tst_qsqlthread" + + ;; The 'tst_qxmlstream' can time out (see: + ;; https://bugreports.qt.io/projects/QTBUG/issues/QTBUG-123778). + "tst_qxmlstream"))) ((target-x86-32?) #~((list ;; QCOMPARE(qRound(actual), expected) returned TRUE @@ -984,6 +1089,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") bash-minimal coreutils-minimal md4c + libb2 libice libsm libxcb @@ -995,7 +1101,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (variable "QMAKEPATH") (files '("lib/qt6"))) (search-path-specification - (variable "QML2_IMPORT_PATH") + (variable "QML_IMPORT_PATH") (files '("lib/qt6/qml"))) (search-path-specification (variable "QT_PLUGIN_PATH") @@ -1074,13 +1180,13 @@ HostData=lib/qt5" (define-public qt5compat (package (name "qt5compat") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "1i4izabbmf1dayzlj1miz7hsm4cy0qb7i72pwyl2fp05w8pf9axr")))) + "02zcrrh6rq5p6bqix5nk2h22rfqdrf4d0h7y4rva5zmbbr7czhk8")))) (build-system cmake-build-system) (arguments (list @@ -1172,13 +1278,13 @@ HostData=lib/qt5 (define-public qtsvg (package (name "qtsvg") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "18v337lfk8krg0hff5jx6fi7gn6x3djn03x3psrhlbmgjc8crd28")))) + "1ir57bis27whq7bwqykk1qlxy0522k4ia39brxayjmfadrbixjsa")))) (build-system cmake-build-system) (arguments (list @@ -1231,14 +1337,14 @@ support for MNG, TGA, TIFF and WBMP image formats."))) (define-public qtimageformats (package (name "qtimageformats") - (version "6.5.2") + (version "6.6.3") (source (origin (inherit (package-source qtimageformats-5)) (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "0hv7mkn72126rkhy5gmjmbvzy7v17mkk3q2pkmzy99f64j4w1q5a")))) + "0z328i6fix1qdklfbs1w4dsr64zavjj5kzqvzipww0v62xhfm99w")))) (build-system cmake-build-system) (arguments (list @@ -1406,14 +1512,14 @@ with JavaScript and C++."))) (define-public qtdeclarative (package (name "qtdeclarative") - (version "6.5.2") + (version "6.6.3") ;; TODO: Package 'masm' and unbundle from sources. (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "06c7xfqn2a5s2m8j1bcvx3pyjqg1rgqkjvp49737gb4z9vjiz8gk")) + "1wwjlwjb3hnlpai4rrrdsm096a6ahb1izs3524r79jpjzhn7n805")) (patches (search-patches "qtdeclarative-disable-qmlcache.patch")))) (outputs '("out" "debug")) (build-system cmake-build-system) @@ -1462,7 +1568,7 @@ with JavaScript and C++."))) (when tests? ;; The tests expect to find the modules provided by this ;; package; extend the environment variables needed to do so. - (setenv "QML2_IMPORT_PATH" + (setenv "QML_IMPORT_PATH" (string-append #$output "/lib/qt6/qml")) (setenv "QT_PLUGIN_PATH" (string-append #$output "/lib/qt6/plugins:" @@ -1483,6 +1589,10 @@ with JavaScript and C++."))) "(" (string-join (list + ;; The 'tst_qmltyperegistrar' tests may fail + ;; non-deterministically (see: + ;; https://bugreports.qt.io/browse/QTBUG-123634). + "tst_qmltyperegistrar" ;; This test is marked as flaky upstream (see: ;; https://bugreports.qt.io/browse/QTBUG-101488). "tst_qquickfiledialogimpl" @@ -1517,7 +1627,7 @@ with JavaScript and C++."))) ;; These tests fail starting with 6.5.2 (see: ;; https://bugreports.qt.io/browse/QTBUG-116019). They ;; appear to fail because of attempting to load QML from - ;; elsewhere than from QML2_IMPORT_PATH. + ;; elsewhere than from QML_IMPORT_PATH. "cmake_test_common_import_path" "tst_qqmlcomponent" "tst_qmllint" @@ -1525,7 +1635,11 @@ with JavaScript and C++."))) "tst_dom_all" "tst_qmlls" "tst_qmllscompletions" - ) "|") + + ;; This test fails starting with 6.6.3 (see: + ;; https://bugreports.qt.io/browse/QTBUG-123748), for + ;; unknown reasons. + "tst_qquickiconimage") "|") ")"))))) (add-after 'install 'delete-installed-tests (lambda _ @@ -1599,13 +1713,13 @@ consume data received from the server, or both."))) (define-public qtwebsockets (package (name "qtwebsockets") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "0xjwifxj2ssshys6f6kjr6ri2vq1wfshxky6mcscjm7vvyqdfjr0")))) + "0dm066lv3n97ril9iyd5xn8j13m6r7xp844aagj6dpclaxv83x0n")))) (build-system cmake-build-system) (arguments (list @@ -1615,9 +1729,9 @@ consume data received from the server, or both."))) (add-after 'install 'prepare-for-tests (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") - (setenv "QML2_IMPORT_PATH" + (setenv "QML_IMPORT_PATH" (string-append #$output "/lib/qt6/qml:" - (getenv "QML2_IMPORT_PATH"))))) + (getenv "QML_IMPORT_PATH"))))) (add-after 'prepare-for-tests 'check (assoc-ref %standard-phases 'check)) (add-after 'check 'delete-installed-tests @@ -1637,8 +1751,26 @@ consume data received from the server, or both.") (define-public qtsensors (package - (inherit qtsvg-5) + (inherit qtsvg) (name "qtsensors") + (version "6.6.3") + (source (origin + (method url-fetch) + (uri (qt-url name version)) + (sha256 + (base32 + "0r9p3lm159pji29vq9kii42jkz4rg15hqh6zlq9442i58a0ayddj")))) + (native-inputs (list qtdeclarative)) + (inputs (list qtbase)) + (synopsis "Qt Sensors module") + (description "The Qt Sensors API provides access to sensor hardware via QML +and C++ interfaces. The Qt Sensors API also provides a motion gesture +recognition API for devices."))) + +(define-public qtsensors-5 + (package + (inherit qtsvg-5) + (name "qtsensors-5") (version "5.15.10") (source (origin (method url-fetch) @@ -1715,7 +1847,7 @@ set of plugins for interacting with pulseaudio and GStreamer."))) (define-public qtshadertools (package (name "qtshadertools") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) @@ -1723,7 +1855,7 @@ set of plugins for interacting with pulseaudio and GStreamer."))) ;; sources. (sha256 (base32 - "0g8aziqhds2fkx11y4p2akmyn2p1qqf2fjxv72f9pibnhpdv0gya")))) + "1rm17hyhq244zskq3ar3h22qjd5dshy84nnyq1ivhg5k7gb0j2cc")))) (build-system cmake-build-system) (arguments (list @@ -1744,13 +1876,13 @@ Vulkan, OpenGL and other main graphic APIs.") (define-public qtmultimedia (package (name "qtmultimedia") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "0xc9k4mlncscxqbp8q46yjd89k4jb8j0ggbi5ad874lycym013wl")) + "1ciswpv8p71j9hwwdhfr5pmsrnizlaijp0dnyc99lk5is8qgh05y")) (modules '((guix build utils))) (snippet '(begin @@ -1775,7 +1907,13 @@ Vulkan, OpenGL and other main graphic APIs.") ;; session bus, which requires an X11 server, and then is still ;; unhappy). (substitute* "tests/auto/CMakeLists.txt" - (("add_subdirectory\\(integration)") "")))) + (("add_subdirectory\\(integration)") "")) + ;; The "qvideoframecolormanagement" tests fail (image + ;; comparisons). A warning right before the failures read "No + ;; RHI backend. Using CPU conversion." (see: + ;; https://bugreports.qt.io/browse/QTBUG-123749). + (substitute* "tests/auto/unit/multimedia/CMakeLists.txt" + (("add_subdirectory\\(qvideoframecolormanagement\\)") "")))) (add-before 'check 'prepare-for-tests (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen"))) @@ -1865,13 +2003,13 @@ compositor libraries."))) (define-public qtwayland (package (name "qtwayland") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 - (base32 "16iwar19sgjvxgmbr6hmd3hsxp6ahdjwl1lra2wapl3zzf3bw81h")))) + (base32 "0gamcqpl302wlznfnlcg9vlnnhfpxgjnz05prwc9wpy0xh7wqvm9")))) (build-system cmake-build-system) (arguments (list #:configure-flags #~(list "-DQT_BUILD_TESTS=ON") @@ -1888,6 +2026,7 @@ compositor libraries."))) (("QTRY_COMPARE\\(bufferSpy\\.size\\(\\), 1\\);") "")))) (add-before 'check 'set-test-environment (lambda _ + (setenv "XDG_RUNTIME_DIR" (getcwd)) ;; Do not fail just because /etc/machine-id is missing. (setenv "DBUS_FATAL_WARNINGS" "0") ;; Make Qt render "offscreen", required for tests. @@ -1916,7 +2055,7 @@ compositor libraries.") (home-page (package-home-page qtbase)) (license (package-license qtbase)))) -(define-public qtserialport +(define-public qtserialport-5 (package (inherit qtsvg-5) (name "qtserialport") @@ -1947,6 +2086,38 @@ compositor libraries.") (description "The Qt Serial Port module provides the library for interacting with serial ports from within Qt."))) +(define-public qtserialport + (package + (name "qtserialport") + (version "6.6.3") + (source + (origin + (method url-fetch) + (uri (qt-url name version)) + (sha256 + (base32 "0dywalgafvxi2jgdv9dk22hwwd8qsgk5xfybh75n3njmwmwnarg1")))) + (build-system cmake-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-dlopen-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/serialport/qtudev_p.h" + ;; Use the absolute paths for dynamically loaded libs, + ;; otherwise the lib will be searched in LD_LIBRARY_PATH + ;; which typically is not set in guix. + (("setFileNameAndVersion\\(QStringLiteral\\(\"udev\")") + (format #f "setFileNameAndVersion(QStringLiteral(~s))" + (string-append #$(this-package-input "eudev") + "/lib/libudev"))))))))) + (native-inputs (list pkg-config)) + (inputs (list qtbase eudev)) + (home-page (package-home-page qtbase)) + (synopsis "Qt Serial Port module") + (description "The Qt Serial Port module provides the library for +interacting with serial ports from within Qt.") + (license (package-license qtbase)))) + (define-public qtserialbus (package (inherit qtsvg-5) @@ -1969,7 +2140,7 @@ interacting with serial ports from within Qt."))) (format #f "QStringLiteral(~s)" (search-input-file inputs "lib/libsocketcan.so")))))))))) - (inputs (list libsocketcan qtbase-5 qtserialport)) + (inputs (list libsocketcan qtbase-5 qtserialport-5)) (synopsis "Qt Serial Bus module") (description "The Qt Serial Bus API provides classes and functions to access the various industrial serial buses and protocols, such as CAN, ModBus, @@ -1996,13 +2167,13 @@ popular web engines, Qt WebKit 2 and Qt WebEngine."))) (define-public qtwebchannel (package (name "qtwebchannel") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "0qwfnwva7v5f2g5is17yy66mnmc9c1yf9aagaw5qanskdvxdk261")))) + "0cwcf4pri901piyj0lvqmks9l84di9rcafnfgrmgg5mls7jjlyvw")))) (build-system cmake-build-system) (arguments (list @@ -2012,9 +2183,9 @@ popular web engines, Qt WebKit 2 and Qt WebEngine."))) (add-after 'install 'prepare-for-tests (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") - (setenv "QML2_IMPORT_PATH" + (setenv "QML_IMPORT_PATH" (string-append #$output "/lib/qt6/qml:" - (getenv "QML2_IMPORT_PATH"))))) + (getenv "QML_IMPORT_PATH"))))) (add-after 'prepare-for-tests 'check (assoc-ref %standard-phases 'check)) (add-after 'check 'delete-installed-tests @@ -2080,13 +2251,13 @@ native APIs where it makes sense."))) (define-public qtlanguageserver (package (name "qtlanguageserver") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "196iicwpqca2ydpca41qs6aqxxq8ycknw6lm2v00h1w3m86frdbk")))) + "136gyvkzm6skdv5yhyy4nqhbczfc2mn4nbr9hvpkpljb0awv888h")))) (build-system cmake-build-system) (arguments (list #:phases #~(modify-phases %standard-phases @@ -2120,7 +2291,7 @@ Server Protocol (LSP) for Qt.") (add-before 'check 'pre-check (lambda _ (setenv "HOME" "/tmp"))))))) - (native-inputs (list perl qtdeclarative-5 qtquickcontrols-5 qtserialport)) + (native-inputs (list perl qtdeclarative-5 qtquickcontrols-5 qtserialport-5)) (inputs (list icu4c openssl qtbase-5 zlib)) (synopsis "Qt Location and Positioning modules") (description "The Qt Location module provides an interface for location, @@ -2129,13 +2300,13 @@ positioning and geolocation plugins."))) (define-public qtlottie (package (name "qtlottie") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "16z8fhaa40ig0cggb689zf8j3cid6fk6pmh91b8342ymy1fdqfh0")))) + "1d0fjb0080wnd71f50zwal1b504iimln9mpnb3sc5yznmv8gm4cq")))) (build-system cmake-build-system) (arguments (list @@ -2146,9 +2317,9 @@ positioning and geolocation plugins."))) (add-after 'install 'prepare-for-tests (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") - (setenv "QML2_IMPORT_PATH" + (setenv "QML_IMPORT_PATH" (string-append #$output "/lib/qt6/qml:" - (getenv "QML2_IMPORT_PATH")))))))) + (getenv "QML_IMPORT_PATH")))))))) (native-inputs (list perl)) (inputs (list libxkbcommon qtbase qtdeclarative)) (home-page (package-home-page qtbase)) @@ -2193,13 +2364,13 @@ that helps in Qt development."))) (define-public qttools (package (name "qttools") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "0ha3v488vnm4pgdpyjgf859sak0z2fwmbgcyivcd93qxflign7sm")))) + "1h0vz46mpvzbm5w6sgpk0b3mqkn278l45arhxxk41dwc5n14qvda")))) (build-system cmake-build-system) (arguments (list @@ -2220,7 +2391,7 @@ that helps in Qt development."))) (native-inputs (list perl qtdeclarative vulkan-headers)) ;; Use clang-15, which is built using as a single shared library, which is ;; what the build system of qttools expects. - (inputs (list clang-15 libxkbcommon mesa qtbase)) + (inputs (list clang-15 libxkbcommon mesa qtbase `(,zstd "lib"))) (home-page (package-home-page qtbase)) (synopsis "Qt Tools and Designer modules") (description "The Qt Tools module provides a set of applications to browse @@ -2233,13 +2404,13 @@ that helps in Qt development.") (define-public qttranslations (package (name "qttranslations") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "1sxy2ljn5ajvn4yjb8fx86l56viyvqh5r9hf5x67azkmgrilaz1k")))) + "1kvkrwbgby4i69dpxbxxcv0qbsz69n6icpyr4wcf8qm2r4m5zqqj")))) (build-system cmake-build-system) (arguments (list #:tests? #f)) (native-inputs (list qtbase qttools)) @@ -2391,13 +2562,13 @@ also contains functionality to support data models and executable content."))) (define-public qtscxml (package (name "qtscxml") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "1jxx9p7zi40r990ky991xd43mv6i8hdpnj2fhl7sf4q9fpng4c58")) + "1dbcw4qnss5rif97gdcimyzl3jqa508yph611dvvhc1xn16nl6qg")) (modules '((guix build utils))) (snippet '(begin @@ -2413,9 +2584,9 @@ also contains functionality to support data models and executable content."))) (lambda _ (setenv "ARGS" "-E tst_scion") (setenv "QT_QPA_PLATFORM" "offscreen") - (setenv "QML2_IMPORT_PATH" + (setenv "QML_IMPORT_PATH" (string-append #$output "/lib/qt6/qml:" - (getenv "QML2_IMPORT_PATH")))))))) + (getenv "QML_IMPORT_PATH")))))))) (build-system cmake-build-system) (inputs (list qtbase qtdeclarative libxkbcommon)) (synopsis "Qt SCXML module") @@ -2430,13 +2601,13 @@ also contains functionality to support data models and executable content.") (define-public qtpositioning (package (name "qtpositioning") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "1yhlfs8izc054qv1krf5qv6zzjlvmz013h74fwamn74dfh1kyjbh")))) + "1frzzndsscb6iqschklks2l17ppnjpnx1lq1cypnq3x0598bcdws")))) (build-system cmake-build-system) (arguments (list @@ -2543,13 +2714,13 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt."))) (define-public qtnetworkauth (package (name "qtnetworkauth") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "0g18kh3zhcfi9ni8cqbbjdc1l6jf99ijv5shcl42jk6219b4pk2f")))) + "153mpg4hv3nclcdrkbzkalg4xf5k6r64fj003b725zyp885s7fax")))) (build-system cmake-build-system) (arguments (list #:configure-flags #~(list "-DQT_BUILD_TESTS=ON"))) (native-inputs (list perl)) @@ -2563,13 +2734,13 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt.") (define-public qtremoteobjects (package (name "qtremoteobjects") - (version "6.5.2") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "0k29sk02n54vj1w6vh6xycsjpyfqlijc13fnxh1q7wpgg4gizx60")))) + "16bd4zd3yfzlzk087qphphsh8hv38q3a57n1yknvkc5fchzmfzjz")))) (build-system cmake-build-system) (arguments (list @@ -2584,9 +2755,9 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt.") (assoc-ref %standard-phases 'check)) (add-before 'check 'prepare-for-tests (lambda _ - (setenv "QML2_IMPORT_PATH" + (setenv "QML_IMPORT_PATH" (string-append #$output "/lib/qt6/qml:" - (getenv "QML2_IMPORT_PATH")))))))) + (getenv "QML_IMPORT_PATH")))))))) (native-inputs (list perl vulkan-headers)) (inputs (list libxkbcommon qtbase qtdeclarative)) (synopsis "Qt Remote Objects module") @@ -2597,7 +2768,7 @@ processes or computers.") (home-page (package-home-page qtbase)) (license (package-license qtbase)))) -(define-public qtspeech +(define-public qtspeech-5 (package (inherit qtsvg-5) (name "qtspeech") @@ -2622,6 +2793,50 @@ the end-user is driving and cannot attend the incoming messages on the phone. In such a scenario, the messaging application can read out the incoming message."))) +(define-public qtspeech + (package + (name "qtspeech") + (version "6.6.3") + (source (origin + (method url-fetch) + (uri (qt-url name version)) + (sha256 + (base32 + "1yh3r5zbhgwkjgs7yk6iv2w23766n1i4z8vjkkw5awdixx3gfa76")))) + (build-system cmake-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (delete 'check) ;move after the install phase + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'check 'set-display + (lambda _ + ;; Make Qt render "offscreen", required for tests. + (setenv "QT_QPA_PLATFORM" "offscreen"))) + (add-before 'check 'prepare-for-tests + (lambda* (#:key outputs #:allow-other-keys) + (setenv "QML_IMPORT_PATH" + (string-append (assoc-ref outputs "out") + "/lib/qt6/qml:" + (getenv "QML_IMPORT_PATH"))))) + (add-after 'install 'delete-installed-tests + (lambda _ + (delete-file-recursively + (string-append #$output "/tests"))))))) + (propagated-inputs (list qtmultimedia)) + (inputs (list qtbase qtdeclarative)) + (synopsis "Qt Speech module") + (description "The Qt Speech module enables a Qt application to support +accessibility features such as text-to-speech, which is useful for end-users +who are visually challenged or cannot access the application for whatever +reason. The most common use case where text-to-speech comes in handy is when +the end-user is driving and cannot attend the incoming messages on the phone. +In such a scenario, the messaging application can read out the incoming +message.") + (home-page (package-home-page qtbase)) + (license (package-license qtbase)))) + (define-public qtvirtualkeyboard-5 (package (inherit qtsvg-5) @@ -3081,14 +3296,14 @@ and binaries removed, and adds modular support for using system libraries.") (define-public qtwebengine (package (name "qtwebengine") - (version "6.5.3") + (version "6.6.3") (source (origin (method url-fetch) (uri (qt-url name version)) (sha256 (base32 - "1ra5hyyg4vymp8pgzv08smjc3fl1axdavnkpj1i5zxym1ndww513")) + "016qvbmdja2abajvsznnjdvblrmzgvs8s2dzlxws30hvna1xqavw")) (modules '((ice-9 ftw) (ice-9 match) (srfi srfi-1) @@ -3120,12 +3335,11 @@ and binaries removed, and adds modular support for using system libraries.") "net/third_party/uri_template" "third_party/abseil-cpp" "third_party/angle" - "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/libXNVCtrl" ;Expat - "third_party/angle/src/third_party/trace_event" "third_party/angle/src/third_party/volk" + "third_party/angle/src/third_party/systeminfo" + "third_party/angle/src/third_party/ceval" "third_party/axe-core" "third_party/blink" "third_party/boringssl" @@ -3157,8 +3371,6 @@ and binaries removed, and adds modular support for using system libraries.") "third_party/dawn/third_party/khronos" "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/\ additional_readme_paths.json" "third_party/devtools-frontend/src/front_end/third_party/axe-core" @@ -3169,11 +3381,18 @@ additional_readme_paths.json" "third_party/devtools-frontend/src/front_end/third_party/i18n" "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/lit" + "third_party/devtools-frontend/src/front_end/third_party/acorn" "third_party/devtools-frontend/src/front_end/third_party/marked" "third_party/devtools-frontend/src/front_end/third_party/puppeteer" + "third_party/devtools-frontend/src/front_end/third_party/\ +puppeteer/package/lib/esm/third_party/mitt" + "third_party/devtools-frontend/src/front_end/third_party/\ +vscode.web-custom-data" + "third_party/devtools-frontend/src/third_party/pyjson5" "third_party/devtools-frontend/src/front_end/third_party/wasmparser" "third_party/devtools-frontend/src/third_party/typescript" + "third_party/devtools-frontend/src/third_party/i18n" "third_party/distributed_point_functions" "third_party/dom_distiller_js" "third_party/emoji-segmenter" @@ -3216,7 +3435,6 @@ additional_readme_paths.json" "third_party/libgav1" "third_party/libjingle_xmpp" "third_party/libjpeg_turbo" - "third_party/libjxl" "third_party/libpng" ;TODO: make pdfium use system version "third_party/libsecret" ;LGPL2.1+ "third_party/libsrtp" @@ -3235,6 +3453,7 @@ additional_readme_paths.json" "third_party/lss" "third_party/mako" "third_party/markupsafe" + "third_party/material_color_utilities" ;ASL2.0 "third_party/mesa_headers" "third_party/metrics_proto" "third_party/minigbm" ;BSD-3 @@ -3254,6 +3473,7 @@ additional_readme_paths.json" "third_party/opus/src/include/opus_multistream.h" "third_party/opus/src/include/opus_types.h" "third_party/ots" + "third_party/flac" "third_party/pdfium" "third_party/pdfium/third_party/agg23" "third_party/pdfium/third_party/base" @@ -3261,7 +3481,6 @@ additional_readme_paths.json" "third_party/pdfium/third_party/freetype" "third_party/pdfium/third_party/lcms" "third_party/pdfium/third_party/libopenjpeg" - "third_party/pdfium/third_party/libpng16" "third_party/pdfium/third_party/libtiff" "third_party/pdfium/third_party/skia_shared" "third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType @@ -3331,6 +3550,7 @@ additional_readme_paths.json" "v8/src/third_party/utf8-decoder" "v8/src/third_party/valgrind" "v8/third_party/inspector_protocol" + "v8/third_party/glibc/src/sysdeps/ieee754/dbl-64" "v8/third_party/v8/builtins"))) (with-directory-excursion "src/3rdparty" @@ -3398,14 +3618,17 @@ linux/libcurl_wrapper.h" "-DQT_FEATURE_webengine_system_libjpeg=ON" "-DQT_FEATURE_webengine_system_libpci=ON" "-DQT_FEATURE_webengine_system_libpng=ON" + "-DQT_FEATURE_webengine_system_libtiff=ON" "-DQT_FEATURE_webengine_system_libwebp=ON" "-DQT_FEATURE_webengine_system_libxml=ON" - "-DQT_FEATURE_webengine_system_libxslt=ON" "-DQT_FEATURE_webengine_system_minizip=ON" "-DQT_FEATURE_webengine_system_opus=ON" "-DQT_FEATURE_webengine_system_pulseaudio=ON" "-DQT_FEATURE_webengine_system_re2=ON" - "-DQT_FEATURE_webengine_system_zlib=ON") + "-DQT_FEATURE_webengine_system_zlib=ON" + "-DQT_FEATURE_webengine_system_glib=ON" + "-DQT_FEATURE_webengine_system_libvpx=ON" + "-DQT_FEATURE_webengine_system_snappy=ON") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-paths @@ -3455,7 +3678,11 @@ linux/libcurl_wrapper.h" '())))) (replace 'install (lambda _ - (invoke "cmake" "--install" ".")))))) + (invoke "cmake" "--install" "."))) + (add-after 'install 'delete-installed-tests + (lambda _ + (delete-file-recursively + (string-append #$output "/tests"))))))) (native-inputs (modify-inputs (package-native-inputs qtwebengine-5) (delete "python2" "python2-six") @@ -3617,7 +3844,7 @@ Python.") (define-public python-sip (package (name "python-sip") - (version "6.7.7") + (version "6.8.3") (source (origin (method url-fetch) @@ -3627,13 +3854,14 @@ Python.") "/sip-" version ".tar.gz"))) (sha256 (base32 - "1qm9q9lhfky5zvxxkssf4zdfv5k1zikji4hz80d48vdfm1pw1sfy")) + "0b3n237lbggz3b6bfmdsl1m4qgai7qyyj6fmvrmc695v32q4g1c8")) (patches (search-patches "python-sip-include-dirs.patch")))) - (build-system python-build-system) + (build-system pyproject-build-system) (native-inputs (list python-wrapper)) (propagated-inputs - (list python-toml python-packaging python-ply)) + (list python-tomli + python-packaging)) (home-page "https://www.riverbankcomputing.com/software/sip/intro") (synopsis "Python binding creator for C and C++ libraries") (description @@ -3723,8 +3951,8 @@ module provides support functions to the automatically generated code.") ("qtdeclarative-5" ,qtdeclarative-5) ("qtlocation" ,qtlocation) ("qtmultimedia-5" ,qtmultimedia-5) - ("qtsensors" ,qtsensors) - ("qtserialport" ,qtserialport) + ("qtsensors" ,qtsensors-5) + ("qtserialport" ,qtserialport-5) ("qtsvg-5" ,qtsvg-5) ("qttools-5" ,qttools-5) ("qtwebchannel-5" ,qtwebchannel-5) @@ -3761,14 +3989,14 @@ contain over 620 classes.") (define-public python-pyqt-6 (package (inherit python-pyqt) - (version "6.5.2") + (version "6.6.1") (source (origin (method url-fetch) (uri (pypi-uri "PyQt6" version)) (file-name (string-append "PyQt6-" version ".tar.gz")) (sha256 - (base32 "100jh1iiz5gx821qzgicfrqv7hjjj98pchdbc1nvdzzra1ryx1ql")))) + (base32 "0y83zm7xd2yspjbhmlkqhgi0ppxqhivx0d8gdz2l4l90kni8l5cz")))) (inputs ;Qt5 dependencies only in python-pyqt: ;; (qt)connectivity, location, sensors, serialport, x11extras, xmlpatterns. (list python-wrapper @@ -4240,6 +4468,32 @@ that can be only started once per user. ;; redistribution under GPL3 or LGPL2.1 license:gpl3 license:lgpl2.1))))) +(define-public qwindowkit + (package + (name "qwindowkit") + (version "1.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stdware/qwindowkit") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18yqmfnncah60hpyy7r9pvyhcda0n407wvp5hwinjzicj2ja83v7")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ;no test suite + #:configure-flags + #~(list "-DQWINDOWKIT_BUILD_STATIC=OFF"))) ;build a shared library + (native-inputs (list qmsetup)) + (inputs (list qtbase qtdeclarative)) + (home-page "https://github.com/stdware/qwindowkit") + (synopsis "Frameless window framework for Qt") + (description "QWindowKit is a cross-platform window customization +framework for Qt Widgets and Qt Quick.") + (license license:asl2.0))) + (define-public qwt (package (name "qwt") @@ -4491,7 +4745,7 @@ color-related widgets.") (package (inherit python-shiboken-2) (name "python-shiboken-6") - (version "6.5.2") + (version "6.6.2") (source (origin (method url-fetch) (uri (string-append "mirror://qt/QtForPython/pyside6/PySide6-" @@ -4499,7 +4753,7 @@ color-related widgets.") version ".tar.xz")) (sha256 (base32 - "1a0v9mjlcjbffm4lf5cfg45hvqai9654p95ygj5cjhfd9z8z3nwh")))) + "1w690jpxrski7c71gx05q5fvl2117lnjj5ih8iwckx3s9mlhnqhl")))) (build-system cmake-build-system) (inputs (modify-inputs (package-inputs python-shiboken-2) @@ -4519,7 +4773,8 @@ color-related widgets.") "-DCMAKE_SKIP_RPATH=TRUE" (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath=" #$output "/lib") - #$flags)))))) + #$flags)))) + (properties `((upstream-name . "pyside-setup"))))) (define-public python-pyside-2 (package @@ -4537,8 +4792,8 @@ color-related widgets.") qtquickcontrols2-5 qtscript qtscxml-5 - qtsensors - qtspeech + qtsensors-5 + qtspeech-5 qtsvg-5 qttools-5 qtwebchannel-5 @@ -4587,7 +4842,7 @@ color-related widgets.") "qtquickcontrols2" "qtscript" "qtscxml" - "qtsensors" + "qtsensors-5" "qtspeech" "qtsvg" "qttools" @@ -4655,12 +4910,16 @@ generate Python bindings for your C or C++ code.") #:configure-flags #~(list "-DBUILD_TESTS=FALSE" (string-append "-DPYTHON_EXECUTABLE=" - (search-input-file %build-inputs - "/bin/python"))) + (search-input-file %build-inputs "/bin/python"))) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'go-to-source-dir (lambda _ (chdir "sources/pyside6"))) + (add-after 'go-to-source-dir 'set-rpath + (lambda _ + (substitute* "CMakeLists.txt" + (("CMAKE_INSTALL_RPATH") + (string-append "CMAKE_INSTALL_RPATH " #$output "/lib"))))) (add-after 'go-to-source-dir 'fix-qt-module-detection (lambda _ (substitute* "cmake/PySideHelpers.cmake" @@ -4816,6 +5075,26 @@ simple editor for binary data, just like @code{QPlainTextEdit} is for text data.") (license license:lgpl2.1))) +(define-public qthttpserver + (package + (name "qthttpserver") + (version "6.6.3") + (source (origin + (method url-fetch) + (uri (qt-url name version)) + (sha256 + (base32 + "0dbqx36ywfmqi4nxfi4dl17scj9nkl8sbpb670ffy3nh8pbpib21")))) + (build-system cmake-build-system) + (inputs (list qtbase qtwebsockets)) + (home-page (package-home-page qtbase)) + (synopsis "HTTP server module for Qt") + (description "Qt HTTP Server supports building HTTP server functionality +into an application. Common use cases are exposing the application's +functionality through REST APIs, or making devices in a trusted environment +configurable also via HTTP.") + (license license:gpl3+))) + (define-public soqt (let ((commit-ref "fb8f655632bb9c9c60e0ff9fa69a5ba22d3ff99d") (revision "1")) @@ -5125,7 +5404,7 @@ including @i{fix-its} for automatic refactoring.") (define-public qt-creator (package (name "qt-creator") - (version "12.0.1") + (version "12.0.2") (source (origin (method url-fetch) (uri (string-append @@ -5148,7 +5427,7 @@ including @i{fix-its} for automatic refactoring.") ((".*marketplace/marketplace.qbs.*") "")))) (sha256 (base32 - "04h35za3gliai5djxwmzqrbih2g26lcv68pp4wvljkdwkcjsscvb")))) + "1lgk547pvg31zzqra7gn9gsszm5wrwxiw06crbr5n2kqfavk9r22")))) (build-system qt-build-system) (arguments (list @@ -5164,6 +5443,33 @@ including @i{fix-its} for automatic refactoring.") #$output "/lib/qtcreator")) #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'patch-perfparser + ;; XXX: The 'patch-perfparser' phase is also used by the 'hotspot' + ;; package; keep its copy in sync (paying attention to the + ;; different demangler.cpp file name). + (lambda* (#:key inputs #:allow-other-keys) + ;; perfparser attempts to dynamically load the demangle + ;; libraries; use their absolute file name to avoid having to + ;; set LD_LIBRARY_PATH. + (let ((librustc_demangle.so + (with-exception-handler (lambda (ex) + (if (search-error? ex) + #f + (raise-exception ex))) + (lambda () + (search-input-file inputs "lib/librustc_demangle.so")) + #:unwind? #t))) + (substitute* "src/tools/perfparser/app/demangler.cpp" + (("loadDemangleLib\\(QStringLiteral\\(\"rustc_demangle\")" + all) + (if librustc_demangle.so + (format #f "loadDemangleLib(QStringLiteral(~s)" + librustc_demangle.so) + all)) ;no rustc_demangle; leave unchanged + (("loadDemangleLib\\(QStringLiteral\\(\"d_demangle\")") + (format #f "loadDemangleLib(QStringLiteral(~s)" + (search-input-file inputs + "lib/libd_demangle.so"))))))) (add-after 'unpack 'patch-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* '("src/libs/utils/commandline.cpp" diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 9c8225d22b..e2e9f192c3 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -1683,7 +1683,7 @@ instances over the network, and general QSO and DXpedition logging.") libusb qtbase-5 qtmultimedia-5 - qtserialport + qtserialport-5 wsjtx-hamlib)) (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html") (synopsis "Weak-signal ham radio communication program") @@ -1721,7 +1721,7 @@ weak-signal conditions.") qtbase-5 qtwebsockets-5 qtmultimedia-5 - qtserialport)) + qtserialport-5)) (arguments `(#:tests? #f)) ; No test suite (synopsis "Weak-signal ham radio communication program, forked from WSJTX") @@ -1798,7 +1798,7 @@ focused on DXing and being shaped by community of DXers.JTDX") libusb qtbase-5 qtmultimedia-5 - qtserialport + qtserialport-5 wsjtx-hamlib)) (home-page "http://js8call.com/") (synopsis "Weak-signal ham radio communication program") @@ -2670,8 +2670,8 @@ voice formats.") qtlocation qtmultimedia-5 qtquickcontrols2-5 - qtserialport - qtspeech + qtserialport-5 + qtspeech-5 qtwebchannel-5 qtwebengine-5 qtwebsockets-5 @@ -2850,9 +2850,7 @@ software-defined radio receivers.") qtgamepad qtbase-5 qtmultimedia-5 - ;; TODO: Needs to be renamed to qtserialport-5. when version 6 is - ;; packed. - qtserialport + qtserialport-5 rtaudio)) (home-page "https://wfview.org/") (synopsis "Software to control Icom radios") @@ -3221,7 +3219,7 @@ memory contents between them.") (substitute* "lib/CMakeLists.txt" (("(DESTINATION \")/etc/udev/" _ directive) (string-append directive #$output "/lib/udev/")))))))) - (inputs (list libusb qtbase-5 qtlocation qtserialport yaml-cpp)) + (inputs (list libusb qtbase-5 qtlocation qtserialport-5 yaml-cpp)) (native-inputs (list qttools-5)) (home-page "https://dm3mat.darc.de/qdmr/") (synopsis "GUI application and command line tool to program DMR radios") diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 0dea780882..0541bb9562 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -33,7 +33,7 @@ ;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> ;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com> -;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2023, 2024 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; @@ -9878,7 +9878,7 @@ navigation capabilities to @code{pry}, using @code{byebug}.") ;; This test often fails (("def test_gc") "def skip_test_gc") ;; This test is known to fail on 32-bit systems. - ;; /gnu/store/w8y8wm82by1cnp33n5vy976wbrns9jys-stackprof-0.2.26.gem + ;; /gnu/store/...-stackprof-0.2.26.gem (("def test_raw") "def skip_test_raw")))) (add-before 'check 'build-tests (lambda _ diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index 613726d830..8d21a082cb 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> -;;; Copyright © 2017, 2021 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017, 2021, 2024 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> ;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> @@ -422,35 +422,36 @@ Search Engine. It is written in C and based on GTK3.") (define-public recoll (package (name "recoll") - (version "1.34.0") + (version "1.37.5") (source (origin (method url-fetch) - (uri (string-append "https://www.lesbonscomptes.com/recoll/" - "recoll-" version ".tar.gz")) + (uri (string-append "https://www.recoll.org/recoll-" version ".tar.gz")) (sha256 - (base32 "0s26b737brxp5hpqcwfxg19z40w6acnnr63ghrnzzjwxqz1ambkv")))) + (base32 "0m9ibpa27xrngk31kxhgqv878knw2xpigckx8pqvfzmfvqr81zdy")))) (build-system gnu-build-system) (arguments - `(#:configure-flags - (list "--disable-webkit" - "--disable-python-module" - "--without-systemd" - "--with-inotify" - "--enable-recollq" - (string-append "QMAKEPATH=" (assoc-ref %build-inputs "qtbase") - "/bin/qmake")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-default-data-dir - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "python/recoll/recoll/rclconfig.py" - (("/opt/local") - (assoc-ref outputs "out"))))) - (add-after 'install 'wrap-filters - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (mapping + (list + #:configure-flags + #~(list "--disable-webkit" + "--disable-python-module" + "--without-systemd" + "--with-inotify" + "--enable-recollq" + (string-append "QMAKEPATH=" #$(this-package-input "qtbase") + "/bin/qmake")) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'set-LDFLAGS + (lambda _ + (setenv "LDFLAGS" (string-append "-Wl,-rpath=" #$output "/lib")))) + (add-after 'unpack 'patch-default-data-dir + (lambda _ + (substitute* "python/recoll/recoll/rclconfig.py" + (("/opt/local") #$output)))) + (add-after 'install 'wrap-filters + (lambda* (#:key inputs #:allow-other-keys) + (let ((mapping '(("rclps" "poppler") ("rclpdf.py" @@ -471,19 +472,19 @@ Search Engine. It is written in C and based on GTK3.") "sed") ("rclscribus" "grep" "gawk" "sed")))) - (for-each - (lambda (program packages) - (wrap-program (string-append out "/share/recoll/filters/" program) - `("PATH" ":" prefix - ,(map (lambda (i) - (string-append (assoc-ref inputs i) "/bin")) - packages)))) - (map car mapping) - (map cdr mapping)) + (for-each + (lambda (program packages) + (wrap-program (string-append #$output "/share/recoll/filters/" program) + `("PATH" ":" prefix + ,(map (lambda (i) + (string-append (assoc-ref inputs i) "/bin")) + packages)))) + (map car mapping) + (map cdr mapping)) - (wrap-program (string-append out "/share/recoll/filters/rclimg") - `("PERL5LIB" ":" prefix - (,(getenv "PERL5LIB")))))))))) + (wrap-program (string-append #$output "/share/recoll/filters/rclimg") + `("PERL5LIB" ":" prefix + (,(getenv "PERL5LIB")))))))))) (inputs (list aspell chmlib @@ -507,8 +508,8 @@ Search Engine. It is written in C and based on GTK3.") sed tar)) (native-inputs - (list pkg-config which)) - (home-page "https://www.lesbonscomptes.com/recoll/") + (list pkg-config qttools-5 which)) + (home-page "https://www.recoll.org") (synopsis "Find documents based on their contents or file names") (description "Recoll finds documents based on their contents as well as their file names. It can search most document formats, but you may need diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm index 8fe9039f20..00a7f97582 100644 --- a/gnu/packages/security-token.scm +++ b/gnu/packages/security-token.scm @@ -106,10 +106,13 @@ "06bjdswbwcwndsn23rsdhz5a7xqsgb66glqnk9lqzd7qws3l94qk")))) (build-system gnu-build-system) (arguments - `(#:configure-flags (list (string-append "--enable-usbdropdir=" %output - "/pcsc/drivers")) + (list + #:configure-flags + #~(list (string-append "--enable-usbdropdir=" + #$output + "/pcsc/drivers")) #:phases - (modify-phases %standard-phases + #~(modify-phases %standard-phases (add-after 'unpack 'patch-Makefile (lambda _ (substitute* "src/Makefile.in" diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm index b2fb123815..8cbf9be22a 100644 --- a/gnu/packages/simulation.scm +++ b/gnu/packages/simulation.scm @@ -773,7 +773,6 @@ FFC is part of the FEniCS Project.") boost eigen hdf5-parallel-openmpi - lapack libxml2 openmpi python-3 @@ -805,7 +804,7 @@ FFC is part of the FEniCS Project.") (setenv "CATCH_DIR" #$(this-package-input "catch")) (setenv "LAPACK_DIR" - #$(this-package-input "lapack")) + #$(this-package-input "openblas")) (setenv "PETSC_DIR" #$(this-package-input "petsc")) (setenv "SLEPC_DIR" diff --git a/gnu/packages/specifications.scm b/gnu/packages/specifications.scm new file mode 100644 index 0000000000..ce57a68bdb --- /dev/null +++ b/gnu/packages/specifications.scm @@ -0,0 +1,53 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages specifications) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) + #:use-module (guix utils) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix build-system copy)) + +(define-public specification-multibase + (let ((commit "4c8344e37852773de155f587dcf5897771b3fc19") + (revision "1")) + (package + (name "specification-multibase") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/multiformats/multibase") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0lz4kdysa6nx7wf1i59647w7dgm344xpvfnsac3pfk2qdky2kq8b")))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("." "share/multibase/")))) + (home-page "https://github.com/multiformats/multibase") + (synopsis "Self identifying base encodings") + (description + "Multibase is a protocol for disambiguating the encoding of +base-encoded (e.g., @code{base32}, @code{base36}, @code{base64}, @code{base58}, etc.) +binary appearing in text.") + (license (list license:expat license:cc-by-sa3.0))))) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index d53d8d59e7..ff39aea9ba 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -198,18 +198,15 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "9.6p1") + (version "9.7p1") (source (origin (method url-fetch) (uri (string-append "mirror://openbsd/OpenSSH/portable/" "openssh-" version ".tar.gz")) - (patches (search-patches "openssh-trust-guix-store-directory.patch" - ;; Can be removed with next openssh update - ;; https://issues.guix.gnu.org/67948#2 - "openssh-gcc-13-ppc64le-fzero-call-used-regs.patch")) + (patches (search-patches "openssh-trust-guix-store-directory.patch")) (sha256 - (base32 "0z3pgam8b4z05lvdb78iv06p204qwl7b94a3cnnwba2mfb0120li")))) + (base32 "1z9zfw7ndibxwprazlkv1isrh1yplczdin5cziijfanqcvvjc129")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 88ed6fab64..e076cdba44 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -180,9 +180,13 @@ be output in text, PostScript, PDF or HTML.") (base32 "0aa2w4g5057vn1qjp954s2kwxfmy1h7p5yn56fyi7sz9nmaq69gr")))) (build-system gnu-build-system) + (arguments + (list #:configure-flags + #~(list "--with-lapack=-lopenblas" + "--with-blas=-lopenblas"))) (home-page "https://mcmc-jags.sourceforge.net/") (native-inputs - (list gfortran lapack)) + (list gfortran openblas)) (synopsis "Gibbs sampler") (description "JAGS is Just Another Gibbs Sampler. It is a program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) @@ -600,14 +604,14 @@ Hubert, based on Kaufman and Rousseeuw (1990) \"Finding Groups in Data\".") (define-public r-codetools (package (name "r-codetools") - (version "0.2-19") + (version "0.2-20") (source (origin (method url-fetch) (uri (cran-uri "codetools" version)) (sha256 (base32 - "1ardg28x2cvilkgsj6bdvvp5snsy3rj7jbz9bpcdlcvzr1kybdy4")))) + "0qx8zrlickl45wzzbydsbx5f1vmzhn71x7amzpfj71qpxisz7riv")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/codetools") (synopsis "Code analysis tools for R") @@ -1064,13 +1068,13 @@ see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"") (define-public r-munsell (package (name "r-munsell") - (version "0.5.0") + (version "0.5.1") (source (origin (method url-fetch) (uri (cran-uri "munsell" version)) (sha256 - (base32 "16g1fzisbpqb15yh3pqf3iia4csppva5dnv1z88x9dg263xskwyh")))) + (base32 "19i9jjawlqciw4n4h99a4sm0lbc77la3pqyzjvnwsrh7qjdgv8h3")))) (build-system r-build-system) (propagated-inputs (list r-colorspace)) @@ -2033,13 +2037,13 @@ times.") (define-public r-data-table (package (name "r-data-table") - (version "1.15.2") + (version "1.15.4") (source (origin (method url-fetch) (uri (cran-uri "data.table" version)) (sha256 (base32 - "04pfcm3pyl997rpyj5zdmbhi4ndaai81vfgv4whjp8rhqzjk7i6j")))) + "0lyb82kl2bn70l9ag5xdr8q7rh4majbimygaynmfqnbdjkznb05b")))) (properties `((upstream-name . "data.table"))) (build-system r-build-system) (inputs @@ -3393,13 +3397,13 @@ a column in data frame.") (define-public r-rsqlite (package (name "r-rsqlite") - (version "2.3.5") + (version "2.3.6") (source (origin (method url-fetch) (uri (cran-uri "RSQLite" version)) (sha256 (base32 - "1wvfadwcr8iv0z6pddfpvl60dq4p8l68v16p9daa002srgzpwlw1")))) + "1wpqr71wckxrh8ih5f01wkqqqnq5s3zaj0m8b40g76pliyjvgcgv")))) (properties `((upstream-name . "RSQLite"))) (build-system r-build-system) (propagated-inputs @@ -6056,14 +6060,14 @@ algorithms.") (define-public r-lme4 (package (name "r-lme4") - (version "1.1-35.1") + (version "1.1-35.2") (source (origin (method url-fetch) (uri (cran-uri "lme4" version)) (sha256 (base32 - "0nzv1a22pfsf2ryw91h16ic4cb8y8g6wh0gx3msr7gv8dwwi3974")))) + "0nvvkvpasna9hy0y3fxd4fy2b2gxzgdga9kmxvli59dlkdy28ipc")))) (build-system r-build-system) (propagated-inputs (list r-boot diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index 577c2b3278..39cf2e4cc5 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -14,8 +14,10 @@ ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com> ;;; Copyright © 2022 jgart <jgart@dismail.de> ;;; Copyright © 2022 Antero Mejr <antero@mailbox.org> +;;; Copyright © 2022 Ivan Vilata i Balaguer <ivan@selidor.net> ;;; Copyright © 2024 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2024 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2024 cage <cage-dev@twistfold.it> ;;; ;;; This file is part of GNU Guix. ;;; @@ -896,6 +898,38 @@ strings(1) but for pictures. For a given input file it outputs a colormap to stdout.") (license license:isc))) +(define-public libgrapheme + (package + (name "libgrapheme") + (version "2.0.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://dl.suckless.org/libgrapheme/libgrapheme-" + version + ".tar.gz")) + (sha256 + (base32 "099i2jm9c25nkbg5420wr12z0gd189gcw5j1ssjmpmbbwzfvv2x6")))) + (build-system gnu-build-system) + (arguments + (list #:tests? #true + #:test-target "test" + #:phases #~(modify-phases %standard-phases + (add-after 'configure 'post-configure + (lambda _ + ;; Remove ldconfing invocation in Makefile, which + ;; is not needed in Guix. + (substitute* "config.mk" + (("ldconfig") ""))))) + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)))) + (home-page "https://libs.suckless.org/libgrapheme/") + (synopsis "C99 library for Unicode strings") + (description "Libgrapheme is a simple freestanding C99 library providing +utilities to handle strings according to the Unicode standard.") + (license license:isc))) + ;; No new releases were made at github, this repository is more active than ;; the one at http://git.suckless.org/libutf/ and it is ;; done by the same developer. @@ -1328,6 +1362,35 @@ It also contains the Plan 9 libbio, libregexp, libfmt and libutf libraries.") (license (list license:expat ;modifications license:lpl1.02))))) ;original plan9 code +(define-public xssstate + (package + (name "xssstate") + (version "1.1") + (source (origin + (method url-fetch) + (uri (string-append "https://dl.suckless.org/tools/xssstate-" + version ".tar.gz")) + (sha256 + (base32 + "04b03jz38pn5qhddg8a9hh01qqzrrdjvsq09qrxj9sx8lq2gbdn4")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ; no tests + #:make-flags #~(list (string-append "CC=" + #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:phases #~(modify-phases %standard-phases + (delete 'configure)))) + (inputs (list libxscrnsaver)) + (home-page "https://tools.suckless.org/x/xssstate/") + (synopsis "Simple tool to retrieve the X screensaver state") + (description + "A utility to retrieve the state of the X screensaver. These +states include the idle time, the screensaver state and the length of time +until the screensaver should be activated.") + (license license:x11))) + (define-public 9yacc (package (inherit lib9) diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index 7d9a27bbc3..18d3df5b6e 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -201,7 +201,7 @@ cards.") (list gtk "bin") pkg-config)) (inputs - (list blueprint-compiler + (list blueprint-compiler-0.4 glib gtk gtksourceview @@ -569,7 +569,7 @@ parser. It is \"not fit for use at this point\", but gfeeds uses it anyway.") `("XDG_DATA_DIRS" ":" prefix (,(getenv "XDG_DATA_DIRS"))))))))) (native-inputs (list `(,glib "bin") - blueprint-compiler + blueprint-compiler-0.4 gobject-introspection gettext-minimal pkg-config)) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index aa00cc3656..1e0da5cd3c 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -858,8 +858,8 @@ Initiation Protocol (SIP) and a multimedia framework.") (license license:gpl2+))) (define-public pjproject-jami - (let ((commit "d044ad6c5b4221648c555da16196804e4721299c") - (revision "0")) + (let ((commit "e12ea3bfa81cc4f46031599f80707e81133f1353") + (revision "1")) (package (inherit pjproject) (name "pjproject-jami") @@ -880,7 +880,7 @@ Initiation Protocol (SIP) and a multimedia framework.") (file-name (git-file-name name version)) (sha256 (base32 - "0z4d7wdpa2mlaygb283k0j8n3l6q68gn0xqd62b5ngqvkhlaf775")))) + "0270qh7sxi7vpdlcfss72z6la3g0ipfrv9mm6ypg45k14h3bs9zq")))) (arguments (substitute-keyword-arguments (package-arguments pjproject) ((#:configure-flags _ ''()) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index c165b5342d..b62efabe6e 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -1065,7 +1065,7 @@ Octave. TeXmacs is completely extensible via Guile.") (build-system meson-build-system) (native-inputs (list appstream-glib - blueprint-compiler + blueprint-compiler-0.4 desktop-file-utils gettext-minimal `(,glib "bin") @@ -1105,14 +1105,14 @@ The basic features of Text Pieces are: (define-public scintilla (package (name "scintilla") - (version "5.3.4") + (version "5.4.3") (source (origin (method url-fetch) (uri (string-append "https://www.scintilla.org/scintilla" (string-delete #\. version) ".tgz")) (sha256 - (base32 "0inbhzqdikisvnbdzn8153p1apbghxjzkkzji9i8zsdpyapb209z")))) + (base32 "1ysdi9rsg14w5mn581gjvr9jrdg1yp9rmg1r9jz7gngdgcz7q5ij")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 4374f59ffa..ff42f748ea 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -70,6 +70,7 @@ #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) #:use-module (gnu packages golang-crypto) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages java) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) @@ -933,7 +934,7 @@ Filter, list, or split a tar file. (define-public java-rsyntaxtextarea (package (name "java-rsyntaxtextarea") - (version "2.6.1") + (version "3.4.0") (source (origin (method git-fetch) (uri (git-reference @@ -942,16 +943,20 @@ Filter, list, or split a tar file. (file-name (git-file-name name version)) (sha256 (base32 - "0dyflzvxq2wvs0rgqfyi5yzzrb6r4bzw2dm8cl304dakxk38ddys")))) + "0ad3cmfxwz9963kbh5ryba9jp88hsx03jsl8r4qinwhy6aahx6f3")))) (build-system ant-build-system) (arguments (list #:jar-name "rsyntaxtextarea.jar" + #:source-dir "RSyntaxTextArea/src/main/java" + #:test-dir "RSyntaxTextArea/src/test" + #:tests? #false ;requires junit5 #:phases '(modify-phases %standard-phases (add-before 'build 'copy-resources (lambda _ - (copy-recursively "src/main/resources" "build/classes"))) + (copy-recursively "RSyntaxTextArea/src/main/resources" "build/classes"))) + #; (add-before 'check 'start-xorg-server (lambda _ ;; The test suite requires a running X server. @@ -961,7 +966,7 @@ Filter, list, or split a tar file. ;; ‘Fontconfig error: No writable cache directories’ (setenv "XDG_CACHE_HOME" (getcwd))))))) (native-inputs - (list java-junit java-hamcrest-core + (list java-hamcrest-core xorg-server-for-tests)) (home-page "https://bobbylight.github.io/RSyntaxTextArea/") (synopsis "Syntax highlighting text component for Java Swing") @@ -972,6 +977,48 @@ efficient, and can be used in any application that needs to edit or view source code.") (license license:bsd-3))) +(define-public java-autocomplete + (package + (name "java-autocomplete") + (version "3.3.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bobbylight/AutoComplete") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ksa3k3xkdjpyq9sbsvchyhfzzpb67pv8xzbpljj8rqilgk8ysy0")))) + (build-system ant-build-system) + (arguments + (list + #:tests? #false ;needs junit5 + #:jar-name "autocomplete.jar" + #:source-dir "AutoComplete/src/main/java" + #:test-dir "AutoComplete/src/test" + #:phases + '(modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "AutoComplete/src/main/resources" "build/classes")))))) + (propagated-inputs + (list java-rsyntaxtextarea)) + (native-inputs + (list java-hamcrest-core)) + (home-page "https://github.com/bobbylight/AutoComplete") + (synopsis "Text completion library") + (description "AutoComplete is a library allowing you to add IDE-like +auto-completion (aka \"code completion\" or \"Intellisense\") to any Swing +JTextComponent. Special integration is added for @code{RSyntaxTextArea}, +since this feature is commonly needed when editing source code. Features +include: Drop-down completion choice list. Optional companion \"description\" +window, complete with full HTML support and navigable with hyperlinks. +Optional parameter completion assistance for functions and methods, ala +Eclipse and NetBeans. Completion information is typically specified in an XML +file, but can even be dynamic.") + (license license:bsd-3))) + ;; We use the sources from git instead of the tarball from pypi, because the ;; latter does not include the Cython source file from which bycython.cpp is ;; generated. diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 0bb493c27f..2612201c11 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -23,6 +23,7 @@ ;;; Copyright © 2022 Pradana AUMARS <paumars@courrier.dev> ;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2024 Liliana Marie Prikler <liliana.prikler@gmail.com> +;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,6 +47,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages geo) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages libffi) #:use-module (gnu packages perl) #:use-module (gnu packages python) @@ -629,7 +631,7 @@ calls.") (define-public tz (package (name "tz") - (version "0.6.1") + (version "0.7.0") (source (origin (method git-fetch) @@ -638,31 +640,29 @@ calls.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1nbl13xd95np89sbx8fn0jqrh1iy17hsy70kq31hmcvyns8dljhg")))) + (base32 "1zf5w6338y0s0pf0jlpbqzlbxbx39s93z0bmdaa0cxkxs8cz8xij")))) (build-system go-build-system) (arguments - `(#:go ,go-1.17 - #:import-path "github.com/oz/tz" - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key import-path tests? #:allow-other-keys) - (when tests? - (invoke "go" "test" "-cover" import-path))))))) + (list + #:go go-1.17 + #:install-source? #f + #:import-path "github.com/oz/tz")) (inputs - `(("github.com/charmbracelet/bubbletea" ,go-github-com-charmbracelet-bubbletea) - ("github.com/muesli/termenv" ,go-github-com-muesli-termenv))) + (list go-github-com-charmbracelet-bubbletea + go-github-com-muesli-termenv + go-github-com-tkuchiki-go-timezone)) (home-page "https://github.com/oz/tz") (synopsis "TUI time zone helper") (description -"@command{tz} helps you schedule things across time zones. It is an interactive -TUI program that displays time across a few time zones of your choosing.") + "@command{tz} helps you schedule things across time zones. It is an +interactive TUI program that displays time across a few time zones of your +choosing.") (license gpl3+))) (define-public countdown (package (name "countdown") - (version "1.0.0") + (version "1.5.0") (source (origin (method git-fetch) @@ -671,13 +671,13 @@ TUI program that displays time across a few time zones of your choosing.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0pdaw1krr0bsl4amhwx03v2b02iznvwvqn7af5zp4fkzjaj14cdw")))) + (base32 "0snz26dvj8v58fyzd51bcf07b5yp2akcyy26w7b0pnkmlh3lknmk")))) (build-system go-build-system) (arguments - '(#:import-path "github.com/antonmedv/countdown")) + (list + #:import-path "github.com/antonmedv/countdown")) (native-inputs - `(("runewidth" ,go-github-com-mattn-go-runewidth) - ("termbox" ,go-github.com-nsf-termbox-go))) + (list go-github.com-nsf-termbox-go)) (home-page "https://github.com/antonmedv/countdown") (synopsis "Counts to zero with a text user interface") (description diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm index 7515461993..ee0acb82de 100644 --- a/gnu/packages/tree-sitter.scm +++ b/gnu/packages/tree-sitter.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2023 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2023, 2024 Nicolas Graves <ngraves@ngraves.fr> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> -;;; Copyright © 2023 Raven Hallsby <karl@hallsby.com> +;;; Copyright © 2023, 2024 Raven Hallsby <karl@hallsby.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -615,6 +615,15 @@ which will be used as a snippet in origin." #:commit commit #:license license:expat))) +(define-public tree-sitter-nix + (tree-sitter-grammar + "nix" "Nix" + "0nn3ij8k6wkbf3kcvkyyp0vhfjcksi31wyyfwmsbx66maf2xgaii" + "0.0.0" + ;; The most recent commit at time of packaging, no tags. + #:commit "763168fa916a333a459434f1424b5d30645f015d" + #:repository-url "https://github.com/nix-community/tree-sitter-nix")) + (define-public tree-sitter-org ;; There are a lot of additions, the last tag was placed a while ago (let ((commit "081179c52b3e8175af62b9b91dc099d010c38770") @@ -665,6 +674,13 @@ which will be used as a snippet in origin." (delete-file "binding.gyp") (delete-file-recursively "bindings")))))) +(define-public tree-sitter-latex + (tree-sitter-grammar + "latex" "LaTeX" + "0lc42x604f04x3kkp88vyqa5dx90wqyisiwl7nn861lyxl6phjnf" + "0.3.0" + #:repository-url "https://github.com/latex-lsp/tree-sitter-latex")) + (define-public tree-sitter-lua (tree-sitter-grammar "lua" "Lua" @@ -677,3 +693,11 @@ which will be used as a snippet in origin." "scala" "Scala" "0hs6gmkq5cx9qrmgfz1mh0c34flwffc0k2mhwf13laawswnywfkz" "0.20.2")) + +(define-public tree-sitter-tlaplus + (tree-sitter-grammar + "tlaplus" "TLA+" + "1k60dnzafj6m9c2d4xnwiz3d7yw3bg3iwx7c1anhwr76iyxdci3w" + "1.0.8" + ;; Version 1.2.1 is most recent, but requires tree-sitter >0.21.0 + #:repository-url "https://github.com/tlaplus-community/tree-sitter-tlaplus")) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index ddd4b354f4..00072055d3 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2020,7 +2020,8 @@ audio/video codec library.") "ffmpeg-jami-rtp_ext_abs_send_time.patch" "ffmpeg-jami-libopusdec-enable-FEC.patch" "ffmpeg-jami-libopusenc-reload-packet-loss-at-encode.patch" - "ffmpeg-jami-screen-sharing-x11-fix.patch")))))) + "ffmpeg-jami-screen-sharing-x11-fix.patch" + "ffmpeg-jami-pipewiregrab-source-filter.patch")))))) (arguments (substitute-keyword-arguments (package-arguments ffmpeg) ((#:configure-flags _ '()) diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 251fe00aa0..34cccd6550 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -151,6 +151,7 @@ #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) + #:use-module (guix modules) #:use-module (guix utils) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) @@ -2257,7 +2258,7 @@ Open Container Initiative (OCI) image layout and its tagged images.") (define-public skopeo (package (name "skopeo") - (version "1.2.3") + (version "1.15.0") (source (origin (method git-fetch) (uri (git-reference @@ -2266,12 +2267,15 @@ Open Container Initiative (OCI) image layout and its tagged images.") (file-name (git-file-name name version)) (sha256 (base32 - "0n22sdif437ddg5ch0ipwim3fg0n6ihc9bfi52qkhy3r1grz04hs")))) - (build-system go-build-system) + "1f9n3ysdmll7vq8dmgpv03m8aqq3w9cfvbmxxpwmnv1nlfc67ihq")))) + (build-system gnu-build-system) (native-inputs - (list pkg-config go-github-com-go-md2man)) + (list go-1.21 + go-github-com-go-md2man + pkg-config)) (inputs - (list btrfs-progs + (list bash-minimal + btrfs-progs eudev libassuan libselinux @@ -2280,27 +2284,52 @@ Open Container Initiative (OCI) image layout and its tagged images.") glib gpgme)) (arguments - '(#:import-path "github.com/containers/skopeo" - #:install-source? #f - #:tests? #f ; The tests require Docker - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda* (#:key import-path #:allow-other-keys) - (with-directory-excursion (string-append "src/" import-path) - (invoke "make" "bin/skopeo")))) - (add-after 'build 'build-docs - (lambda* (#:key import-path #:allow-other-keys) - (with-directory-excursion (string-append "src/" import-path) - (invoke "make" "docs")))) - (replace 'install - (lambda* (#:key import-path outputs #:allow-other-keys) - (with-directory-excursion (string-append "src/" import-path) - (let ((out (assoc-ref outputs "out"))) - (install-file "default-policy.json" - (string-append out "/etc/containers")) - (invoke "make" "install-binary" "install-completions" "install-docs" - (string-append "PREFIX=" out))))))))) + (list + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + "PREFIX=" + (string-append "DESTDIR=" #$output) + (string-append "GOMD2MAN=" + #$go-github-com-go-md2man "/bin/go-md2man")) + #:tests? #f ; The tests require Docker + #:test-target "test-unit" + #:imported-modules + (source-module-closure `(,@%gnu-build-system-modules + (guix build go-build-system))) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'set-env + (lambda _ + ;; When running go, things fail because HOME=/homeless-shelter. + (setenv "HOME" "/tmp") + ;; Required for detecting btrfs in hack/btrfs* due to bug in GNU + ;; Make <4.4 causing CC not to be propagated into $(shell ...) + ;; calls. Can be removed once we update to >4.3. + ;; + ;; This techically does nothing *now*, but after upstream + ;; issue[1] is solved and 'cc-to-gcc phase is removed, it will + ;; start being required. + ;; 1: https://github.com/containers/skopeo/issues/2278 + (setenv "CC" #$(cc-for-target)))) + (add-after 'unpack 'cc-to-gcc + (lambda _ + (for-each (lambda (file) + (substitute* file + (("^cc( -.*)" all rest) + (string-append "\"$CC\"" rest)))) + '("hack/btrfs_tag.sh" + "hack/btrfs_installed_tag.sh" + "hack/libdm_tag.sh" + "hack/libsubid_tag.sh")))) + (add-after 'install 'wrap-skopeo + (lambda _ + (wrap-program (string-append #$output "/bin/skopeo") + `("PATH" suffix + ;; We need at least newuidmap, newgidmap and mount. + ("/run/setuid-programs"))))) + (add-after 'install 'remove-go-references + (@@ (guix build go-build-system) remove-go-references))))) (home-page "https://github.com/containers/skopeo") (synopsis "Interact with container images and container image registries") (description diff --git a/gnu/packages/weather.scm b/gnu/packages/weather.scm index e95f6bb501..5a0802b211 100644 --- a/gnu/packages/weather.scm +++ b/gnu/packages/weather.scm @@ -23,7 +23,8 @@ #:use-module (guix packages) #:use-module (gnu packages) #:use-module (gnu packages golang) - #:use-module (gnu packages golang-build)) + #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-xyz)) (define-public wego (package diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index e6bc6a0c7b..543f67acb8 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -58,6 +58,7 @@ #:use-module (gnu packages bison) #:use-module (gnu packages compression) #:use-module (gnu packages curl) + #:use-module (gnu packages databases) #:use-module (gnu packages documentation) #:use-module (gnu packages fltk) #:use-module (gnu packages fontutils) @@ -74,6 +75,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages javascript) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) #:use-module (gnu packages libunistring) @@ -94,11 +96,13 @@ #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) + #:use-module (gnu packages readline) #:use-module (gnu packages sdl) #:use-module (gnu packages sqlite) #:use-module (gnu packages tcl) #:use-module (gnu packages text-editors) #:use-module (gnu packages tls) + #:use-module (gnu packages web) #:use-module (gnu packages webkit) #:use-module (gnu packages xorg)) @@ -1022,3 +1026,58 @@ Features include @item Support for any character encoding recognised by Python. @end itemize") (license license:bsd-2))) + +(define-public edbrowse + (package + (name "edbrowse") + (version "3.8.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/CMB/edbrowse.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hxvdvplmbnn0jzw4ls8a03k2s7qdylghln74910yljzjf392mld")))) + (build-system gnu-build-system) + (inputs (list curl-ssh pcre2 quickjs openssl readline-7 tidy-html + unixodbc)) + (native-inputs (list perl pkg-config)) + (arguments + (list + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "QUICKJS_LIB=" + (assoc-ref %build-inputs "quickjs") + "/lib/quickjs")) + #:tests? #f ; Edbrowse doesn't have tests + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'patch + (lambda _ + (for-each + (lambda (file) + (substitute* file + (("\"quickjs-libc.h\"") "<quickjs/quickjs-libc.h>"))) + '("src/js_hello_quick.c" "src/jseng-quick.c")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (doc (string-append out "/share/doc/" #$name "-" #$version))) + (mkdir-p doc) + (install-file "doc/usersguide.html" doc) + (install-file "src/edbrowse" bin))))))) + (home-page "https://edbrowse.org/") + (synopsis "Command-line editor and web browser") + (description "Edbrowse is a combination editor, browser, and mail client that is +100% text based. The interface is similar to /bin/ed, though there are many more +features, such as editing multiple files simultaneously, and rendering html. This +program was originally written for blind users, but many sighted users have taken +advantage of the unique scripting capabilities of this program, which can be found +nowhere else. A batch job, or cron job, can access web pages on the internet, submit +forms, and send email, with no human intervention whatsoever. edbrowse can also tap +into databases through odbc. It was primarily written by Karl Dahlke.") + (license license:gpl2+))) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 588b62516e..4e76e705e1 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -797,7 +797,7 @@ desktop environment.") (define-public icewm (package (name "icewm") - (version "3.4.6") + (version "3.4.7") (source (origin (method url-fetch) (uri (string-append @@ -805,7 +805,7 @@ desktop environment.") version "/icewm-" version ".tar.lz")) (sha256 (base32 - "1j4jd1fim12h8ry7jkx6y298kyn63pabih1m61rljbzvr3lyy1db")))) + "0c1c9qwaq9kdlma5kfqzjzzm6wk3bww6b7mw4b3j76fn7ms4982s")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list fontconfig @@ -1852,7 +1852,7 @@ narrow the items to those matching the tokens in the input.") (package (inherit sway) (name "swayfx") - (version "0.3.1") + (version "0.3.2") (source (origin (method git-fetch) (uri (git-reference @@ -1861,8 +1861,20 @@ narrow the items to those matching the tokens in the input.") (file-name (git-file-name name version)) (sha256 (base32 - "1550n9xnqbl1am4cwlnj8ip5cs7kgdzx96ga2hkcw29cpyian7rv")))) + "13d8icd45j937jgkidr7cyjys4nnvxh4ilp7ml0i2ml39ipv01qv")))) (build-system meson-build-system) + (inputs (list basu + cairo + gdk-pixbuf + json-c + libevdev + libinput-minimal + libxkbcommon + pango + pcre2 + swaybg + wayland + wlroots-0.16)) (home-page "https://github.com/WillPower3309/swayfx") (synopsis "Sway Fork with extra options and effects") (description @@ -3195,7 +3207,7 @@ read and write, and compatible with JSON.") (define-public labwc (package (name "labwc") - (version "0.7.0") + (version "0.7.1") (source (origin (method git-fetch) (uri (git-reference @@ -3204,7 +3216,7 @@ read and write, and compatible with JSON.") (file-name (git-file-name name version)) (sha256 (base32 - "17p3wcnggnd4v37z1dgv8nmc35nq4261s8sglr44bf71vjircggz")))) + "09j6p4p2c00rpcr65r6igj0llfablg5j2d1ys87kyh858dhajpza")))) (build-system meson-build-system) (native-inputs (list pkg-config gettext-minimal scdoc)) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 54fd035bdf..30ca9140d0 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -2934,7 +2934,7 @@ can optionally use some appearance settings from XSettings, tint2 and GTK.") (define-public x-resize (package (name "x-resize") - (version "0.2") + (version "0.3") (source (origin (method git-fetch) (uri (git-reference @@ -2943,7 +2943,7 @@ can optionally use some appearance settings from XSettings, tint2 and GTK.") (file-name (git-file-name name version)) (sha256 (base32 - "10y2p55m5hbrma01kixsppq1a3ld0q1jk8hwx1d1jfgw9vd243j8")))) + "0bkzc57p8j7cfpcw36hp7bwn16mfby9p1kgfq1lijfqq7d56ps0x")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index e90689384f..f9d9a81169 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -1252,6 +1252,7 @@ for and start applications.") xfce4-battery-plugin xfce4-clipman-plugin xfce4-pulseaudio-plugin + xfce4-volumed-pulse xfce4-xkb-plugin)) (propagated-inputs ;; Default font that applications such as IceCat require. diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index c2bf7dac58..81d8462761 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -36,7 +36,7 @@ ;;; Copyright © 2021 Lu Hui <luhux76@gmail.com> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2023 John Kehayias <john.kehayias@protonmail.com> +;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com> ;;; Copyright © 2023, 2024 Kaelyn Takata <kaelyn.alexi@protonmail.com> ;;; ;;; This file is part of GNU Guix. @@ -5018,7 +5018,7 @@ by the Xorg server.") (define-public xorg-server (package (name "xorg-server") - (version "21.1.11") + (version "21.1.12") (source (origin (method url-fetch) @@ -5026,7 +5026,7 @@ by the Xorg server.") "/xserver/xorg-server-" version ".tar.xz")) (sha256 (base32 - "1vr6sc38sqipazsm61bcym2ggbgfgaamz7wf05mb31pvayyssg8x")) + "03x954bygi6sdynk5yy3yvsfhg6i9gjhisn3x9jxvk5mw4mnw08y")) (patches (list ;; See: @@ -5274,7 +5274,7 @@ EGLStream families of extensions.") (define-public xorg-server-xwayland (package (name "xorg-server-xwayland") - (version "23.2.4") + (version "23.2.5") (source (origin (method url-fetch) @@ -5282,7 +5282,7 @@ EGLStream families of extensions.") "/xserver/xwayland-" version ".tar.xz")) (sha256 (base32 - "0sxlh43cnpf56p2p5jnhp7427knfpy42mcka7f5hjcqddndib7m9")))) + "145xykwmyqkaa8zrbn5fnvnff67iral9mc5raamglnbsd3r7zv1k")))) (inputs (list font-dejavu dbus egl-wayland diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 5104b3d104..3f912225a0 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1790,13 +1790,14 @@ archive' public keys, with GUIX." ;; If MACHINES-FILE already exists, move it out of the way. ;; Create a backup if it's a regular file: it's likely that the ;; user manually updated it. - (if (file-exists? machines-file) - (if (and (symbolic-link? machines-file) - (store-file-name? (readlink machines-file))) - (delete-file machines-file) - (rename-file machines-file - (string-append machines-file ".bak"))) - (mkdir-p (dirname machines-file))) + (let ((stat (false-if-exception (lstat machines-file)))) + (if stat + (if (and (eq? 'symlink (stat:type stat)) + (store-file-name? (readlink machines-file))) + (delete-file machines-file) + (rename-file machines-file + (string-append machines-file ".bak"))) + (mkdir-p (dirname machines-file)))) ;; Installed the declared machines file. (symlink #+(scheme-file "machines.scm" diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index f5d86219a8..561cfe2fd0 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2020, 2024 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com> @@ -252,12 +252,10 @@ upon error." (srfi srfi-1) ;for lvm-device-mapping (srfi srfi-26) - ;; FIXME: The following modules are for - ;; LUKS-DEVICE-MAPPING. We should instead propagate - ;; this info via gexps. - ((gnu build file-systems) - #:select (find-partition-by-luks-uuid)) - (rnrs bytevectors)) + ;; Load extra modules needed by the mapped device code. + #$@(append-map (compose mapped-device-kind-modules + mapped-device-type) + mapped-devices)) (with-output-to-port (%make-void-port "w") (lambda () diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index c19a818453..e56ead9e5e 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014-2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014-2022, 2024 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz> @@ -57,6 +57,7 @@ mapped-device-kind? mapped-device-kind-open mapped-device-kind-close + mapped-device-kind-modules mapped-device-kind-check device-mapping-service-type @@ -112,6 +113,8 @@ specifications to 'targets'." (open mapped-device-kind-open) ;source target -> gexp (close mapped-device-kind-close ;source target -> gexp (default (const #~(const #f)))) + (modules mapped-device-kind-modules ;list of module names + (default '())) (check mapped-device-kind-check ;source -> Boolean (default (const #t)))) @@ -125,13 +128,14 @@ specifications to 'targets'." 'device-mapping (match-lambda (($ <mapped-device> source targets - ($ <mapped-device-type> open close)) + ($ <mapped-device-type> open close modules)) (shepherd-service (provision (list (symbol-append 'device-mapping- (string->symbol (string-join targets "-"))))) (requirement '(udev)) (documentation "Map a device node using Linux's device mapper.") (start #~(lambda () #$(open source targets))) (stop #~(lambda _ (not #$(close source targets)))) + (modules (append %default-modules modules)) (respawn? #f)))) (description "Map a device node using Linux's device mapper."))) @@ -202,12 +206,6 @@ option of @command{guix system}.\n") (uuid-bytevector source) source)) (keyfile #$key-file)) - ;; XXX: 'use-modules' should be at the top level. - (use-modules (rnrs bytevectors) ;bytevector? - ((gnu build file-systems) - #:select (find-partition-by-luks-uuid - system*/tty)) - ((guix build utils) #:select (mkdir-p))) ;; Create '/run/cryptsetup/' if it does not exist, as device locking ;; is mandatory for LUKS2. @@ -283,7 +281,10 @@ option of @command{guix system}.\n") (mapped-device-kind (open open-luks-device) (close close-luks-device) - (check check-luks-device))) + (check check-luks-device) + (modules '((rnrs bytevectors) ;bytevector? + ((gnu build file-systems) + #:select (find-partition-by-luks-uuid system*/tty)))))) (define* (luks-device-mapping-with-options #:key key-file) "Return a luks-device-mapping object with open modified to pass the arguments diff --git a/gnu/tests/reconfigure.scm b/gnu/tests/reconfigure.scm index 00514e7020..bcc7645fa3 100644 --- a/gnu/tests/reconfigure.scm +++ b/gnu/tests/reconfigure.scm @@ -92,15 +92,12 @@ generation of the system profile." (length (system-generations marionette)) (1+ (length generations-prior))) - (test-assert "script activated the new generation" - (and (eqv? 'symlink - (marionette-eval - '(stat:type (lstat "/run/current-system")) - marionette)) - (string= #$os - (marionette-eval - '(readlink "/run/current-system") - marionette)))) + (test-equal "script activated the new generation" + (string-append "/var/guix/profiles/system-" + (number->string (+ 1 (length generations-prior))) + "-link") + (marionette-eval '(readlink "/run/current-system") + marionette)) (test-assert "script activated user accounts" (marionette-eval |