diff --git a/doc/guix.texi b/doc/guix.texi index 9aadad4c2ea..cad210d2930 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -26957,23 +26957,46 @@ site} for more information. @defvar sane-service-type This service provides access to scanners @i{via} @uref{http://www.sane-project.org, SANE} by installing the necessary -udev rules. It is included in @code{%desktop-services} (@pxref{Desktop -Services}) and relies by default on @code{sane-backends-minimal} package -(see below) for hardware support. +udev rules and pluggable backends. It is included in +@code{%desktop-services} (@pxref{Desktop Services}) and relies by +default on @code{sane-backends} package (see below) for hardware +support. @end defvar -@defvar sane-backends-minimal -The default package which the @code{sane-service-type} installs. It -supports many recent scanners. -@end defvar +@deftp {Data Type} sane-configuration +Data type representing the configuration for SANE. -@defvar sane-backends -This package includes support for all scanners that -@code{sane-backends-minimal} supports, plus older Hewlett-Packard -scanners supported by @code{hplip} package. In order to use this on -a system which relies on @code{%desktop-services}, you may use -@code{modify-services} (@pxref{Service Reference, -@code{modify-services}}) as illustrated below: +@table @asis + +@item @code{sane} (default: @code{sane}) +Package containing SANE library. + +@item @code{backends} (default: @code{(sane-backends)}) +List of packages with pluggable SANE backends: + +@itemize @bullet +@item +@code{sane-backends}: The default backend collection which supports many recent scanners, + +@item +@code{sane-airscan}: A backend that enables network scanners supporting eSCL (Apple) or WSD, +(Microsoft) protocols + +@item +@code{hplip}: A backend containing drivers for older Hewlett-Packard scanners, + +@item +@code{utsushi}: A backend containing drivers for older Epson devices. + +@end itemize + +@end table +@end deftp + +In order to use additional backends on a system which relies on +@code{%desktop-services}, you may use @code{modify-services} +(@pxref{Service Reference, @code{modify-services}}) as illustrated +below: @lisp (use-modules (gnu)) @@ -26987,13 +27010,14 @@ a system which relies on @code{%desktop-services}, you may use (define %my-desktop-services ;; List of desktop services that supports a broader range of scanners. (modify-services %desktop-services - (sane-service-type _ => sane-backends))) + (sane-service-type _ => + (sane-configuration + (backends (list sane-backends sane-airscan)))))) (operating-system @dots{} (services %my-desktop-services)) @end lisp -@end defvar @deffn {Procedure} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()] Return a configuration allowing an application to access GeoClue diff --git a/etc/teams.scm b/etc/teams.scm index 21a19cc24ca..8a75b68d70e 100755 --- a/etc/teams.scm +++ b/etc/teams.scm @@ -1305,7 +1305,7 @@ the \"texlive\" importer." (define-member (person "Nicolas Graves" "ngraves@ngraves.fr" - "ngraves") + "nicolas-graves") javascript python ruby) (define-member (person "Yelninei" diff --git a/gnu/local.mk b/gnu/local.mk index 43de2994f45..1162673a8dd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -512,7 +512,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/openkinect.scm \ %D%/packages/onc-rpc.scm \ %D%/packages/opencl.scm \ - %D%/packages/openbox.scm \ %D%/packages/opencog.scm \ %D%/packages/openldap.scm \ %D%/packages/openpgp.scm \ @@ -1030,6 +1029,7 @@ dist_patch_DATA = \ %D%/packages/patches/barony-fix-textures.patch \ %D%/packages/patches/bash-completion-directories.patch \ %D%/packages/patches/bash-linux-pgrp-pipe.patch \ + %D%/packages/patches/basis-universal-unbundle-libs.patch \ %D%/packages/patches/bastet-change-source-of-unordered_set.patch \ %D%/packages/patches/bdb-4-5-configure.patch \ %D%/packages/patches/bdb-5.3-atomics-on-gcc-9.patch \ @@ -1136,7 +1136,7 @@ dist_patch_DATA = \ %D%/packages/patches/csvkit-set-locale-for-tests.patch \ %D%/packages/patches/ctranslate2-local-build.patch \ %D%/packages/patches/cube-nocheck.patch \ - %D%/packages/patches/cups-minimal-Address-PPD-injection-issues.patch \ + %D%/packages/patches/cups-relax-root-ownership-check.patch \ %D%/packages/patches/cura-engine-gcc-14.patch \ %D%/packages/patches/curl-CVE-2024-8096.patch \ %D%/packages/patches/curl-use-ssl-cert-env.patch \ @@ -1228,6 +1228,7 @@ dist_patch_DATA = \ %D%/packages/patches/emacs-telega-path-placeholder.patch \ %D%/packages/patches/emacs-telega-test-env.patch \ %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \ + %D%/packages/patches/emacs-zoom-image-test-fix.patch \ %D%/packages/patches/enblend-enfuse-reproducible.patch \ %D%/packages/patches/enjarify-setup-py.patch \ %D%/packages/patches/enlightenment-fix-setuid-path.patch \ @@ -1553,6 +1554,7 @@ dist_patch_DATA = \ %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \ %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \ %D%/packages/patches/gtk-doc-respect-xml-catalog.patch \ + %D%/packages/patches/gtk-doc-mkhtml-test-fix.patch \ %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 \ @@ -1603,6 +1605,7 @@ dist_patch_DATA = \ %D%/packages/patches/idris-test-ffi008.patch \ %D%/packages/patches/ilmbase-fix-tests.patch \ %D%/packages/patches/inferno-fix-crash.patch \ + %D%/packages/patches/inkscape-libxml2.patch \ %D%/packages/patches/instead-use-games-path.patch \ %D%/packages/patches/intltool-perl-compatibility.patch \ %D%/packages/patches/inetutils-hurd64.patch \ @@ -1674,6 +1677,7 @@ dist_patch_DATA = \ %D%/packages/patches/librewolf-use-system-wide-dir.patch \ %D%/packages/patches/libvirt-add-install-prefix.patch \ %D%/packages/patches/libvirt-respect-modules-path.patch \ + %D%/packages/patches/libzmf-doxygen-1.14.patch \ %D%/packages/patches/libziparchive-add-includes.patch \ %D%/packages/patches/lightdm-arguments-ordering.patch \ %D%/packages/patches/lightdm-vnc-ipv6.patch \ @@ -1746,6 +1750,7 @@ dist_patch_DATA = \ %D%/packages/patches/libofa-ftbfs-1.diff \ %D%/packages/patches/libofa-curl.diff \ %D%/packages/patches/libofa-ftbfs-2.diff \ + %D%/packages/patches/libosinfo-libxml2-fix.patch \ %D%/packages/patches/libotr-test-auth-fix.patch \ %D%/packages/patches/libksieve-Fix-missing-link-libraries.patch \ %D%/packages/patches/libmad-armv7-thumb-pt1.patch \ @@ -1786,7 +1791,6 @@ dist_patch_DATA = \ %D%/packages/patches/libxcb-path-max.patch \ %D%/packages/patches/libxml2-xpath0-Add-option-xpath0.patch \ %D%/packages/patches/libwpd-gcc-compat.patch \ - %D%/packages/patches/libxslt-generated-ids.patch \ %D%/packages/patches/libxt-guix-search-paths.patch \ %D%/packages/patches/lierolibre-check-unaligned-access.patch \ %D%/packages/patches/lierolibre-is-free-software.patch \ @@ -1867,6 +1871,7 @@ dist_patch_DATA = \ %D%/packages/patches/mpc123-initialize-ao.patch \ %D%/packages/patches/mpg321-CVE-2019-14247.patch \ %D%/packages/patches/mpg321-gcc-10.patch \ + %D%/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch \ %D%/packages/patches/modglue-fix-build.patch \ %D%/packages/patches/modem-manager-fix-test-wrapper.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \ @@ -2226,6 +2231,7 @@ dist_patch_DATA = \ %D%/packages/patches/rtosc-0.3.1-fix-invalid-comparison-operator.patch \ %D%/packages/patches/racket-chez-scheme-bin-sh.patch \ %D%/packages/patches/racket-launcher-config-dir.patch \ + %D%/packages/patches/raptor2-libxml2.patch \ %D%/packages/patches/racket-rktio-bin-sh.patch \ %D%/packages/patches/re2c-Use-maximum-alignment.patch \ %D%/packages/patches/reduce-unbundle-libffi.patch \ @@ -2261,6 +2267,7 @@ dist_patch_DATA = \ %D%/packages/patches/sage-safeguard-sage-getargspec-cython.patch \ %D%/packages/patches/sajson-for-gemmi-numbers-as-strings.patch \ %D%/packages/patches/sajson-build-with-gcc10.patch \ + %D%/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch \ %D%/packages/patches/sbc-fix-build-non-x86.patch \ %D%/packages/patches/sbcl-fix-arm64-shared-lib.patch \ %D%/packages/patches/sbcl-aserve-add-HTML-5-elements.patch \ @@ -2433,7 +2440,9 @@ dist_patch_DATA = \ %D%/packages/patches/vtk-7-gcc-11-compat.patch \ %D%/packages/patches/vtk-7-hdf5-compat.patch \ %D%/packages/patches/vtk-7-python-compat.patch \ + %D%/packages/patches/vulkan-tools-wayland-1.24.patch \ %D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \ + %D%/packages/patches/warzone2100-unbundle-libs.patch \ %D%/packages/patches/wcstools-extend-makefiles.patch \ %D%/packages/patches/wdl-link-libs-and-fix-jnetlib.patch \ %D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 53483d22165..fbd4a518e16 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1115,8 +1115,21 @@ on memory usage on GNU/Linux systems.") (base32 "058y4a4mvx9m179dyr4wi8mlm6i4ybywshadaj4cvfn9fv0r0nkx")) (file-name (git-file-name name version)))) (build-system gnu-build-system) + (arguments + (list + #:configure-flags + #~(list "--enable-sensors") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-dlopen + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "linux/LibSensors.c" + (("dlopen\\(\"libsensors\\.so") + (string-append "dlopen(\"" + (search-input-file + inputs "/lib/libsensors.so"))))))))) (inputs - (list ncurses)) + (list ncurses (list lm-sensors "lib"))) (native-inputs (list autoconf automake python-minimal-wrapper)) ; for scripts/MakeHeader.py (home-page "https://htop.dev") @@ -6299,6 +6312,10 @@ alias cysdig=sudo csysdig --modern-bpf "fail2ban/client/fail2banregex.py") (("/etc/fail2ban") (string-append #$output "/etc/fail2ban"))))) + (replace 'check + (lambda* (#:key tests? test-flags #:allow-other-keys) + (when tests? + (invoke "./bin/fail2ban-testcases")))) (add-after 'fix-default-config 'set-action-dependencies (lambda* (#:key inputs #:allow-other-keys) ;; deleting things that are not feasible to fix @@ -6379,7 +6396,8 @@ alias cysdig=sudo csysdig --modern-bpf "fail2ban-regex" "fail2ban-server" "fail2ban-testcases")) ((install-man "5") "jail.conf"))))))) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs (list python-aiosmtpd + python-setuptools)) (inputs (list gawk coreutils-minimal curl diff --git a/gnu/packages/augeas.scm b/gnu/packages/augeas.scm index 0b3233e960e..8a784f48175 100644 --- a/gnu/packages/augeas.scm +++ b/gnu/packages/augeas.scm @@ -57,7 +57,7 @@ "1zzdp5bwnszza5q6cjw66hkicay8b49n5pda7cbcgfg4hbbzv2rn")))) (build-system gnu-build-system) (propagated-inputs - (list libxml2-next)) + (list libxml2)) (native-inputs (list readline pkg-config)) (home-page "https://augeas.net") diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index 7c36ff22c94..84f2444004e 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2020, 2023, 2024, 2025 Janneke Nieuwenhuizen ;;; Copyright © 2021 Maxim Cournoyer ;;; Copyright © 2022 Marius Bakke +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -460,7 +461,13 @@ Makefile, simplifying the entire process for the developer.") '("t/tags-lisp-space.sh" ;; This test fails, probably a timestamp thing: ;; make: Nothing to be done for 'all'. - "t/remake-aclocal-version-mismatch.sh") + "t/remake-aclocal-version-mismatch.sh" + ;; Non-deterministic test failures: + "t/aclocal-autoconf-version-check.sh" + "t/backcompat2.sh" + "t/backcompat3.sh" + "t/nodef.sh" + "t/nodef2.sh") (("^#!.*" all) (string-append all "exit 77;\n"))))) #$@(if (%current-target-system) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 51a06c5413e..2b3367d5b2b 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -526,8 +526,6 @@ used to apply commands with arbitrarily long arguments.") "tests/split/fail.sh" ;; These tests error "tests/dd/nocache.sh" - ;; These tests can intermitently fail on btrfs - "tests/cp/reflink-auto.sh" ;; These tests fail "tests/cp/sparse.sh" "tests/cp/special-f.sh" @@ -573,6 +571,10 @@ used to apply commands with arbitrarily long arguments.") (("(^| )main *\\(.*" all) (string-append all "{\n exit (77);//")))) '()) + ;; These tests can fail on btrfs. + (substitute* "tests/cp/reflink-auto.sh" + (("^#!.*" all) + (string-append all "exit 77;\n"))) (substitute* "Makefile.in" ;; fails on filesystems where inotify cannot be used, ;; more info in #47935 diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 5d218e6a690..3cd2c838bfd 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -12165,26 +12165,19 @@ interpretation.") (define-public python-taggd (package (name "python-taggd") - (version "0.3.6") + (version "0.4.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/SpatialTranscriptomicsResearch/taggd") + (url "https://github.com/jfnavarro/taggd") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0j19ah81z7aqrdljah9hyarp91gvgbk63pz6fz3pdpksy1yqyi6k")) - (modules '((guix build utils))) - (snippet - '(for-each delete-file - (find-files "taggd" "\\.c$"))))) + "17hi1vs1qwhxx8jnradnl9k471li6fjb6w5sljkpzjxy7rkxwb85")))) (build-system pyproject-build-system) (arguments (list - #:test-flags - ;; AssertionError: 0 is not true : Running Normal BAM test failed. - #~(list "-k" "not test_normal_bam_run") #:phases #~(modify-phases %standard-phases (add-before 'check 'remove-local-taggd @@ -12193,10 +12186,16 @@ interpretation.") ;; taggd when running tests. (delete-file-recursively "taggd")))))) (propagated-inputs - (list python-numpy python-pysam)) + (list python-numpy + python-pysam + python-tqdm + python-aiofiles + python-dnaio + python-types-aiofiles + python-types-tqdm)) (native-inputs (list python-cython python-pytest python-setuptools)) - (home-page "https://github.com/SpatialTranscriptomicsResearch/taggd") + (home-page "https://github.com/jfnavarro/taggd") (synopsis "Genetic barcode demultiplexing") (description "This package provides TagGD barcode demultiplexing utilities for Spatial Transcriptomics data.") @@ -12205,40 +12204,45 @@ for Spatial Transcriptomics data.") (define-public stpipeline (package (name "stpipeline") - (version "1.8.1") + (version "2.0.0") (source (origin - (method url-fetch) - (uri (pypi-uri "stpipeline" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/jfnavarro/st_pipeline") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0har2g42fvaqpiz66lincy86aj1hvwzds26kxhxfamvyvv4721wk")))) + (base32 "1qah9sa7wy9ywf0si2ngqg0qyr9jjp5gxmjx3y65i78bxyq8pfyx")))) (build-system pyproject-build-system) (arguments (list #:phases '(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "requirements.txt" - (("argparse.*") - ""))))))) + ;; requirements.txt and pyproject.toml have all versions + ;; of the dependencies hardcoded. All tests pass, so it should + ;; be good enough. + ;; However, the sanity-check of any Python package that has + ;; stpipelines a dependency, would fail too. + (delete 'sanity-check)))) (propagated-inputs (list htseq - python-cython - python-invoke + python-distance + python-dnaio python-numpy python-pandas - python-pympler python-pysam python-regex python-scikit-learn python-scipy python-seaborn - python-setuptools - python-sqlitedict python-taggd + python-types-regex samtools star)) - (native-inputs (list python-setuptools python-wheel)) - (home-page "https://github.com/SpatialTranscriptomicsResearch/st_pipeline") + (native-inputs (list + python-cython + python-pytest + python-poetry-core)) + (home-page "https://github.com/jfnavarro/st_pipeline") (synopsis "Pipeline for spatial mapping of unique transcripts") (description "This package provides an automated pipeline for spatial mapping of @@ -23600,7 +23604,7 @@ The output is in SAM format.") #$(this-package-input "libxml2") "/include/libxml2")))) (propagated-inputs - (list libxml2-next)) + (list libxml2)) (native-inputs (list check swig)) (home-page "https://sbml.org/Software/libSBML") diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index dbce7075e30..840cce37122 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -1041,6 +1041,7 @@ CONFIG_TOOLS_KWBIMAGE=n") (lambda* (#:key tests? #:allow-other-keys) (when tests? (invoke "./u_boot_pylib"))))))) + (native-inputs (list python-setuptools)) (synopsis "U-Boot Python library") (description "This package provides common Python code used by some of the commands part of the U-Boot project, such as Patman."))) @@ -1076,6 +1077,7 @@ commands part of the U-Boot project, such as Patman."))) ,(dirname (search-input-file inputs "libexec/git-core/git-send-email")))))))))) + (native-inputs (list python-setuptools)) (inputs (list git `(,git "send-email") diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm index cae3673c8d4..62b383179db 100644 --- a/gnu/packages/build-tools.scm +++ b/gnu/packages/build-tools.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2024 Janneke Nieuwenhuizen ;;; Copyright © 2025 Aiden Isik ;;; Copyright © 2025 Josep Bigorra +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -308,7 +309,7 @@ files and generates build instructions for the Ninja build system.") (define-public meson (package (name "meson") - (version "1.5.2") + (version "1.9.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/mesonbuild/meson/" @@ -316,8 +317,8 @@ files and generates build instructions for the Ninja build system.") version ".tar.gz")) (sha256 (base32 - "02wi62k9w7716xxdgrrx68q89vaq3ncnbpw5ms0g27npn2df0mgr")))) - (build-system python-build-system) + "13a9pj7d2mxgv5gbd78di4pb4w722vjis0vmk38m1vdm95v2f9yd")))) + (build-system pyproject-build-system) (arguments (list #:tests? #f ;disabled to avoid extra dependencies #:phases @@ -327,12 +328,14 @@ files and generates build instructions for the Ninja build system.") (replace 'wrap (lambda* (#:key inputs outputs #:allow-other-keys) (substitute* (search-input-file outputs "bin/meson") - (("# EASY-INSTALL-ENTRY-SCRIPT") - (format #f "\ -import sys -sys.path.insert(0, '~a') -# EASY-INSTALL-ENTRY-SCRIPT" (site-packages inputs outputs))))))))) - (inputs (list python ninja/pinned)) + (("import sys" all) + (string-append + all "\n" + "sys.path.insert(0, '" + (site-packages inputs outputs) + "')")))))))) + (native-inputs (list python-setuptools)) + (inputs (list python ninja)) (home-page "https://mesonbuild.com/") (synopsis "Build system designed to be fast and user-friendly") (description diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 2451fd9d045..4b974917893 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -3184,25 +3184,6 @@ JSON APIs with Behave.") time by mocking the datetime module.") (license license:asl2.0))) -(define-public python-flexmock - (package - (name "python-flexmock") - (version "0.12.2") - (source (origin - (method url-fetch) - (uri (pypi-uri "flexmock" version)) - (sha256 - (base32 - "18dcr7mpldf3cxsqi9rak75n4z7x3j544l4ixdspairm7cf6cp23")))) - (build-system pyproject-build-system) - (native-inputs (list poetry python-pytest)) - (home-page "https://flexmock.readthedocs.org") - (synopsis "Testing library for Python") - (description - "flexmock is a testing library for Python that makes it easy to create -mocks, stubs and fakes.") - (license license:bsd-3))) - (define-public python-flaky (package (name "python-flaky") diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm index 06fa6676e23..93fe90a858f 100644 --- a/gnu/packages/chemistry.scm +++ b/gnu/packages/chemistry.scm @@ -701,10 +701,20 @@ symmetries written in C. Spglib can be used to: (sha256 (base32 "0w3c71wvhnc44pfafcjfgqkjimkcdkpjk3bahg9v6l1z8c0cyhfy")))) (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-six + (lambda _ + (substitute* "geometric/nifty.py" + (("import six") "") + (("six\\.string_types") "str")) + (substitute* "setup.py" + (("'six',") ""))))))) (native-inputs (list python-pytest - python-setuptools - python-wheel)) + python-setuptools)) (propagated-inputs (list python-numpy python-scipy diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index c0a13082aff..9fae9575e85 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -38082,14 +38082,14 @@ offers access to an XPath \"interpreter\".") (define-public r-xml2 (package (name "r-xml2") - (version "1.3.8") + (version "1.4.0") (source (origin (method url-fetch) (uri (cran-uri "xml2" version)) (sha256 (base32 - "01qhmlr5rhsn25ddb8cm3vl9vyqk5c5cgpc6c0krs9wccd1j4pbj")))) + "0qnw4id8bknm3anvd9dlpg344s18dnxzm8lhbyqkcpgqfya84bhc")))) (properties ;; Avoid dependency cycle. '((updater-ignored-native-inputs . ("r-httr")))) diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index fcc63f3cad5..ad9779cb2e6 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2025 Lukas Gradl ;;; Copyright © 2025 Antoine Côté ;;; Copyright © 2024 Janneke Nieuwenhuizen +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -321,7 +322,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.") (define-public cups-minimal (package (name "cups-minimal") - (version "2.4.9") + (version "2.4.14") (source (origin (method git-fetch) @@ -331,8 +332,8 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.") ;; Avoid NAME confusion: these are the complete CUPS sources. (file-name (git-file-name "cups" version)) (sha256 - (base32 "08wjd1flyaslhnwvxl39403qi3g675rk532ysiyk6cda4r8ks1g1")) - (patches (search-patches "cups-minimal-Address-PPD-injection-issues.patch")))) + (base32 "1dk5salizxy1qm19gw93ffdd34hsn1cd4s57nwl7nfhwwirkiri2")) + (patches (search-patches "cups-relax-root-ownership-check.patch")))) (build-system gnu-build-system) (arguments (list #:configure-flags @@ -703,6 +704,14 @@ should only be used as part of the Guix cups-pk-helper service.") (string-append "rulessystemdir = " out "/lib/systemd/system")) (("/etc/sane.d") (string-append out "/etc/sane.d")))))) + (add-after 'install 'move-sane-config-to-dll.d + (lambda _ + ;; move dll.conf to dll.d - the directory intended for 3rd-party + ;; backend configurations. + (let ((dll.d (string-append #$output "/etc/sane.d/dll.d")) + (dll.conf (string-append #$output "/etc/sane.d/dll.conf"))) + (mkdir-p dll.d) + (rename-file dll.conf (string-append dll.d "/hpaio"))))) (add-after 'install 'install-models-dat (lambda* (#:key outputs #:allow-other-keys) (install-file "data/models/models.dat" @@ -751,7 +760,7 @@ should only be used as part of the Guix cups-pk-helper service.") python-pygobject python-pyqt python-wrapper - sane-backends-minimal + sane net-snmp openssl avahi @@ -789,7 +798,7 @@ should only be used as part of the Guix cups-pk-helper service.") dbus libjpeg-turbo libusb - sane-backends-minimal + sane zlib)) (synopsis "GUI-less version of hplip"))) diff --git a/gnu/packages/data-language.scm b/gnu/packages/data-language.scm index aad8df72a0d..ea49effbbb4 100644 --- a/gnu/packages/data-language.scm +++ b/gnu/packages/data-language.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Antero Mejr +;;; Copyright © 2025 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,7 +20,7 @@ (define-module (gnu packages data-language) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system cmake) - #:use-module (guix git-download) + #:use-module (guix download) #:use-module (guix packages) #:use-module (gnu packages) #:use-module (gnu packages algebra) @@ -42,16 +43,17 @@ (define-public gnudatalanguage (package (name "gnudatalanguage") - (version "1.0.1") + (version "1.1.1") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/gnudatalanguage/gdl") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (string-append + "https://github.com/gnudatalanguage/gdl/releases/download/v" + version "/gdl-v" version ".tar.gz")) + (sha256 - (base32 "1bb3nin3qrzx2dwdk08vffp4bblrcpv6vv1ybaj499qhqcpqpc12")))) + (base32 + "0qln7851dpfy78yyx5k01ch2yrik3k1a1a2727rvpqf5rnmx6kkl")))) (build-system cmake-build-system) (native-inputs (list pkg-config python python-numpy)) @@ -75,6 +77,7 @@ netcdf plplot proj + qhull readline shapelib udunits diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 547016c85ab..c5d90d900d2 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -1173,7 +1173,7 @@ Language.") (define-public mariadb (package (name "mariadb") - (version "10.11.10") + (version "10.11.14") (source (origin (method url-fetch) (uri (string-append "https://downloads.mariadb.com/MariaDB" @@ -1181,7 +1181,7 @@ Language.") version ".tar.gz")) (sha256 (base32 - "08phlqcwcwl753zi2jv702q7b3h25d489289mflnm8c31djp8smh")) + "0bq5gn5yl3c6jnsamam4nb42y10c43ag764f7mkf7m5i9yqiqmwa")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm index d9a97a9b0fa..b18e62e3db9 100644 --- a/gnu/packages/documentation.scm +++ b/gnu/packages/documentation.scm @@ -187,7 +187,7 @@ markup) can be customized and extended by the user.") (define-public doxygen (package (name "doxygen") - (version "1.9.8") + (version "1.14.0") (home-page "https://www.doxygen.nl/") (source (origin (method url-fetch) @@ -198,7 +198,7 @@ markup) can be customized and extended by the user.") ".src.tar.gz"))) (sha256 (base32 - "0qjgw7bnx668hpi4r8m366vsq118s9365zf8z4x5yjrqx0ld5qq5")))) + "0pbbdvc1zxps6mi58bry16rcrdw6b9gvf9nhv0kp60qkmc8nslyl")))) (build-system cmake-build-system) (native-inputs (list bison @@ -219,12 +219,15 @@ markup) can be customized and extended by the user.") #~'()) #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'disable-bibtex-test + (add-after 'unpack 'disable-some-tests (lambda _ - ;; Disable test that requires bibtex to avoid a - ;; circular dependency. (for-each delete-file-recursively - '("testing/012" "testing/012_cite.dox")))) + ;; Disable test that requires bibtex to avoid a + ;; circular dependency. + '("testing/012" "testing/012_cite.dox" + ;; Reported upstream, see + ;; . + "testing/009" "testing/009_bug.cpp")))) (add-before 'configure 'patch-sh (lambda* (#:key inputs #:allow-other-keys) (let ((/bin/sh (search-input-file inputs "/bin/sh"))) diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 40558a4c6ca..0b435993ef4 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -243,7 +243,7 @@ object or archive file), @command{eu-strip} (for discarding symbols), (list pkg-config texinfo python-sphinx python)) (propagated-inputs (list elfutils ;libabigail.la says -lelf - libxml2-next)) ;in Requires.private of libabigail.pc + libxml2)) ;in Requires.private of libabigail.pc (synopsis "Analyze application binary interfaces (ABIs)") (description "@dfn{ABIGAIL} stands for the Application Binary Interface Generic diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 1c10acad067..5343b8147f2 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -8455,6 +8455,29 @@ whose goal is to provide colorful yet legible options for users who want something with a bit more flair than the Modus themes.") (license license:gpl3+))) +(define-public emacs-doric-themes + (package + (name "emacs-doric-themes") + (version "0.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/protesilaos/doric-themes") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "06kvv5hvqig1sngzzvpxfpb9wln9fv2b7krjmvb0n3kvp0s0bxmd")))) + (build-system emacs-build-system) + (arguments (list #:tests? #f)) ;no tests + (home-page "https://github.com/protesilaos/doric-themes") + (synopsis "Highly readable minimalist Emacs themes") + (description + "This package provides a set of Emacs themes that conform with a +minimalist aesthetic: they use few colours and appear monochromatic in many +contexts") + (license license:gpl3+))) + (define-public emacs-eslint-flymake (let ((commit "c78246330ee3ac1e0e07a709473d98a113d268e5") (revision "1")) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 776c11a350f..5a7af4ea62c 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -158,7 +158,8 @@ "emacs-native-comp-driver-options.patch" "emacs-native-comp-fix-filenames.patch" "emacs-native-comp-pin-packages.patch" - "emacs-pgtk-super-key-fix.patch")) + "emacs-pgtk-super-key-fix.patch" + "emacs-zoom-image-test-fix.patch")) (modules '((guix build utils))) (snippet '(with-directory-excursion "lisp" diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 0d5748b3c0d..f398fab48b5 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1566,8 +1566,7 @@ use on a given system.") parallel perl pkg-config - python-wrapper - python-libxml2)) + python-wrapper)) (inputs (list pcre2)) (home-page "https://www.gnu.org/software/libredwg/") diff --git a/gnu/packages/esolangs.scm b/gnu/packages/esolangs.scm index 2f84688f9ad..04f93c6355d 100644 --- a/gnu/packages/esolangs.scm +++ b/gnu/packages/esolangs.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2020 Hendursaga ;;; Copyright © 2020 Liliana Marie Prikler ;;; Copyright © 2022 jgart +;;; Copyright © 2025 Nicolas Graves ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,12 +27,14 @@ #:use-module (gnu packages flex) #:use-module (gnu packages ncurses) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages readline) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)) @@ -106,18 +109,32 @@ whenever possible to the extent that the above points are not compromised. (name "folders") (version "0.0.8") (source - (origin - (method url-fetch) - (uri (pypi-uri "Folders" version)) - (sha256 - (base32 "0qh80qx7sjx0zii1hf8fm853d9rcg4rginm6v4gpp0hgn2a4q4gh")))) - (build-system python-build-system) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/SinaKhalili/Folders.py") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14fs8c7ilvsw6xbskr688s1dp3nd8vnwv7bg23ab1l6vj6fpzwmw")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "Folders" "sample_programs/HelloWorld") + (format #t "test suite not run~%"))))))) + (native-inputs (list python-setuptools)) (home-page "https://github.com/SinaKhalili/Folders.py") (synopsis "Structural programming language") - (description "Folders is a programming language, in which programs -are encoded as (nested) directories. Note that the switches you pass to -@command{du} may affect your score when code golfing.") - (properties `((lint-hidden-cpe-vendors . ("premio" "jenkins")))) + (description + "Folders is a programming language, in which programs are encoded as +(nested) directories. Note that the switches you pass to @command{du} may +affect your score when code golfing.") + (properties `((lint-hidden-cpe-vendors "premio" "jenkins"))) (license license:expat))) (define-public shakespeare-spl diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 997fb3c3ded..7e25c231ca8 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2019, 2020, 2022 Marius Bakke ;;; Copyright © 2020 Roel Janssen ;;; Copyright © 2020, 2021, 2024 Nicolas Goaziou -;;; Copyright © 2021-2024 Maxim Cournoyer +;;; Copyright © 2021-2025 Maxim Cournoyer ;;; Copyright © 2021 Sarah Morgensen ;;; Copyright © 2022 Eric Bavier ;;; Copyright © 2022 Felipe Balbi @@ -181,13 +181,13 @@ them as it goes.") (define-public python-afdko (package (name "python-afdko") - (version "3.9.5") + (version "4.0.2") (source (origin (method url-fetch) (uri (pypi-uri "afdko" version)) (sha256 - (base32 "02c1rjx7ggbd1m9vqgsc2r28yiw66cjgvs5cq1a2fz0lkadbvrnb")) + (base32 "0c6ribidsmcd9rihy32gknfrr3iw8dy2jlmq6lk05pc33s3ix8z1")) (modules '((guix build utils))) (snippet #~(begin @@ -415,6 +415,7 @@ but also provides many useful font conversion and analysis facilities. "--ignore=tests/makeotfexe_test.py" "--ignore=tests/otc2otf_test.py" "--ignore=tests/otf2ttf_test.py" + "--ignore=tests/proofpdf_test.py" "--ignore=tests/ttxn_test.py"))))))) (native-inputs (list pkg-config @@ -470,7 +471,7 @@ other operations on paths.") (define-public python-cffsubr (package (name "python-cffsubr") - (version "0.2.9.post1") + (version "0.3.0") (source (origin (method url-fetch) @@ -478,7 +479,7 @@ other operations on paths.") (modules '((guix build utils))) (snippet '(delete-file-recursively "external")) ;unbundle ADFKO (sha256 - (base32 "0p7wyagkmwf4agr6ysgswrpmpifx5rz8dnjbcs2gmj29rwnl2cbb")))) + (base32 "1yrfjn3mdi48pg78yzlmskdz9i4nf2wg7h8ivnn9yrw1vc5iaibp")))) (build-system python-build-system) (arguments (list @@ -560,13 +561,13 @@ for fontTools.") (define-public python-cu2qu (package (name "python-cu2qu") - (version "1.6.7.post1") + (version "1.6.7.post2") (source (origin (method url-fetch) (uri (pypi-uri "cu2qu" version ".zip")) (sha256 - (base32 "1x762r7bf39g6aivfvrmq00h6f07abvs9x1xm0fz8l81vq8jz64c")))) + (base32 "022qpzbpi6j56wqz48rnqs6dvksipw13fi4g10k941fnkgcn5x8x")))) (build-system pyproject-build-system) (arguments ;; XXX: Try to remove it when updating python-fonttools. @@ -592,14 +593,24 @@ converts any cubic curves to quadratic. The most useful function is probably (define-public python-ufo2ft (package (name "python-ufo2ft") - (version "2.31.0") + (version "2.33.4") (source (origin (method url-fetch) (uri (pypi-uri "ufo2ft" version)) (sha256 - (base32 "1rg2997af8blvswlwif0kpz2vxrlh555gzqslz6yv9y7i7v8lphl")))) + (base32 "0xnnwlj3rl0p7q19l6wdrfkzzq1f2l5vyl2qs7kl4vvfalgpzakv")))) (build-system pyproject-build-system) + (arguments + (list #:test-flags + #~(list "-k" + ;; XXX: These tests all fail with "TTX output is different + ;; from expected". Potentially fixed in 3.x release. + (string-append "not test_compileVariableTTF " + "and not test_compileVariableCFF2 " + "and not test_drop_glyph_names_variable " + "and not test_buildTables_FeatureLibError " + "and not test_kern_zyyy_zinh")))) (native-inputs (list python-pytest python-setuptools-scm @@ -708,13 +719,13 @@ implementing the pen protocol for manipulating glyphs.") (hidden-package (package (name "python-fontparts-bootstrap") - (version "0.11.0") + (version "0.13.3") (source (origin (method url-fetch) - (uri (pypi-uri "fontParts" version ".zip")) + (uri (pypi-uri "fontparts" version ".tar.gz")) (sha256 - (base32 "0j4h8hszky639gmfy1avmw670y80ya49kca8yc635h5ihl0c3v8x")))) + (base32 "0ddyfa975hskaip6l4hn7n2jh50y5s0pw911phyx2fsws54pw5s7")))) (build-system pyproject-build-system) (arguments (list #:test-backend #~'custom @@ -726,8 +737,7 @@ implementing the pen protocol for manipulating glyphs.") python-fonttools-minimal)) (native-inputs (list python-setuptools - python-setuptools-scm - unzip)) + python-setuptools-scm)) (home-page "https://github.com/robotools/fontParts") (synopsis "Library for interacting with font parts") (description "FontParts is an @acronym{API, Application Programming @@ -1925,13 +1935,13 @@ with @samp{nameIDs}.") (define-public python-ufolib2 (package (name "python-ufolib2") - (version "0.13.1") + (version "0.18.1") (source (origin (method url-fetch) - (uri (pypi-uri "ufoLib2" version)) + (uri (pypi-uri "ufolib2" version)) (sha256 - (base32 "0yx4i8q5rfyqhr2fj70a7z1bp1jv7bdlr64ww9z4nv9ycbda4x9j")))) + (base32 "1971ibdsgji8x0jzlk1hc6dv2r5wnfyylz7f6wjkymqw6v6fzq3x")))) (build-system pyproject-build-system) (native-inputs (list python-pytest @@ -1954,51 +1964,53 @@ API-compatible with defcon.") ;;; A variant used to break a cycle between python-fontpens and ;;; python-fontparts. (define-public python-defcon-bootstrap - (package - (name "python-defcon-bootstrap") - (version "0.11.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/robotools/defcon") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "06w5kd5ac63m6m8x8j4xwdl7ncbpjl7pdpfpy9i6c8nhbd8sbjfm")))) - (build-system pyproject-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'set-version - (lambda _ - (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) - (propagated-inputs (list python-fontpens-bootstrap python-fonttools)) - (native-inputs - (list python-pytest - python-setuptools - python-setuptools-scm - unzip)) - (home-page "https://github.com/robotools/defcon") - (synopsis "Flexible objects for representing UFO data") - (description - "Defcon is a set of @acronym{UFO, unified font object} based + (hidden-package + (package + (name "python-defcon-bootstrap") + (version "0.12.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/robotools/defcon") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zx4xas6qcpp54d1vcfy5wjv17aazkpfmb7hkjy99g47xsi6crrh")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-version + (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) + (propagated-inputs (list python-fontpens-bootstrap python-fonttools)) + (native-inputs + (list python-pytest + python-setuptools + python-setuptools-scm)) + (home-page "https://github.com/robotools/defcon") + (synopsis "Flexible objects for representing UFO data") + (description + "Defcon is a set of @acronym{UFO, unified font object} based objects optimized for use in font editing applications. The objects are built to be lightweight, fast and flexible. The objects are very bare-bones and they are not meant to be end-all, be-all objects. Rather, they are meant to provide base functionality so that you can focus on your application’s behavior, not object observing or maintaining cached data. Defcon implements UFO3 as described by the UFO font format.") - (license license:expat))) + (license license:expat)))) (define-public python-defcon - (hidden-package - (package/inherit python-defcon-bootstrap - (name "python-defcon") - (propagated-inputs - (modify-inputs (package-propagated-inputs python-defcon-bootstrap) - (replace "python-fontpens-bootstrap" python-fontpens)))))) + (package/inherit python-defcon-bootstrap + (name "python-defcon") + (propagated-inputs + (modify-inputs (package-propagated-inputs python-defcon-bootstrap) + (replace "python-fontpens-bootstrap" python-fontpens))) + (properties + (alist-delete 'hidden? + (package-properties python-fontparts-bootstrap))))) (define-public nototools (package diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index d850c143c5a..d5589fba198 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -586,7 +586,7 @@ freedesktop.org project.") ;; Updating this will rebuild over 700 packages through libinput-minimal. (package (name "libinput") - (version "1.26.2") + (version "1.29.0") (source (origin (method git-fetch) (uri (git-reference @@ -595,7 +595,7 @@ freedesktop.org project.") (file-name (git-file-name name version)) (sha256 (base32 - "1zwwq7a0a6yznc6jxhp6gb50yw5vpfkvgbrabrpc5pwldpckfbrg")))) + "1kgr18p7n9bvim9bx24jbr5nwp6icla3bgzfskr04f68mirmx561")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Ddocumentation=false") @@ -642,21 +642,6 @@ other applications that need to directly deal with input devices.") "-Ddebug-gui=false" ;requires gtk+@3 ,flags)))))) -;; TODO: Remove this package when libinput-minimal >= 1.28 -(define-public libinput-minimal-next - (package/inherit libinput-minimal - (name "libinput-minimal") - (version "1.28.903") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.freedesktop.org/libinput/libinput.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0i5yljdff4fjchpa8ifscbcssnmiim58ai1zy3v41vim2illprv5")))))) - (define-public libei (package (name "libei") @@ -1363,7 +1348,7 @@ in and for C++.") (define-public wayland (package (name "wayland") - (version "1.23.1") + (version "1.24.0") (source (origin (method url-fetch) (uri (string-append "https://gitlab.freedesktop.org/" name @@ -1371,12 +1356,11 @@ in and for C++.") name "-" version ".tar.xz")) (sha256 (base32 - "1vg5h6d94hglh7724q6wx9dpg4y0afvxksankp1hwbcy76lb4kw6")))) + "0dh5bldg24ajxz7xmylwm01nmj572x1vb0ya9qrppmhsl23j92c2")))) (build-system meson-build-system) (outputs '("out" "doc")) (arguments - (list #:parallel-tests? #f - #:phases + (list #:phases #~(modify-phases %standard-phases (add-after 'install 'move-doc (lambda _ @@ -1414,7 +1398,7 @@ fullscreen) or other display servers.") (define-public wayland-protocols (package (name "wayland-protocols") - (version "1.44") + (version "1.45") (source (origin (method git-fetch) (uri (git-reference @@ -1423,7 +1407,7 @@ fullscreen) or other display servers.") (file-name (git-file-name name version)) (sha256 (base32 - "1gjhfiah8hkhqlfan2pr8jvf9h8rjkyz79kkxddi8js2q7dy4bbq")))) + "1d2fv41vq75pvgkd3ykjypnp8zv0afv71p36cd91h19lbmwaia8h")))) (build-system meson-build-system) (inputs (list wayland)) @@ -2250,7 +2234,7 @@ between protocols to provide a unified interface for applications.") (inputs (list sqlite)) (propagated-inputs ;; telepathy-logger-0.2.pc refers to all these. - (list libxml2-next telepathy-glib)) + (list libxml2 telepathy-glib)) (synopsis "Telepathy logger library") (home-page "https://telepathy.freedesktop.org/") (description diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 738f274324f..2a41a4d04e3 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -204,6 +204,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages netpbm) #:use-module (gnu packages networking) + #:use-module (gnu packages ninja) #:use-module (gnu packages ocaml) #:use-module (gnu packages opencl) #:use-module (gnu packages pcre) @@ -222,6 +223,7 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) + #:use-module (gnu packages regex) #:use-module (gnu packages ruby-check) #:use-module (gnu packages shells) #:use-module (gnu packages sdl) @@ -6522,77 +6524,64 @@ in-window at 640x480 resolution or fullscreen.") (define-public warzone2100 (package (name "warzone2100") - (version "4.3.5") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/warzone2100/releases/" - version - "/warzone2100_src.tar.xz")) - (sha256 - (base32 "1hq56hm6bn3s2pksznh5g8hgq6ww6fnl1pspr3bi93k3z7v0imh1")) - (modules '((guix build utils))) - (snippet - '(begin - (with-directory-excursion "3rdparty" - (for-each - delete-file-recursively - '("discord-rpc" - "miniupnp" - "utfcpp"))) - #t)))) + (version "4.6.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/warzone2100/releases/" + version "/warzone2100_src.tar.xz")) + (patches (search-patches "warzone2100-unbundle-libs.patch")) + (modules '((guix build utils))) + (snippet #~(for-each delete-file-recursively + (cons* "lib/netplay/3rdparty/miniupnp" + "lib/sound/3rdparty/opusfile" + (map (lambda (s) (string-append "3rdparty/" s)) + '("basis_universal" "basis_universal_host_build" + "discord-rpc" "fmt" "GameNetworkingSockets" + "inih" "re2" "utf8proc" "utfcpp"))))) + (sha256 + (base32 + "02x5ihkpfkpjxwvh00d8yqzd796af7d684nk96hzhhq28qw5bb16")))) (build-system cmake-build-system) - (arguments - (list #:configure-flags #~'("-DWZ_DISTRIBUTOR=Guix" - "-DWZ_ENABLE_BACKEND_VULKAN=off" - "-DENABLE_DISCORD=off") - #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing. - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-utfcpp-include - (lambda _ - (substitute* "lib/framework/wzstring.cpp" - (("") - "")))) - (add-after 'unpack 'link-tests-with-qt - (lambda _ - (substitute* "tests/Makefile.am" - (("(framework_linktest_LDADD|maptest_LDADD) = " - prefix) - (string-append prefix "$(QT5_LIBS) "))))) - (add-after 'unpack 'fix-ivis-linktest - (lambda _ - (substitute* "tests/ivis_linktest.cpp" - (("iV_DrawTextRotated.*;") - (string-append - "iV_DrawTextRotated(\"Press ESC to exit.\", " - "100, 100, 0.0f, font_regular);")))))))) - (native-inputs (list asciidoc - ruby-asciidoctor/minimal - gettext-minimal - pkg-config - unzip - ;; 7z is used to create .zip archive, not `zip' as in version 3.2.*. - p7zip)) - (inputs (list opus + (arguments (list #:configure-flags #~'("-GNinja" + "-DWZ_DISTRIBUTOR=Guix" + "-DWZ_DOWNLOAD_PREBUILT_PACKAGES=off" + "-DWZ_INCLUDE_VIDEOS=off" + "-DWZ_FORCE_MINIMAL_OPUSFILE=off" + "-DENABLE_GNS_NETWORK_BACKEND=off") + ;; TODO: Tests seem to be broken, configure.ac is missing. + #:tests? #f)) + (native-inputs (list basis-universal + gettext-minimal + ninja + p7zip + pkg-config + ruby-asciidoctor/minimal + shaderc)) + (inputs (list basis-universal curl - fontconfig + fmt freetype - glew + fribidi + gnutls harfbuzz + libinih + libogg + libpng + libsodium libtheora libvorbis - libxrandr - libsodium + libzip miniupnpc openal + opus + opusfile physfs - qtbase-5 - qtscript-5 - openssl + re2 sdl2 sqlite - utfcpp)) + utf8proc + utfcpp + vulkan-headers)) (home-page "https://wz2100.net") (synopsis "3D Real-time strategy and real-time tactics game") (description @@ -13408,7 +13397,7 @@ virtual reality devices.") (list #:configure-flags #~(list "-DUSE_TESTS=ON" "-DOPENGL_BACKEND=OpenGL"))) - (native-inputs (list python-3.10 glibc-locales googletest)) + (native-inputs (list python glibc-locales googletest)) (inputs (list freetype libiconv libpng diff --git a/gnu/packages/genealogy.scm b/gnu/packages/genealogy.scm index 668505a71a9..f244b5db6c9 100644 --- a/gnu/packages/genealogy.scm +++ b/gnu/packages/genealogy.scm @@ -18,9 +18,10 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages genealogy) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) #:use-module (guix packages) #:use-module (gnu packages base) #:use-module (gnu packages bash) @@ -34,6 +35,7 @@ #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sqlite) #:use-module (gnu packages version-control) @@ -52,11 +54,48 @@ (file-name (git-file-name name version)) (sha256 (base32 "1gzhi5hxpgc6pxs40xsxf67hndjifnfhm89s3ly68c70x83qmwhd")))) - (build-system python-build-system) + (build-system pyproject-build-system) + (arguments + (list + #:imported-modules + `((guix build glib-or-gtk-build-system) + ,@%pyproject-build-system-modules) + #:modules + `((ice-9 match) + (srfi srfi-1) + (guix build pyproject-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build utils)) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'prepare-tests + (lambda _ + (setenv "HOME" (getenv "TMPDIR")) + ;; Presence of .git directory is used to determine whether this + ;; is a final installation. Without it, tests fail to determine + ;; resource path. + (mkdir ".git") + ;; Test is failing + (delete-file "gramps/gen/utils/test/file_test.py"))) + (add-before 'wrap 'wrap-with-GI_TYPELIB_PATH + (lambda* (#:key inputs #:allow-other-keys) + (wrap-program (string-append #$output "/bin/gramps") + `("GI_TYPELIB_PATH" ":" prefix + ,(filter-map + (match-lambda + ((output . directory) + (let ((girepodir (string-append + directory + "/lib/girepository-1.0"))) + (and (file-exists? girepodir) + girepodir)))) + inputs))))) + (add-after 'wrap 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) (native-inputs - `(("gettext" ,gettext-minimal) - ("intltool" ,intltool) - ("glibc-utf8-locales" ,glibc-utf8-locales))) ;; for one test + (list gettext-minimal intltool + glibc-utf8-locales ;for one test + python-setuptools)) (inputs (list bash-minimal cairo @@ -81,42 +120,6 @@ rcs sqlite xdg-utils)) - (arguments - `(#:imported-modules ((guix build glib-or-gtk-build-system) - ,@%python-build-system-modules) - #:modules ((ice-9 match) - (guix build python-build-system) - ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) - (guix build utils)) - #:phases - (modify-phases %standard-phases - (add-before 'check 'set-home-for-tests - (lambda _ - (setenv "HOME" (getenv "TMPDIR")))) - (add-before 'check 'prepare-tests - (lambda _ - ;; Presence of .git directory is used to determine whether this - ;; is a final installation. Without it, tests fail to determine - ;; resource path. - (mkdir ".git") - ;; Test is failing - (delete-file "gramps/gen/utils/test/file_test.py"))) - (add-before 'wrap 'wrap-with-GI_TYPELIB_PATH - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (paths (map (match-lambda - ((output . directory) - (let ((girepodir (string-append - directory - "/lib/girepository-1.0"))) - (if (file-exists? girepodir) - girepodir - #f)))) - inputs))) - (wrap-program (string-append out "/bin/gramps") - `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths)))))) - (add-after 'wrap 'glib-or-gtk-wrap - (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) (home-page "https://gramps-project.org") (synopsis "Genealogical research software") (description diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index d5da671ada6..89fa08ca316 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -244,7 +244,10 @@ provided, as well as a framework to add new color models and data types.") (base32 "0v2wa2a3vnz1g4z5h9s8ili5h5kzk95hxlcp0zlxkwgbf5img1sq")))) (build-system meson-build-system) (arguments - `(#:phases + `(#:configure-flags + ;; TODO: properly unbundle. + '("--wrap-mode=nodownload") + #:phases (modify-phases %standard-phases (add-after 'unpack 'extend-test-time-outs (lambda _ diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 38c0f5be546..60c3a094f4b 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -314,7 +314,7 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "25.1.3") + (version "25.2.3") (source (origin (method url-fetch) @@ -324,7 +324,7 @@ also known as DXTn or DXTC) for Mesa.") "mesa-" version ".tar.xz"))) (sha256 (base32 - "0zxsvly6xjinaicgcf81ycljjjzy3mj0hqwf01b6sdgxnnnnrjzz")))) + "1y5lj9zy2hfvx9ji1rvsjapmzap7mpp5i3pf2yfcpmpica2v5mpj")))) (build-system meson-build-system) (propagated-inputs ;; The following are in the Requires.private field of gl.pc. @@ -357,7 +357,6 @@ also known as DXTn or DXTC) for Mesa.") glslang libclc pkg-config - python-libxml2 ;for OpenGL ES 1.1 and 2.0 support python-mako python-ply python-pyyaml @@ -406,13 +405,12 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink")) "-Dglx=dri" ;Thread Local Storage, improves performance ;; "-Dopencl=true" ;; "-Domx=true" - "-Dosmesa=true" - "-Dgallium-xa=enabled" ;; features required by wayland "-Dgles2=enabled" "-Dgbm=enabled" "-Dshared-glapi=enabled" + "--wrap-mode=nodownload" ; XXX: disable #$@(cond ((target-x86-32?) @@ -439,6 +437,9 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink")) ;; Also enable the tests. "-Dbuild-tests=true" + ;; Re-enable X11 protocol support for the DRI2 extension. + "-Dlegacy-x11=dri2" + "-Dllvm=enabled") ; default is x86/x86_64 only ;; XXX: 'debugoptimized' causes LTO link failures on some drivers. The diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 8347359a846..acdf9268cda 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -770,7 +770,7 @@ The intltool collection can be used to do these things: "1jl7gsr7aclb9nvqazr039m86y7f7ivfhl2pixcrbfqjkb97r6kb")))) (build-system gnu-build-system) (inputs - (list bash-minimal libxml2 python-libxml2 python)) + (list bash-minimal libxml2 python)) (arguments (list #:phases @@ -858,7 +858,7 @@ by GDBus included in Glib.") pkg-config vala)) (inputs (list check python python-pygobject)) - (propagated-inputs (list glib libxml2-next sqlite)) + (propagated-inputs (list glib libxml2 sqlite)) (arguments (list #:tests? #f ;one test fails. #:imported-modules `((guix build python-build-system) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 084f84dfbdd..8f9e18561b0 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -443,7 +443,7 @@ services.") "/share/gtk-doc/html")))) (native-inputs (list docbook-xml-4.1.2 gobject-introspection gtk-doc/stable pkg-config)) - (propagated-inputs (list glib libsoup-minimal-2 libxml2-next-for-grafting)) + (propagated-inputs (list glib libsoup-minimal-2 libxml2)) (synopsis "Glib library for feeds") (description "LibGRSS is a Glib abstraction to handle feeds in RSS, Atom, and other formats.") @@ -1223,7 +1223,7 @@ Library reference documentation.") ;; These inputs are required by the pkg-config file. (list glib libsoup - libxml2-next-for-grafting)) + libxml2)) (synopsis "WebDav server implementation using libsoup") (description "PhoDav was initially developed as a file-sharing mechanism for Spice, but it is generic enough to be reused in other projects, @@ -1433,7 +1433,7 @@ a debugging tool, @command{gssdp-device-sniffer}.") gsettings-desktop-schemas ;for ‘org.gnome.system.proxy’. gssdp libsoup - libxml2-next-for-grafting)) + libxml2)) (synopsis "PnP API for GNOME") (description "This package provides GUPnP, an object-oriented framework for creating UPnP devices and control points, written in C using @@ -1476,7 +1476,7 @@ given profile, etc. DLNA is a subset of UPnP A/V.") (define-public gupnp-av (package (name "gupnp-av") - (version "0.14.1") + (version "0.14.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1484,7 +1484,7 @@ given profile, etc. DLNA is a subset of UPnP A/V.") name "-" version ".tar.xz")) (sha256 (base32 - "0kry7arwmvs8b4175wia3l0s02ap1shq68f29g2xjrhc9g6f175p")))) + "1izq71qphyac02ynypwk0skxqzhfr0zrl7dap3sxrdaw4yrp9n91")))) (build-system meson-build-system) (native-inputs (list gettext-minimal @@ -2018,7 +2018,7 @@ and system administrators.") (inputs (list graphene gtk+ - libxml2-next-for-grafting + libxml2 libxslt poppler python-minimal @@ -2068,7 +2068,7 @@ formats like PNG, SVG, PDF and EPS.") ("json-glib" ,json-glib) ("liboauth" ,liboauth) ("libsoup" ,libsoup-minimal-2) - ("libxml2" ,libxml2-next-for-grafting))) + ("libxml2" ,libxml2))) (home-page "https://wiki.gnome.org/Projects/libgdata") (synopsis "Library for accessing online service APIs") (description @@ -3600,7 +3600,7 @@ XML/CSS rendering engine.") zlib)) (propagated-inputs (list glib - libxml2-next-for-grafting)) + libxml2)) (synopsis "G Structured File Library") (description "Libgsf aims to provide an efficient extensible I/O abstraction for dealing with different structured file formats.") @@ -3802,7 +3802,7 @@ diagrams.") `(,glib "bin") ; glib-mkenums, etc. gobject-introspection)) ; g-ir-compiler, etc. (inputs - (list pango libcroco libxml2)) + (list pango libcroco libxml2-2.11)) (propagated-inputs ;; librsvg-2.0.pc refers to all of that. (list cairo gdk-pixbuf glib)) @@ -4215,7 +4215,7 @@ ported to GTK+.") (inputs (list python)) ;; needed for the optional libglade-convert program (propagated-inputs - (list gtk+-2 libxml2-next-for-grafting)) ; required by libglade-2.0.pc + (list gtk+-2 libxml2)) ; required by libglade-2.0.pc (native-inputs (list pkg-config)) (home-page "https://developer.gnome.org/libglade") @@ -4254,7 +4254,7 @@ widgets built in the loading process.") ;; Therefore we must do it. (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp))))))))) ;; Mentioned as Required by the .pc file - (propagated-inputs (list libxml2-next-for-grafting)) + (propagated-inputs (list libxml2)) (inputs (list popt pangox-compat libgnome libgnomecanvas libglade)) (native-inputs @@ -4911,7 +4911,7 @@ GLib and GObject, and integrates JSON with GLib data types.") ("libtool" ,libtool))) (propagated-inputs ;; Required by libxklavier.pc. - (list glib libxml2-next-for-grafting)) + (list glib libxml2)) (inputs (list iso-codes/pinned libxi libxkbfile xkbcomp xkeyboard-config)) (home-page "https://www.freedesktop.org/wiki/Software/LibXklavier/") @@ -5021,7 +5021,6 @@ files.") (define-public rest (package - (replacement rest/fixed) (name "rest") (version "0.8.1") (source (origin @@ -5050,13 +5049,6 @@ claim to be \"RESTful\". It includes convenience wrappers for libsoup and libxml to ease remote use of the RESTful API.") (license license:lgpl2.1+))) -(define-public rest/fixed - (package - (inherit rest) - (propagated-inputs - (modify-inputs (package-propagated-inputs rest) - (replace "libxml2" libxml2-next-for-grafting))))) - (define-public rest-next (package (inherit rest) @@ -5210,7 +5202,7 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.") libpsl nghttp2 ;for pkg-config `(,nghttp2 "lib") - libxml2-next-for-grafting + libxml2 sqlite zlib)) (inputs @@ -5799,7 +5791,7 @@ output devices.") docbook-xsl gtk-doc/stable libxslt - sane-backends + sane vala))))) ;for VAPI, needed by simple-scan (define-public geoclue @@ -6018,7 +6010,7 @@ service via the system message bus.") (list gtk+ gdk-pixbuf json-glib - libxml2-next-for-grafting + libxml2 libsoup geocode-glib)) (inputs @@ -6137,7 +6129,7 @@ settings, themes, mouse settings, and startup of other daemons.") (list intltool `(,glib "bin") gobject-introspection pkg-config)) (propagated-inputs - (list glib gmime libarchive libgcrypt libxml2-next-for-grafting)) + (list glib gmime libarchive libgcrypt libxml2)) (inputs (list libsoup)) (home-page "https://projects.gnome.org/totem") @@ -7238,7 +7230,7 @@ USB transfers with your high-level application or system daemon.") gdk-pixbuf gusb libadwaita - sane-backends)) + sane)) (home-page "https://gitlab.gnome.org/GNOME/simple-scan") (synopsis "Document and image scanner") (description @@ -8122,7 +8114,7 @@ to display dialog boxes from the commandline and shell scripts.") libxext libxfixes libxkbcommon - libxml2-next-for-grafting + libxml2 libxrandr mesa pango @@ -8948,7 +8940,7 @@ the available networks and allows users to easily switch between them.") (base32 "0gp8irc5ny9i6bw9fp21p8djgksi1s8l5flbn5blisgfpcb2w820")))) (build-system gnu-build-system) (propagated-inputs - (list libxml2-next-for-grafting)) ;required by .pc file + (list libxml2)) ;required by .pc file (native-inputs (list autoconf automake @@ -9726,7 +9718,8 @@ easy, safe, and automatic.") #$output "/lib:" #$output "/lib/tracker-3.0") "-Ddocs=false" - "-Dsystemd_user_services=false") + "-Dsystemd_user_services=false" + "--wrap-mode=nodownload") ; XXX: to be disabled #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-paths @@ -13885,7 +13878,7 @@ developed with the aim of being used with the Librem 5 phone.") sqlite vala)) (propagated-inputs - (list libxml2-next-for-grafting)) ; required by libgda-5.0.pc + (list libxml2)) ; required by libgda-5.0.pc (home-page "https://gitlab.gnome.org/GNOME/libgda") (synopsis "Uniform data access") (description @@ -14000,7 +13993,7 @@ world.") ("python-pyenchant" ,python-pyenchant) ("python-reportlab" ,python-reportlab) ("python-sane" ,python-sane) - ("sane-backends" ,sane-backends) + ("sane" ,sane) ("tesseract-ocr" ,tesseract-ocr))) (home-page "https://wiki.gnome.org/Apps/OCRFeeder") (synopsis "Complete OCR Suite") diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 06c9eeac42c..b31390807c2 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -21,7 +21,7 @@ ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020, 2021, 2025 Nicolas Goaziou ;;; Copyright © 2020 Raghav Gururajan -;;; Copyright © 2020-2024 Maxim Cournoyer +;;; Copyright © 2020-2025 Maxim Cournoyer ;;; Copyright © 2020 Gabriel Arazas ;;; Copyright © 2021 Antoine Côté ;;; Copyright © 2021 Andy Tai @@ -108,6 +108,7 @@ #:use-module (gnu packages mp3) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ninja) + #:use-module (gnu packages opencl) #:use-module (gnu packages pciutils) #:use-module (gnu packages pdf) #:use-module (gnu packages perl) @@ -1224,14 +1225,30 @@ basic geometries.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/typemytype/booleanOperations") - (commit version))) + (url "https://github.com/typemytype/booleanOperations") + (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0ahfgamyq1ndwbr9n8sdx8qhqc2195xnbahylgjpk877hbr2gxav")))) (build-system pyproject-build-system) (arguments (list + ;; There are + #:modules '((guix build pyproject-build-system) + (guix build utils) + (ice-9 format)) + ;; Some tests fail due to small differences in the expected result (see: + ;; ). + #:test-flags #~(list "-k" + (format #f "not ~{~a~^ and not ~}" + '("test_QTail_reversed_difference" + "test_QTail_reversed_intersection" + "test_QTail_reversed_union" + "test_QTail_reversed_xor" + "test_Q_difference" + "test_Q_intersection" + "test_Q_union" + "test_Q_xor"))) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'set-version @@ -1243,8 +1260,7 @@ basic geometries.") python-fontpens-bootstrap python-pytest python-setuptools - python-setuptools-scm - unzip)) + python-setuptools-scm)) (home-page "https://github.com/typemytype/booleanOperations") (synopsis "Boolean operations on paths") (description @@ -3414,3 +3430,38 @@ environment. It supports drawing freehand as well as basic shapes and text. It features cut-and-paste for irregular regions or polygons.") (home-page "https://www.gnu.org/software/gpaint/") (license license:gpl3+))) + +(define-public basis-universal + (package + (name "basis-universal") + (version "1.60") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BinomialLLC/basis_universal") + (commit (string-append "v" + (string-replace-substring version "." "_"))))) + (file-name (git-file-name name version)) + (patches (search-patches "basis-universal-unbundle-libs.patch")) + (modules '((guix build utils))) + (snippet #~(for-each delete-file-recursively '("OpenCL" "zstd"))) + (sha256 + (base32 + "1s38fp3j9pp0s260s805lw2h4gqbx7d2cd0d96pjp5bfqndmmk8b")))) + (build-system cmake-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda _ (invoke (string-append #$output "/bin/basisu") + "-test_dir" "../source/test_files" + "-test")))))) + (inputs (list opencl-headers (list zstd "lib"))) + (native-inputs (list pkg-config)) + (home-page "https://github.com/BinomialLLC/basis_universal") + (synopsis "LDR/HDR compressed texture transcoder") + (description "Basis Universal is an LDR/HDR GPU compressed texture +interchange system supporting transcoding to a large number of GPU texture +formats.") + (license (list license:asl2.0 license:bsd-3 license:expat)))) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index f023947f97f..7f8e6c159ac 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -374,7 +374,7 @@ arrays of data.") (define-public gstreamer-docs (package (name "gstreamer-docs") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) (uri (string-append @@ -382,7 +382,7 @@ arrays of data.") "/gstreamer-docs-" version ".tar.xz")) (sha256 (base32 - "0vb4d35rglvjlj2y9r0nlgankflqw0ql6gwsf4612505sa01mz7s")))) + "11q0yydchisd4c0jnqa6kmnf66kf25fim3l456krlwcy1qpsvd4j")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -434,7 +434,7 @@ the GStreamer multimedia framework.") (define-public gstreamer (package (name "gstreamer") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) @@ -443,7 +443,7 @@ the GStreamer multimedia framework.") version ".tar.xz")) (sha256 (base32 - "03r6rwmih3nqxrfw9nkhpbwpwp1yf7qw3m2phl6a027mxrmppx7b")))) + "1016z0znl2j43n08rl19zdhfvfsgnmg44qh8fk6dr4qj481icrnw")))) (build-system meson-build-system) (arguments (list #:disallowed-references (list python) @@ -515,7 +515,7 @@ This package provides the core library and elements.") (define-public gst-plugins-base (package (name "gst-plugins-base") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) @@ -523,7 +523,7 @@ This package provides the core library and elements.") name "-" version ".tar.xz")) (sha256 (base32 - "1jspg24zlpmg4bxa298v6l8hcaqw27411dj2v16y0g3xj13bkcsv")))) + "0cvrq9767w0aqzinifbirbc95jg4i4md4b8f4b70hlq217pzkyaf")))) (build-system meson-build-system) (propagated-inputs (list glib ;required by gstreamer-sdp-1.0.pc @@ -623,7 +623,7 @@ for the GStreamer multimedia library.") (define-public gst-plugins-good (package (name "gst-plugins-good") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) @@ -632,7 +632,7 @@ for the GStreamer multimedia library.") "https://gstreamer.freedesktop.org/src/" name "/" name "-" version ".tar.xz")) (sha256 - (base32 "17vr55pgh2paqi82l5jn841873c2w0lal7kgz2i3qzikzw5yazc9")))) + (base32 "0lrwscda9yy8a61bv65c3392vb5m8phrl5i7bwgbprnz1rkwjkpy")))) (build-system meson-build-system) (arguments (list @@ -743,14 +743,14 @@ model to base your own plug-in on, here it is.") (define-public gst-plugins-bad (package (name "gst-plugins-bad") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) (uri (string-append "https://gstreamer.freedesktop.org/src/" name "/" name "-" version ".tar.xz")) (sha256 (base32 - "1aswb97v1ird3rmfcsa32bvp4kgp8r987f83pd1knx8amylzgz1n")) + "0qbmblksgl2nmbi6brw54b1bzziw9flvqk2zb576y9qlmyn8vi4m")) (modules '((guix build utils))) (snippet '(begin @@ -814,7 +814,13 @@ model to base your own plug-in on, here it is.") ((".*elements/dtls\\.c.*") "") ;; https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3921 - ((".*elements/mxfdemux\\.c.*") "")) + ((".*elements/mxfdemux\\.c.*") "") + + ;; Unable to create pipeline 'bin. + ;; ( vulkanupload ! vulkancolorconvert ! vulkandownload )': + ;; no element "vulkanupload" + ((".*elements/vkcolorconvert\\.c.*") "") + ((".*elements/vkupload\\.c.*") "")) (substitute* "tests/check/elements/zxing.c" ;; zxing 1.2.0 seemingly changed the type representation of ;; the EAN_13 structure; disable it. @@ -953,7 +959,7 @@ par compared to the rest.") (define-public gst-plugins-ugly (package (name "gst-plugins-ugly") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) @@ -961,7 +967,7 @@ par compared to the rest.") (string-append "https://gstreamer.freedesktop.org/src/" name "/" name "-" version ".tar.xz")) (sha256 - (base32 "1dn33ivfc0rnn545y40303h5z9bm5ca9f8j2czmhbk9q1w8k0ssb")))) + (base32 "19fvv6rvrcvhw4lnx078xb4b85pzbwbrqwdk841sqd7pjpl5wzs1")))) (build-system meson-build-system) (arguments (list #:glib-or-gtk? #t ; To wrap binaries and/or compile schemas @@ -1010,7 +1016,7 @@ think twice about shipping them.") (define-public gst-libav (package (name "gst-libav") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) @@ -1019,7 +1025,7 @@ think twice about shipping them.") "https://gstreamer.freedesktop.org/src/" name "/" name "-" version ".tar.xz")) (sha256 - (base32 "0v253lbic7abc9vpb690f80arql10193ljqkzgs03vh8wnd2ws1j")))) + (base32 "0kbjs8z545maj3j2qzgpg41v3yr53q1c852v80zbmf5rld87xnis")))) (build-system meson-build-system) (native-inputs (list perl pkg-config python-wrapper ruby)) (inputs (list ffmpeg)) @@ -1033,7 +1039,7 @@ decoders, muxers, and demuxers provided by FFmpeg.") (define-public gst-editing-services (package (name "gst-editing-services") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) (uri (string-append @@ -1041,7 +1047,7 @@ decoders, muxers, and demuxers provided by FFmpeg.") "gst-editing-services-" version ".tar.xz")) (sha256 (base32 - "04khlbw3wy5zr2s246252zrd4hnzv2x36l5avz0lxif6pr9nwl07")))) + "1lkgs5h76qzqfpqvi31vs5xr68bbi0kwkw2g0ahvcs1l5hysj86x")))) (build-system meson-build-system) (arguments (list @@ -1100,10 +1106,45 @@ given, also pass them to the build system instead of the ones used by PKG." \"bad\" plugin set, essentially containing libraries and the gst-transcoder binary, but none of the actual plugins."))) +(define-public gst-rtsp-server + (package + (name "gst-rtsp-server") + (version "1.26.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://gstreamer.freedesktop.org/src/" name "/" + name "-" version ".tar.xz")) + (sha256 + (base32 "1ibg83sa0nswqan5fg378bg36jis5sn1dwfl1mvqjiw4m59qlpj1")))) + (build-system meson-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + (define failing + (list "client" "media" "mediafactory" "rtspserver" + "sessionmedia" "stream" "onvif" "rtspclientsink")) + (substitute* "tests/check/meson.build" + (("'gst/(.*)',?" all test) + (if (member test failing) "" all)))))))) + (propagated-inputs + (list gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad)) + (native-inputs (list gobject-introspection + `(,glib "bin") + pkg-config + python-wrapper)) + (home-page "https://gstreamer.freedesktop.org/") + (synopsis "Library for building RTSP servers with GStreamer") + (description "This package provides a GStreamer extension to handle +RTSP connections and messages.") + (license license:lgpl2.0+))) + (define-public python-gst (package (name "python-gst") - (version "1.24.9") + (version "1.26.3") (source (origin (method url-fetch) (uri (string-append @@ -1111,7 +1152,7 @@ binary, but none of the actual plugins."))) "gst-python-" version ".tar.xz")) (sha256 (base32 - "0bplhfnvsi3l9fmfb346n2dvzi1jrxqpp4kcwiwsrjrlgic1vrl0")))) + "04hv5pj8br56knvw1nsx74j1lpxskbm6znsdqac28iszqjkvjhwk")))) (build-system meson-build-system) (arguments (list @@ -1127,7 +1168,10 @@ binary, but none of the actual plugins."))) (native-inputs (list pkg-config python)) (propagated-inputs - (list gst-plugins-base python-pygobject)) + (list gst-plugins-base + gst-plugins-bad ; for gst-analytics + gst-rtsp-server + python-pygobject)) (home-page "https://gstreamer.freedesktop.org/") (synopsis "GStreamer GObject Introspection overrides for Python") (description diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 002bbe17fef..8f151416695 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -36,7 +36,7 @@ ;;; Copyright © 2023 Sergiu Ivanov ;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2023, 2025 Janneke Nieuwenhuizen -;;; Copyright © 2024 John Kehayias +;;; Copyright © 2024, 2025 John Kehayias ;;; Copyright © 2025 Florian Pelz ;;; Copyright © 2025 Remco van 't Veer ;;; @@ -285,7 +285,7 @@ output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.") (define-public harfbuzz (package (name "harfbuzz") - (version "8.3.0") + (version "11.4.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/harfbuzz/harfbuzz" @@ -293,7 +293,7 @@ output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.") version ".tar.xz")) (sha256 (base32 - "0izq2lpqxrf1l755nxrxkkiarywkx5j43asznankxplbxgm0358h")))) + "1iaqiwh3b6mwv1ar2mm29fpfygsb1x79wv7mm6ppyn7a8rqz2lqh")))) (build-system meson-build-system) (outputs '("out" "bin")) ;160K, only hb-view depend on cairo @@ -613,7 +613,7 @@ diagrams.") fribidi glib gtk - libxml2-next + libxml2 pango pcre2)) (home-page "https://wiki.gnome.org/Projects/GtkSourceView") @@ -1009,19 +1009,19 @@ application suites.") (package (inherit gtk+-2) (name "gtk+") - (version "3.24.43") - (replacement gtk+/fixed) - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1izky8dxaxp4bg5nii4n58dgpkw79mvmvbkldf04n0qmhmjg013y")) - (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch" - "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch")))) + (version "3.24.49") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.gnome.org/GNOME/gtk") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0flsnh3f0l9v3y2hmnxz1h15nw1l12ixmiwcpiy1ywplrlgq4j00")) + (patches (search-patches + "gtk3-respect-GUIX_GTK3_PATH.patch" + "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch")))) ;; There is no "doc" output, because adding gtk-doc here would introduce a ;; dependency cycle with itself. (outputs '("out" "bin")) @@ -1097,11 +1097,22 @@ application suites.") #~(modify-phases %standard-phases (add-after 'unpack 'disable-failing-tests (lambda _ - ;; These tests fail only in the containerized environment, for - ;; unknown reasons. - (substitute* "testsuite/gtk/meson.build" - ((".*\\['defaultvalue'],.*") "") - ((".*\\['objects-finalize',.*") "")))) + ;; These tests fail only in the containerized environment, for + ;; unknown reasons. + (substitute* "testsuite/gtk/meson.build" + ((".*\\['defaultvalue'],.*") "") + ((".*\\['objects-finalize',.*") "")) + ;; The 'flipping-icons.ui' and 'gtk-icontheme-sizing.ui' tests + ;; fail for unknown reasons (see: + ;; ). + (substitute* "testsuite/reftests/meson.build" + ((" 'flipping-icons.ui',.*") "") + ((" 'gtk-icontheme-sizing.ui',.*") "")) + ;; This test fails just on i686-linux, for unknown reasons. + #$@(if (target-x86-32?) + #~((substitute* "testsuite/reftests/meson.build" + ((" 'linear-gradient.ui',.*") ""))) + #~()))) (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file (assoc-ref glib-or-gtk:%standard-phases 'generate-gdk-pixbuf-loaders-cache-file)) @@ -1128,41 +1139,6 @@ application suites.") (variable "GUIX_GTK3_PATH") (files '("lib/gtk-3.0"))))))) -(define-public gtk+/fixed - (package - (inherit gtk+) - (name "gtk+") - (version "3.24.49") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.gnome.org/GNOME/gtk") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0flsnh3f0l9v3y2hmnxz1h15nw1l12ixmiwcpiy1ywplrlgq4j00")) - (patches (search-patches - "gtk3-respect-GUIX_GTK3_PATH.patch" - "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch")))) - (arguments - (substitute-keyword-arguments (package-arguments gtk+) - ((#:phases phases) - #~(modify-phases #$phases - (replace 'disable-failing-tests - (lambda _ - ;; These tests fail only in the containerized environment, for - ;; unknown reasons. - (substitute* "testsuite/gtk/meson.build" - ((".*\\['defaultvalue'],.*") "") - ((".*\\['objects-finalize',.*") "")) - ;; The 'flipping-icons.ui' and 'gtk-icontheme-sizing.ui' tests - ;; fail for unknown reasons (see: - ;; ). - (substitute* "testsuite/reftests/meson.build" - ((" 'flipping-icons.ui',.*") "") - ((" 'gtk-icontheme-sizing.ui',.*") "")))))))))) - (define-public gtk (package (name "gtk") @@ -2370,7 +2346,8 @@ information.") (base32 "0746lwxgybc5ss3hzdd0crjjghk0ck0x9jbmz73iig405arp42xj")) (patches - (search-patches "gtk-doc-respect-xml-catalog.patch")))) + (search-patches "gtk-doc-respect-xml-catalog.patch" + "gtk-doc-mkhtml-test-fix.patch")))) (build-system meson-build-system) (arguments (list diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index cdf5f6d5463..0f8f5e7809b 100644 --- a/gnu/packages/hardware.scm +++ b/gnu/packages/hardware.scm @@ -476,7 +476,7 @@ sharing.") procps psmisc ;for pstree rpm - sane-backends + sane smartmontools sysstat upower diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm index 9f2f1afd454..520ceeb0d8f 100644 --- a/gnu/packages/image-processing.scm +++ b/gnu/packages/image-processing.scm @@ -815,7 +815,7 @@ the OpenCV-Python library.") libpng (librsvg-for-system) libtiff - libxml2-next + libxml2 libwebp matio openexr diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index 6d292fa9c24..1d828a541ff 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -31,6 +31,7 @@ ;;; Copyright © 2024 Artyom V. Poptsov ;;; Copyright © 2025 Ashish SHUKLA ;;; Copyright © 2025 Mathieu Laparie +;;; Copyright © 2025 Joaquín Aguirrezabalaga ;;; ;;; This file is part of GNU Guix. ;;; @@ -722,9 +723,6 @@ imaging. It supports several HDR and LDR image formats, and it can: (base32 "09y4nhlcqvvhz0wscx4zpqxmyhiwh8wrjnhk52awxhzvgyx6wa7r")))) (build-system pyproject-build-system) - (native-inputs (list python-wheel)) - (inputs - (list p7zip python python-pillow python-pygobject python-pycairo gtk+)) (arguments (list #:imported-modules `(,@%pyproject-build-system-modules @@ -746,31 +744,28 @@ imaging. It supports several HDR and LDR image formats, and it can: (("assert name not in supported_formats_gdk") "if name in supported_formats_gdk: continue")))) (add-after 'install 'install-data - (lambda* (#:key outputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) (with-directory-excursion "mcomix" (for-each (lambda (subdir) (copy-recursively subdir (string-append - (assoc-ref outputs "out") - "/lib/python" - #$(version-major+minor - (package-version (this-package-input "python"))) - "/site-packages/mcomix/" subdir))) + (site-packages inputs outputs) + "/mcomix/" subdir))) '("images" "messages"))))) (add-after 'install 'glib-or-gtk-compile-schemas (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas)) (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)) (add-after 'wrap 'gi-wrap - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) - (for-each - (lambda (prog) - (wrap-program prog - `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))) - (list (string-append bin "/mcomix"))))))))) + (lambda _ + (let ((prog (string-append #$output "/bin/mcomix"))) + (wrap-program prog + `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))) + (native-inputs (list python-setuptools)) + (inputs + (list bash-minimal p7zip python python-pillow python-pygobject python-pycairo gtk+)) (home-page "https://sourceforge.net/p/mcomix/wiki/Home/") (synopsis "Image viewer for comics") (description "MComix is a customizable image viewer that specializes as diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm index b1b03928d06..a06e61294f1 100644 --- a/gnu/packages/inkscape.scm +++ b/gnu/packages/inkscape.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2020 Boris A. Dekshteyn ;;; Copyright © 2020 Ekaitz Zarraga ;;; Copyright © 2023, 2024 Efraim Flashner +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -78,6 +79,7 @@ (base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv")) (modules '((guix build utils) (ice-9 format))) + (patches (search-patches "inkscape-libxml2.patch")) (snippet '(begin (let-syntax diff --git a/gnu/packages/iso-codes.scm b/gnu/packages/iso-codes.scm index ad9b90a5641..000ea057b30 100644 --- a/gnu/packages/iso-codes.scm +++ b/gnu/packages/iso-codes.scm @@ -21,11 +21,11 @@ (define-module (gnu packages iso-codes) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) - #:use-module (guix build-system python) #:use-module (guix build-system pyproject) #:use-module (gnu packages check) #:use-module (gnu packages gettext) @@ -152,17 +152,42 @@ region, WIOD classification, ccTLD.") (version "0.4.5") (source (origin - (method url-fetch) - (uri (pypi-uri "iso-639" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/noumar/iso639") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0jffmh4m20q8j27xb2fqbnlghjj0cx8pgsbzqisdg65qh2wd976w")))) - (build-system python-build-system) + (base32 "02kx6kr3x43linxqafjlx85zdk04s6ab2fv5ikyglghwr5hsvic4")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "tests/tests.py" + "-k" (string-join + (list + ;; module 'collections' has no attribute 'Iterable' + "not test_iter" + ;; 'Moroccan Arabic' != 'Arabic' + "test_logic_part2" + ;; 'Languages' object has no attribute 'indices' + "test_compare_alpha2" + "test_compare_bibliographic" + "test_compare_terminology") + " and not ")) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'configure-tests + (lambda _ + (setenv "PYTHONPATH" + (string-append (getcwd) ":" + (getenv "GUIX_PYTHONPATH")))))))) + (native-inputs (list python-pycountry python-pytest python-setuptools)) (home-page "https://github.com/noumar/iso639") (synopsis "Python library for ISO 639 standard") - (description "This package provides a Python library for ISO 639 standard -that is concerned with representation of names for languages and language -groups.") + (description + "This package provides a Python library for ISO 639 standard that is +concerned with representation of names for languages and language groups.") (license license:agpl3+))) (define-public python-iso3166 @@ -171,13 +196,64 @@ groups.") (version "2.1.1") (source (origin - (method url-fetch) - (uri (pypi-uri "iso3166" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/deactivated/python-iso3166") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "068p94gavc8gbmp5a2kw8hi5l551wfzbpmp6z7ll8sx6vnw53mgw")))) - (build-system python-build-system) + (base32 "0j0bnm4bd23cyb7dga00gb20myg9skylchkw4d23yh31b7a315m8")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/deactivated/python-iso3166") (synopsis "Self-contained ISO 3166-1 country definitions") (description "This package provides the ISO 3166-1 country definitions.") (license license:expat))) + +(define-public python-pycountry + (package + (name "python-pycountry") + (version "24.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pycountry/pycountry") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qs99acz1vsj96s8pcwbnp3z3s01mzzvdayk7fm0nnl6lf3lz1g1")))) + (build-system pyproject-build-system) + (native-inputs (list python-poetry-core python-pytest python-pytest-cov)) + (home-page "https://github.com/pycountry/pycountry") + (synopsis "ISO databases for languages, countries, currencies, etc.") + (description + "@code{pycountry} provides the ISO databases for the standards: + @enumerate + @item 639-3 (Languages) + @item 3166 (Countries) + @item 3166-3 (Deleted Countries) + @item 3166-2 (Subdivisions of countries) + @item 4217 (Currencies) + @item 15924 (Scripts) + @end enumerate + It includes a copy from Debian’s pkg-isocodes and makes the data accessible + through a Python API.") + (license license:lgpl2.1+))) + +(define-public python-pycountry-20.7.3 + (hidden-package + (package + (inherit python-pycountry) + (name "python-pycountry") + (version "20.7.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pycountry/pycountry") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1aqzbdqvy3pg0x33ay099vriazs28v6kw7fwc8ajg3avdcws2mgm")))) + (native-inputs (list python-pytest python-pytest-cov python-setuptools))))) diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index 4d70a9b276d..e1ccfdcb818 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -77,7 +77,6 @@ #:use-module (gnu packages libcanberra) #:use-module (gnu packages linux) #:use-module (gnu packages mp3) - #:use-module (gnu packages openbox) #:use-module (gnu packages pdf) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) @@ -96,6 +95,7 @@ #:use-module (gnu packages video) #:use-module (gnu packages vulkan) #:use-module (gnu packages web) + #:use-module (gnu packages wm) #:use-module (gnu packages xml) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg) diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index 3dde1505a27..20641d8cf36 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -1417,7 +1417,7 @@ transport data and for performing public transport journey queries.") (list extra-cmake-modules)) (inputs (list ki18n - sane-backends)) + sane)) (home-page "https://invent.kde.org/libraries/ksanecore") (synopsis "Library providing logic to interface scanners") (description diff --git a/gnu/packages/lean.scm b/gnu/packages/lean.scm index 82bca77dd71..8229c7e7306 100644 --- a/gnu/packages/lean.scm +++ b/gnu/packages/lean.scm @@ -24,11 +24,12 @@ #:use-module (ice-9 match) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages check) #:use-module (gnu packages llvm) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) #:use-module (guix build-system cmake) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix gexp) #:use-module (guix packages) @@ -165,18 +166,33 @@ interactive and automated theorem proving.") (package (name "python-mathlibtools") (version "1.1.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "mathlibtools" version)) - (sha256 - (base32 - "089pql105imx8z7ar1wiz9fn000jp6xqdfixw4jf2vric94vn9fj")))) - (build-system python-build-system) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/leanprover-community/mathlib-tools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1kllk99cd9vsbmb0ifi21gkhrg2w803z4y5xhx0a7hx3viyjb3cv")))) + (build-system pyproject-build-system) (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'check 'fix-home-directory - (lambda _ - (setenv "HOME" "/tmp")))))) + (list + #:test-flags + #~(list "-k" + ;; These tests require network access. + (string-join (list "not test_new" + "test_add" + "test_upgrade_project" + "test_upgrade_mathlib" + "test_get_tutorials") + " and not ")) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'fix-home-directory + (lambda _ + (setenv "HOME" "/tmp")))))) + (native-inputs (list python-pytest python-setuptools)) (inputs (list python-toml python-pygithub python-certifi diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm index cf38ac113e9..52616572fae 100644 --- a/gnu/packages/libcanberra.scm +++ b/gnu/packages/libcanberra.scm @@ -26,7 +26,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (gnu packages autotools) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) @@ -34,6 +34,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python-build) #:use-module (gnu packages xiph)) (define-public libcanberra @@ -133,15 +134,13 @@ sounds for various system events.") (uri (string-append "http://ftp.n0.is/pub/releases/" "pycanberra-" version ".tar.xz")) (sha256 - (base32 - "16jjf8fcgaprmz6jacsxrh17l1ad891fns38bxv49lg3s3mn1nj2")))) - (build-system python-build-system) - (arguments - `(#:tests? #f)) ;No tests included. - (propagated-inputs - (list libcanberra)) + (base32 "16jjf8fcgaprmz6jacsxrh17l1ad891fns38bxv49lg3s3mn1nj2")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;No tests included. + (native-inputs (list python-setuptools)) + (propagated-inputs (list libcanberra)) + (home-page "https://github.com/totdb/pycanberra") (synopsis "Ctypes wrapper for the libcanberra API") (description "Pycanberra is a basic Python wrapper for libcanberra.") - (home-page "http://c.n0.is/ng0/pycanberra/") (license lgpl2.1+))) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index a0b3cd353ae..a372793c6a6 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -286,7 +286,7 @@ into other word processors.") (native-inputs (list cppunit gperf pkg-config)) (propagated-inputs ; in Requires or Requires.private field of .pkg - (list icu4c liblangtag librevenge libxml2-next)) + (list icu4c liblangtag librevenge libxml2)) (inputs (list boost)) (arguments @@ -372,7 +372,7 @@ working with graphics in the WPG (WordPerfect Graphics) format.") (native-inputs (list autoconf automake libtool cppunit pkg-config)) (propagated-inputs ;in Requires field of .pkg - (list curl libxml2-next)) + (list curl libxml2)) (inputs (list boost cyrus-sasl openssl)) (arguments @@ -413,7 +413,7 @@ as Alfresco or Nuxeo.") (native-inputs (list doxygen gperf perl pkg-config)) (propagated-inputs ; in Requires or Requires.private field of .pkg - (list librevenge libxml2-next)) + (list librevenge libxml2)) (inputs (list boost)) (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libabw") @@ -467,7 +467,7 @@ CorelDRAW documents of all versions.") (native-inputs (list cppunit doxygen gperf pkg-config)) (propagated-inputs ; in Requires or Requires.private field of .pkg - (list liblangtag librevenge libxml2-next zlib)) + (list liblangtag librevenge libxml2 zlib)) (inputs (list boost glm mdds)) (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek") @@ -479,14 +479,14 @@ Apple Keynote documents. It currently supports Keynote versions 2 to 5.") (define-public liblangtag (package (name "liblangtag") - (version "0.6.4") + (version "0.6.7") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/tagoh/liblangtag/downloads/" "liblangtag-" version ".tar.bz2")) (sha256 - (base32 "0r55r30ih8dgq1hwbpl834igilj7bpxcnmlrlkd3vryk2wn0c0ap")))) + (base32 "03h33sjqsrmmkyj2kxs7c6226hd4s5n22bz62b4hag1zmvabrmjy")))) (build-system gnu-build-system) (native-inputs (list libtool pkg-config)) @@ -772,15 +772,28 @@ Works word processor file format.") (uri (string-append "http://dev-www.libreoffice.org/src/libzmf/libzmf-" version ".tar.xz")) (sha256 (base32 - "08mg5kmkjrmqrd8j5rkzw9vdqlvibhb1ynp6bmfxnzq5rcq1l197")))) + "08mg5kmkjrmqrd8j5rkzw9vdqlvibhb1ynp6bmfxnzq5rcq1l197")) + (patches (search-patches "libzmf-doxygen-1.14.patch")))) (build-system gnu-build-system) (arguments - ;; A harmless 'sign-compare' error pops up on i686 so disable '-Werror'. - '(#:configure-flags '("--disable-werror"))) + (list + ;; A harmless 'sign-compare' error pops up on i686 so disable '-Werror'. + #:configure-flags #~'("--disable-werror") + #:phases + #~(modify-phases %standard-phases + (replace 'bootstrap + (lambda _ + ;; Override the bootstrap phase as a makefile has been patched. + (invoke "autoreconf" "-vif")))))) (inputs (list boost icu4c libpng librevenge zlib)) (native-inputs - (list cppunit doxygen pkg-config)) + (list autoconf + automake + libtool + cppunit + doxygen + pkg-config)) (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libzmf") (synopsis "Parses file format of Zoner Callisto/Draw documents") (description "Libzmf is a library that parses the file format of Zoner @@ -1177,7 +1190,7 @@ commonly called @code{ftoa} or @code{dtoa}.") python-lxml qrcodegen-cpp redland - sane-backends + sane unixodbc unzip vigra diff --git a/gnu/packages/librewolf.scm b/gnu/packages/librewolf.scm index ff34cff736c..f041d76f7aa 100644 --- a/gnu/packages/librewolf.scm +++ b/gnu/packages/librewolf.scm @@ -626,7 +626,7 @@ cups dbus-glib freetype - ffmpeg + ffmpeg-6 gdk-pixbuf glib gtk+ diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index ba1c1374ef0..3aeb2a5321a 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -47,7 +47,6 @@ #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages lsof) - #:use-module (gnu packages openbox) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm index 634a2f58492..03ec37101a5 100644 --- a/gnu/packages/lxqt.scm +++ b/gnu/packages/lxqt.scm @@ -57,7 +57,6 @@ #:use-module (gnu packages perl) #:use-module (gnu packages lxde) #:use-module (gnu packages maths) - #:use-module (gnu packages openbox) #:use-module (gnu packages pcre) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) @@ -65,6 +64,7 @@ #:use-module (gnu packages pulseaudio) #:use-module (gnu packages qt) #:use-module (gnu packages textutils) + #:use-module (gnu packages wm) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index faeaeb70e2e..a0d32ff2656 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -4743,11 +4743,15 @@ the RFC 8617 Authenticated Received Chain (ARC) protocol.") (base32 "12hl93336w64iyqalpv4rma2ijigav68qy1xmgziibdi7inxr3hi")))) (build-system pyproject-build-system) + (arguments + (list + ;; dns.resolver.NoResolverConfiguration: cannot open /etc/resolv.conf + #:test-flags #~(list "-k" "not test_authenticate_dmarc_psdsub"))) (propagated-inputs (list python-authres python-dkimpy python-dnspython python-publicsuffix2)) (native-inputs - (list python-setuptools python-wheel)) + (list python-pytest python-setuptools)) (home-page "https://github.com/ValiMail/authentication-headers") (synopsis "Library wrapping email authentication header verification and generation") (description @@ -4760,38 +4764,40 @@ DKIM and ARC sign messages and output the corresponding signature headers.") (license (list license:zpl2.1 license:zlib license:mpl2.0)))) (define-public python-aiosmtpd - (package - (name "python-aiosmtpd") - (version "1.4.6") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/aio-libs/aiosmtpd") - (commit (string-append "v" version)))) - (sha256 - (base32 "0b5y94zc8pq75sjwsifblzgjnliyclkwypi68b2zffrxcdnz27r2")) - (file-name (git-file-name name version)))) - (build-system pyproject-build-system) - (arguments - ;; This QA test requires git. - (list #:test-flags ''("-k" "not test_ge_master"))) - (native-inputs - (list python-pytest - python-pytest-asyncio - python-pytest-cov - python-pytest-mock - python-setuptools - python-wheel)) - (propagated-inputs - (list python-atpublic)) - (home-page "https://aiosmtpd.readthedocs.io/") - (synopsis "Asyncio based SMTP server") - (description - "This project is a reimplementation of the Python stdlib @code{smtpd.py} + ;; Tests run fixed on not yet released version. + (let ((commit "98f578389ae86e5345cc343fa4e5a17b21d9c96d") + (revision "0")) + (package + (name "python-aiosmtpd") + (version (git-version "1.4.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aio-libs/aiosmtpd") + (commit commit))) + (sha256 + (base32 "1pmvlzxfcqjplvn2bzi9jd3m3941ff7nlgxxfwc7pzhmazlkqf8z")) + (file-name (git-file-name name version)))) + (build-system pyproject-build-system) + (arguments + ;; This QA test requires git. + (list #:test-flags ''("-k" "not test_ge_master"))) + (native-inputs + (list python-pytest + python-pytest-cov + python-pytest-mock + python-setuptools)) + (propagated-inputs + (list python-atpublic + python-attrs)) + (home-page "https://aiosmtpd.readthedocs.io/") + (synopsis "Asyncio based SMTP server") + (description + "This project is a reimplementation of the Python stdlib @code{smtpd.py} based on asyncio.") - (license (list license:asl2.0 - license:lgpl3)))) ; only for setup_helpers.py + (license (list license:asl2.0 + license:lgpl3))))) ; only for setup_helpers.py (define-public python-imaplib2 (package diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index 286252b6ed0..64f92318362 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -303,7 +303,7 @@ desktop and the mate-about program.") (propagated-inputs ;; both of these are requires.private in mateweather.pc (list libsoup-minimal-2 - libxml2-next)) + libxml2)) (home-page "https://mate-desktop.org/") (synopsis "MATE library for weather information from the Internet") (description diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 1cd0865263a..82d878592ac 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -11316,8 +11316,12 @@ the Wolfram language.") (sha256 (base32 "1iagdic8f0yjx01kdds40jfcxcpdbrd3i0ywydl01dhyyvd2yjk9")))) (build-system pyproject-build-system) - (propagated-inputs (list python-mathics-scanner python-pygments)) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs + (list python-pytest + python-setuptools)) + (propagated-inputs + (list python-mathics-scanner + python-pygments)) (home-page "http://github.com/Mathics3/mathics-pygments/") (synopsis "Wolfram language lexer for Pygments") (description "This package provides a Wolfram language lexer for Pygments.") diff --git a/gnu/packages/medical.scm b/gnu/packages/medical.scm index a9cffacdd9b..8c32731d899 100644 --- a/gnu/packages/medical.scm +++ b/gnu/packages/medical.scm @@ -65,28 +65,32 @@ (package (name "mygnuhealth") (version "2.2.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "MyGNUHealth" version)) - (sha256 - (base32 - "1jcrriccqzb4jx7zayhiqmpvi3cvfy3bbf9zr3m83878f94yww8j")))) - (build-system python-build-system) + (source + (origin + (method url-fetch) + (uri (pypi-uri "MyGNUHealth" version)) + (sha256 + (base32 "1jcrriccqzb4jx7zayhiqmpvi3cvfy3bbf9zr3m83878f94yww8j")))) + (build-system pyproject-build-system) (arguments (list - #:imported-modules `(,@%python-build-system-modules - ,@%qt-build-system-modules) - #:modules `(((guix build qt-build-system) #:prefix qt:) - (guix build python-build-system) - (guix build utils)) - #:phases #~(modify-phases %standard-phases - (add-after 'install 'qt-wrap - (assoc-ref qt:%standard-phases 'qt-wrap)) - (add-before 'check 'env-setup - (lambda _ - (mkdir-p "/tmp/mygh/") - (setenv "HOME" "/tmp")))))) - (native-inputs (list python-pyside-2)) + #:tests? #f ; no tests. + #:imported-modules + `(,@%pyproject-build-system-modules + ,@%qt-build-system-modules) + #:modules + `(((guix build qt-build-system) #:prefix qt:) + (guix build pyproject-build-system) + (guix build utils)) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'qt-wrap + (assoc-ref qt:%standard-phases 'qt-wrap)) + (add-before 'check 'env-setup + (lambda _ + (mkdir-p "/tmp/mygh/") + (setenv "HOME" "/tmp")))))) + (native-inputs (list python-pyside-2 python-setuptools)) (inputs (list bash-minimal kirigami-5 python diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 26ea6d55fe7..63e3b170b7b 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -300,7 +300,7 @@ XMPP-based sessions.") gtk-doc/stable pkg-config)) (inputs (list libxcrypt ncurses)) - (propagated-inputs (list glib libxml2-next)) + (propagated-inputs (list glib libxml2)) (synopsis "GLib Ncurses Toolkit") (description "GNT is an ncurses toolkit for creating text-mode graphical user interfaces in a fast and easy way. It is based on GLib and ncurses.") @@ -3611,21 +3611,24 @@ for notification of events.") (license license:gpl3+))) (define-public python-harmony + ;; TODO: Remove python-harmony? Repository is archived. (package (name "python-harmony") - (version "0.7.1") + (version "0.7.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/taylordotfish/harmony.git") + (url "https://github.com/taylordotfish/harmony") (commit version))) - (file-name (string-append name "-" version "-checkout")) + (file-name (git-file-name name version)) (sha256 (base32 - "1bm9xcnzpnpj6rlhbrnl2abwclzl7ivgh1vb5644y9mnhcs489js")))) - (build-system python-build-system) + "1d202pymabzvkzmxpplyjv55x74g937abxmnxdg9bxjjvp85c1nv")))) + (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;no tests in repository (native-inputs - (list python-tox)) + (list python-setuptools)) (inputs (list python-librecaptcha python-keyring python-requests)) (synopsis "Discord account management") diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index 30d0eac330d..ea5cc62b396 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -36,7 +36,7 @@ #:use-module (guix deprecation) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages bash) @@ -62,6 +62,8 @@ #:use-module (gnu packages parallel) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages ssh) #:use-module (gnu packages valgrind) #:use-module (gnu packages version-control) @@ -528,36 +530,48 @@ only provides @code{MPI_THREAD_FUNNELED}."))) (define-public python-mpi4py (package (name "python-mpi4py") - (version "3.1.4") + (version "4.1.0") (source (origin - (method url-fetch) - (uri (pypi-uri "mpi4py" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/mpi4py/mpi4py") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "101lz7bnm9l17nrkbg6497kxscyh53aah7qd2b820ck2php8z18p")))) - (build-system python-build-system) + (base32 "1r4n2d3nacpa6sq18jp0xk4a81ha0iipgvlsdv0bhfmdvgpv2vqy")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'build 'mpi-setup - ,%openmpi-setup) - (add-before 'check 'pre-check - (lambda _ - ;; Skip BaseTestSpawn class (causes error 'ompi_dpm_dyn_init() - ;; failed --> Returned "Unreachable"' in chroot environment). - (substitute* "test/test_spawn.py" - (("unittest.skipMPI\\('openmpi\\(<3.0.0\\)'\\)") - "unittest.skipMPI('openmpi')")) - #t))))) - (inputs - (list openmpi)) - (properties - '((updater-extra-inputs . ("openmpi")))) + (list + #:test-flags + #~(list ;; MPI errors are unrecoverable. + "--ignore=test/test_spawn.py" + "--ignore=test/test_util_pool.py" + "--ignore=demo/futures/test_futures.py") + #:phases + #~(modify-phases %standard-phases + (add-after 'build 'mpi-setup #$%openmpi-setup) + (add-before 'check 'pre-check + (lambda _ + ;; Skip BaseTestSpawn class (causes error 'ompi_dpm_dyn_init() + ;; failed --> Returned "Unreachable"' in chroot environment). + (substitute* "test/test_spawn.py" + (("unittest.skipMPI\\('openmpi\\(<3.0.0\\)'\\)") + "unittest.skipMPI('openmpi')")))) + (replace 'check + (lambda* (#:key tests? test-flags #:allow-other-keys) + (if tests? + (apply invoke "mpiexec" "pytest" "-vv" test-flags) + (format #t "test suite not run~%"))))))) + (native-inputs (list python-cython python-pytest python-setuptools)) + (inputs (list openmpi)) + (properties '((updater-extra-inputs "openmpi"))) (home-page "https://github.com/mpi4py/mpi4py") (synopsis "Python bindings for the Message Passing Interface standard") - (description "MPI for Python (mpi4py) provides bindings of the Message -Passing Interface (MPI) standard for the Python programming language, allowing -any Python program to exploit multiple processors. + (description + "MPI for Python (mpi4py) provides bindings of the Message Passing +Interface (MPI) standard for the Python programming language, allowing any +Python program to exploit multiple processors. mpi4py is constructed on top of the MPI-1/MPI-2 specification and provides an object oriented interface which closely follows MPI-2 C++ bindings. It diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index c789ae54fa2..7ed5915ae8a 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -154,6 +154,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages image-viewers) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages java) #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages libevent) @@ -6090,40 +6091,44 @@ Recording Code} (ISRC) can be extracted.}") (license license:lgpl3+))) (define-public libmusicbrainz - (package - (name "libmusicbrainz") - (version "5.1.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/metabrainz/libmusicbrainz/releases/download/release-" - version "/libmusicbrainz-" version ".tar.gz")) - (sha256 - (base32 - "0ikb9igyyk28jm34raxfzkw2qyn4nzzwsymdyprp7cmvi6g2ajb7")))) - (build-system cmake-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-build - (lambda _ - (substitute* "src/CMakeLists.txt" - (("\\*.inc") "")))) - (replace 'check - (lambda _ - ;; requires network connections - ;; (invoke "tests/mbtest") - (invoke "tests/ctest") - #t))))) - (inputs (list neon libxml2)) - (native-inputs (list pkg-config)) - (home-page "https://musicbrainz.org/doc/libmusicbrainz") - (synopsis "MusicBrainz client library") - (description "The MusicBrainz Client Library (libmusicbrainz), also known as + ;; The latest release is more than a decade old, doesn't build with the + ;; latest libxml2 release. + (let ((commit "4efbed3afae11ef68281816088d7cf3d0f704dfe") + (revision "0")) + (package + (name "libmusicbrainz") + (version (git-version "5.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/metabrainz/libmusicbrainz") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1h1q0gg3xzhw115ifr5ja9gbd2k6ggkpm2f4sdqp313wp3lj86g9")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-build + (lambda _ + (substitute* "src/CMakeLists.txt" + (("\\*.inc") "")))) + (replace 'check + (lambda _ + ;; requires network connections + ;; (invoke "tests/mbtest") + (invoke "tests/ctest")))))) + (inputs (list neon libxml2)) + (native-inputs (list pkg-config)) + (home-page "https://musicbrainz.org/doc/libmusicbrainz") + (synopsis "MusicBrainz client library") + (description "The MusicBrainz Client Library (libmusicbrainz), also known as mb_client, is a development library geared towards developers who wish to add MusicBrainz lookup capabilities to their applications.") - (license license:lgpl2.1+))) + (license license:lgpl2.1+)))) (define-public perl-musicbrainz-discid (package diff --git a/gnu/packages/nicotine.scm b/gnu/packages/nicotine.scm index ff6676c4a1d..56c6b6a3116 100644 --- a/gnu/packages/nicotine.scm +++ b/gnu/packages/nicotine.scm @@ -23,7 +23,7 @@ #:use-module (guix packages) #:use-module (guix gexp) #:use-module (guix git-download) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (gnu packages bash) #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) @@ -31,6 +31,7 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages gtk) #:use-module (gnu packages mp3) + #:use-module (gnu packages python-build) #:use-module (gnu packages xorg)) (define-public nicotine+ @@ -45,43 +46,42 @@ (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0xj7hlhgirgjyfmdchksvwhjhaqaf5n84brzih6fqlbsrr9gxkw9")) - (modules '((guix build utils))) - ;; Remove test that relies on network access. - (snippet '(delete-file-recursively - "pynicotine/tests/unit/test_version.py")))) - (build-system python-build-system) + (base32 "0xj7hlhgirgjyfmdchksvwhjhaqaf5n84brzih6fqlbsrr9gxkw9")))) + (build-system pyproject-build-system) (arguments (list - #:imported-modules `((guix build glib-or-gtk-build-system) - ,@%python-build-system-modules) - #:modules `((guix build utils) - (guix build python-build-system) - ((guix build glib-or-gtk-build-system) - #:prefix glib-or-gtk:)) - #:phases #~(modify-phases %standard-phases - (add-after 'install 'wrap-program - (lambda _ - (wrap-program (string-append #$output "/bin/nicotine") - `("GI_TYPELIB_PATH" ":" prefix - (,(getenv "GI_TYPELIB_PATH")))))) - (add-after 'wrap-program 'glib-or-gtk-wrap - (assoc-ref glib-or-gtk:%standard-phases - 'glib-or-gtk-wrap)) - (add-after 'glib-or-gtk-wrap 'glib-or-gtk-compile-schemas - (assoc-ref glib-or-gtk:%standard-phases - 'glib-or-gtk-compile-schemas)) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "xvfb-run" "python" "-m" "unittest"))))))) + #:imported-modules + `((guix build glib-or-gtk-build-system) + ,@%pyproject-build-system-modules) + #:modules + `((guix build utils) + (guix build pyproject-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda _ + (wrap-program (string-append #$output "/bin/nicotine") + `("GI_TYPELIB_PATH" ":" prefix + (,(getenv "GI_TYPELIB_PATH")))))) + (add-after 'wrap-program 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)) + (add-after 'glib-or-gtk-wrap 'glib-or-gtk-compile-schemas + (assoc-ref glib-or-gtk:%standard-phases + 'glib-or-gtk-compile-schemas)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Remove test that relies on network access. + (delete-file "pynicotine/tests/unit/test_version.py") + (invoke "xvfb-run" "python" "-m" "unittest"))))))) (inputs (list bash-minimal gspell gtk python-pygobject libappindicator python-pytaglib)) - (native-inputs (list gettext-minimal xvfb-run)) + (native-inputs (list gettext-minimal python-setuptools xvfb-run)) (home-page "https://nicotine-plus.org/") (synopsis "Graphical client for Soulseek") (description diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm index cc7c6ba665c..bfb32b36e53 100644 --- a/gnu/packages/ocr.scm +++ b/gnu/packages/ocr.scm @@ -213,7 +213,7 @@ default. To add support for more languages, the leptonica podofo poppler-qt5 - sane-backends + sane qtbase-5 qtspell quazip-5 diff --git a/gnu/packages/openbox.scm b/gnu/packages/openbox.scm deleted file mode 100644 index 08ce89b5476..00000000000 --- a/gnu/packages/openbox.scm +++ /dev/null @@ -1,120 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Julien Lepiller -;;; Copyright © 2016, 2023 Efraim Flashner -;;; Copyright © 2017 Nikita -;;; Copyright © 2022 Maxim Cournoyer -;;; -;;; 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 . - -(define-module (gnu packages openbox) - #:use-module ((guix licenses) #:select (gpl2+)) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix utils) - #:use-module (guix build-system gnu) - #:use-module (guix gexp) - #:use-module (gnu packages) - #:use-module (gnu packages autotools) - #:use-module (gnu packages freedesktop) - #:use-module (gnu packages gettext) - #:use-module (gnu packages gnome) - #:use-module (gnu packages gtk) - #:use-module (gnu packages image) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages python) - #:use-module (gnu packages xdisorg) - #:use-module (gnu packages xml) - #:use-module (gnu packages xorg)) - -(define-public openbox - (package - (name "openbox") - (version "3.6.1") - (source (origin - (method url-fetch) - (uri (string-append - "http://openbox.org/dist/openbox/" name "-" - version ".tar.xz")) - (sha256 - (base32 - "0vg2y1qddsdxkjv806mzpvmkgzliab8ll4s7zm7ma5jnriamirxb")) - (patches (search-patches "openbox-add-fix-for-glib2-exposed-segfault.patch" "openbox-python3.patch")))) - (build-system gnu-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'force-reconfigure - ;; This is made necessary by the openbox-python3 patch. - (lambda _ - (delete-file "configure")))))) - (native-inputs (list autoconf automake gettext-minimal libtool pkg-config)) - (propagated-inputs (list python-pyxdg)) - (inputs (list imlib2 - libxml2 - (librsvg-for-system) - libsm - libxcursor - libxinerama - libxml2 - libxrandr - libxft - pango - python-wrapper)) - (synopsis "Box style window manager") - (description - "Openbox is a highly configurable, next generation window manager with -extensive standards support. The *box visual style is well known for its -minimalistic appearance. Openbox uses the *box visual style, while providing -a greater number of options for theme developers than previous *box -implementations.") - (home-page "http://openbox.org/wiki/Main_Page") - (license gpl2+))) - -(define-public obconf - (package - (name "obconf") - (version "2.0.4") - (source - (origin - (method url-fetch) - (uri (string-append "http://openbox.org/dist/" name - "/" name "-" version ".tar.gz")) - (sha256 - (base32 - "1fanjdmd8727kk74x5404vi8v7s4kpq48l583d12fsi4xvsfb8vi")))) - (inputs (list gtk+-2 - imlib2 - libglade - libsm - librsvg - libxft - openbox - startup-notification)) - (native-inputs (list gettext-minimal pkg-config)) - (build-system gnu-build-system) - (arguments - (list - #:configure-flags - #~(list "--enable-nls" - "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration"))) - (home-page "https://openbox.org/obconf") - (synopsis "Openbox configuration tool") - (description - "Obconf is a tool for configuring the Openbox window manager. -You can configure its appearance, themes, and much more.") - (license gpl2+))) - -;;; openbox.scm ends here diff --git a/gnu/packages/patches/basis-universal-unbundle-libs.patch b/gnu/packages/patches/basis-universal-unbundle-libs.patch new file mode 100644 index 00000000000..045812f0d4d --- /dev/null +++ b/gnu/packages/patches/basis-universal-unbundle-libs.patch @@ -0,0 +1,302 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e2c7a1d..b6c860f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,141 +1,13 @@ + # Important: The Basis Universal encoder and transcoder libraries must be compiled with -fno-strict-aliasing (MSVC's default, and also the Linux kernel). + # It should also work without this option, but we do not test with it. +-cmake_minimum_required(VERSION 3.5) ++cmake_minimum_required(VERSION 3.31) + + project(basisu) +-option(STATIC "static linking" FALSE) +-option(SAN "sanitize" FALSE) ++find_package(PkgConfig) + +-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) ++add_compile_options("-fno-strict-aliasing") ++add_compile_definitions(BASISU_SUPPORT_SSE=0 BASISD_SUPPORT_KTX2_ZSTD=1 BASISU_SUPPORT_OPENCL=0) + +-# For MSVC builds default to SSE enabled, and determine if it's a 64-bit (-A x64) vs. 32-bit (-A Win32) build. +-if (MSVC) +- option(SSE "SSE 4.1 support" TRUE) +- if ( CMAKE_GENERATOR_PLATFORM STREQUAL Win32 ) +- set(BUILD_X64 0) +- else() +- set(BUILD_X64 1) +- endif() +- add_compile_options(/W4) +-else() +- option(SSE "SSE 4.1 support" FALSE) +- option(BUILD_X64 "build 64-bit" TRUE) +-endif() +- +-option(ZSTD "ZSTD support for KTX2 transcoding/encoding" TRUE) +-option(OPENCL "OpenCL support in encoder" FALSE) +- +-message("Initial BUILD_X64=${BUILD_X64}") +-message("Initial CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") +-message("Initial SSE=${SSE}") +-message("Initial ZSTD=${ZSTD}") +-message("Initial OPENCL=${OPENCL}") +-message("Initial SAN=${SAN}") +- +-if ((NOT MSVC) AND OPENCL) +- # With MSVC builds we use the Khronos lib/include files in the project's "OpenCL" directory, to completely avoid requiring fiddly to install vendor SDK's. +- # Otherwise we use the system's (if any). +- find_package(OpenCL) +- message(STATUS "OpenCL found: ${OPENCL_FOUND}") +- message(STATUS "OpenCL includes: ${OpenCL_INCLUDE_DIRS}") +- message(STATUS "OpenCL libraries: ${OpenCL_LIBRARIES}") +-endif() +- +-if( NOT CMAKE_BUILD_TYPE ) +- set( CMAKE_BUILD_TYPE Release ) +-endif() +- +-message(${PROJECT_NAME} " build type: " ${CMAKE_BUILD_TYPE}) +- +-if (BUILD_X64) +- message("Building 64-bit") +-else() +- message("Building 32-bit") +-endif() +- +-if (SSE) +- message("SSE enabled") +-else() +- message("SSE disabled") +-endif() +- +-if (ZSTD) +- message("Zstandard enabled") +-else() +- message("Zstandard disabled") +-endif() +- +-if (NOT MSVC) +- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g") +- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g") +- +- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") +- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") +- +- if (SAN) +- message("Enabling SAN") +- +- set(SANITIZE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize=alignment") +- +- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${SANITIZE_FLAGS}") +- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${SANITIZE_FLAGS}") +- +- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SANITIZE_FLAGS}") +- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${SANITIZE_FLAGS}") +- endif() +- +- set(CMAKE_CXX_FLAGS -std=c++17) +- set(GCC_COMPILE_FLAGS "-fvisibility=hidden -fPIC -fno-strict-aliasing -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -Wextra -Wno-unused-local-typedefs -Wno-unused-value -Wno-unused-parameter -Wno-unused-variable -Wno-reorder -Wno-misleading-indentation -Wno-class-memaccess -Wno-deprecated-copy -Wno-maybe-uninitialized -Wno-unused-function -Wno-stringop-overflow -Wno-unknown-warning-option") +- +- if (NOT BUILD_X64) +- set(GCC_COMPILE_FLAGS "${GCC_COMPILE_FLAGS} -m32") +- endif() +- +- if (EMSCRIPTEN) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -DBASISU_SUPPORT_SSE=0") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -DBASISU_SUPPORT_SSE=0") +- +- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_LINK_FLAGS}") +- elseif (STATIC) +- if (SSE) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1") +- else() +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=0") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=0") +- endif() +- +- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_LINK_FLAGS} -static-libgcc -static-libstdc++ -static") +- else() +- if (SSE) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1") +- else() +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=0") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=0") +- endif() +- +- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_LINK_FLAGS} -Wl,-rpath .") +- endif() +- +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COMPILE_FLAGS}") +- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${GCC_COMPILE_FLAGS}") +- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${GCC_COMPILE_FLAGS} -D_DEBUG") +- +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COMPILE_FLAGS}") +- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${GCC_COMPILE_FLAGS}") +- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${GCC_COMPILE_FLAGS} -D_DEBUG") +-else() +- if (SSE) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=1") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=1") +- else() +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=0") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=0") +- endif() +-endif() +- +-# Define the source files for the static library + set(ENCODER_LIB_SRC_LIST + encoder/basisu_backend.cpp + encoder/basisu_basis_file.cpp +@@ -161,94 +33,26 @@ set(ENCODER_LIB_SRC_LIST + encoder/3rdparty/tinyexr.cpp + transcoder/basisu_transcoder.cpp + ) ++set(ENCODER_LIB_HEADER_LIST ++ transcoder/basisu.h ++ transcoder/basisu_containers.h ++ transcoder/basisu_file_headers.h ++ transcoder/basisu_transcoder.h ++ transcoder/basisu_transcoder_internal.h ++ transcoder/basisu_transcoder_uastc.h ++) + +-if (ZSTD) +- set(ENCODER_LIB_SRC_LIST ${ENCODER_LIB_SRC_LIST} zstd/zstd.c) +-endif() +- +-# Create the static library +-add_library(basisu_encoder STATIC ${ENCODER_LIB_SRC_LIST}) +- +-# Create the basisu executable and link against the static library ++add_library(basisu_encoder SHARED ${ENCODER_LIB_SRC_LIST}) + add_executable(basisu basisu_tool.cpp) + target_link_libraries(basisu PRIVATE basisu_encoder) + +-# Create the new example executable and link against the static library +-add_executable(examples example/example.cpp) +-target_link_libraries(examples PRIVATE basisu_encoder) +- +-if (ZSTD) +- target_compile_definitions(basisu PRIVATE BASISD_SUPPORT_KTX2_ZSTD=1) +- target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=1) +-else() +- target_compile_definitions(basisu PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0) +- target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0) +-endif() +- +-if (NOT MSVC) +- # For Non-Windows builds, let cmake try and find the system OpenCL headers/libs for us. +- if (OPENCL AND OPENCL_FOUND) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_OPENCL=1") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1") +- +- target_include_directories(basisu PRIVATE ${OpenCL_INCLUDE_DIRS}) +- target_include_directories(examples PRIVATE ${OpenCL_INCLUDE_DIRS}) +- target_include_directories(basisu_encoder PRIVATE ${OpenCL_INCLUDE_DIRS}) +- set(BASISU_EXTRA_LIBS ${OpenCL_LIBRARIES}) +- endif() +-else() +- # For Windows builds, we use our local copies of the OpenCL import lib and Khronos headers. +- if (OPENCL) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_OPENCL=1") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1") +- +- target_include_directories(basisu PRIVATE "OpenCL") +- target_include_directories(examples PRIVATE "OpenCL") +- target_include_directories(basisu_encoder PRIVATE "OpenCL") +- +- if (BUILD_X64) +- target_link_libraries(basisu PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL64.lib") +- target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL64.lib") +- else() +- target_link_libraries(basisu PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL.lib") +- target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL.lib") +- endif() +- endif() +-endif() +- +-if (NOT MSVC) +- target_link_libraries(basisu PRIVATE m pthread ${BASISU_EXTRA_LIBS}) +- target_link_libraries(examples PRIVATE m pthread ${BASISU_EXTRA_LIBS}) +-endif() ++pkg_check_modules(ZSTD REQUIRED libzstd) ++target_include_directories(basisu_encoder SYSTEM PUBLIC ${ZSTD_INCLUDE_DIRS}) ++target_link_libraries(basisu_encoder PUBLIC ${ZSTD_LINK_LIBRARIES}) + +-if (NOT EMSCRIPTEN) +- if (UNIX) +- if (CMAKE_BUILD_TYPE STREQUAL Release) +- if (APPLE) +- add_custom_command(TARGET basisu POST_BUILD COMMAND strip -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu) +- #message("strip command: strip -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu") +- else() +- add_custom_command(TARGET basisu POST_BUILD COMMAND strip -g -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu) +- #message("strip command: strip -g -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu") +- endif() +- endif() +- endif() +-endif() ++include(GNUInstallDirs) ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/basisu_encoder.pc.in ${CMAKE_CURRENT_BINARY_DIR}/basisu_encoder.pc @ONLY) + +-if (MSVC) +- set_target_properties(basisu PROPERTIES +- RUNTIME_OUTPUT_NAME "basisu" +- RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- ) +- +- set_target_properties(examples PROPERTIES +- RUNTIME_OUTPUT_NAME "examples" +- RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +- ) +-endif() ++install(TARGETS basisu basisu_encoder) ++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/basisu_encoder.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) ++install(FILES ${ENCODER_LIB_HEADER_LIST} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +diff --git a/basisu_encoder.pc.in b/basisu_encoder.pc.in +new file mode 100644 +index 0000000..0ba05a1 +--- /dev/null ++++ b/basisu_encoder.pc.in +@@ -0,0 +1,8 @@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++ ++Name: basisu_encoder ++Description: GPU compressed texture interchange system ++Version: @PROJECT_VERSION@ ++Cflags: -I${includedir} ++Libs: -L${libdir} -lbasisu_encoder +diff --git a/encoder/basisu_comp.cpp b/encoder/basisu_comp.cpp +index 59a2a50..e9aa20f 100644 +--- a/encoder/basisu_comp.cpp ++++ b/encoder/basisu_comp.cpp +@@ -33,7 +33,7 @@ + #endif + + #if BASISD_SUPPORT_KTX2_ZSTD +-#include "../zstd/zstd.h" ++#include + #endif + + // Set to 1 to disable the mipPadding alignment workaround (which only seems to be needed when no key-values are written at all) +diff --git a/transcoder/basisu_transcoder.cpp b/transcoder/basisu_transcoder.cpp +index 0f7ca15..d7bce42 100644 +--- a/transcoder/basisu_transcoder.cpp ++++ b/transcoder/basisu_transcoder.cpp +@@ -169,7 +169,7 @@ + // If BASISD_SUPPORT_KTX2_ZSTD is 0, UASTC files compressed with Zstd cannot be loaded. + #if BASISD_SUPPORT_KTX2_ZSTD + // We only use two Zstd API's: ZSTD_decompress() and ZSTD_isError() +- #include "../zstd/zstd.h" ++ #include + #endif + #endif + diff --git a/gnu/packages/patches/cups-minimal-Address-PPD-injection-issues.patch b/gnu/packages/patches/cups-minimal-Address-PPD-injection-issues.patch deleted file mode 100644 index b6cf94c0854..00000000000 --- a/gnu/packages/patches/cups-minimal-Address-PPD-injection-issues.patch +++ /dev/null @@ -1,529 +0,0 @@ -From 373924d728b61cf6dec9c8a1a1edeb4b9f342529 Mon Sep 17 00:00:00 2001 -From: Tobias Geerinckx-Rice -Date: Fri, 27 Sep 2024 17:03:10 +0200 -Subject: [PATCH] gnu: cups-minimal: Address PPD injection issues. - -This patch combines 5 upstream commits: - 9939a70b750edd9d05270060cc5cf62ca98cfbe5 - 04bb2af4521b56c1699a2c2431c56c05a7102e69 - e0630cd18f76340d302000f2bf6516e99602b844 - 1e6ca5913eceee906038bc04cc7ccfbe2923bdfd - 2abe1ba8a66864aa82cd9836b37e57103b8e1a3b ---- - cups/ppd-cache.c | 235 +++++++++++++++++++++++++++++++++-------------- - scheduler/ipp.c | 9 +- - 2 files changed, 174 insertions(+), 70 deletions(-) - -diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c -index e750fccd4..d2533b731 100644 ---- a/cups/ppd-cache.c -+++ b/cups/ppd-cache.c -@@ -32,6 +32,7 @@ - static int cups_connect(http_t **http, const char *url, char *resource, size_t ressize); - static int cups_get_url(http_t **http, const char *url, char *name, size_t namesize); - static const char *ppd_inputslot_for_keyword(_ppd_cache_t *pc, const char *keyword); -+static void ppd_put_string(cups_file_t *fp, cups_lang_t *lang, cups_array_t *strings, const char *ppd_option, const char *ppd_choice, const char *pwg_msgid); - static void pwg_add_finishing(cups_array_t *finishings, ipp_finishings_t template, const char *name, const char *value); - static void pwg_add_message(cups_array_t *a, const char *msg, const char *str); - static int pwg_compare_finishings(_pwg_finishings_t *a, _pwg_finishings_t *b); -@@ -3197,9 +3198,10 @@ _ppdCreateFromIPP2( - ipp_t *media_col, /* Media collection */ - *media_size; /* Media size collection */ - char make[256], /* Make and model */ -- *model, /* Model name */ -+ *mptr, /* Pointer into make and model */ - ppdname[PPD_MAX_NAME]; - /* PPD keyword */ -+ const char *model; /* Model name */ - int i, j, /* Looping vars */ - count, /* Number of values */ - bottom, /* Largest bottom margin */ -@@ -3221,8 +3223,7 @@ _ppdCreateFromIPP2( - int have_qdraft = 0,/* Have draft quality? */ - have_qhigh = 0; /* Have high quality? */ - char msgid[256]; /* Message identifier (attr.value) */ -- const char *keyword, /* Keyword value */ -- *msgstr; /* Localized string */ -+ const char *keyword; /* Keyword value */ - cups_array_t *strings = NULL;/* Printer strings file */ - struct lconv *loc = localeconv(); - /* Locale data */ -@@ -3260,34 +3261,104 @@ _ppdCreateFromIPP2( - } - - /* -- * Standard stuff for PPD file... -+ * Get a sanitized make and model... - */ - -- cupsFilePuts(fp, "*PPD-Adobe: \"4.3\"\n"); -- cupsFilePuts(fp, "*FormatVersion: \"4.3\"\n"); -- cupsFilePrintf(fp, "*FileVersion: \"%d.%d\"\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR); -- cupsFilePuts(fp, "*LanguageVersion: English\n"); -- cupsFilePuts(fp, "*LanguageEncoding: ISOLatin1\n"); -- cupsFilePuts(fp, "*PSVersion: \"(3010.000) 0\"\n"); -- cupsFilePuts(fp, "*LanguageLevel: \"3\"\n"); -- cupsFilePuts(fp, "*FileSystem: False\n"); -- cupsFilePuts(fp, "*PCFileName: \"ippeve.ppd\"\n"); -+ if ((attr = ippFindAttribute(supported, "printer-make-and-model", IPP_TAG_TEXT)) != NULL && ippValidateAttribute(attr)) -+ { -+ /* -+ * Sanitize the model name to only contain PPD-safe characters. -+ */ - -- if ((attr = ippFindAttribute(supported, "printer-make-and-model", IPP_TAG_TEXT)) != NULL) - strlcpy(make, ippGetString(attr, 0, NULL), sizeof(make)); -+ -+ for (mptr = make; *mptr; mptr ++) -+ { -+ if (*mptr < ' ' || *mptr >= 127 || *mptr == '\"') -+ { -+ /* -+ * Truncate the make and model on the first bad character... -+ */ -+ -+ *mptr = '\0'; -+ break; -+ } -+ } -+ -+ while (mptr > make) -+ { -+ /* -+ * Strip trailing whitespace... -+ */ -+ -+ mptr --; -+ if (*mptr == ' ') -+ *mptr = '\0'; -+ } -+ -+ if (!make[0]) -+ { -+ /* -+ * Use a default make and model if nothing remains... -+ */ -+ -+ strlcpy(make, "Unknown", sizeof(make)); -+ } -+ } - else -- strlcpy(make, "Unknown Printer", sizeof(make)); -+ { -+ /* -+ * Use a default make and model... -+ */ -+ -+ strlcpy(make, "Unknown", sizeof(make)); -+ } - - if (!_cups_strncasecmp(make, "Hewlett Packard ", 16) || !_cups_strncasecmp(make, "Hewlett-Packard ", 16)) - { -+ /* -+ * Normalize HP printer make and model... -+ */ -+ - model = make + 16; - strlcpy(make, "HP", sizeof(make)); -+ -+ if (!_cups_strncasecmp(model, "HP ", 3)) -+ model += 3; -+ } -+ else if ((mptr = strchr(make, ' ')) != NULL) -+ { -+ /* -+ * Separate "MAKE MODEL"... -+ */ -+ -+ while (*mptr && *mptr == ' ') -+ *mptr++ = '\0'; -+ -+ model = mptr; - } -- else if ((model = strchr(make, ' ')) != NULL) -- *model++ = '\0'; - else -- model = make; -+ { -+ /* -+ * No separate model name... -+ */ - -+ model = "Printer"; -+ } -+ -+ /* -+ * Standard stuff for PPD file... -+ */ -+ -+ cupsFilePuts(fp, "*PPD-Adobe: \"4.3\"\n"); -+ cupsFilePuts(fp, "*FormatVersion: \"4.3\"\n"); -+ cupsFilePrintf(fp, "*FileVersion: \"%d.%d\"\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR); -+ cupsFilePuts(fp, "*LanguageVersion: English\n"); -+ cupsFilePuts(fp, "*LanguageEncoding: ISOLatin1\n"); -+ cupsFilePuts(fp, "*PSVersion: \"(3010.000) 0\"\n"); -+ cupsFilePuts(fp, "*LanguageLevel: \"3\"\n"); -+ cupsFilePuts(fp, "*FileSystem: False\n"); -+ cupsFilePuts(fp, "*PCFileName: \"ippeve.ppd\"\n"); - cupsFilePrintf(fp, "*Manufacturer: \"%s\"\n", make); - cupsFilePrintf(fp, "*ModelName: \"%s\"\n", model); - cupsFilePrintf(fp, "*Product: \"(%s)\"\n", model); -@@ -3317,13 +3388,13 @@ _ppdCreateFromIPP2( - } - cupsFilePuts(fp, "\"\n"); - -- if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL) -+ if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr)) - cupsFilePrintf(fp, "*APSupplies: \"%s\"\n", ippGetString(attr, 0, NULL)); - -- if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL) -+ if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr)) - cupsFilePrintf(fp, "*cupsChargeInfoURI: \"%s\"\n", ippGetString(attr, 0, NULL)); - -- if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL) -+ if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr)) - { - http_t *http = NULL; /* Connection to printer */ - char stringsfile[1024]; /* Temporary strings file */ -@@ -3367,7 +3438,7 @@ _ppdCreateFromIPP2( - - response = cupsDoRequest(http, request, resource); - -- if ((attr = ippFindAttribute(response, "printer-strings-uri", IPP_TAG_URI)) != NULL) -+ if ((attr = ippFindAttribute(response, "printer-strings-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr)) - cupsFilePrintf(fp, "*cupsStringsURI %s: \"%s\"\n", keyword, ippGetString(attr, 0, NULL)); - - ippDelete(response); -@@ -3389,10 +3460,10 @@ _ppdCreateFromIPP2( - if (ippGetBoolean(ippFindAttribute(supported, "job-accounting-user-id-supported", IPP_TAG_BOOLEAN), 0)) - cupsFilePuts(fp, "*cupsJobAccountingUserId: True\n"); - -- if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL) -+ if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr)) - cupsFilePrintf(fp, "*cupsPrivacyURI: \"%s\"\n", ippGetString(attr, 0, NULL)); - -- if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL) -+ if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr)) - { - char prefix = '\"'; // Prefix for string - -@@ -3410,7 +3481,7 @@ _ppdCreateFromIPP2( - cupsFilePuts(fp, "\"\n"); - } - -- if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL) -+ if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr)) - { - char prefix = '\"'; // Prefix for string - -@@ -3973,18 +4044,16 @@ _ppdCreateFromIPP2( - cupsFilePrintf(fp, "*DefaultInputSlot: %s\n", ppdname); - - for (j = 0; j < (int)(sizeof(sources) / sizeof(sources[0])); j ++) -+ { - if (!strcmp(sources[j], keyword)) - { - snprintf(msgid, sizeof(msgid), "media-source.%s", keyword); - -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; -- - cupsFilePrintf(fp, "*InputSlot %s: \"<>setpagedevice\"\n", ppdname, j); -- cupsFilePrintf(fp, "*%s.InputSlot %s/%s: \"\"\n", lang->language, ppdname, msgstr); -+ ppd_put_string(fp, lang, strings, "InputSlot", ppdname, msgid); - break; - } -+ } - } - cupsFilePuts(fp, "*CloseUI: *InputSlot\n"); - } -@@ -4010,12 +4079,9 @@ _ppdCreateFromIPP2( - pwg_ppdize_name(keyword, ppdname, sizeof(ppdname)); - - snprintf(msgid, sizeof(msgid), "media-type.%s", keyword); -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; - - cupsFilePrintf(fp, "*MediaType %s: \"<>setpagedevice\"\n", ppdname, ppdname); -- cupsFilePrintf(fp, "*%s.MediaType %s/%s: \"\"\n", lang->language, ppdname, msgstr); -+ ppd_put_string(fp, lang, strings, "MediaType", ppdname, msgid); - } - cupsFilePuts(fp, "*CloseUI: *MediaType\n"); - } -@@ -4476,12 +4542,9 @@ _ppdCreateFromIPP2( - pwg_ppdize_name(keyword, ppdname, sizeof(ppdname)); - - snprintf(msgid, sizeof(msgid), "output-bin.%s", keyword); -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; - - cupsFilePrintf(fp, "*OutputBin %s: \"\"\n", ppdname); -- cupsFilePrintf(fp, "*%s.OutputBin %s/%s: \"\"\n", lang->language, ppdname, msgstr); -+ ppd_put_string(fp, lang, strings, "OutputBin", ppdname, msgid); - - if ((tray_ptr = ippGetOctetString(trays, i, &tray_len)) != NULL) - { -@@ -4600,9 +4663,6 @@ _ppdCreateFromIPP2( - cupsArrayAdd(names, (char *)keyword); - - snprintf(msgid, sizeof(msgid), "finishings.%d", value); -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; - - if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE) - ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE]; -@@ -4617,7 +4677,7 @@ _ppdCreateFromIPP2( - continue; - - cupsFilePrintf(fp, "*StapleLocation %s: \"\"\n", ppd_keyword); -- cupsFilePrintf(fp, "*%s.StapleLocation %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr); -+ ppd_put_string(fp, lang, strings, "StapleLocation", ppd_keyword, msgid); - cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*StapleLocation %s\"\n", value, keyword, ppd_keyword); - } - -@@ -4680,9 +4740,6 @@ _ppdCreateFromIPP2( - cupsArrayAdd(names, (char *)keyword); - - snprintf(msgid, sizeof(msgid), "finishings.%d", value); -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; - - if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE) - ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE]; -@@ -4697,7 +4754,7 @@ _ppdCreateFromIPP2( - continue; - - cupsFilePrintf(fp, "*FoldType %s: \"\"\n", ppd_keyword); -- cupsFilePrintf(fp, "*%s.FoldType %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr); -+ ppd_put_string(fp, lang, strings, "FoldType", ppd_keyword, msgid); - cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*FoldType %s\"\n", value, keyword, ppd_keyword); - } - -@@ -4768,9 +4825,6 @@ _ppdCreateFromIPP2( - cupsArrayAdd(names, (char *)keyword); - - snprintf(msgid, sizeof(msgid), "finishings.%d", value); -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; - - if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE) - ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE]; -@@ -4785,7 +4839,7 @@ _ppdCreateFromIPP2( - continue; - - cupsFilePrintf(fp, "*PunchMedia %s: \"\"\n", ppd_keyword); -- cupsFilePrintf(fp, "*%s.PunchMedia %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr); -+ ppd_put_string(fp, lang, strings, "PunchMedia", ppd_keyword, msgid); - cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*PunchMedia %s\"\n", value, keyword, ppd_keyword); - } - -@@ -4856,9 +4910,6 @@ _ppdCreateFromIPP2( - cupsArrayAdd(names, (char *)keyword); - - snprintf(msgid, sizeof(msgid), "finishings.%d", value); -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; - - if (value == IPP_FINISHINGS_TRIM) - ppd_keyword = "Auto"; -@@ -4866,7 +4917,7 @@ _ppdCreateFromIPP2( - ppd_keyword = trim_keywords[value - IPP_FINISHINGS_TRIM_AFTER_PAGES]; - - cupsFilePrintf(fp, "*CutMedia %s: \"\"\n", ppd_keyword); -- cupsFilePrintf(fp, "*%s.CutMedia %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr); -+ ppd_put_string(fp, lang, strings, "CutMedia", ppd_keyword, msgid); - cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*CutMedia %s\"\n", value, keyword, ppd_keyword); - } - -@@ -4905,12 +4956,11 @@ _ppdCreateFromIPP2( - - cupsArrayAdd(templates, (void *)keyword); - -+ pwg_ppdize_name(keyword, ppdname, sizeof(ppdname)); -+ - snprintf(msgid, sizeof(msgid), "finishing-template.%s", keyword); -- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr)) -- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid) -- msgstr = keyword; - -- cupsFilePrintf(fp, "*cupsFinishingTemplate %s: \"\n", keyword); -+ cupsFilePrintf(fp, "*cupsFinishingTemplate %s: \"\n", ppdname); - for (finishing_attr = ippFirstAttribute(finishing_col); finishing_attr; finishing_attr = ippNextAttribute(finishing_col)) - { - if (ippGetValueTag(finishing_attr) == IPP_TAG_BEGIN_COLLECTION) -@@ -4923,7 +4973,7 @@ _ppdCreateFromIPP2( - } - } - cupsFilePuts(fp, "\"\n"); -- cupsFilePrintf(fp, "*%s.cupsFinishingTemplate %s/%s: \"\"\n", lang->language, keyword, msgstr); -+ ppd_put_string(fp, lang, strings, "cupsFinishingTemplate", ppdname, msgid); - cupsFilePuts(fp, "*End\n"); - } - -@@ -4959,9 +5009,8 @@ _ppdCreateFromIPP2( - { - ipp_t *preset = ippGetCollection(attr, i); - /* Preset collection */ -- const char *preset_name = ippGetString(ippFindAttribute(preset, "preset-name", IPP_TAG_ZERO), 0, NULL), -+ const char *preset_name = ippGetString(ippFindAttribute(preset, "preset-name", IPP_TAG_ZERO), 0, NULL); - /* Preset name */ -- *localized_name; /* Localized preset name */ - ipp_attribute_t *member; /* Member attribute in preset */ - const char *member_name; /* Member attribute name */ - char member_value[256]; /* Member attribute value */ -@@ -4969,7 +5018,8 @@ _ppdCreateFromIPP2( - if (!preset || !preset_name) - continue; - -- cupsFilePrintf(fp, "*APPrinterPreset %s: \"\n", preset_name); -+ pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname)); -+ cupsFilePrintf(fp, "*APPrinterPreset %s: \"\n", ppdname); - for (member = ippFirstAttribute(preset); member; member = ippNextAttribute(preset)) - { - member_name = ippGetName(member); -@@ -5010,7 +5060,10 @@ _ppdCreateFromIPP2( - fin_col = ippGetCollection(member, i); - - if ((keyword = ippGetString(ippFindAttribute(fin_col, "finishing-template", IPP_TAG_ZERO), 0, NULL)) != NULL) -- cupsFilePrintf(fp, "*cupsFinishingTemplate %s\n", keyword); -+ { -+ pwg_ppdize_name(keyword, ppdname, sizeof(ppdname)); -+ cupsFilePrintf(fp, "*cupsFinishingTemplate %s\n", ppdname); -+ } - } - } - else if (!strcmp(member_name, "media")) -@@ -5037,13 +5090,13 @@ _ppdCreateFromIPP2( - if ((keyword = ippGetString(ippFindAttribute(media_col, "media-source", IPP_TAG_ZERO), 0, NULL)) != NULL) - { - pwg_ppdize_name(keyword, ppdname, sizeof(ppdname)); -- cupsFilePrintf(fp, "*InputSlot %s\n", keyword); -+ cupsFilePrintf(fp, "*InputSlot %s\n", ppdname); - } - - if ((keyword = ippGetString(ippFindAttribute(media_col, "media-type", IPP_TAG_ZERO), 0, NULL)) != NULL) - { - pwg_ppdize_name(keyword, ppdname, sizeof(ppdname)); -- cupsFilePrintf(fp, "*MediaType %s\n", keyword); -+ cupsFilePrintf(fp, "*MediaType %s\n", ppdname); - } - } - else if (!strcmp(member_name, "print-quality")) -@@ -5088,8 +5141,9 @@ _ppdCreateFromIPP2( - - cupsFilePuts(fp, "\"\n*End\n"); - -- if ((localized_name = _cupsMessageLookup(strings, preset_name)) != preset_name) -- cupsFilePrintf(fp, "*%s.APPrinterPreset %s/%s: \"\"\n", lang->language, preset_name, localized_name); -+ snprintf(msgid, sizeof(msgid), "preset-name.%s", preset_name); -+ pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname)); -+ ppd_put_string(fp, lang, strings, "APPrinterPreset", ppdname, msgid); - } - } - -@@ -5360,6 +5414,43 @@ cups_get_url(http_t **http, /* IO - Current HTTP connection */ - } - - -+/* -+ * 'ppd_put_strings()' - Write localization attributes to a PPD file. -+ */ -+ -+static void -+ppd_put_string(cups_file_t *fp, /* I - PPD file */ -+ cups_lang_t *lang, /* I - Language */ -+ cups_array_t *strings, /* I - Strings */ -+ const char *ppd_option,/* I - PPD option */ -+ const char *ppd_choice,/* I - PPD choice */ -+ const char *pwg_msgid) /* I - PWG message ID */ -+{ -+ const char *text; /* Localized text */ -+ -+ -+ if ((text = _cupsLangString(lang, pwg_msgid)) == pwg_msgid || !strcmp(pwg_msgid, text)) -+ { -+ if ((text = _cupsMessageLookup(strings, pwg_msgid)) == pwg_msgid) -+ return; -+ } -+ -+ // Add the first line of localized text... -+ cupsFilePrintf(fp, "*%s.%s %s/", lang->language, ppd_option, ppd_choice); -+ while (*text && *text != '\n') -+ { -+ // Escape ":" and "<"... -+ if (*text == ':' || *text == '<') -+ cupsFilePrintf(fp, "<%02X>", *text); -+ else -+ cupsFilePutChar(fp, *text); -+ -+ text ++; -+ } -+ cupsFilePuts(fp, ": \"\"\n"); -+} -+ -+ - /* - * 'pwg_add_finishing()' - Add a finishings value. - */ -@@ -5473,7 +5564,7 @@ pwg_ppdize_name(const char *ipp, /* I - IPP keyword */ - *end; /* End of name buffer */ - - -- if (!ipp) -+ if (!ipp || !_cups_isalnum(*ipp)) - { - *name = '\0'; - return; -@@ -5488,8 +5579,14 @@ pwg_ppdize_name(const char *ipp, /* I - IPP keyword */ - ipp ++; - *ptr++ = (char)toupper(*ipp++ & 255); - } -- else -+ else if (*ipp == '_' || *ipp == '.' || *ipp == '-' || _cups_isalnum(*ipp)) -+ { - *ptr++ = *ipp++; -+ } -+ else -+ { -+ ipp ++; -+ } - } - - *ptr = '\0'; -diff --git a/scheduler/ipp.c b/scheduler/ipp.c -index 37623c54e..14b1fe1e0 100644 ---- a/scheduler/ipp.c -+++ b/scheduler/ipp.c -@@ -1,7 +1,7 @@ - /* - * IPP routines for the CUPS scheduler. - * -- * Copyright © 2020-2023 by OpenPrinting -+ * Copyright © 2020-2024 by OpenPrinting - * Copyright © 2007-2021 by Apple Inc. - * Copyright © 1997-2007 by Easy Software Products, all rights reserved. - * -@@ -5417,6 +5417,13 @@ create_local_bg_thread( - } - } - -+ // Validate response from printer... -+ if (!ippValidateAttributes(response)) -+ { -+ send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Printer returned invalid data: %s"), cupsLastErrorString()); -+ goto finish_response; -+ } -+ - // TODO: Grab printer icon file... - httpClose(http); - --- -2.46.0 - diff --git a/gnu/packages/patches/cups-relax-root-ownership-check.patch b/gnu/packages/patches/cups-relax-root-ownership-check.patch new file mode 100644 index 00000000000..f24461153d8 --- /dev/null +++ b/gnu/packages/patches/cups-relax-root-ownership-check.patch @@ -0,0 +1,34 @@ +From 943e44dafa192b54fadcbb24f5f87d62a22c9f84 Mon Sep 17 00:00:00 2001 +From: Sergey Trofimov +Date: Wed, 17 Sep 2025 12:09:34 +0200 +Subject: [PATCH] Exempt files in /gnu/store from root ownership check. + +--- + cups/file.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/cups/file.c b/cups/file.c +index 95054f3c8..9822619d4 100644 +--- a/cups/file.c ++++ b/cups/file.c +@@ -159,7 +159,8 @@ _cupsFileCheck( + * 4. Must not be writable by others + */ + +- if (fileinfo.st_uid || /* 1. Must be owned by root */ ++ int in_gnu_store = !strncmp(filename, "/gnu/store/", 11); ++ if ((fileinfo.st_uid && !in_gnu_store) || /* 1. Must be owned by root or be in /gnu/store */ + (fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */ + (fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */ + (fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */ +@@ -198,7 +199,7 @@ _cupsFileCheck( + goto finishup; + } + +- if (fileinfo.st_uid || /* 1. Must be owned by root */ ++ if ((fileinfo.st_uid && !in_gnu_store) || /* 1. Must be owned by root or be in /gnu/store */ + (fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */ + (fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */ + (fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */ +-- +2.51.0 diff --git a/gnu/packages/patches/emacs-zoom-image-test-fix.patch b/gnu/packages/patches/emacs-zoom-image-test-fix.patch new file mode 100644 index 00000000000..b47cc4f800d --- /dev/null +++ b/gnu/packages/patches/emacs-zoom-image-test-fix.patch @@ -0,0 +1,25 @@ +From 462a541db904405ede8446c48ba0c71ad41c544d Mon Sep 17 00:00:00 2001 +From: Eli Zaretskii +Date: Thu, 17 Jul 2025 19:34:50 +0300 +Subject: [PATCH] ; * test/lisp/net/shr-tests.el (shr-test/zoom-image): Fix + (bug#79041). + +--- + test/lisp/net/shr-tests.el | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/test/lisp/net/shr-tests.el b/test/lisp/net/shr-tests.el +index 363cd144e8f3..a931d07a1631 100644 +--- a/test/lisp/net/shr-tests.el ++++ b/test/lisp/net/shr-tests.el +@@ -145,8 +145,8 @@ settings, then once more for each (OPTION . VALUE) pair.") + (dolist (alt '(nil "" "nothing to see here")) + (with-temp-buffer + (ert-info ((format "image with alt=%S" alt)) +- (let ((attrs (if alt (format " alt=\"%s\"" alt) ""))) +- (insert (format "" alt) ">"))) ++ (insert (format " +Date: Fri, 9 Feb 2024 15:32:38 -0500 +Subject: [PATCH] Add gobject example source code to path for mkhtml test + +Fixes #150 + +I'm not really sure why this is required, but I suspect it has to do +with changes in how GCC handles path traversal due to recent (ish) +security issues, as the code here is evaluated to +`../xml/../../examples/gobject.c` which probably looks unhealthy to +automatically include. + +Signed-off-by: Neil Hanlon +--- + tests/gobject/docs/meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/gobject/docs/meson.build b/tests/gobject/docs/meson.build +index a1dd66ca..236a1cc0 100644 +--- a/tests/gobject/docs/meson.build ++++ b/tests/gobject/docs/meson.build +@@ -119,6 +119,7 @@ test( + '--path=@0@'.format(':'.join([ + gobject_test_docs_dir, + srcdir, ++ join_paths(srcdir, 'tests/gobject/examples'), + ]) + ), + ], +-- +GitLab + diff --git a/gnu/packages/patches/inkscape-libxml2.patch b/gnu/packages/patches/inkscape-libxml2.patch new file mode 100644 index 00000000000..dc5b0f53460 --- /dev/null +++ b/gnu/packages/patches/inkscape-libxml2.patch @@ -0,0 +1,33 @@ +From 694d8ae43d06efff21adebf377ce614d660b24cd Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Fri, 17 Nov 2023 22:30:42 +0100 +Subject: [PATCH] include missing header file +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes build error: +``` +/build/inkscape/src/inkscape/src/object/uri.cpp: In constructor ‘Inkscape::URI::URI(const gchar*, const char*)’: +/build/inkscape/src/inkscape/src/object/uri.cpp:86:9: error: ‘xmlFree’ was not declared in this scope; did you mean ‘xmlFreeURI’? + 86 | xmlFree(full); +``` +--- + src/object/uri.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/object/uri.h b/src/object/uri.h +index 381adec58cf..d5b211fe2b2 100644 +--- a/src/object/uri.h ++++ b/src/object/uri.h +@@ -13,6 +13,7 @@ + #define INKSCAPE_URI_H + + #include ++#include + #include + #include + +-- +GitLab + diff --git a/gnu/packages/patches/libosinfo-libxml2-fix.patch b/gnu/packages/patches/libosinfo-libxml2-fix.patch new file mode 100644 index 00000000000..71d620532c3 --- /dev/null +++ b/gnu/packages/patches/libosinfo-libxml2-fix.patch @@ -0,0 +1,83 @@ +From 0adf38535637ec668e658d43f04f60f11f51574f Mon Sep 17 00:00:00 2001 +From: Roman Bogorodskiy +Date: Thu, 10 Apr 2025 13:54:02 +0200 +Subject: [PATCH] loader: don't use libxml2 deprecated APIs + +Address the following items: + + - Deprecated direct access to buf's content + - Mismatching error function signature + - Deprecated direct access to ctxt's lastError + +Signed-off-by: Roman Bogorodskiy +--- + osinfo/osinfo_loader.c | 42 +++++++++++++++++++++++------------------- + 1 file changed, 23 insertions(+), 19 deletions(-) + +diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c +index 0a9004af..b3fd4535 100644 +--- a/osinfo/osinfo_loader.c ++++ b/osinfo/osinfo_loader.c +@@ -354,7 +354,7 @@ osinfo_loader_doc(const char *xpath, + xmlXPathFreeObject(obj); + OSINFO_LOADER_SET_ERROR(err, "Cannot format stylesheet"); + } +- ret = g_strdup((char *)buf->content); ++ ret = g_strdup((char *)xmlBufferContent(buf)); + + xmlBufferFree(buf); + xmlXPathFreeObject(obj); +@@ -1902,28 +1902,32 @@ static void osinfo_loader_root(OsinfoLoader *loader, + } + + static void +-catchXMLError(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...) ++catchXMLError(void *ctx, const char *msg, ...) + { + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; ++ const xmlError *xmlErr = NULL; ++ g_autofree gchar *xmlmsg = NULL; + +- if (ctxt && ctxt->_private) { +- GError **err = ctxt->_private; +- if (!error_is_set(err)) { +- gchar *xmlmsg; +- if (ctxt->lastError.file) { +- xmlmsg = g_strdup_printf("%s:%d: %s", +- ctxt->lastError.file, +- ctxt->lastError.line, +- ctxt->lastError.message); +- } else { +- xmlmsg = g_strdup_printf("at line %d: %s", +- ctxt->lastError.line, +- ctxt->lastError.message); +- } +- OSINFO_LOADER_SET_ERROR(ctxt->_private, xmlmsg); +- g_free(xmlmsg); +- } ++ if (!ctxt || !ctxt->_private) ++ return; ++ ++ if (error_is_set(ctxt->_private)) ++ return; ++ ++ if (!(xmlErr = xmlCtxtGetLastError(ctx))) ++ return; ++ ++ if (xmlErr->file) { ++ xmlmsg = g_strdup_printf("%s:%d: %s", ++ xmlErr->file, ++ xmlErr->line, ++ xmlErr->message); ++ } else { ++ xmlmsg = g_strdup_printf("at line %d: %s", ++ xmlErr->line, ++ xmlErr->message); + } ++ OSINFO_LOADER_SET_ERROR(ctxt->_private, xmlmsg); + } + + static void osinfo_loader_process_xml(OsinfoLoader *loader, +-- +GitLab + diff --git a/gnu/packages/patches/libxslt-generated-ids.patch b/gnu/packages/patches/libxslt-generated-ids.patch deleted file mode 100644 index 1cd2363d6aa..00000000000 --- a/gnu/packages/patches/libxslt-generated-ids.patch +++ /dev/null @@ -1,173 +0,0 @@ -This makes generated IDs deterministic. - -Written by Daniel Veillard. - -This should be fixed in next release (2.29). -See https://bugzilla.gnome.org/show_bug.cgi?id=751621. - -diff --git a/libxslt/functions.c b/libxslt/functions.c -index 6448bde..5b00a6d 100644 ---- a/libxslt/functions.c -+++ b/libxslt/functions.c -@@ -651,6 +651,63 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs) - } - - /** -+ * xsltCleanupIds: -+ * @ctxt: the transformation context -+ * @root: the root of the resulting document -+ * -+ * This clean up ids which may have been saved in Element contents -+ * by xsltGenerateIdFunction() to provide stable IDs on elements. -+ * -+ * Returns the number of items cleaned or -1 in case of error -+ */ -+int -+xsltCleanupIds(xsltTransformContextPtr ctxt, xmlNodePtr root) { -+ xmlNodePtr cur; -+ int count = 0; -+ -+ if ((ctxt == NULL) || (root == NULL)) -+ return(-1); -+ if (root->type != XML_ELEMENT_NODE) -+ return(-1); -+ -+ cur = root; -+ while (cur != NULL) { -+ if (cur->type == XML_ELEMENT_NODE) { -+ if (cur->content != NULL) { -+ cur->content = NULL; -+ count++; -+ } -+ if (cur->children != NULL) { -+ cur = cur->children; -+ continue; -+ } -+ } -+ if (cur->next != NULL) { -+ cur = cur->next; -+ continue; -+ } -+ do { -+ cur = cur->parent; -+ if (cur == NULL) -+ break; -+ if (cur == (xmlNodePtr) root) { -+ cur = NULL; -+ break; -+ } -+ if (cur->next != NULL) { -+ cur = cur->next; -+ break; -+ } -+ } while (cur != NULL); -+ } -+ -+fprintf(stderr, "Attributed %d IDs for element, cleaned up %d\n", -+ ctxt->nextid, count); -+ -+ return(count); -+} -+ -+/** - * xsltGenerateIdFunction: - * @ctxt: the XPath Parser context - * @nargs: the number of arguments -@@ -701,7 +758,39 @@ xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){ - if (obj) - xmlXPathFreeObject(obj); - -- val = (long)((char *)cur - (char *)&base_address); -+ /* -+ * Try to provide stable ID for generated document: -+ * - usually ID are computed to be placed on elements via attributes -+ * so using the element as the node for the ID -+ * - the cur->content should be a correct placeholder for this, we use -+ * it to hold element node numbers in xmlXPathOrderDocElems to -+ * speed up XPath too -+ * - xsltCleanupIds() clean them up before handing the XSLT output -+ * to the API client. -+ * - other nodes types use the node address method but that should -+ * not end up in resulting document ID -+ * - we can enable this by default without risk of performance issues -+ * only the one pass xsltCleanupIds() is added -+ */ -+ if (cur->type == XML_ELEMENT_NODE) { -+ if (cur->content == NULL) { -+ xsltTransformContextPtr tctxt; -+ -+ tctxt = xsltXPathGetTransformContext(ctxt); -+ if (tctxt == NULL) { -+ val = (long)((char *)cur - (char *)&base_address); -+ } else { -+ tctxt->nextid++; -+ val = tctxt->nextid; -+ cur->content = (void *) (val); -+ } -+ } else { -+ val = (long) cur->content; -+ } -+ } else { -+ val = (long)((char *)cur - (char *)&base_address); -+ } -+ - if (val >= 0) { - sprintf((char *)str, "idp%ld", val); - } else { -diff --git a/libxslt/functions.h b/libxslt/functions.h -index e0e0bf9..4a1e163 100644 ---- a/libxslt/functions.h -+++ b/libxslt/functions.h -@@ -64,6 +64,13 @@ XSLTPUBFUN void XSLTCALL - int nargs); - - /* -+ * Cleanup for ID generation -+ */ -+XSLTPUBFUN int XSLTCALL -+ xsltCleanupIds (xsltTransformContextPtr ctxt, -+ xmlNodePtr root); -+ -+/* - * And the registration - */ - -diff --git a/libxslt/transform.c b/libxslt/transform.c -index 24f9eb2..2bdf6bf 100644 ---- a/libxslt/transform.c -+++ b/libxslt/transform.c -@@ -700,6 +700,7 @@ xsltNewTransformContext(xsltStylesheetPtr style, xmlDocPtr doc) { - cur->traceCode = (unsigned long*) &xsltDefaultTrace; - cur->xinclude = xsltGetXIncludeDefault(); - cur->keyInitLevel = 0; -+ cur->nextid = 0; - - return(cur); - -@@ -6092,6 +6093,13 @@ xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc, - if (root != NULL) { - const xmlChar *doctype = NULL; - -+ /* -+ * cleanup ids which may have been saved in Elements content ptrs -+ */ -+ if (ctxt->nextid != 0) { -+ xsltCleanupIds(ctxt, root); -+ } -+ - if ((root->ns != NULL) && (root->ns->prefix != NULL)) - doctype = xmlDictQLookup(ctxt->dict, root->ns->prefix, root->name); - if (doctype == NULL) -diff --git a/libxslt/xsltInternals.h b/libxslt/xsltInternals.h -index 95e8fe6..8eedae4 100644 ---- a/libxslt/xsltInternals.h -+++ b/libxslt/xsltInternals.h -@@ -1782,6 +1782,8 @@ struct _xsltTransformContext { - int maxTemplateVars; - unsigned long opLimit; - unsigned long opCount; -+ -+ unsigned long nextid;/* for generating stable ids */ - }; - - /** diff --git a/gnu/packages/patches/libzmf-doxygen-1.14.patch b/gnu/packages/patches/libzmf-doxygen-1.14.patch new file mode 100644 index 00000000000..46d05a2549d --- /dev/null +++ b/gnu/packages/patches/libzmf-doxygen-1.14.patch @@ -0,0 +1,30 @@ +From 48f94abff2fcc4943626a62c6180c60862288b08 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fridrich=20=C5=A0trba?= +Date: Tue, 3 Jun 2025 11:57:29 +0200 +Subject: [PATCH 245/248] Install all files generated by doxygen + +Install the whole directory and do not pick only some file-types + +Change-Id: I743253696f3e57dfe70c6509b7d620dc2bf39e76 +--- + docs/doxygen/Makefile.am | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/docs/doxygen/Makefile.am b/docs/doxygen/Makefile.am +index 4351042..40a02e8 100644 +--- a/docs/doxygen/Makefile.am ++++ b/docs/doxygen/Makefile.am +@@ -6,9 +6,7 @@ if WITH_LIBZMF_DOCS + + install-data-am: + mkdir -p $(DESTDIR)$(docdir)/html +- $(INSTALL_DATA) html/*.html $(DESTDIR)$(docdir)/html/ +- $(INSTALL_DATA) html/*.png $(DESTDIR)$(docdir)/html/ +- $(INSTALL_DATA) html/*.css $(DESTDIR)$(docdir)/html/ ++ $(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/ + + uninstall-am: + -rm -rf $(DESTDIR)$(docdir)/html +-- +2.51.0 + diff --git a/gnu/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch b/gnu/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch new file mode 100644 index 00000000000..847bba95708 --- /dev/null +++ b/gnu/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch @@ -0,0 +1,40 @@ +Patch obtained from https://github.com/mpv-player/mpv/commit/26b29fba02a2782f68e2906f837d21201fc6f1b9 +See https://github.com/mpv-player/mpv/issues/16176 for discussion. Next version +of mpv will have this fixed, but upstream is not planning to release a patch +release. + +From 26b29fba02a2782f68e2906f837d21201fc6f1b9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= +Date: Fri, 28 Mar 2025 19:12:01 +0100 +Subject: [PATCH] demux_mkv: fix compilation after deprecated definitions + removal + +See: https://github.com/FFmpeg/FFmpeg/commit/822432769868da325ba03774df1084aa78b9a5a0 +--- + demux/demux_mkv.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c +index 135edcc23d82b..cc7ce3e98f4f6 100644 +--- a/demux/demux_mkv.c ++++ b/demux/demux_mkv.c +@@ -2200,16 +2200,16 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track) + // [0x30..0x37] are component tags utilized for + // non-mobile captioning service ("profile A"). + if (component_tag >= 0x30 && component_tag <= 0x37) +- lav->profile = FF_PROFILE_ARIB_PROFILE_A; ++ lav->profile = AV_PROFILE_ARIB_PROFILE_A; + break; + case 0x0012: + // component tag 0x87 signifies a mobile/partial reception + // (1seg) captioning service ("profile C"). + if (component_tag == 0x87) +- lav->profile = FF_PROFILE_ARIB_PROFILE_C; ++ lav->profile = AV_PROFILE_ARIB_PROFILE_C; + break; + } +- if (lav->profile == FF_PROFILE_UNKNOWN) ++ if (lav->profile == AV_PROFILE_UNKNOWN) + MP_WARN(demuxer, "ARIB caption profile %02x / %04x not supported.\n", + component_tag, data_component_id); + } diff --git a/gnu/packages/patches/python-libxml2-utf8.patch b/gnu/packages/patches/python-libxml2-utf8.patch index e39672faa1b..9c4ca4fdb29 100644 --- a/gnu/packages/patches/python-libxml2-utf8.patch +++ b/gnu/packages/patches/python-libxml2-utf8.patch @@ -6,18 +6,18 @@ that 'itstool' stumbles upon when processing UTF-8 data: Patch by Jan Matejek from . ---- libxml2-2.9.5.orig/python/libxml.c -+++ libxml2-2.9.5/python/libxml.c -@@ -1620,6 +1620,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU +--- a/python/libxml.c ++++ b/python/libxml.c +@@ -1499,6 +1499,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNUSED void *ctx, const char *msg, PyObject *message; PyObject *result; char str[1000]; + unsigned char *ptr = (unsigned char *)str; - #ifdef DEBUG_ERROR - printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg); -@@ -1636,12 +1637,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU - str[999] = 0; + if (libxml_xmlPythonErrorFuncHandler == NULL) { + va_start(ap, msg); +@@ -1510,12 +1511,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNUSED void *ctx, const char *msg, + str[999] = 0; va_end(ap); +#if PY_MAJOR_VERSION >= 3 @@ -32,7 +32,7 @@ from . - message = libxml_charPtrConstWrap(str); + message = libxml_charPtrConstWrap(ptr); PyTuple_SetItem(list, 1, message); - result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list); + result = PyObject_CallObject(libxml_xmlPythonErrorFuncHandler, list); + /* Forget any errors caused in the error handler. */ + PyErr_Clear(); Py_XDECREF(list); diff --git a/gnu/packages/patches/raptor2-libxml2.patch b/gnu/packages/patches/raptor2-libxml2.patch new file mode 100644 index 00000000000..605301ca0fd --- /dev/null +++ b/gnu/packages/patches/raptor2-libxml2.patch @@ -0,0 +1,30 @@ +https://bugs.gentoo.org/906227 +https://github.com/dajobe/raptor/issues/59 +https://github.com/dajobe/raptor/pull/58 + +From 4dbc4c1da2a033c497d84a1291c46f416a9cac51 Mon Sep 17 00:00:00 2001 +From: David Anes +Date: Thu, 4 May 2023 11:54:02 +0200 +Subject: [PATCH] Remove the access to entities 'checked' private symbol for + libxml2 2.11.0 + +Since version 2.11.0, some private symbols that were never intended +as public API/ABI have been removed from libxml2, therefore the field +'checked' is no longer present and raptor fails to build in this +scenario. +--- a/src/raptor_libxml.c ++++ b/src/raptor_libxml.c +@@ -246,10 +246,11 @@ raptor_libxml_getEntity(void* user_data, const xmlChar *name) + + ret->owner = 1; + +-#if LIBXML_VERSION >= 20627 ++#if LIBXML_VERSION >= 20627 && LIBXML_VERSION < 21100 + /* Checked field was released in 2.6.27 on 2006-10-25 + * http://git.gnome.org/browse/libxml2/commit/?id=a37a6ad91a61d168ecc4b29263def3363fff4da6 + * ++ * and was later removed in version 2.11.0 + */ + + /* Mark this entity as having been checked - never do this again */ + diff --git a/gnu/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch b/gnu/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch new file mode 100644 index 00000000000..aef4d152743 --- /dev/null +++ b/gnu/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch @@ -0,0 +1,25 @@ +From 324ad2e5b5d4b08fb682fa05d5baaaf087d13f5c Mon Sep 17 00:00:00 2001 +From: Sergey Trofimov +Date: Sat, 20 Sep 2025 18:26:44 +0200 +Subject: [PATCH] Look for plugins in SANE_BACKEND_LIB_PATH. + +--- + backend/dll.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/backend/dll.c b/backend/dll.c +index bf34c4f6d..d52e81206 100644 +--- a/backend/dll.c ++++ b/backend/dll.c +@@ -461,6 +461,8 @@ load (struct backend *be) + be->op[i] = op_unsupported; + + path = getenv ("LD_LIBRARY_PATH"); ++ if (!path) ++ path = getenv ("SANE_BACKEND_LIB_PATH"); /* for guix */ + if (!path) + path = getenv ("SHLIB_PATH"); /* for HP-UX */ + if (!path) +-- +2.51.0 + diff --git a/gnu/packages/patches/vulkan-tools-wayland-1.24.patch b/gnu/packages/patches/vulkan-tools-wayland-1.24.patch new file mode 100644 index 00000000000..7d440c09caf --- /dev/null +++ b/gnu/packages/patches/vulkan-tools-wayland-1.24.patch @@ -0,0 +1,100 @@ +From f546743016f5301c063f2c50af0ea43dd2485ef4 Mon Sep 17 00:00:00 2001 +From: Charles Giessen +Date: Thu, 17 Jul 2025 09:56:40 -0500 +Subject: [PATCH] build: Remove pkg-config provided library names + +The library names of Xcb, Xlib, and Wayland do not need to be queried from pkg-config, +instead they can be hardcoded to use the fallback names. + +The intent of querying the library names was to prevent issues where the hardcoded name +was not the platform-appropriate name. But because _LINK_LIBRARIES can have +more than one library name, the logic to assign _LINK_LIBRARIES into a compile +definition breaks horribly. While it is possible to handle this in CMake, the dlopen code would +also have to handle it which is much more error prone. +--- + cube/CMakeLists.txt | 20 -------------------- + cube/wayland_loader.h | 3 --- + cube/xcb_loader.h | 3 --- + cube/xlib_loader.h | 3 --- + 4 files changed, 29 deletions(-) + +diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt +index 7e135e79b..dac6bfed9 100644 +--- a/cube/CMakeLists.txt ++++ b/cube/CMakeLists.txt +@@ -307,16 +307,6 @@ if (ANDROID) + return() + endif() + +-if (XCB_LINK_LIBRARIES) +- target_compile_definitions(vkcube PRIVATE "XCB_LIBRARY=\"${XCB_LINK_LIBRARIES}\"") +-endif() +-if (X11_LINK_LIBRARIES) +- target_compile_definitions(vkcube PRIVATE "XLIB_LIBRARY=\"${X11_LINK_LIBRARIES}\"") +-endif() +-if (WAYLAND_CLIENT_LINK_LIBRARIES) +- target_compile_definitions(vkcube PRIVATE "WAYLAND_LIBRARY=\"${WAYLAND_CLIENT_LINK_LIBRARIES}\"") +-endif() +- + # ---------------------------------------------------------------------------- + # vkcubepp + +@@ -360,16 +350,6 @@ target_include_directories(vkcubepp PRIVATE .) + target_compile_definitions(vkcubepp PRIVATE ${ENABLED_CUBE_PLATFORMS}) + target_link_libraries(vkcubepp ${CMAKE_DL_LIBS} Vulkan::Headers) + +-if (XCB_LINK_LIBRARIES ) +- target_compile_definitions(vkcubepp PUBLIC "XCB_LIBRARY=\"${XCB_LINK_LIBRARIES}\"") +-endif() +-if (X11_LINK_LIBRARIES) +- target_compile_definitions(vkcubepp PUBLIC "XLIB_LIBRARY=\"${X11_LINK_LIBRARIES}\"") +-endif() +-if (WAYLAND_CLIENT_LINK_LIBRARIES) +- target_compile_definitions(vkcubepp PUBLIC "WAYLAND_LIBRARY=\"${WAYLAND_CLIENT_LINK_LIBRARIES}\"") +-endif() +- + if(APPLE) + install( + TARGETS vkcubepp +diff --git a/cube/wayland_loader.h b/cube/wayland_loader.h +index 2afab6e97..7d7d91412 100644 +--- a/cube/wayland_loader.h ++++ b/cube/wayland_loader.h +@@ -80,9 +80,6 @@ static PFN_wl_display_disconnect cube_wl_display_disconnect = NULL; + + static inline void *initialize_wayland() { + void *wayland_library = NULL; +-#if defined(WAYLAND_LIBRARY) +- wayland_library = dlopen(WAYLAND_LIBRARY, RTLD_NOW | RTLD_LOCAL); +-#endif + if (NULL == wayland_library) { + wayland_library = dlopen("libwayland-client.so.0", RTLD_NOW | RTLD_LOCAL); + } +diff --git a/cube/xcb_loader.h b/cube/xcb_loader.h +index a94d5ab56..cecd25402 100644 +--- a/cube/xcb_loader.h ++++ b/cube/xcb_loader.h +@@ -88,9 +88,6 @@ static PFN_xcb_screen_next cube_xcb_screen_next = NULL; + + void *initialize_xcb() { + void *xcb_library = NULL; +-#if defined(XCB_LIBRARY) +- xcb_library = dlopen(XCB_LIBRARY, RTLD_NOW | RTLD_LOCAL); +-#endif + if (NULL == xcb_library) { + xcb_library = dlopen("libxcb.so.1", RTLD_NOW | RTLD_LOCAL); + } +diff --git a/cube/xlib_loader.h b/cube/xlib_loader.h +index c7874d0e7..881789f18 100644 +--- a/cube/xlib_loader.h ++++ b/cube/xlib_loader.h +@@ -72,9 +72,6 @@ static PFN_XFlush cube_XFlush = NULL; + + void* initialize_xlib() { + void* xlib_library = NULL; +-#if defined(XLIB_LIBRARY) +- xlib_library = dlopen(XLIB_LIBRARY, RTLD_NOW | RTLD_LOCAL); +-#endif + if (NULL == xlib_library) { + xlib_library = dlopen("libX11.so.6", RTLD_NOW | RTLD_LOCAL); + } diff --git a/gnu/packages/patches/warzone2100-unbundle-libs.patch b/gnu/packages/patches/warzone2100-unbundle-libs.patch new file mode 100644 index 00000000000..6752cc609cd --- /dev/null +++ b/gnu/packages/patches/warzone2100-unbundle-libs.patch @@ -0,0 +1,324 @@ +diff -ru a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt +--- a/3rdparty/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500 ++++ b/3rdparty/CMakeLists.txt 2025-09-18 14:00:25.296819724 -0500 +@@ -1,67 +1,47 @@ + cmake_minimum_required (VERSION 3.16...3.31) +- ++find_package(PkgConfig QUIET) + include(CheckCompilerFlagsOutput) + +-SET(UTF8PROC_INSTALL OFF CACHE BOOL "Enable installation of utf8proc" FORCE) +-add_subdirectory(utf8proc EXCLUDE_FROM_ALL) +-set_property(TARGET utf8proc PROPERTY FOLDER "3rdparty") +-if(NOT MSVC) +- set(_supported_utf8proc_cxx_compiler_flags "") +- +- # -Wassign-enum +- check_compiler_flags_output("-Werror -Wno-assign-enum -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-assign-enum" OUTPUT_VARIABLE _supported_utf8proc_cxx_compiler_flags APPEND) +- +- if (NOT _supported_utf8proc_cxx_compiler_flags STREQUAL "") +- string(REPLACE " " ";" _supported_utf8proc_cxx_compiler_flags "${_supported_utf8proc_cxx_compiler_flags}") +- target_compile_options(utf8proc PRIVATE ${_supported_utf8proc_cxx_compiler_flags}) +- endif() +-endif() ++pkg_check_modules(UTF8PROC REQUIRED libutf8proc) ++add_library(utf8proc UNKNOWN IMPORTED) ++set_target_properties(utf8proc PROPERTIES ++ IMPORTED_LOCATION ${UTF8PROC_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${UTF8PROC_INCLUDE_DIRS} ++ INTERFACE_LINK_LIBRARIES ${UTF8PROC_LINK_LIBRARIES} ++) + + add_subdirectory(launchinfo EXCLUDE_FROM_ALL) + set_property(TARGET launchinfo PROPERTY FOLDER "3rdparty") + +-SET(FMT_INSTALL OFF CACHE BOOL "Generate the install target" FORCE) +-SET(FMT_SYSTEM_HEADERS ON CACHE BOOL "Expose headers with marking them as system." FORCE) +-add_subdirectory(fmt EXCLUDE_FROM_ALL) +-set_property(TARGET fmt PROPERTY FOLDER "3rdparty") +-# Define a custom inline namespace for the fmt used by WZ, to prevent ODR violations if static linking to any libraries that themselves embed (a different version of) fmt +-target_compile_definitions(fmt PUBLIC "FMT_BEGIN_NAMESPACE=namespace fmt { inline namespace v11_wz2100 {") +-target_compile_definitions(fmt PUBLIC "FMT_END_NAMESPACE=}}") +- ++pkg_check_modules(FMT REQUIRED fmt) ++add_library(fmt UNKNOWN IMPORTED) ++set_target_properties(fmt PROPERTIES ++ IMPORTED_LOCATION ${FMT_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${FMT_INCLUDE_DIRS} ++ INTERFACE_LINK_LIBRARIES ${FMT_LINK_LIBRARIES} ++) + + # inih library +-add_library(inih STATIC "inih/ini.h" "inih/ini.c") +-set_property(TARGET inih PROPERTY FOLDER "3rdparty") +-target_include_directories(inih PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") +-target_compile_definitions(inih PRIVATE +- "-DINI_API=" +- "-DINI_ALLOW_MULTILINE=0" +- "-DINI_ALLOW_BOM=1" +- "-DINI_ALLOW_INLINE_COMMENTS=0" +- "-DINI_MAX_LINE=1024" +- "-DINI_ALLOW_REALLOC=1" +- "-DINI_INITIAL_ALLOC=1024" ++pkg_check_modules(INIH REQUIRED inih) ++add_library(inih UNKNOWN IMPORTED) ++set_target_properties(inih PROPERTIES ++ IMPORTED_LOCATION ${INIH_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${INIH_INCLUDE_DIRS} ++ INTERFACE_LINK_LIBRARIES ${INIH_LINK_LIBRARIES} + ) + + # re2 +-SET(RE2_BUILD_TESTING OFF CACHE BOOL "enable testing for RE2" FORCE) +-add_subdirectory(re2 EXCLUDE_FROM_ALL) +-target_include_directories(re2 PUBLIC +- $ ++pkg_check_modules(RE2 REQUIRED re2) ++add_library(re2 UNKNOWN IMPORTED) ++set_target_properties(re2 PROPERTIES ++ IMPORTED_LOCATION ${RE2_LIBRARIES} ++ INTERFACE_INCLUDE_DIRECTORIES ${RE2_INCLUDE_DIRS} ++ INTERFACE_LINK_LIBRARIES ${RE2_LINK_LIBRARIES} + ) +-set_property(TARGET re2 PROPERTY FOLDER "3rdparty") +-set_property(TARGET re2 PROPERTY XCODE_ATTRIBUTE_GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS NO) # -Wmissing-field-initializers +-set_property(TARGET re2 PROPERTY XCODE_ATTRIBUTE_GCC_WARN_SHADOW NO) # -Wshadow +-set_property(TARGET re2 PROPERTY XCODE_ATTRIBUTE_WARNING_CFLAGS "-Wno-missing-field-initializers -Wno-shadow") + + add_subdirectory(EmbeddedJSONSignature EXCLUDE_FROM_ALL) + set_property(TARGET EmbeddedJSONSignature PROPERTY FOLDER "3rdparty") + +-if(ENABLE_DISCORD) +- add_subdirectory(discord-rpc EXCLUDE_FROM_ALL) +- set_property(TARGET discord-rpc PROPERTY FOLDER "3rdparty") +-endif() +- + find_package(SQLite3 3.14 REQUIRED) + set(SQLITECPP_USE_STATIC_RUNTIME OFF CACHE BOOL "Use static runtime" FORCE) + set(SQLITE_HAS_CODEC OFF CACHE BOOL "Enable database encryption API. Not available in the public release of SQLite." FORCE) +@@ -111,52 +91,7 @@ + if (WZ_ENABLE_BASIS_UNIVERSAL AND NOT WZ_CI_DISABLE_BASIS_COMPRESS_TEXTURES) + + # basis-universal +- set(_ORIGINAL_CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH}") +- if(DEFINED VCPKG_INSTALLED_DIR AND DEFINED VCPKG_HOST_TRIPLET) +- # Partial workaround for: https://github.com/microsoft/vcpkg/issues/17001 +- # Explicitly add the HOST_TRIPLET paths to CMAKE_PROGRAM_PATH +- list(APPEND CMAKE_PROGRAM_PATH "${VCPKG_INSTALLED_DIR}/${VCPKG_HOST_TRIPLET}") +- endif() +- find_program(BASIS_UNIVERSAL_CLI NAMES basisu PATH_SUFFIXES "tools/basisu" NO_CACHE) +- set(CMAKE_PROGRAM_PATH "${_ORIGINAL_CMAKE_PROGRAM_PATH}") +- if(NOT BASIS_UNIVERSAL_CLI) +- message(STATUS "Pre-installed basisu tool not found - attempting to build for host system") +- +- # Build the tool for the host system at configure time +- set(BASISU_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/basis_universal_host_tool/") +- execute_process( +- COMMAND ${CMAKE_COMMAND} -E make_directory "${BASISU_BINARY_DIR}" +- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal_host_build" +- RESULT_VARIABLE _basis_result +- ) +- if(NOT _basis_result EQUAL 0) +- message(FATAL_ERROR "Failed to create directory for basis_universal_host_build") +- endif() +- execute_process( +- COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal_host_build" +- WORKING_DIRECTORY "${BASISU_BINARY_DIR}" +- RESULT_VARIABLE _basis_result +- ) +- if(NOT _basis_result EQUAL 0) +- message(FATAL_ERROR "Failed to configure basis_universal_host_build") +- endif() +- execute_process( +- COMMAND ${CMAKE_COMMAND} --build "${BASISU_BINARY_DIR}" --config Release +- WORKING_DIRECTORY "${BASISU_BINARY_DIR}" +- RESULT_VARIABLE _basis_result +- ) +- if(NOT _basis_result EQUAL 0) +- message(FATAL_ERROR "Basis-Universal host tool build failed") +- endif() +- message(STATUS "Basis-Universal Host Tool Built") +- +- find_program(BASIS_UNIVERSAL_CLI NAMES basisu PATHS "${BASISU_BINARY_DIR}/basis_install/bin" NO_CACHE NO_DEFAULT_PATH) +- if(NOT BASIS_UNIVERSAL_CLI) +- message(FATAL_ERROR "Built basisu CLI tool not found!") +- endif() +- else() +- message(STATUS "Pre-installed basisu tool found: ${BASIS_UNIVERSAL_CLI}") +- endif() ++ find_program(BASIS_UNIVERSAL_CLI NAMES basisu REQUIRED) + + # Test basisu -version + execute_process( +@@ -174,86 +109,6 @@ + + endif() + +-if (WZ_ENABLE_BASIS_UNIVERSAL) +- +- # basis-universal transcoder +- +- add_library(basis_transcoder STATIC "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/transcoder/basisu_transcoder.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/transcoder/basisu_transcoder.h" "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/zstd/zstddeclib.c") +- set_property(TARGET basis_transcoder PROPERTY FOLDER "3rdparty") +- target_include_directories(basis_transcoder SYSTEM PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/transcoder") +- +- if(NOT MSVC) +- set(_supported_basistranscoder_cxx_compiler_flags "") +- +- # -fno-strict-aliasing (GCC, Clang) +- check_compiler_flags_output("-Werror -fno-strict-aliasing -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-fno-strict-aliasing" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- # -Wcast-align (GCC 3.4+, Clang 3.2+) +- check_compiler_flags_output("-Werror -Wno-cast-align -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-cast-align" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- # -Wdeprecated-declarations +- check_compiler_flags_output("-Werror -Wno-deprecated-declarations -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-deprecated-declarations" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- # -Wunused-but-set-variable +- check_compiler_flags_output("-Werror -Wno-unused-but-set-variable -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unused-but-set-variable" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- # -Wunused-function +- check_compiler_flags_output("-Werror -Wno-unused-function -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unused-function" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- # -Wunused-const-variable +- check_compiler_flags_output("-Werror -Wno-unused-const-variable -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unused-const-variable" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- # -Wunknown-warning-option +- check_compiler_flags_output("-Werror -Wno-unknown-warning-option -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unknown-warning-option" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- # -Wnontrivial-memcall +- check_compiler_flags_output("-Werror -Wno-nontrivial-memcall -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-nontrivial-memcall" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND) +- +- if (NOT _supported_basistranscoder_cxx_compiler_flags STREQUAL "") +- string(REPLACE " " ";" _supported_basistranscoder_cxx_compiler_flags "${_supported_basistranscoder_cxx_compiler_flags}") +- target_compile_options(basis_transcoder PRIVATE ${_supported_basistranscoder_cxx_compiler_flags}) +- endif() +- endif() +- +- # Must also set BASISD_IS_BIG_ENDIAN if the target platform is big-endian! +- if (NOT DEFINED CMAKE_CXX_BYTE_ORDER AND CMAKE_VERSION VERSION_LESS 3.20) +- # CMake < 3.20 does not have CMAKE__BYTE_ORDER +- # Instead, use the older TestBigEndian module (although this may not work for cross-compilation) +- if (NOT CMAKE_CROSSCOMPILING) +- include(TestBigEndian) +- test_big_endian(IS_BIGENDIAN) +- if (IS_BIGENDIAN) +- set(CMAKE_CXX_BYTE_ORDER "BIG_ENDIAN") +- endif() +- else() +- message(WARNING "Unable to determine endianness for target architecture. Either upgrade to CMake 3.20+, or - if big endian - manually set the CMAKE_CXX_BYTE_ORDER cache variable to \"BIG_ENDIAN\". Otherwise, assuming little endian.") +- endif() +- endif() +- if (DEFINED CMAKE_CXX_BYTE_ORDER AND CMAKE_CXX_BYTE_ORDER STREQUAL "BIG_ENDIAN") +- message(STATUS "Defining BASISD_IS_BIG_ENDIAN=1") +- target_compile_definitions(basis_transcoder PRIVATE "-DBASISD_IS_BIG_ENDIAN=1") +- endif() +- +- # Must set BASISU_HAVE_STD_TRIVIALLY_COPYABLE if the target supports std::is_trivially_copyable +- include(CheckCXXSourceCompiles) +- check_cxx_source_compiles(" +- #include +- const bool val = std::is_trivially_copyable::value; +- int main() +- { +- return 0; +- }" +- HAVE_STD_IS_TRIVIALLY_COPYABLE +- ) +- if (HAVE_STD_IS_TRIVIALLY_COPYABLE) +- target_compile_definitions(basis_transcoder PUBLIC "-DBASISU_HAVE_STD_TRIVIALLY_COPYABLE") +- endif() +- +- # Disable certain transcoder formats +- target_compile_definitions(basis_transcoder PRIVATE "-DBASISD_SUPPORT_ATC=0" "-DBASISD_SUPPORT_PVRTC1=0" "-DBASISD_SUPPORT_PVRTC2=0") +- +-endif(WZ_ENABLE_BASIS_UNIVERSAL) +- + if (WZ_PROFILING_NVTX) + include(FetchContent) + FetchContent_Declare( +diff -ru a/lib/framework/wzstring.cpp b/lib/framework/wzstring.cpp +--- a/lib/framework/wzstring.cpp 2025-09-16 11:41:32.000000000 -0500 ++++ b/lib/framework/wzstring.cpp 2025-09-18 13:37:23.686668245 -0500 +@@ -24,8 +24,8 @@ + #include + #include + #include +-#include +-#include ++#include ++#include + + WzUniCodepoint WzUniCodepoint::fromASCII(unsigned char charLiteral) + { +diff -ru a/lib/ivis_opengl/CMakeLists.txt b/lib/ivis_opengl/CMakeLists.txt +--- a/lib/ivis_opengl/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500 ++++ b/lib/ivis_opengl/CMakeLists.txt 2025-09-18 14:00:13.716771596 -0500 +@@ -88,7 +88,7 @@ + include(WZTargetConfiguration) + WZ_TARGET_CONFIGURATION(ivis-opengl) + +-target_link_libraries(ivis-opengl PRIVATE framework launchinfo fmt::fmt) ++target_link_libraries(ivis-opengl PRIVATE framework launchinfo fmt) + if(CMAKE_SYSTEM_NAME MATCHES "Emscripten") + # We should be using the Emscripten port linker flags for FreeType & Harfbuzz + else() +@@ -116,8 +116,11 @@ + target_link_libraries(ivis-opengl PRIVATE etcpak) + target_compile_definitions(ivis-opengl PRIVATE "-DETCPAK_ENABLED") + endif() +-if(WZ_ENABLE_BASIS_UNIVERSAL AND TARGET basis_transcoder) +- target_link_libraries(ivis-opengl PRIVATE basis_transcoder) ++if(WZ_ENABLE_BASIS_UNIVERSAL) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(BASIS REQUIRED basisu_encoder) ++ target_include_directories(ivis-opengl PUBLIC ${BASIS_INCLUDE_DIRS}) ++ target_link_libraries(ivis-opengl PRIVATE ${BASIS_LINK_LIBRARIES}) + target_compile_definitions(ivis-opengl PRIVATE "-DBASIS_ENABLED") + else() + message(WARNING "Basis-universal support is disabled") +diff -ru a/lib/netplay/CMakeLists.txt b/lib/netplay/CMakeLists.txt +--- a/lib/netplay/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500 ++++ b/lib/netplay/CMakeLists.txt 2025-09-18 13:37:23.686969530 -0500 +@@ -108,7 +108,7 @@ + include(WZTargetConfiguration) + WZ_TARGET_CONFIGURATION(netplay) + target_link_libraries(netplay +- PRIVATE framework re2::re2 nlohmann_json plum-static Threads::Threads ZLIB::ZLIB fmt::fmt ++ PRIVATE framework re2 nlohmann_json plum-static Threads::Threads ZLIB::ZLIB fmt + PUBLIC tl::expected) + + if(WZ_USE_IMPORTED_MINIUPNPC) +diff -ru a/src/3rdparty/INIReaderWriter.cpp b/src/3rdparty/INIReaderWriter.cpp +--- a/src/3rdparty/INIReaderWriter.cpp 2025-09-16 11:41:32.000000000 -0500 ++++ b/src/3rdparty/INIReaderWriter.cpp 2025-09-18 13:37:23.687094584 -0500 +@@ -13,7 +13,7 @@ + #ifndef INI_API + # define INI_API + #endif +-#include ++#include + #include "INIReaderWriter.h" + + using std::string; +diff -ru a/src/CMakeLists.txt b/src/CMakeLists.txt +--- a/src/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500 ++++ b/src/CMakeLists.txt 2025-09-18 13:37:23.687282446 -0500 +@@ -130,7 +130,7 @@ + + target_link_libraries(warzone2100 exception-handler gamelib wzmaplib ZipIOProvider ivis-opengl netplay sdl-backend framework sequence sound widget) + target_link_libraries(warzone2100 launchinfo EmbeddedJSONSignature) +-target_link_libraries(warzone2100 fmt::fmt) ++target_link_libraries(warzone2100 fmt) + if(ENABLE_NLS) + target_link_libraries(warzone2100 ${Intl_LIBRARIES}) + endif() +@@ -146,7 +146,7 @@ + include(IncludeFindCurl) + target_link_libraries(warzone2100 CURL::libcurl) + endif() +-target_link_libraries(warzone2100 re2::re2) ++target_link_libraries(warzone2100 re2) + + find_package(SQLite3 3.14 REQUIRED) + target_link_libraries(warzone2100 SQLite::SQLite3) diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm index 511f8bfead6..540b85b41aa 100644 --- a/gnu/packages/patchutils.scm +++ b/gnu/packages/patchutils.scm @@ -35,7 +35,7 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system meson) #:use-module (guix build-system ocaml) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages base) @@ -367,40 +367,37 @@ you to figure out what is going on in that merge you keep avoiding.") (package (name "patchwork") (version "3.2.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/getpatchwork/patchwork") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "04ikawdyhjwspxvhazbp5f5vym672y0jcw8rd2m75h9ipcpnyxim")))) - (build-system python-build-system) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/getpatchwork/patchwork") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04ikawdyhjwspxvhazbp5f5vym672y0jcw8rd2m75h9ipcpnyxim")))) + (build-system pyproject-build-system) (arguments - `(;; TODO: Tests require a running database - #:tests? #f - #:phases - (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (add-after 'unpack 'replace-wsgi.py - (lambda* (#:key inputs outputs #:allow-other-keys) - (delete-file "patchwork/wsgi.py") - (call-with-output-file "patchwork/wsgi.py" - (lambda (port) - ;; Embed the PYTHONPATH containing the dependencies, as well - ;; as the python modules in this package in the wsgi.py file, - ;; as this will ensure they are available at runtime. - (define pythonpath - (string-append (getenv "GUIX_PYTHONPATH") - ":" - (site-packages inputs outputs))) - (display - (string-append " -import os, sys - -sys.path.extend('" pythonpath "'.split(':')) + (list + #:tests? #f ;TODO: Tests require a running database + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (add-after 'unpack 'replace-wsgi.py + (lambda* (#:key inputs outputs #:allow-other-keys) + (delete-file "patchwork/wsgi.py") + (call-with-output-file "patchwork/wsgi.py" + (lambda (port) + ;; Embed the PYTHONPATH containing the dependencies, as well + ;; as the python modules in this package in the wsgi.py file, + ;; as this will ensure they are available at runtime. + (define pythonpath + (string-append (getenv "GUIX_PYTHONPATH") ":" + (site-packages inputs outputs))) + (display (string-append + "\nimport os, sys\n\nsys.path.extend('" pythonpath + "'.split(':')) from django.core.wsgi import get_wsgi_application @@ -415,89 +412,88 @@ os.environ['DJANGO_SETTINGS_MODULE'] = os.getenv( ) application = get_wsgi_application()\n") port))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.dev") - (invoke "python" "-Wonce" "./manage.py" "test" "--noinput")) - #t)) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (out-site-packages (site-packages inputs outputs))) - (for-each (lambda (directory) - (copy-recursively - directory - (string-append out-site-packages "/" directory))) - '(;; Contains the python code - "patchwork" - ;; Contains the templates for the generated HTML - "templates")) - (delete-file-recursively - (string-append out-site-packages "/patchwork/tests")) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.dev") + (invoke "python" "-Wonce" "./manage.py" "test" "--noinput")))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (out-site-packages (site-packages inputs outputs))) + (for-each (lambda (directory) + (copy-recursively directory + (string-append out-site-packages + "/" directory))) + '( ;Contains the python code + "patchwork" + ;; Contains the templates for the generated HTML + "templates")) + (delete-file-recursively (string-append out-site-packages + "/patchwork/tests")) - ;; Install patchwork related tools - (for-each (lambda (file) - (install-file file (string-append out "/bin"))) - (list - (string-append out-site-packages - "/patchwork/bin/parsemail.sh") - (string-append out-site-packages - "/patchwork/bin/parsemail-batch.sh"))) + ;; Install patchwork related tools + (for-each (lambda (file) + (install-file file + (string-append out "/bin"))) + (list (string-append out-site-packages + "/patchwork/bin/parsemail.sh") + (string-append out-site-packages + "/patchwork/bin/parsemail-batch.sh"))) - ;; Collect the static assets, this includes JavaScript, CSS and - ;; fonts. This is a standard Django process when running a - ;; Django application for regular use, and includes assets for - ;; dependencies like the admin site from Django. - ;; - ;; The intent here is that you can serve files from this - ;; directory through a webserver, which is recommended when - ;; running Django applications. - (let ((static-root - (string-append out "/share/patchwork/htdocs"))) - (mkdir-p static-root) - (copy-file "patchwork/settings/production.example.py" - "patchwork/settings/assets.py") - (setenv "DJANGO_SECRET_KEY" "dummyvalue") - (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.assets") - (setenv "STATIC_ROOT" static-root) - (invoke "./manage.py" "collectstatic" "--no-input")) + ;; Collect the static assets, this includes JavaScript, CSS and + ;; fonts. This is a standard Django process when running a + ;; Django application for regular use, and includes assets for + ;; dependencies like the admin site from Django. + ;; + ;; The intent here is that you can serve files from this + ;; directory through a webserver, which is recommended when + ;; running Django applications. + (let ((static-root (string-append out + "/share/patchwork/htdocs"))) + (mkdir-p static-root) + (copy-file "patchwork/settings/production.example.py" + "patchwork/settings/assets.py") + (setenv "DJANGO_SECRET_KEY" "dummyvalue") + (setenv "DJANGO_SETTINGS_MODULE" "patchwork.settings.assets") + (setenv "STATIC_ROOT" static-root) + (invoke "./manage.py" "collectstatic" "--no-input")) - ;; The lib directory includes example configuration files that - ;; may be useful when deploying patchwork. - (copy-recursively "lib" - (string-append - out "/share/doc/" ,name "-" ,version))) - #t)) - ;; The hasher script is used from the post-receive.hook - (add-after 'install 'install-hasher - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (out-site-packages (site-packages inputs outputs)) - (out-hasher.py (string-append out-site-packages - "/patchwork/hasher.py"))) - (chmod out-hasher.py #o555) - (symlink out-hasher.py (string-append out "/bin/hasher"))) - #t)) - ;; Create a patchwork specific version of Django's command line admin - ;; utility. - (add-after 'install 'install-patchwork-admin - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out"))) - (mkdir-p (string-append out "/bin")) - (call-with-output-file (string-append out "/bin/patchwork-admin") - (lambda (port) - (simple-format port "#!~A + ;; The lib directory includes example configuration files that + ;; may be useful when deploying patchwork. + (copy-recursively "lib" + (string-append out "/share/doc/" + #$name "-" + #$version))))) + ;; The hasher script is used from the post-receive.hook + (add-after 'install 'install-hasher + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (out-site-packages (site-packages inputs outputs)) + (out-hasher.py (string-append out-site-packages + "/patchwork/hasher.py"))) + (chmod out-hasher.py #o555) + (symlink out-hasher.py + (string-append out "/bin/hasher"))))) + ;; Create a patchwork specific version of Django's command line admin + ;; utility. + (add-after 'install 'install-patchwork-admin + (lambda _ + (mkdir-p (string-append #$output "/bin")) + (call-with-output-file (string-append #$output + "/bin/patchwork-admin") + (lambda (port) + (simple-format port "#!~A import os, sys if __name__ == \"__main__\": from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)" (which "python")))) - (chmod (string-append out "/bin/patchwork-admin") #o555)) - #t))))) - (inputs - (list python-wrapper)) + (chmod (string-append #$output "/bin/patchwork-admin") + #o555)))))) + (native-inputs (list python-setuptools)) + (inputs (list python-wrapper)) (propagated-inputs (list python-django ;; TODO: Make this configurable @@ -553,47 +549,34 @@ patches do not match perfectly.") (package (name "pwclient") (version "1.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/getpatchwork/pwclient") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xckwvcqklzpyh3xs4k2zm40ifp0q5fdkj2vmgb8vhfvl1ivs6jv")))) - (build-system python-build-system) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/getpatchwork/pwclient") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1xckwvcqklzpyh3xs4k2zm40ifp0q5fdkj2vmgb8vhfvl1ivs6jv")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-requirements - (lambda _ - (substitute* "test-requirements.txt" - ;; The pytest requirement is unnecessarily strict - (("pytest>=3.0,<5.0;") - "pytest>=3.0,<6.0;")) - #t)) - (add-before 'build 'set-PBR_VERSION - (lambda _ - (setenv "PBR_VERSION" - ,version) - #t)) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest")) - #t)) - (add-after 'install 'install-man-page - (lambda* (#:key outputs #:allow-other-keys) - (install-file "man/pwclient.1" - (string-append - (assoc-ref outputs "out") - "/share/man/man1")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'set-PBR_VERSION + (lambda _ + (setenv "PBR_VERSION" #$version))) + (add-after 'install 'install-man-page + (lambda _ + (install-file "man/pwclient.1" + (string-append #$output "/share/man/man1"))))))) (native-inputs - (list python-pbr python-pytest python-pytest-cov python-mock)) - (home-page - "https://github.com/getpatchwork/pwclient") + (list python-pbr + python-pytest + python-pytest-cov + python-mock + python-setuptools)) + (home-page "https://github.com/getpatchwork/pwclient") (synopsis "Command-line client for the Patchwork patch tracking tool") (description "pwclient is a VCS-agnostic tool for interacting with Patchwork, the diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm index 7cdcc3c576a..6404da5d51b 100644 --- a/gnu/packages/prolog.scm +++ b/gnu/packages/prolog.scm @@ -185,7 +185,7 @@ it.") (define-public trealla (package (name "trealla") - (version "2.83.9") + (version "2.83.11") (source (origin (method git-fetch) @@ -194,7 +194,7 @@ it.") (url "https://github.com/trealla-prolog/trealla") (commit (string-append "v" version)))) (sha256 - (base32 "01gxml7g6qf185pa51v8vrsv1m42b3dz5rcnyqf7ic041s6p9bwl")) + (base32 "00kbcq9mzxqm3hgfgbxjblb733lzy1hvfwnf73a5gxnfdbqhr5dz")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (native-inputs diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index c95596dd4d6..e40b92f5083 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -1,8 +1,11 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Cyril Roelandt +;;; Copyright © 2015, 2017 Cyril Roelandt ;;; Copyright © 2015, 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2016-2022 Marius Bakke +;;; Copyright © 2016 宋文武 ;;; Copyright © 2017 Muriithi Frederick Muriuki +;;; Copyright © 2017 Thomas Danckaert +;;; Copyright © 2018 Fis Trivial ;;; Copyright © 2018-2020 Tobias Geerinckx-Rice ;;; Copyright © 2019-2025 Ricardo Wurmus ;;; Copyright © 2019-2024 Maxim Cournoyer @@ -23,6 +26,7 @@ ;;; Copyright © 2022 Tomasz Jeneralczyk ;;; Copyright © 2022 jgart ;;; Copyright © 2023 John Kehayias +;;; Copyright © 2024 Danny Milosavljevic ;;; Copyright © 2024-2025 Troy Figiel ;;; Copyright © 2024 Navid Afkhami ;;; Copyright © 2024, 2025 David Elsing @@ -226,6 +230,38 @@ the implementation of that name.") (license (list license:asl2.0 license:lgpl3)))) ; only for setup_helpers.py +(define-public python-autopep8 + (package + (name "python-autopep8") + (version "2.3.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "autopep8" version)) + (sha256 + (base32 "0n0pjdk39n6vlddjqvbpkxd4a7q33dkf0k2yk6dbd5wijr7hli49")))) + (build-system pyproject-build-system) + (propagated-inputs + (list python-pycodestyle python-tomli)) + (native-inputs + (list python-setuptools)) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'prepare-check + (lambda _ + (setenv "HOME" "/tmp")))))) + (home-page "https://github.com/hhatto/autopep8") + (synopsis "Format Python code according to the PEP 8 style guide") + (description + "@code{autopep8} automatically formats Python code to conform to +the PEP 8 style guide. It uses the pycodestyle utility to determine +what parts of the code needs to be formatted. @code{autopep8} is +capable of fixing most of the formatting issues that can be reported +by pycodestyle.") + (license (license:non-copyleft + "https://github.com/hhatto/autopep8/blob/master/LICENSE")))) + (define-public python-avocado-framework (package (name "python-avocado-framework") @@ -786,6 +822,27 @@ list/set/dict comprehensions.") providing hints about what deprecated methods should be replaced with.") (license license:gpl2))) +(define-public python-flexmock + (package + (name "python-flexmock") + (version "0.12.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flexmock" version)) + (sha256 + (base32 "18dcr7mpldf3cxsqi9rak75n4z7x3j544l4ixdspairm7cf6cp23")))) + (build-system pyproject-build-system) + (native-inputs + (list python-poetry-core + python-pytest)) + (home-page "https://flexmock.readthedocs.io/") + (synopsis "Testing library for Python") + (description + "flexmock is a testing library for Python that makes it easy to create +mocks, stubs and fakes.") + (license license:bsd-3))) + (define-public python-gcovr (package (name "python-gcovr") diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 32b9f17aaa7..b20bec061fd 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -1771,6 +1771,7 @@ in different situations. @end enumerate") (license license:expat))) +;; XXX: Not maintained since 2016. (define-public python-pydes (package (name "python-pydes") @@ -1782,8 +1783,10 @@ in different situations. (sha256 (base32 "04lh71f47y04vspfrdrq6a0hn060ibxvdp5z1pcr0gmqs8hqxaz2")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) - (home-page "http://twhiteman.netfirms.com/des.html") + (arguments + (list #:tests? #f)) ;no tests in PyPI, I could not fine Git + (native-inputs (list python-setuptools)) + (home-page "http://twhiteman.netfirms.com/des.html") ;XXX: Dead link (synopsis "Pure python implementation of the DES and TRIPLE DES encryption algorithms") (description diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 7b4c7cdfe5d..ad89a3940ae 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -335,22 +335,34 @@ reduces the code overhead typically encountered when using a mostly object-oriented library such as @code{scikit-learn}.") (license license:bsd-3))) +;; XXX: See: . (define-public python-aplus - (package - (name "python-aplus") - (version "0.11.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "aplus" version)) - (sha256 - (base32 "1rznc26nlp641rn8gpdngfp79a3fji38yavqakxi35mx2da04msg")))) - (build-system python-build-system) - (home-page "https://github.com/xogeny/aplus") - (synopsis "Promises/A+ for Python") - (description "This package is an implementation of the Promises/A+ -specification and test suite in Python.") - (license license:expat))) + ;; PyPI release lacks the latest version, Git has no tags. + (let ((commit "1ab8ebec987fb7213766784aad02cbf4410d9036") + (revision "0")) + (package + (name "python-aplus") + (version (git-version "0.11.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xogeny/aplus") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "02jcfj7dywvs0sd60c85pxwh0mwsj9p1q27445pba6j489x3dffj")))) + (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;they depend on Nose test runner + (native-inputs + (list python-setuptools)) + (home-page "https://github.com/xogeny/aplus") + (synopsis "Promises/A+ for Python") + (description + "This package is an implementation of the Promises/A+ specification and +test suite in Python.") + (license license:expat)))) (define-public python-apted ;; PyPI release lacks tests and there is no Git tag. @@ -3930,19 +3942,25 @@ production-critical data pipelines or reproducible research settings. With ;; marked turtle can be skipped using "-m" "not turtle". (arguments (list - #:test-flags '(list - "-n" (number->string (parallel-job-count)) - ;; Tries to connect to the internet. - "-k" (string-append "not test_is_connected" - ;; Test files are not included - " and not test_read_commandline_bad_cmd") - ;; Test files are not included - "--ignore=tests/io/test_read_csvs.py" - ;; Polars has not been packaged yet. - "--ignore=tests/polars" - ;; PySpark has not been packaged yet. - "--ignore=tests/spark/functions/test_clean_names_spark.py" - "--ignore=tests/spark/functions/test_update_where_spark.py") + ;; tests: 1042 passed, 2 skipped, 2 deselected, 45 xfailed, 6 xpassed, + ;; 735 warnings + #:test-flags + ;; The tests take quite long, so consider adding the "-n" line and + ;; adding python-pytest-xdist to the native-inputs when testing. + ;; However, the tests are not deterministic when ran with -n, so + ;; disable again before committing. + #~(list ;; "-n" (number->string (parallel-job-count)) + ;; Test files are not included. + "--ignore=tests/io/test_read_csvs.py" + ;; Polars has not been packaged yet. + "--ignore=tests/polars" + ;; PySpark has not been packaged yet. + "--ignore=tests/spark/functions/test_clean_names_spark.py" + "--ignore=tests/spark/functions/test_update_where_spark.py" + ;; Tries to connect to the internet. + "-k" (string-append "not test_is_connected" + ;; Test files are not included. + " and not test_read_commandline_bad_cmd")) #:phases #~(modify-phases %standard-phases (add-before 'check 'set-env-ci @@ -3950,20 +3968,22 @@ production-critical data pipelines or reproducible research settings. With ;; Some tests are skipped if the JANITOR_CI_MACHINE ;; variable is not set. (setenv "JANITOR_CI_MACHINE" "1")))))) + ;; TODO: Remove python-requests and inject its target data to make the + ;; package behaviour reproducible. (propagated-inputs (list python-multipledispatch python-natsort python-pandas-flavor + python-requests python-scipy ;; Optional imports. python-biopython ;biology submodule python-unyt)) ;engineering submodule (native-inputs (list python-pytest - python-pytest-xdist + ;;python-pytest-xdist ;only for -n when testing + python-setuptools ;; Optional imports. We do not propagate them due to ;; their size. python-numba ;speedup of joins - python-setuptools - python-wheel rdkit)) ;chemistry submodule (home-page "https://github.com/pyjanitor-devs/pyjanitor") (synopsis "Tools for cleaning and transforming pandas DataFrames") @@ -4123,6 +4143,8 @@ changed, it made sense to abstract away the nuisance of having to re-learn them.") (license license:bsd-3))) +;; XXX: Not maintained since 2019. The project was archived by the owner on +;; Nov 2, 2020. It is now read-only. (define-public python-fbpca (package (name "python-fbpca") @@ -4133,7 +4155,10 @@ them.") (sha256 (base32 "1lbjqhqsdmqk86lb86q3ywf7561zmdny1dfvgwqkyrkr4ij7f1hm")))) - (build-system python-build-system) + (build-system pyproject-build-system) + (arguments + (list #:test-flags #~(list "fbpca.py"))) + (native-inputs (list python-pytest python-setuptools)) (propagated-inputs (list python-numpy python-scipy)) (home-page "https://fbpca.readthedocs.io/") diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index ee9b4aadaab..61f53e89d5f 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -64,6 +64,8 @@ ;;; Copyright © 2023 dan ;;; Copyright © 2023 John Kehayias ;;; Copyright © 2023 Ivan Vilata-i-Balaguer +;;; Copyright © 2024 Fabio Natali +;;; Copyright © 2024 Steve George ;;; Copyright © 2024 Troy Figiel ;;; Copyright © 2024, 2025 Sharlatan Hellseher ;;; Copyright © 2024 normally_js @@ -120,6 +122,7 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages graphviz) #:use-module (gnu packages groff) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages libevent) #:use-module (gnu packages libffi) #:use-module (gnu packages libidn) @@ -205,6 +208,112 @@ writing applications that talk to network enabled embedded @acronym{IoT,Internet of Things} devices.") (license license:expat))) +(define-public python-apprise + (package + (name "python-apprise") + (version "1.9.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "apprise" version)) + (sha256 + (base32 "126951n9lnlqrw5lbsvs9xs7jzg33bqqxm7cfnqag2csw6p24ca8")))) + (build-system pyproject-build-system) + (arguments + (list + ;; These tests used to be ran with --numprocesses, but that seems to have + ;; made them non-deterministic. + #:test-flags + #~(list "--ignore=tests/test_plugin_macosx.py" + "-k" "not test_plugin_glib_send_raises_generic"))) + (native-inputs + (list python-babel + python-pytest + python-pytest-mock + python-setuptools)) + (propagated-inputs + (list python-certifi + python-click + python-markdown + python-pygobject + python-pyyaml + python-requests + python-requests-oauthlib)) + (home-page "https://github.com/caronc/apprise") + (synopsis "Push notification library") + (description + "Apprise is a Python library that allows sending push notifications to a +broad range of notification services, such as Telegram, Discord, Slack, Amazon +SNS, Gotify, etc.") + (license license:bsd-2))) + +(define-public python-blacksheep + (package + (name "python-blacksheep") + (version "2.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/BlackSheep") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1iwlj6vl0rnvddbn9zsdgpya88z0lifr86wz3ci1d67li7w5bjiq")))) + (build-system pyproject-build-system) + (arguments + (list + ;; tests: 1443 passed, 3 skipped + ;; + ;; 1. Ignore integration tests. + ;; 2. Client tests use test fixture no longer available in + ;; pytest-asyncio, + ;; + ;; See: . + #:test-flags + #~(list "--ignore=itests" + "--ignore=tests/client") + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'cythonize + (lambda _ + (with-directory-excursion "blacksheep" + (for-each (lambda (file) + (invoke "cython" "-3" file "-I" ".")) + (find-files "." ".*\\.pyx$")))))))) + (native-inputs + (list python-cython + python-flask + python-jinja2 + python-pydantic + python-pyjwt + python-pytest + python-pytest-asyncio + python-setuptools)) + (propagated-inputs + (list python-certifi + python-dateutil + python-essentials-openapi + python-guardpost + python-itsdangerous)) + (home-page "https://github.com/Neoteroi/BlackSheep") + (synopsis "Asynchronous framework to build event based web applications") + (description + "BlackSheep is a lightweight, asynchronous, event driven Web framework. + +The framework offers +@itemize +@item A rich code API, based on dependency injection and inspired by Flask and +ASP.NET Core. +@item A typing-friendly codebase, which enables a comfortable development +experience thanks to hints when coding with IDEs. +@item Built-in generation of OpenAPI Documentation, supporting version 3, YAML, +and JSON. +@item A cross-platform framework, using the most modern versions of Python. +@item Good performance. +@end itemize") + (license license:expat))) + (define-public python-devpi-common (package (name "python-devpi-common") @@ -606,6 +715,40 @@ Async mode for @url{https://domainconnect.org/, Domain Connect protocol}.") Dropbox API v2.") (license license:expat))) +(define-public python-essentials-openapi + (package + (name "python-essentials-openapi") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/essentials-openapi") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0f3lhpkqhvv8sr1c34cvzdqkc61306m03w3jp0zdih1v6is05j8x")))) + (build-system pyproject-build-system) + (native-inputs + (list python-flask + python-hatchling + python-pydantic + python-pytest + python-rich)) + (propagated-inputs + (list python-essentials + python-httpx + python-jinja2 + python-markupsafe + python-pyyaml)) + (home-page "https://github.com/Neoteroi/essentials-openapi/") + (synopsis "Generator for OpenAPI Documentation") + (description + "Generator for OpenAPI Documentation version 2 and 3, in JSON and YAML +formats. Generator for other kinds of documents from OpenAPI Documentation +files.") + (license license:expat))) + (define-public python-eventlet (package (name "python-eventlet") @@ -773,6 +916,51 @@ formats (PDF/XML/CSV).") @url{https://www.globus.org/, Globus} APIs.") (license license:asl2.0))) +(define-public python-guardpost + (package + (name "python-guardpost") + (version "1.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/guardpost") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cwxxxhazpaphhcysgpivk51vp76zdf7hrryc1vr6vlp2zzgwsxd")))) + (build-system pyproject-build-system) + (arguments + (list + ;; Possible timing issue, see: + ;; . + #:test-flags '(list "--ignore=tests/test_jwts.py"))) + (native-inputs + (list python-cryptography + python-flask + python-hatchling + python-pyjwt + python-pytest + python-pytest-asyncio)) + (propagated-inputs + (list python-rodi)) + (home-page "https://github.com/Neoteroi/GuardPost/") + (synopsis + "Authentication and authorization framework for Python applications") + (description + "GuardPost is a framework to handle authentication and +authorization in asynchronous Python applications. + +Its features include + +@itemize +@item Strategy to implement authentication. +@item Strategy to implement authorization. +@item Support for dependency injection +@item Built-in support for JSON Web Tokens (JWTs) authentication. +@end itemize") + (license license:expat))) + (define-public python-hookdns (package (name "python-hookdns") @@ -3342,6 +3530,14 @@ and written in Python.") (base32 "195wgxls3df7djry9cz3p2k9644l6bfd66fczbaw55fsq0c48agr")))) (build-system python-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'set-configure-flags + (lambda _ + (setenv "CFLAGS" + "-Wno-error=implicit-function-declaration")))))) (native-inputs (list pkg-config)) (inputs @@ -10642,19 +10838,44 @@ can be handled by the @code{colorsys} module in the Python standard library.") (license license:bsd-3))) (define-public python-woob + ;; TODO: woob requires backends which are currently installed on the fly in + ;; ~/.local/share/woob/modules/3.7/woob_modules/ , perhaps we should install + ;; them in the store instead. Many modules are included in the modules + ;; directory in the source tree, but it is unclear how to install them. + ;; Many modules require extra dependencies though, so maybe they should be + ;; packaged independently of woob itself. (package (name "python-woob") - (version "3.0") + (version "3.7") (source (origin - (method url-fetch) - (uri (pypi-uri "woob" version)) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/woob/woob.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "09hpxy5zhn2b8li0xjf3zd7s46lawb0315p5mdcsci3bj3s4v1j7")))) - (build-system python-build-system) - ;; A small number of tests for optional applications fails due to missing - ;; inputs. - (arguments `(#:tests? #f)) + (base32 "1sy0aykff56xs4dnc7ak6m8is2zgz9fprf3i1pk8n861xz1z748i")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + ;; Deselect tests that require DNS lookup. + #~(list + "--deselect=tests/browser/adapters.py::TestAdapter::test_ciphers" + "--deselect=tests/browser/browsers.py::TestBrowser::test_verify") + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'relax-requirements + (lambda _ + ;; "packaging ~= 23.0", + (substitute* "pyproject.toml" + (("\"packaging .*\",") + ""))))))) + (native-inputs + (list nss-certs-for-test + python-pytest + python-setuptools)) (propagated-inputs (list python-babel python-colorama @@ -10663,19 +10884,20 @@ can be handled by the @code{colorsys} module in the Python standard library.") python-feedparser python-html2text python-lxml + python-packaging python-pillow python-prettytable - python-pyqt + python-pycountry python-pyyaml python-requests - python-six + python-responses + python-rich + python-termcolor python-unidecode)) - (native-inputs - (list python-coverage python-flake8 python-nose python-selenium - python-xunitparser)) (home-page "https://woob.tech/") (synopsis "Woob, Web Outside Of Browsers") - (description "Woob is a collection of applications able to interact with + (description + "Woob is a collection of applications able to interact with websites, without requiring the user to open them in a browser. It also provides well-defined APIs to talk to websites lacking one.") (license license:lgpl3+))) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index f1fb89a2951..cbd7651d80b 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -237,6 +237,7 @@ #:use-module (gnu packages image-processing) #:use-module (gnu packages imagemagick) #:use-module (gnu packages inkscape) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages java) #:use-module (gnu packages jupyter) #:use-module (gnu packages kerberos) @@ -344,46 +345,6 @@ protocol of git-annex, while leaving the behavior of the remote up to the user.") (license license:gpl3))) -(define-public python-apprise - (package - (name "python-apprise") - (version "1.9.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "apprise" version)) - (sha256 - (base32 "19k51ici58134m61f6di0m36mbqgdyr6r31i8v6rk22vldz6d0zm")))) - (build-system pyproject-build-system) - (arguments - (list - #:test-flags - #~(list "--numprocesses" (number->string (parallel-job-count)) - "--ignore=test/test_plugin_macosx.py" - ;; AssertionError - "--deselect=test/test_plugin_wxpusher.py::test_plugin_wxpusher_urls"))) - (native-inputs - (list python-babel - python-pytest - python-pytest-mock - python-pytest-xdist - python-setuptools - python-wheel)) - (propagated-inputs - (list python-certifi - python-click - python-markdown - python-pyyaml - python-requests - python-requests-oauthlib)) - (home-page "https://github.com/caronc/apprise") - (synopsis "Push notification library") - (description - "Apprise is a Python library that allows sending push notifications to a -broad range of notification services, such as Telegram, Discord, Slack, Amazon -SNS, Gotify, etc.") - (license license:bsd-2))) - (define-public python-archspec (package (name "python-archspec") @@ -646,7 +607,8 @@ line drawing algorithm}.") (sha256 (base32 "08dmi4chamk5dbdpvrc0nb09iybfhj3wqwxgffiqnkj7030qhqb8")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) + ;; tests: 797 passed, 1 warning + (native-inputs (list python-pytest python-setuptools)) (propagated-inputs (list python-ply)) (home-page "https://github.com/calmjs/calmjs.parse/") (synopsis "Parsers for ECMA standards") @@ -1015,6 +977,8 @@ package. ") It also supports IPython/Jupyter.") (license license:expat))) +;; TODO: Move to ci or task-runners, see: +;; . (define-public python-huey (package (name "python-huey") @@ -1038,9 +1002,12 @@ It also supports IPython/Jupyter.") (substitute* "huey/tests/test_kt_huey.py" (("^has_ktserver = sp.call\\(\\['which', 'ktserver'\\].*$") "has_ktserver = False")))) - (add-before 'check 'pre-check - (lambda _ (spawn "redis-server" '("redis-server"))))))) - (native-inputs (list python-setuptools python-wheel redis tzdata-for-tests)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (spawn "redis-server" '("redis-server")) + (invoke "python3" "-m" "runtests" "--verbosity" "2"))))))) + (native-inputs (list python-setuptools redis tzdata-for-tests)) (propagated-inputs (list python-redis)) (home-page "https://huey.readthedocs.io") (synopsis "Lightweight task queue for Python") @@ -4179,7 +4146,7 @@ with Numpy and SciPy.") (define-public python-rich-tables (package (name "python-rich-tables") - (version "0.6.1") + (version "0.8.0") (source (origin (method git-fetch) ; no tests data in PyPi package @@ -4188,8 +4155,13 @@ with Numpy and SciPy.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1wqr6sldf97ycs4gfvsqhbh1ki2kgsaicsy44g9lspvlda5nfcp1")))) + (base32 "1gkwgxcjnghn0alqw53kgb4ixf047dnb49kc0af3blvcwnmfmb5f")))) (build-system pyproject-build-system) + (arguments + (list + #:test-flags + ;; TypeError: can't subtract offset-naive and offset-aware datetimes + #~(list "--deselect=tests/test_outputs.py::test_outputs[tests/json/album.json]"))) (native-inputs (list python-freezegun python-poetry-core @@ -4197,6 +4169,7 @@ with Numpy and SciPy.") python-pytest-cov)) (propagated-inputs (list python-funcy + python-humanize python-multimethod python-platformdirs python-rgbxy @@ -6088,7 +6061,7 @@ server.") (base32 "17z6rrvv3q1axy9r13c2hln2pazfn9n5bhkzrbjcjakgbfjl6mss")))) (build-system pyproject-build-system) (native-inputs - (list python-lxml + (list python-lxml-4.9 python-pillow python-pytest python-setuptools)) @@ -6524,9 +6497,11 @@ other Python program.") (base32 "0skrs5i5pvpzvihgxw766zi1c9bbp33aisdldxgj470mlchvdgyy")))) (build-system pyproject-build-system) + (arguments + (list #:test-backend #~'custom + #:test-flags #~(list "tests/functional/tests.py"))) (native-inputs - (list python-setuptools - python-wheel)) + (list python-setuptools)) (home-page "https://agateau.com/projects/doxyqml") (synopsis "Doxygen input filter for QML files") (description @@ -7778,6 +7753,7 @@ something else) to Python data-types.") (base32 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s")))))) +;; XXX: See: . (define-public python-kconfiglib (package (name "python-kconfiglib") @@ -7789,9 +7765,10 @@ something else) to Python data-types.") (sha256 (base32 "0g690bk789hsry34y4ahvly5c8w8imca90ss4njfqf7m2qicrlmy")))) (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;tests require complex set up (native-inputs (list python-setuptools - python-wheel `(,python "tk"))) (home-page "https://github.com/ulfalizer/Kconfiglib") (synopsis @@ -8543,6 +8520,7 @@ important tasks for becoming a daemon process: ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed. (license (list license:asl2.0 license:gpl3+)))) +;; XXX: See: . (define-public python-elevate (package (name "python-elevate") @@ -8555,13 +8533,14 @@ important tasks for becoming a daemon process: (base32 "02g23lxzzl64j1b4fsnrdxqiahl9lnrqyxpqwcfzn0g33px1kbak")))) (build-system pyproject-build-system) (arguments - `(#:phases + `(#:tests? #f ;no tests in PyPI + #:phases (modify-phases %standard-phases (add-after 'unpack 'clean-up (lambda _ ;; Uses stuff we don't have. (delete-file "elevate/windows.py")))))) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs (list python-setuptools)) (home-page "https://github.com/barneygale/elevate") (synopsis "Python library for requesting root privileges") (description "This package provides a Python library for requesting @@ -12317,39 +12296,6 @@ run simple @code{argparse} parsers from function signatures.") from a program in a @dfn{pager} such as @command{less}.") (license license:asl2.0))) -(define-public python-autopep8 - (package - (name "python-autopep8") - (version "2.0.4") - (source - (origin - (method url-fetch) - (uri (pypi-uri "autopep8" version)) - (sha256 - (base32 - "037yhzmc9lssmn6cifa5gvw23f1c0hgsfgn83jfl3cwppm50c4r9")))) - (build-system pyproject-build-system) - (propagated-inputs - (list python-pycodestyle python-tomli)) - (native-inputs - (list python-setuptools python-wheel)) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'prepare-check - (lambda _ - (setenv "HOME" "/tmp")))))) - (home-page "https://github.com/hhatto/autopep8") - (synopsis "Format Python code according to the PEP 8 style guide") - (description - "@code{autopep8} automatically formats Python code to conform to -the PEP 8 style guide. It uses the pycodestyle utility to determine -what parts of the code needs to be formatted. @code{autopep8} is -capable of fixing most of the formatting issues that can be reported -by pycodestyle.") - (license (license:non-copyleft - "https://github.com/hhatto/autopep8/blob/master/LICENSE")))) - (define-public python-dirty-equals (package (name "python-dirty-equals") @@ -13156,8 +13102,7 @@ experimental data and metadata at the Laboratory for Fluorescence Dynamics.") python-pytest python-setuptools python-wheel)) - (inputs - (list ffmpeg-7)) + (inputs (list ffmpeg)) (home-page "https://github.com/PyAV-Org/PyAV") (synopsis "Pythonic bindings for FFmpeg's libraries") (description @@ -13770,10 +13715,10 @@ memoizing PEG/Packrat parser in Python.") (define-public python-grandalf (package (name "python-grandalf") - (version "0.7") + ;; `guix refresh` will try to upgrade to v0.55555, but that is older. + (version "0.8") (source (origin - ;; There's no source tarball on PyPI. (method git-fetch) (uri (git-reference (url "https://github.com/bdcht/grandalf") @@ -13781,16 +13726,18 @@ memoizing PEG/Packrat parser in Python.") (file-name (git-file-name name version)) (sha256 (base32 - "03p8w8ljpb87qbyldm3s6b7qi30hfcn43h33iwlgqcf31fjsyr4g")))) - (build-system python-build-system) + "199f86hz3g4p237ma4j27rzwmska3bxzsbgq20i4l4pczf9v7ax0")))) + (build-system pyproject-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "setup.py" "pytest")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'patch-requirements + (lambda _ + (substitute* "setup.py" + (("install_requires=\\['pyparsing'],") ""))))))) (native-inputs - (list python-pytest python-pytest-runner)) + (list python-setuptools python-pytest)) (propagated-inputs (list python-numpy python-ply)) (home-page "https://github.com/bdcht/grandalf") @@ -15654,14 +15601,14 @@ the GObject Introspection bindings to libnotify for non-GTK applications.") (define-public python-beautifulsoup4 (package (name "python-beautifulsoup4") - (version "4.13.4") + (version "4.13.5") (source (origin (method url-fetch) (uri (pypi-uri "beautifulsoup4" version)) (sha256 (base32 - "15bi8fl51aibdz33h3j1191n5l0c4r3k4hpjvbmyysmfrvhw9cyv")))) + "159niwk99m9lbcxb9sl6jfqy9mb39bss4l1lwcypq3lkh89i6w2y")))) (build-system pyproject-build-system) (native-inputs (list python-hatchling @@ -17304,7 +17251,7 @@ pseudo terminal (pty), and interact with both the process and its pty.") ;; XXX: Snippet below is required because on v1.1.30 the source code ;; has configshell_fb as softlink to configshell and guix ;; pyproject-build-system doesn't work with symlinks very well. - ;; + ;; ;; This package is only used in spdk for now and it's crucial to keep ;; it locked on version and keep the snipped for spdk to build ;; successfully. @@ -17611,16 +17558,14 @@ number of lines in the contained files easily.") (hidden-package (package (name "python-fonttools-minimal") - (version "4.39.3") + (version "4.59.2") (source (origin (method url-fetch) - (uri (pypi-uri "fonttools" version ".zip")) + (uri (pypi-uri "fonttools" version ".tar.gz")) (sha256 (base32 - "1msibi5cmi5znykkg66dq7xshl07lkqjxhrz5hcipqvlggsvjd4j")))) + "08pgq9nrj3r81gzb6gbf5mcak0xyqrj26cw0rc5za4v1n14hfb77")))) (build-system python-build-system) - (native-inputs - (list unzip)) (arguments '(#:tests? #f)) (home-page "https://github.com/fonttools/fonttools") (synopsis "Tools to manipulate font files") @@ -17647,14 +17592,17 @@ from an XML-based format.") (when tests? (invoke "pytest" "-vv" "-k" - ;; XXX: These tests need .trm files that are - ;; not shipped with the PyPI release. + ;; XXX: These tests need data files that are not + ;; shipped with the PyPI release. (format #f "not ~a" (string-join - '("test_read_fontdimens_mathsy" + '("test_cli_vtp" + "test_group_order" + "test_read_fontdimens_mathsy" "test_read_fontdimens_mathex" "test_read_fontdimens_vanilla" "test_read_boundary_char" + "test_reading_supplement_encoding" "fontTools.tfmLib" ;; The MtiTest tests fail for unknown ;; reasons (see: @@ -17668,7 +17616,7 @@ from an XML-based format.") (propagated-inputs (list python-brotli python-fs - python-lxml-4.9 + python-lxml python-lz4 python-scipy python-unicodedata2 @@ -20396,6 +20344,33 @@ package and greatly reduce the number of imports for your users. It is a small pure Python module that works on virtually all Python versions.") (license license:expat))) +(define-public python-essentials + (package + (name "python-essentials") + (version "1.1.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/essentials") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1bh8yi79gn9fg26mp58nm9xhnxcfab7rhc076av4qg00mg5p9rn0")))) + (build-system pyproject-build-system) + (native-inputs + (list python-hatchling + python-pydantic + python-pytest-asyncio)) + (home-page "https://github.com/Neoteroi/essentials/wiki") + (synopsis + "Utility functions, exceptions, and classes for Python applications") + (description + "Essentials is a collection of functions, exceptions, and classes for Python +applications. Examples of utilities are exceptions for common scenarios, +friendly JSON encoder, decorators for retries and logging.") + (license license:expat))) + (define-public python-execnet (package (name "python-execnet") @@ -21053,13 +21028,13 @@ expression.") (define-public python-unicodedata2 (package (name "python-unicodedata2") - (version "15.0.0") + (version "16.0.0") (source (origin (method url-fetch) (uri (pypi-uri "unicodedata2" version)) (sha256 - (base32 "0bcgls7m2zndpd8whgznnd5908jbsa50si2bh88wsn0agcznhv7d")))) + (base32 "1z3llixb4cd6cc6nmyps5vv2sss14n3x6dzcc65xg75mj9jqsj05")))) (build-system python-build-system) (home-page "https://github.com/fonttools/unicodedata2") (synopsis "Python unicodedata backport") @@ -23220,7 +23195,7 @@ specified in POSIX.1-2001 and POSIX.1-2008.") (sha256 (base32 "1clb3lfw694crq8m767q0yjaazkplcrbzdr9fr2w39hhndivhcd6")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/rocky/pycolumnize") (synopsis "Format a simple (i.e. not nested) list into aligned columns.") (description @@ -25315,6 +25290,41 @@ GraphQL schema describes your data model, and provides a GraphQL server with an associated set of resolve methods that know how to fetch data.") (license license:expat))) +(define-public python-rodi + (package + (name "python-rodi") + (version "2.0.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neoteroi/rodi") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kf98yjllrq7vqcp07r2gmkqcviqglsnai3sdigdsrwrfc0b44yp")))) + (build-system pyproject-build-system) + (native-inputs + (list python-hatchling + python-pytest + python-pytest-asyncio)) + (home-page "https://github.com/Neoteroi/rodi") + (synopsis "Dependency injection framework for Python") + (description + "Rodi is a dependency injection framework for Python applications. + +Its features include + +@itemize +@item Type resolution by signature types annotations. +@item Type resolution by class annotations. +@item Type resolution by names and aliases. +@item Build graph of objects without the need for source code changes. +@item Minimum overhead to obtain services, once the objects graph is built. +@item Support for singleton, transient, and scoped services. +@end itemize") + (license license:expat))) + ;; XXX: The last time updated in 2015, consider to remove it when nothing is ;; depend on it. (define-public python-snowballstemmer @@ -26019,46 +26029,6 @@ converting text with ANSI color codes to HTML or LaTeX.") can even create animations with the cursor controls.") (license license:expat))) -(define-public python-pycountry - (package - (name "python-pycountry") - (version "22.3.5") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pycountry" version)) - (sha256 - (base32 - "0ihnkh86zz01vi46gcwgq6h71jrpj7hq71zi13c98n2qdhj3l5mj")))) - (build-system python-build-system) - (home-page "https://bitbucket.org/flyingcircus/pycountry") - (synopsis "ISO databases for languages, countries, currencies, etc.") - (description - "@code{pycountry} provides the ISO databases for the standards: - @enumerate - @item 639-3 (Languages) - @item 3166 (Countries) - @item 3166-3 (Deleted Countries) - @item 3166-2 (Subdivisions of countries) - @item 4217 (Currencies) - @item 15924 (Scripts) - @end enumerate - It includes a copy from Debian’s pkg-isocodes and makes the data accessible - through a Python API.") - (license license:lgpl2.1+))) - -(define-public python-pycountry@20.7.3 - (package - (inherit python-pycountry) - (name "python-pycountry") - (version "20.7.3") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pycountry" version)) - (sha256 - (base32 "0hnbabsmqimx5hqh0jbd2f64i8fhzhhbrvid57048hs5sd9ll241")))))) - (define-public python-pycosat (package (name "python-pycosat") @@ -26996,9 +26966,10 @@ filetypes can be easily added by creating plugins for them.") (sha256 (base32 "0c3dgm1rf7ih79pgkj7adffn8hlyqh5qah8rbzlq436kz3srk83q")))) (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;no tests in PyPI or Git (native-inputs - (list python-setuptools - python-wheel)) + (list python-setuptools)) (home-page "https://github.com/benknight/hue-python-rgb-converter") (synopsis "RGB conversion tool in Python") (description @@ -29466,29 +29437,32 @@ supports the globstar @code{**} operator to match an arbitrary number of path components.") (license license:asl2.0))) +;; XXX: Not maintained since 2021. (define-public python-git-hammer (package (name "python-git-hammer") - (version "0.3.1") + (version "0.3.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/asharov/git-hammer") - (commit version))) + (url "https://github.com/asharov/git-hammer") + (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 - "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr")))) - (build-system python-build-system) + (base32 "0j0skpbhi7js45hp1w2n87093yz1hjdg5y3kicwvm84fb8i38gvx")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-setup.py + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements (lambda _ (substitute* "setup.py" - (("setup\\(") - "setup(\n test_suite=\"test\","))))))) + (("matplotlib <3.1") "matplotlib"))))))) + (native-inputs + (list python-pytest + python-setuptools)) (propagated-inputs (list python-beautifultable python-dateutil @@ -29500,8 +29474,8 @@ path components.") (home-page "https://github.com/asharov/git-hammer") (synopsis "Provide statistics for git repositories") (description - "Git Hammer is a statistics tool for projects in git repositories. -Its major feature is tracking the number of lines authored by each person for every + "Git Hammer is a statistics tool for projects in git repositories. Its major +feature is tracking the number of lines authored by each person for every commit, but it also includes some other useful statistics.") (license license:asl2.0))) @@ -30991,6 +30965,7 @@ module.") (properties '((upstream-name . "Wikidata"))) (license license:gpl3+))) +;; XXX: Not maintained since 2022, leaf package. (define-public python-attr (package (name "python-attr") @@ -31002,8 +30977,11 @@ module.") (sha256 (base32 "1x2627x0n2rxx8wib4cksbjjnncff8finq97k37dq70qd2kvrvhw")))) (build-system pyproject-build-system) + (arguments + (list #:test-backend #~'custom + #:test-flags #~(list "-c" "import dry_attr; dry_attr.test()"))) (native-inputs - (list python-setuptools python-wheel)) + (list python-setuptools)) (home-page "https://github.com/denis-ryzhkov/attr") (synopsis "Decorator for attributes of target function or class") (description "Simple decorator to set attributes of target function or @@ -32138,6 +32116,7 @@ register custom encoders and decoders.") bindings for Python 3.") (license license:bsd-3))) +;; XXX: See: . (define-public python-iocapture ;; The latest release is more than a year older than this commit. (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c") @@ -32155,8 +32134,12 @@ bindings for Python 3.") (sha256 (base32 "1mkbhqibxvgwg0p7slr8dfraa3g2s6bsayladhax2jccwj4kcndz")))) (build-system pyproject-build-system) - (native-inputs (list python-flexmock python-pytest python-pytest-cov - python-setuptools python-wheel)) + (native-inputs + (list python-flexmock + python-pytest + python-pytest-cov + python-setuptools + python-six)) (home-page "https://github.com/oinume/iocapture") (synopsis "Python capturing tool for stdout and stderr") (description @@ -34124,6 +34107,8 @@ to minimize duplication of information across files. The format supports schema validation.") (license license:lgpl3))) +;; XXX: Not maintained since 2021, there is no git available as seen in +;; . (define-public python-flufl-bounce (package (name "python-flufl-bounce") @@ -34135,7 +34120,7 @@ validation.") (sha256 (base32 "0c9qc2l47lyqnpwskp6vvi7m3jqh6hx42v6d35dgxh3fjzmlll15")))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments (list #:phases #~(modify-phases %standard-phases @@ -34148,7 +34133,7 @@ validation.") (propagated-inputs (list python-atpublic python-zope-interface)) (native-inputs - (list python-flufl-testing python-nose2)) + (list python-flufl-testing python-nose2 python-setuptools)) (home-page "https://fluflbounce.readthedocs.io/en/latest/") (synopsis "Email bounce detectors") (description "The @code{flufl.bounce} library provides a set of heuristics @@ -35556,7 +35541,7 @@ restores the original state after the string is printed.") (native-inputs (list python-pytest)) (inputs - (list sane-backends)) + (list sane)) (home-page "https://github.com/python-pillow/Sane") (synopsis "Python interface to the SANE scanner") (description "This package provides Python interface to the SANE scanner @@ -38001,6 +37986,43 @@ static types.") (description "This package providis typing stubs for python-dateutil.") (license license:asl2.0))) +(define-public python-types-aiofiles + (package + (name "python-types-aiofiles") + (version "24.1.0.20250822") + (source + (origin + (method url-fetch) + (uri (pypi-uri "types_aiofiles" version)) + (sha256 + (base32 "0ysar1an6il2rsd54fwzwdis209z3qq3i4zhgixfjzrh1j70vfcs")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;no tests in PyPI archive + (native-inputs (list python-setuptools)) + (home-page "https://github.com/python/typeshed") + (synopsis "Typing stubs for python-aiofiles") + (description "This package providis typing stubs for python-aiofiles.") + (license license:asl2.0))) + +(define-public python-types-tqdm + (package + (name "python-types-tqdm") + (version "4.67.0.20250809") + (source + (origin + (method url-fetch) + (uri (pypi-uri "types_tqdm" version)) + (sha256 + (base32 "006md2hnsq79p7d5z3kiaapvl9wwa4dz3yb39jf0n22n2awpmgq2")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;no tests in PyPI archive + (native-inputs (list python-setuptools)) + (propagated-inputs (list python-types-requests)) + (home-page "https://github.com/python/typeshed") + (synopsis "Typing stubs for python-tqdm") + (description "This package providis typing stubs for python-tqdm.") + (license license:asl2.0))) + (define-public python-types-docutils (package (name "python-types-docutils") @@ -39406,7 +39428,19 @@ client library.") (sha256 (base32 "122a8prbcj070y3fl82kvxmbciv36hj1h1d448l6zcdrb22q4mhx")))) (build-system pyproject-build-system) - (native-inputs (list python-setuptools python-wheel)) + (arguments + (list + ;; tests: 1571 passed, 37 deselected, 1 warning + ;; + ;; Two test fail with assertion not equal: + ;; + ;; test_decode_error[0001-unpack_from requires a buffer of at least 1 + ;; bytes] - AssertionError + ;; + ;; test_decode_error[00000101-unpack_from requires a buffer of at least + ;; 1 bytes] - AssertionError + #:test-flags #~(list "-k" "not test_decode_error"))) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://ndeflib.readthedocs.io/") (synopsis "NFC Data Exchange Format decoder and encoder.") (description "This package provides a NFC (Near-Field Communication) @@ -39817,6 +39851,24 @@ package. It can be used by type-checking tools like mypy, PyCharm, pytype etc. to check code that uses @code{orjson}.") (license license:asl2.0))) +(define-public python-types-regex + (package + (name "python-types-regex") + (version "2025.9.18.20250921") + (source + (origin + (method url-fetch) + (uri (pypi-uri "types_regex" version)) + (sha256 + (base32 "0gqc8b9d38pdm1l6nryi9rq9vmpis575hqnxlvj904n3n4hhqw71")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;no tests in PyPI archive + (native-inputs (list python-setuptools)) + (home-page "https://github.com/python/typeshed") + (synopsis "Typing stubs for regex") + (description "This package provides typing stubs for regex.") + (license license:asl2.0))) + (define-public python-rpds-py (package (name "python-rpds-py") @@ -40161,8 +40213,16 @@ read all zbar supported codes.") (base32 "0r46q4hd7xbpvnidbra1prkg4xhmajxjjmclfqgp3pv0lgyslqxh")))) (build-system pyproject-build-system) + (arguments + ;; XXX: No tests in PyPI, tere are tests in Git, but there is no 3.7.10.1 + ;; tag. + ;; + ;; See: + ;; - URL: + ;; - File: + (list #:tests? #f)) (inputs (list openssl)) - (native-inputs (list python-setuptools python-wheel)) + (native-inputs (list python-setuptools)) (home-page "https://zeroc.com") (synopsis "RPC framework") (description @@ -40171,6 +40231,29 @@ software by taking care of all interactions with low-level network programming interfaces.") (license license:gpl2))) +;; Package variant to build python-omero-py@5.20.0 +(define-public python-zeroc-ice-3.6 + (package + (inherit python-zeroc-ice) + (version "3.6.5") + (source (origin + (method url-fetch) + (uri (pypi-uri "zeroc-ice" version)) + (sha256 + (base32 + "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2")) + (patches + (search-patches + "python-zeroc-ice-3.6.5-python-3.11-support.patch")))) + (arguments + (substitute-keyword-arguments (package-arguments python-zeroc-ice) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + (add-before 'build 'relax-gcc-14-strictness + (lambda _ + (setenv "CFLAGS" + "-g -O2 -Wno-error=implicit-function-declaration"))))))))) + (define-public python-islenska (package (name "python-islenska") @@ -40271,20 +40354,6 @@ instance in spelling correction, predictive typing, to help disabled people write text fast, and for various text generation, statistics, and modeling tasks.") (license license:expat))) -(define-public python-zeroc-ice-3.6 - (package - (inherit python-zeroc-ice) - (version "3.6.5") - (source (origin - (method url-fetch) - (uri (pypi-uri "zeroc-ice" version)) - (sha256 - (base32 - "0mikjfvq26kh8asnn9v55z41pap4c5ypymqnwwi4xkavc3mzyda2")) - (patches - (search-patches - "python-zeroc-ice-3.6.5-python-3.11-support.patch")))))) - (define-public python-whenever (package (name "python-whenever") diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 646ef54357a..c369a618cae 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2117,7 +2117,7 @@ Vulkan, OpenGL and other main graphic APIs.") vulkan-headers)) (inputs (list alsa-lib - ffmpeg + ffmpeg-6 glib libxkbcommon libxrandr diff --git a/gnu/packages/rdesktop.scm b/gnu/packages/rdesktop.scm index d341c59e629..13df55cfe1e 100644 --- a/gnu/packages/rdesktop.scm +++ b/gnu/packages/rdesktop.scm @@ -192,7 +192,8 @@ of parts of the Windows API.") (search-patches "freerdp-3.16.0-rpath.patch")))) (inputs (modify-inputs (package-inputs freerdp) - (prepend fuse icu4c mit-krb5 sdl3 sdl3-gfx sdl3-ttf))) + (replace "ffmpeg" ffmpeg) + (prepend fuse icu4c mit-krb5 sdl3 sdl3-gfx sdl3-ttf))) (arguments (list #:build-type "Release" #:configure-flags @@ -252,8 +253,7 @@ of parts of the Windows API.") linux-pam openssl pixman - python - python-libxml2)) + python)) (native-inputs (append (list bison diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index ad6ec7921e5..609cae6d50b 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -77,7 +77,8 @@ "-" version ".tar.gz")) (sha256 (base32 - "1026whyxpajwijlr4k5c0iliwn09mwxrg7gkvd5kb0n9ga6vg788")))) + "1026whyxpajwijlr4k5c0iliwn09mwxrg7gkvd5kb0n9ga6vg788")) + (patches (search-patches "raptor2-libxml2.patch")))) (build-system gnu-build-system) (inputs (list curl libxml2 libxslt zlib)) diff --git a/gnu/packages/rednotebook.scm b/gnu/packages/rednotebook.scm index 6d61fa13911..6dcc8a2cac1 100644 --- a/gnu/packages/rednotebook.scm +++ b/gnu/packages/rednotebook.scm @@ -18,21 +18,25 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages rednotebook) + #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix git-download) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages bash) - #:use-module (gnu packages python) + #:use-module (gnu packages check) + #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) - #:use-module (gnu packages webkit) - #:use-module (gnu packages python-xyz)) + #:use-module (gnu packages python) + #:use-module (gnu packages python-build) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages webkit)) (define-public rednotebook (package (name "rednotebook") - (version "2.22") + (version "2.41") (source (origin (method git-fetch) @@ -41,35 +45,36 @@ (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "11n970ad0j57vlll5j30ngkrfyil23v1b29ickbnblcldvjbgwa5")))) - (build-system python-build-system) + (base32 "1nljj227lykl4gq1qvvv0pj00k8pbi3njm4agz7wsfcihz6dlrxi")))) + (build-system pyproject-build-system) (arguments - ;; Tests fail to find the "_" function. - ;; It should be defined in rednotebook/info.py if '_' is not a member of - ;; 'builtins'. It is either not defined or not exported during the check - ;; phase. The program does not have this problem after it is installed. - ;; TODO: Fix tests. - `(#:tests? #f - #:imported-modules ((guix build glib-or-gtk-build-system) - ,@%python-build-system-modules) - #:modules ((ice-9 match) - (guix build python-build-system) - ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) - (guix build utils)) - #:phases - (modify-phases %standard-phases - ;; Make sure rednotebook can find the typelibs and webkitgtk shared - ;; libraries. - (add-before 'wrap 'wrap-with-library-paths - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (gi-typelib-path (getenv "GI_TYPELIB_PATH")) - (webkitgtk-path (string-append - (assoc-ref inputs "webkitgtk-for-gtk3") - "/lib"))) - (wrap-program (string-append out "/bin/rednotebook") - `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)) - `("LD_LIBRARY_PATH" ":" prefix (,webkitgtk-path))))))))) + (list + #:imported-modules + `((guix build glib-or-gtk-build-system) + ,@%pyproject-build-system-modules) + #:modules + `((ice-9 match) + (guix build pyproject-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build utils)) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'configure-tests + (lambda _ + (setenv "HOME" (getcwd)))) + ;; Make sure rednotebook can find the typelibs and webkitgtk shared + ;; libraries. + (add-before 'wrap 'wrap-with-library-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((webkitgtk-bin (search-input-file inputs + "bin/WebKitWebDriver"))) + (wrap-program (string-append #$output "/bin/rednotebook") + `("GI_TYPELIB_PATH" ":" prefix + (,(getenv "GI_TYPELIB_PATH"))) + `("LD_LIBRARY_PATH" ":" prefix + (,(string-append (dirname (dirname webkitgtk-bin)) + "/lib")))))))))) + (native-inputs (list gettext-minimal python-pytest python-setuptools)) (inputs (list bash-minimal gtk+ @@ -79,7 +84,7 @@ webkitgtk-for-gtk3)) ;; TODO: package the following for python3 (if possible), add them as ;; dependencies, and remove them from rednotebook source: - ;; pygtkspellcheck, elib.intl, msgfmt, txt2tags + ;; pygtkspellcheck, elib.intl, txt2tags ;; TODO: package and add pyenchant for python3 and add it as a dependency. (home-page "https://www.rednotebook.app") (synopsis "Daily journal with calendar, templates and keyword searching") diff --git a/gnu/packages/rust-crates.scm b/gnu/packages/rust-crates.scm index 9e96ac63e4e..572f6ece2f0 100644 --- a/gnu/packages/rust-crates.scm +++ b/gnu/packages/rust-crates.scm @@ -19903,6 +19903,7 @@ `(("paste" ,rust-paste-1.0.15) ("proc-macro2" ,rust-proc-macro2-1.0.94) ("quote" ,rust-quote-1.0.40) + ("rustc-hash" ,rust-rustc-hash-2.1.1) ("syn" ,rust-syn-2.0.100) ("unicode-ident" ,rust-unicode-ident-1.0.18))) diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm index 259e378b658..3cbfa227175 100644 --- a/gnu/packages/scanner.scm +++ b/gnu/packages/scanner.scm @@ -42,18 +42,20 @@ #:use-module (gnu packages tls) #:use-module (gnu packages xml) #:use-module (guix build-system gnu) + #:use-module (guix deprecation) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix search-paths) #:use-module (guix utils)) (define-public sane-airscan (package (name "sane-airscan") - (version "0.99.27") + (version "0.99.36") (source (origin (method git-fetch) @@ -62,7 +64,7 @@ (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1syxsih1kdnz9slsg5a92bqnllagm4cybqk4n2y6mbkqn6h0zlnv")))) + (base32 "1dh7rq1g120gqhkr7ac3p7yizm330dj3xqrrg08dff7ra1jx955y")))) (build-system gnu-build-system) (arguments (list #:make-flags @@ -78,8 +80,9 @@ gnutls libjpeg-turbo libpng + libtiff libxml2 - sane-backends)) + sane)) (home-page "https://github.com/alexpevzner/sane-airscan") (synopsis "SANE backend for eSCL (AirScan) and WSD document scanners") (description ; no @acronym{eSCL} because the meaning isn't officially known @@ -103,10 +106,11 @@ both WSD and eSCL.") (license (list license:gpl2+ ; the combined work license:expat)))) ; http_parser.[ch] -(define-public sane-backends-minimal +(define-deprecated/public-alias sane-backends-minimal sane) +(define-public sane (package - (name "sane-backends-minimal") - (version "1.3.1") + (name "sane") + (version "1.4.0") (source (origin (method git-fetch) (uri (git-reference @@ -114,7 +118,9 @@ both WSD and eSCL.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1fb6shx9bz0svcyasmyqs93rbbwq7kzg6l0h1zh3kjvcwhchyv72")) + (base32 "09hcqrli127amdxjlj6xd9lvc0rhlhhm8vxrnldbd8c2mxss7dbv")) + (patches (search-patches + "sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch")) (modules '((guix build utils))) (snippet ;; Generated HTML files and udev rules normally embed a @@ -186,6 +192,11 @@ both WSD and eSCL.") (string-append out "/lib/udev/rules.d/" "60-libsane.rules"))))) + (add-after 'install 'remove-dll.conf + (lambda _ + ;; dll.conf lists enabled backends, so it should be removed as + ;; there are none in this package + (delete-file (string-append %output "/etc/sane.d/dll.conf")))) (add-after 'install 'make-reproducible ;; XXX Work around an old bug . ;; Then work around "Throw to key `decoding-error' ..." by using sed. @@ -197,6 +208,14 @@ both WSD and eSCL.") (invoke "sed" "-i" "/^PO-Revision-Date:/d" file)) (list "en@boldquot/LC_MESSAGES/sane-backends.mo" "en@quot/LC_MESSAGES/sane-backends.mo"))))))))) + (native-search-paths + (list + (search-path-specification + (variable "SANE_CONFIG_DIR") + (files '("etc/sane.d"))) + (search-path-specification + (variable "SANE_BACKEND_LIB_PATH") + (files '("lib/sane"))))) (home-page "http://www.sane-project.org") (synopsis "Raster image scanner library and drivers, without scanner support") @@ -206,20 +225,16 @@ hand-held scanner, video- and still-cameras, frame-grabbers, etc.). The package contains the library, but no drivers.") (license license:gpl2+))) ; plus linking exception -;; This variant links in the hpaio backend provided by hplip, which adds -;; support for HP scanners whose backends are not maintained by the SANE -;; project, and builds all of those backends. (define-public sane-backends - (package/inherit sane-backends-minimal + (package/inherit sane (name "sane-backends") (inputs - `(("hplip" ,(@ (gnu packages cups) hplip)) - ("libjpeg" ,libjpeg-turbo) ; for pixma/epsonds/other back ends + `(("libjpeg" ,libjpeg-turbo) ; for pixma/epsonds/other back ends ("libpng" ,libpng) ; support ‘scanimage --format=png’ ("libxml2" ,libxml2) ; for pixma back end - ,@(package-inputs sane-backends-minimal))) + ,@(package-inputs sane))) (arguments - (substitute-keyword-arguments (package-arguments sane-backends-minimal) + (substitute-keyword-arguments (package-arguments sane) ((#:phases phases) `(modify-phases ,phases (delete 'disable-backends) @@ -229,22 +244,6 @@ package contains the library, but no drivers.") ;; (substitute* "testsuite/backend/genesys/Makefile.in" ((" genesys_unit_tests\\$\\(EXEEXT\\)") "")) - #t)) - (add-after 'unpack 'add-backends - (lambda _ - (substitute* "backend/dll.conf.in" - (("hp5590" all) (format #f "~a~%~a" all "hpaio"))) - #t)) - (add-after 'install 'install-hpaio - (lambda* (#:key inputs outputs #:allow-other-keys) - (define hplip (string-append (assoc-ref inputs "hplip") - "/lib/sane")) - (define out (string-append (assoc-ref outputs "out") - "/lib/sane")) - (for-each - (lambda (file) - (symlink file (string-append out "/" (basename file)))) - (find-files hplip)) #t)))))) (synopsis "Raster image scanner library and drivers, with scanner support") @@ -288,7 +287,7 @@ package contains the library and drivers."))) "/lib/udev/rules.d"))))))) (inputs (list boost eudev - sane-backends-minimal + sane libusb libjpeg-turbo imagemagick @@ -350,11 +349,7 @@ standard.") (native-inputs (list pkg-config)) (inputs - `(("dbus" ,dbus) - ("libconfuse" ,libconfuse) - ("sane-backends" ,sane-backends) - ("udev" ,eudev) - ("zlib" ,zlib))) + (list dbus libconfuse sane eudev zlib)) (home-page "https://scanbd.sourceforge.io") (synopsis "Configurable scanner button monitor") (description "Scanbd stands for scanner button daemon. It regularly polls @@ -435,7 +430,7 @@ provided the driver also exposes the buttons.") lcms libjpeg-turbo libtiff - sane-backends + sane xdg-utils)) ;to open the manual from the Help menu (home-page "https://gitlab.com/sane-project/frontend/xsane") (synopsis "Featureful graphical interface for document and image scanners") diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index c0e3654fd8f..6a045477e72 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -42,7 +42,7 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (guix build-system meson) #:use-module (gnu packages) #:use-module (gnu packages adns) @@ -71,6 +71,7 @@ #:use-module (gnu packages pdf) #:use-module (gnu packages photo) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) @@ -640,65 +641,72 @@ search the generated indexes.") (source (origin (method url-fetch) - (uri (string-append - "https://finestructure.net/xapers/releases/xapers-" - version ".tar.gz")) + (uri (string-append "https://finestructure.net/xapers/releases/xapers-" + version ".tar.gz")) (sha256 - (base32 - "0ykz6hn3qj46w3c99d6q0pi5ncq2894simcl7vapv047zm3cylmd")))) - (build-system python-build-system) - (propagated-inputs - (list poppler python-urwid xclip xdg-utils)) - (inputs - (list python-latexcodec - python-pybtex - python-pycurl - python-pyyaml - python-six - python-xapian-bindings)) + (base32 "0ykz6hn3qj46w3c99d6q0pi5ncq2894simcl7vapv047zm3cylmd")))) + (build-system pyproject-build-system) (arguments - `(#:modules ((ice-9 rdelim) - (guix build python-build-system) + (list + #:tests? #f ; A lot of tests are failing, unclear why. + #:modules `((ice-9 rdelim) + (guix build pyproject-build-system) (guix build utils)) - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-doc - (lambda* (#:key inputs outputs #:allow-other-keys) - (define (purge-term-support input output) - (let loop ((line (read-line input))) - (if (string-prefix? "if [[ \"$term\"" line) - (begin (display "eval \"$cmd\"\n" output) - #t) - (begin (display (string-append line "\n") output) - (loop (read-line input)))))) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (adder-out (string-append bin "/xapers-adder")) - (man1 (string-append out "/share/man/man1"))) - (install-file "man/man1/xapers.1" man1) - (install-file "man/man1/xapers-adder.1" man1) - ;; below is equivalent to setting --no-term option - ;; permanently on; this is desirable to avoid imposing - ;; an x-terminal installation on the user but breaks - ;; some potential xapers-adder uses like auto browser - ;; pdf handler, but user could instead still use - ;; e.g. "xterm -e xapers-adder %F" for same use. - ;; alternatively we could propagate xterm as an input - ;; and replace 'x-terminal-emulator' with 'xterm' - (call-with-input-file "bin/xapers-adder" - (lambda (input) - (call-with-output-file adder-out - (lambda (output) - (purge-term-support input output))))) - (chmod adder-out #o555))))))) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'install-doc + (lambda* (#:key inputs outputs #:allow-other-keys) + (define (purge-term-support input output) + (let loop + ((line (read-line input))) + (if (string-prefix? "if [[ \"$term\"" line) + (display "eval \"$cmd\"\n" output) + (begin + (display (string-append line "\n") output) + (loop (read-line input)))))) + (let* ((bin (string-append #$output "/bin")) + (adder-out (string-append bin "/xapers-adder")) + (man1 (string-append #$output "/share/man/man1"))) + (install-file "man/man1/xapers.1" man1) + (install-file "man/man1/xapers-adder.1" man1) + ;; below is equivalent to setting --no-term option + ;; permanently on; this is desirable to avoid imposing + ;; an x-terminal installation on the user but breaks + ;; some potential xapers-adder uses like auto browser + ;; pdf handler, but user could instead still use + ;; e.g. "xterm -e xapers-adder %F" for same use. + ;; alternatively we could propagate xterm as an input + ;; and replace 'x-terminal-emulator' with 'xterm' + (mkdir-p (dirname adder-out)) + (call-with-input-file "bin/xapers-adder" + (lambda (input) + (call-with-output-file adder-out + (lambda (output) + (purge-term-support input output))))) + (chmod adder-out #o555)))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (with-directory-excursion "test" + (setenv "HOME" (getcwd)) + (invoke "bash" "all")) + (format #t "test suite not run~%"))))))) + (native-inputs (list python-setuptools)) + (propagated-inputs (list poppler python-urwid xclip xdg-utils)) + (inputs (list python-latexcodec + python-pybtex + python-pycurl + python-pyyaml + python-six + python-xapian-bindings)) (home-page "https://finestructure.net/xapers/") (synopsis "Personal document indexing system") (description - "Xapers is a personal document indexing system, -geared towards academic journal articles build on the Xapian search engine. -Think of it as your own personal document search engine, or a local cache of -online libraries. It provides fast search of document text and -bibliographic data and simple document and bibtex retrieval.") + "Xapers is a personal document indexing system, geared towards academic +journal articles build on the Xapian search engine. Think of it as your own +personal document search engine, or a local cache of online libraries. It +provides fast search of document text and bibliographic data and simple +document and bibtex retrieval.") (license license:gpl3+))) (define-public ugrep diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index bc52898c0ae..71d9cee818c 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -69,6 +69,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-build) + #:use-module (gnu packages python-check) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) diff --git a/gnu/packages/stenography.scm b/gnu/packages/stenography.scm index 687a23e85a4..3f0979c3063 100644 --- a/gnu/packages/stenography.scm +++ b/gnu/packages/stenography.scm @@ -45,17 +45,21 @@ (package (name "python-plover-stroke") (version "1.1.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "plover_stroke" version)) - (sha256 - (base32 - "0lyifam9xqpx2jzqcbah84sv909n4g2frm7pd5gvcrpf98zv40yy")))) - (build-system python-build-system) - (native-inputs (list python-pytest)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/benoit-pierre/plover_stroke") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "104ab1lr2xr8nbq98n7h3jvskfzzg8m41rhb1ik4b7w474rlxgh3")))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools)) (home-page "https://github.com/benoit-pierre/plover_stroke") (synopsis "Stroke handling helper library for Plover") - (description "This package provides a helper class for working with steno strokes.") + (description + "This package provides a helper class for working with steno strokes.") (license license:gpl2+))) (define-public plover diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm index 0a978f9c9f3..f61f7ec99e8 100644 --- a/gnu/packages/task-management.scm +++ b/gnu/packages/task-management.scm @@ -92,20 +92,16 @@ (file-name (git-file-name name version)) (sha256 (base32 "1nyx80z53xxlbhpb5k22jnv4jajxqhjm0gz7qb18w9pqqlrvkqd4")))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) - (setenv "HOME" (getenv "TEMP")) - (when tests? - (add-installed-pythonpath inputs outputs) - (invoke "pytest" "-vv"))))))) + (add-before 'check 'configure-tests + (lambda _ + (setenv "HOME" (getenv "TEMP"))))))) (native-inputs - (list python-pytest - python-click)) + (list python-pytest python-click python-setuptools)) (inputs (list python-click python-click-default-group diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 7d9b2db9406..8021652dbcd 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -887,7 +887,7 @@ eye-candy, customizable, and reasonably lightweight.") (list (search-path-specification (variable "TERMINFO_DIRS") (files '("share/terminfo"))))) - (inputs (list fcft libxkbcommon-1.8 wayland wayland-protocols)) + (inputs (list fcft libxkbcommon wayland wayland-protocols)) (synopsis "Wayland-native terminal emulator") (description "@command{foot} is a terminal emulator for systems using the Wayland diff --git a/gnu/packages/tor-browsers.scm b/gnu/packages/tor-browsers.scm index ddd34a9f3e1..3473829855f 100644 --- a/gnu/packages/tor-browsers.scm +++ b/gnu/packages/tor-browsers.scm @@ -240,7 +240,7 @@ Browser.") libxcomposite libxt libffi - ffmpeg-7 + ffmpeg libvpx icu4c pixman diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm index 762bd6ef42d..7d48a5a4afc 100644 --- a/gnu/packages/tree-sitter.scm +++ b/gnu/packages/tree-sitter.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2023, 2024 Raven Hallsby ;;; Copyright © 2024 Foundation Devices, Inc. ;;; Copyright © 2025 Andrew Wong +;;; Copyright © 2025 Nguyễn Gia Phong ;;; ;;; This file is part of GNU Guix. ;;; @@ -530,6 +531,14 @@ which will be used as a snippet in origin." #:commit commit #:license license:asl2.0))) +(define-public tree-sitter-janet + (tree-sitter-grammar + "janet" "Janet" + "1sg862gqxn5y86sqa4habyicsr1ax70i7w8ibnn2yyx1bzn99jqn" + "0.1.0" + #:repository-url "https://github.com/GrayJack/tree-sitter-janet" + #:license license:bsd-3)) + (define-public tree-sitter-java (tree-sitter-grammar "java" "Java" diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm index ee6cc9b6bfc..0261e92e8e7 100644 --- a/gnu/packages/tryton.scm +++ b/gnu/packages/tryton.scm @@ -33,6 +33,7 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages pdf) #:use-module (gnu packages python) #:use-module (gnu packages python-build) @@ -1739,7 +1740,7 @@ month and a year of work.") (arguments (tryton-arguments "country" "--no-doctest")) (native-inputs (%standard-trytond-native-inputs)) (propagated-inputs - (list python-pycountry@20.7.3 trytond)) + (list python-pycountry-20.7.3 trytond)) (home-page "http://www.tryton.org/") (synopsis "Tryton module with countries") (description diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 0db72149759..618ec627f5d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -74,6 +74,8 @@ ;;; Copyright © 2025 Sharlatan Hellseher ;;; Copyright © 2025 VnPower ;;; Copyright © 2025 Zhu Zihao +;;; Copyright © 2025 Remco van 't Veer +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -1527,7 +1529,7 @@ libebml is a C++ library to read and write EBML files.") (define-public libplacebo (package (name "libplacebo") - (version "7.349.0") + (version "7.351.0") (source (origin (method git-fetch) @@ -1536,7 +1538,7 @@ libebml is a C++ library to read and write EBML files.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1q12yf04z570a2l3vkig2iqm7bgqr90hdxmn78sk2injrsyx124q")))) + (base32 "094mzr4cvvryxr7rpxqhvrs018r89m116cpkmmfy3d3sk8b09jki")))) (build-system meson-build-system) (arguments (list #:configure-flags @@ -1644,17 +1646,17 @@ These tools require a supported graphics chip, driver, and VA-API back end to operate properly.") (license license:expat))) -(define-public ffmpeg-7 +(define-public ffmpeg (package (name "ffmpeg") - (version "7.0.2") + (version "8.0") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "12dkv17mrsdqrm70c30azjw7qi1lfxca7xisw81x6flacddm2il6")))) + "13kvs9rh5mp21gx64hdj0jlnz6q5c6spik8kh5q7fk6cnv61yxdj")))) (outputs '("out" "debug")) (build-system gnu-build-system) (inputs @@ -1674,6 +1676,8 @@ operate properly.") libcaca libcdio-paranoia libdrm + libgme + libplacebo libtheora libva libvdpau @@ -1685,13 +1689,16 @@ operate properly.") mesa openal pulseaudio + shaderc sdl2 soxr speex + spirv-tools srt svt-av1 twolame vidstab + vulkan-loader x265 xvid zlib))) @@ -1701,7 +1708,8 @@ operate properly.") pkg-config texinfo speex - yasm)) + vulkan-headers + nasm)) (arguments (list #:test-target "fate" @@ -1716,7 +1724,6 @@ operate properly.") ;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] ;; --enable-libflite enable flite (voice synthesis) support via ;; libflite [no] - ;; --enable-libgme enable Game Music Emu via libgme [no] ;; --enable-libgsm enable GSM de/encoding via libgsm [no] ;; --enable-libiec61883 enable iec61883 via libiec61883 [no] ;; --enable-libilbc enable iLBC de/encoding via libilbc [no] @@ -1769,12 +1776,15 @@ operate properly.") "--enable-libcdio" "--enable-libdav1d" "--enable-libfreetype" + "--enable-libgme" "--enable-libmp3lame" "--enable-libopus" + "--enable-libplacebo" "--enable-libpulse" #$@(if (this-package-input "rav1e") '("--enable-librav1e") '()) + "--enable-libshaderc" "--enable-libsoxr" "--enable-libspeex" "--enable-libsrt" @@ -1792,6 +1802,7 @@ operate properly.") "--enable-opengl" "--enable-libdrm" "--enable-vaapi" + "--enable-vulkan" "--enable-runtime-cpudetect" @@ -1836,7 +1847,7 @@ operate properly.") (lambda* (#:key outputs configure-flags #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (substitute* "configure" - (("#! /bin/sh") (string-append "#!" (which "sh")))) + (("#! */bin/sh") (string-append "#!" (which "sh")))) (setenv "SHELL" (which "bash")) (setenv "CONFIG_SHELL" (which "bash")) (apply invoke @@ -1861,23 +1872,23 @@ convert and stream audio and video. It includes the libavcodec audio/video codec library.") (license license:gpl2+))) -(define-public ffmpeg +(define-public ffmpeg-6 (package - (inherit ffmpeg-7) - (version "6.1.1") + (inherit ffmpeg) + (version "6.1.2") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "0s7r2qv8gh2a3w568n9xxgcz0q8j5ww1jdsci1hm9f4l1yqg9146")) + "0f2fr8ywchhlkdff88lr4d4vscqzsi1ndjh3r5jwbkayf94lcqiv")) (patches (search-patches "ffmpeg-add-av_stream_get_first_dts-for-chromium.patch")))) (arguments (if (target-x86-32?) - (substitute-keyword-arguments (package-arguments ffmpeg-7) + (substitute-keyword-arguments (package-arguments ffmpeg) ((#:phases phases) #~(modify-phases #$phases (add-before 'configure 'relax-gcc-14-strictness @@ -1885,8 +1896,9 @@ audio/video codec library.") (setenv "CFLAGS" (string-append "-g -O2" - " -Wno-error=incompatible-pointer-types"))))))) - (package-arguments ffmpeg-7))))) + " -Wno-error=incompatible-pointer-types" + " -Wno-error=int-conversion"))))))) + (package-arguments ffmpeg))))) (define-public ffmpeg-5 (package @@ -1900,16 +1912,22 @@ audio/video codec library.") (base32 "1g8116rp4fgq82br8lclb2dmw3fvyh2zkzhnngm7z97pg1i0dypl")))) (arguments - (if (target-x86-32?) - (substitute-keyword-arguments (package-arguments ffmpeg) - ((#:phases phases) + (substitute-keyword-arguments (package-arguments ffmpeg) + ((#:modules modules %default-gnu-modules) + `((srfi srfi-1) ,@modules)) + ((#:phases phases) + (if (target-x86-32?) #~(modify-phases #$phases (replace 'bypass-openal-check (lambda _ (substitute* "configure" (("die \"ERROR: openal not found\"") - "true"))))))) - (package-arguments ffmpeg))))) + "true"))))) + phases)) + ((#:configure-flags flags ''()) + #~(fold delete #$flags '("--enable-libplacebo"))))) + (inputs (modify-inputs (package-inputs ffmpeg) + (delete "libplacebo"))))) (define-public ffmpeg-4 (package @@ -1922,12 +1940,13 @@ audio/video codec library.") (sha256 (base32 "01xb2vj4n52fv2y56n5ifirgzlg16qbgfg98f6ifbbhm6l6lwlgr")))) - (inputs (modify-inputs (package-inputs ffmpeg) + (inputs (modify-inputs (package-inputs ffmpeg-5) (replace "sdl2" sdl2-2.0))) (arguments (substitute-keyword-arguments (package-arguments ffmpeg-5) ((#:configure-flags flags ''()) - #~(cons "--enable-avresample" #$flags)))))) + #~(cons "--enable-avresample" + (fold delete #$flags '("--enable-libshaderc")))))))) (define-public ffmpeg-for-stepmania (hidden-package @@ -1989,276 +2008,278 @@ audio/video codec library.") "--enable-libdav1d" "--enable-librav1e" "--enable-libsrt" - "--enable-libsvtav1"))))) + "--enable-libsvtav1" + "--enable-vulkan"))))) (inputs (modify-inputs (package-inputs ffmpeg-4) (delete "dav1d" "libaom" "rav1e" "srt"))))) ;;; Custom ffmpeg package used by Jami, which incorporates custom patches. (define-public ffmpeg-jami - (package - (inherit ffmpeg) - (name "ffmpeg-jami") - (source (let ((ffmpeg-origin (package-source ffmpeg))) - (origin - (inherit ffmpeg-origin) - ;; These patches originate come from - ;; . - ;; Make sure to keep them update and/or register any new ones - ;; here. - (patches - (append - (origin-patches ffmpeg-origin) - (search-patches - "ffmpeg-jami-remove-mjpeg-log.patch" - "ffmpeg-jami-change-RTCP-ratio.patch" - "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-pipewiregrab-source-filter.patch")))))) - (arguments - (substitute-keyword-arguments (package-arguments ffmpeg) - ((#:configure-flags _ '()) - ;; The base configure flags preserved from ffmpeg appear first. - #~(list "--disable-static" - "--enable-shared" - "--disable-stripping" + (let ((ffmpeg ffmpeg-6)) + (package + (inherit ffmpeg) + (name "ffmpeg-jami") + (source (let ((ffmpeg-origin (package-source ffmpeg))) + (origin + (inherit ffmpeg-origin) + ;; These patches originate come from + ;; . + ;; Make sure to keep them update and/or register any new ones + ;; here. + (patches + (append + (origin-patches ffmpeg-origin) + (search-patches + "ffmpeg-jami-remove-mjpeg-log.patch" + "ffmpeg-jami-change-RTCP-ratio.patch" + "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-pipewiregrab-source-filter.patch")))))) + (arguments + (substitute-keyword-arguments (package-arguments ffmpeg) + ((#:configure-flags _ '()) + ;; The base configure flags preserved from ffmpeg appear first. + #~(list "--disable-static" + "--enable-shared" + "--disable-stripping" - ;; Extra Guix-added flags that make sense for this custom - ;; package; these could be contributed upstream. - "--disable-doc" + ;; Extra Guix-added flags that make sense for this custom + ;; package; these could be contributed upstream. + "--disable-doc" - ;; The following flags are those specified by Jami. - ;; They're from the jami/daemon/contrib/src/ffmpeg/rules.mak - ;; file. We try to keep it as close to the official Jami - ;; package as possible, to provide all the codecs and extra - ;; features that are expected (see: - ;; https://review.jami.net/plugins/gitiles/jami-daemon/+/ - ;; refs/heads/master/contrib/src/ffmpeg/rules.mak). - "--disable-everything" - "--enable-zlib" - "--enable-gpl" - "--enable-swscale" - "--enable-bsfs" - "--disable-filters" - "--disable-programs" - "--disable-postproc" + ;; The following flags are those specified by Jami. + ;; They're from the jami/daemon/contrib/src/ffmpeg/rules.mak + ;; file. We try to keep it as close to the official Jami + ;; package as possible, to provide all the codecs and extra + ;; features that are expected (see: + ;; https://review.jami.net/plugins/gitiles/jami-daemon/+/ + ;; refs/heads/master/contrib/src/ffmpeg/rules.mak). + "--disable-everything" + "--enable-zlib" + "--enable-gpl" + "--enable-swscale" + "--enable-bsfs" + "--disable-filters" + "--disable-programs" + "--disable-postproc" - "--enable-libpipewire" - "--enable-filter=pipewiregrab" - "--enable-indev=lavfi" - "--enable-decoder=wrapped_avframe" + "--enable-libpipewire" + "--enable-filter=pipewiregrab" + "--enable-indev=lavfi" + "--enable-decoder=wrapped_avframe" - "--disable-protocols" - "--enable-protocol=crypto" - "--enable-protocol=file" - "--enable-protocol=rtp" - "--enable-protocol=srtp" - "--enable-protocol=tcp" - "--enable-protocol=udp" - "--enable-protocol=unix" - "--enable-protocol=pipe" + "--disable-protocols" + "--enable-protocol=crypto" + "--enable-protocol=file" + "--enable-protocol=rtp" + "--enable-protocol=srtp" + "--enable-protocol=tcp" + "--enable-protocol=udp" + "--enable-protocol=unix" + "--enable-protocol=pipe" - ;; Enable muxers/demuxers. - "--disable-demuxers" - "--disable-muxers" - "--enable-muxer=rtp" - "--enable-muxer=g722" - "--enable-muxer=g723_1" - "--enable-muxer=g726" - "--enable-muxer=g726le" - "--enable-muxer=h263" - "--enable-muxer=h264" - "--enable-muxer=hevc" - "--enable-muxer=matroska" - "--enable-muxer=webm" - "--enable-muxer=ogg" - "--enable-muxer=pcm_s16be" - "--enable-muxer=pcm_s16le" - "--enable-muxer=wav" - "--enable-demuxer=rtp" - "--enable-demuxer=mjpeg" - "--enable-demuxer=mjpeg_2000" - "--enable-demuxer=mpegvideo" - "--enable-demuxer=gif" - "--enable-demuxer=image_jpeg_pipe" - "--enable-demuxer=image_png_pipe" - "--enable-demuxer=image_webp_pipe" - "--enable-demuxer=matroska" - "--enable-demuxer=m4v" - "--enable-demuxer=mp3" - "--enable-demuxer=ogg" - "--enable-demuxer=flac" - "--enable-demuxer=wav" - "--enable-demuxer=ac3" - "--enable-demuxer=g722" - "--enable-demuxer=g723_1" - "--enable-demuxer=g726" - "--enable-demuxer=g726le" - "--enable-demuxer=pcm_mulaw" - "--enable-demuxer=pcm_alaw" - "--enable-demuxer=pcm_s16be" - "--enable-demuxer=pcm_s16le" - "--enable-demuxer=h263" - "--enable-demuxer=h264" - "--enable-demuxer=hevc" + ;; Enable muxers/demuxers. + "--disable-demuxers" + "--disable-muxers" + "--enable-muxer=rtp" + "--enable-muxer=g722" + "--enable-muxer=g723_1" + "--enable-muxer=g726" + "--enable-muxer=g726le" + "--enable-muxer=h263" + "--enable-muxer=h264" + "--enable-muxer=hevc" + "--enable-muxer=matroska" + "--enable-muxer=webm" + "--enable-muxer=ogg" + "--enable-muxer=pcm_s16be" + "--enable-muxer=pcm_s16le" + "--enable-muxer=wav" + "--enable-demuxer=rtp" + "--enable-demuxer=mjpeg" + "--enable-demuxer=mjpeg_2000" + "--enable-demuxer=mpegvideo" + "--enable-demuxer=gif" + "--enable-demuxer=image_jpeg_pipe" + "--enable-demuxer=image_png_pipe" + "--enable-demuxer=image_webp_pipe" + "--enable-demuxer=matroska" + "--enable-demuxer=m4v" + "--enable-demuxer=mp3" + "--enable-demuxer=ogg" + "--enable-demuxer=flac" + "--enable-demuxer=wav" + "--enable-demuxer=ac3" + "--enable-demuxer=g722" + "--enable-demuxer=g723_1" + "--enable-demuxer=g726" + "--enable-demuxer=g726le" + "--enable-demuxer=pcm_mulaw" + "--enable-demuxer=pcm_alaw" + "--enable-demuxer=pcm_s16be" + "--enable-demuxer=pcm_s16le" + "--enable-demuxer=h263" + "--enable-demuxer=h264" + "--enable-demuxer=hevc" - ;; Enable parsers. - "--enable-parser=h263" - "--enable-parser=h264" - "--enable-parser=hevc" - "--enable-parser=mpeg4video" - "--enable-parser=vp8" - "--enable-parser=vp9" - "--enable-parser=opus" + ;; Enable parsers. + "--enable-parser=h263" + "--enable-parser=h264" + "--enable-parser=hevc" + "--enable-parser=mpeg4video" + "--enable-parser=vp8" + "--enable-parser=vp9" + "--enable-parser=opus" - ;; Encoders/decoders. - "--enable-encoder=adpcm_g722" - "--enable-decoder=adpcm_g722" - "--enable-encoder=adpcm_g726" - "--enable-decoder=adpcm_g726" - "--enable-encoder=adpcm_g726le" - "--enable-decoder=adpcm_g726le" - "--enable-decoder=g729" - "--enable-encoder=g723_1" - "--enable-decoder=g723_1" - "--enable-encoder=rawvideo" - "--enable-decoder=rawvideo" - "--enable-encoder=libx264" - "--enable-decoder=h264" - "--enable-encoder=pcm_alaw" - "--enable-decoder=pcm_alaw" - "--enable-encoder=pcm_mulaw" - "--enable-decoder=pcm_mulaw" - "--enable-encoder=mpeg4" - "--enable-decoder=mpeg4" - "--enable-encoder=libvpx_vp8" - "--enable-decoder=vp8" - "--enable-decoder=vp9" - "--enable-encoder=h263" - "--enable-encoder=h263p" - "--enable-decoder=h263" - "--enable-encoder=mjpeg" - "--enable-decoder=mjpeg" - "--enable-decoder=mjpegb" - "--enable-libspeex" - "--enable-libopus" - "--enable-libvpx" - "--enable-libx264" - "--enable-encoder=libspeex" - "--enable-decoder=libspeex" - "--enable-encoder=libopus" - "--enable-decoder=libopus" + ;; Encoders/decoders. + "--enable-encoder=adpcm_g722" + "--enable-decoder=adpcm_g722" + "--enable-encoder=adpcm_g726" + "--enable-decoder=adpcm_g726" + "--enable-encoder=adpcm_g726le" + "--enable-decoder=adpcm_g726le" + "--enable-decoder=g729" + "--enable-encoder=g723_1" + "--enable-decoder=g723_1" + "--enable-encoder=rawvideo" + "--enable-decoder=rawvideo" + "--enable-encoder=libx264" + "--enable-decoder=h264" + "--enable-encoder=pcm_alaw" + "--enable-decoder=pcm_alaw" + "--enable-encoder=pcm_mulaw" + "--enable-decoder=pcm_mulaw" + "--enable-encoder=mpeg4" + "--enable-decoder=mpeg4" + "--enable-encoder=libvpx_vp8" + "--enable-decoder=vp8" + "--enable-decoder=vp9" + "--enable-encoder=h263" + "--enable-encoder=h263p" + "--enable-decoder=h263" + "--enable-encoder=mjpeg" + "--enable-decoder=mjpeg" + "--enable-decoder=mjpegb" + "--enable-libspeex" + "--enable-libopus" + "--enable-libvpx" + "--enable-libx264" + "--enable-encoder=libspeex" + "--enable-decoder=libspeex" + "--enable-encoder=libopus" + "--enable-decoder=libopus" - ;; Encoders/decoders for ringtones and audio streaming. - "--enable-decoder=flac" - "--enable-decoder=vorbis" - "--enable-decoder=aac" - "--enable-decoder=ac3" - "--enable-decoder=eac3" - "--enable-decoder=mp3" - "--enable-decoder=pcm_u24le" - "--enable-decoder=pcm_u32le" - "--enable-decoder=pcm_u8" - "--enable-decoder=pcm_f16le" - "--enable-decoder=pcm_f32le" - "--enable-decoder=pcm_f64le" - "--enable-decoder=pcm_s16le" - "--enable-decoder=pcm_s24le" - "--enable-decoder=pcm_s32le" - "--enable-decoder=pcm_s64le" - "--enable-decoder=pcm_u16le" - "--enable-encoder=pcm_u8" - "--enable-encoder=pcm_f32le" - "--enable-encoder=pcm_f64le" - "--enable-encoder=pcm_s16le" - "--enable-encoder=pcm_s32le" - "--enable-encoder=pcm_s64le" + ;; Encoders/decoders for ringtones and audio streaming. + "--enable-decoder=flac" + "--enable-decoder=vorbis" + "--enable-decoder=aac" + "--enable-decoder=ac3" + "--enable-decoder=eac3" + "--enable-decoder=mp3" + "--enable-decoder=pcm_u24le" + "--enable-decoder=pcm_u32le" + "--enable-decoder=pcm_u8" + "--enable-decoder=pcm_f16le" + "--enable-decoder=pcm_f32le" + "--enable-decoder=pcm_f64le" + "--enable-decoder=pcm_s16le" + "--enable-decoder=pcm_s24le" + "--enable-decoder=pcm_s32le" + "--enable-decoder=pcm_s64le" + "--enable-decoder=pcm_u16le" + "--enable-encoder=pcm_u8" + "--enable-encoder=pcm_f32le" + "--enable-encoder=pcm_f64le" + "--enable-encoder=pcm_s16le" + "--enable-encoder=pcm_s32le" + "--enable-encoder=pcm_s64le" - ;; Encoders/decoders for images. - "--enable-encoder=gif" - "--enable-decoder=gif" - "--enable-encoder=jpegls" - "--enable-decoder=jpegls" - "--enable-encoder=ljpeg" - "--enable-decoder=jpeg2000" - "--enable-encoder=png" - "--enable-decoder=png" - "--enable-encoder=bmp" - "--enable-decoder=bmp" - "--enable-encoder=tiff" - "--enable-decoder=tiff" + ;; Encoders/decoders for images. + "--enable-encoder=gif" + "--enable-decoder=gif" + "--enable-encoder=jpegls" + "--enable-decoder=jpegls" + "--enable-encoder=ljpeg" + "--enable-decoder=jpeg2000" + "--enable-encoder=png" + "--enable-decoder=png" + "--enable-encoder=bmp" + "--enable-decoder=bmp" + "--enable-encoder=tiff" + "--enable-decoder=tiff" - ;; Filters. - "--enable-filter=scale" - "--enable-filter=overlay" - "--enable-filter=amix" - "--enable-filter=amerge" - "--enable-filter=aresample" - "--enable-filter=format" - "--enable-filter=aformat" - "--enable-filter=fps" - "--enable-filter=transpose" - "--enable-filter=pad" + ;; Filters. + "--enable-filter=scale" + "--enable-filter=overlay" + "--enable-filter=amix" + "--enable-filter=amerge" + "--enable-filter=aresample" + "--enable-filter=format" + "--enable-filter=aformat" + "--enable-filter=fps" + "--enable-filter=transpose" + "--enable-filter=pad" - ;; Decoders for ringtones and audio streaming. - "--enable-decoder=pcm_s16be" - "--enable-decoder=pcm_s16be_planar" - "--enable-decoder=pcm_s16le_planar" - "--enable-decoder=pcm_s24be" - "--enable-decoder=pcm_s24le_planar" - "--enable-decoder=pcm_s32be" - "--enable-decoder=pcm_s32le_planar" - "--enable-decoder=pcm_s64be" - "--enable-decoder=pcm_s8" - "--enable-decoder=pcm_s8_planar" - "--enable-decoder=pcm_u16be" + ;; Decoders for ringtones and audio streaming. + "--enable-decoder=pcm_s16be" + "--enable-decoder=pcm_s16be_planar" + "--enable-decoder=pcm_s16le_planar" + "--enable-decoder=pcm_s24be" + "--enable-decoder=pcm_s24le_planar" + "--enable-decoder=pcm_s32be" + "--enable-decoder=pcm_s32le_planar" + "--enable-decoder=pcm_s64be" + "--enable-decoder=pcm_s8" + "--enable-decoder=pcm_s8_planar" + "--enable-decoder=pcm_u16be" - ;; More filters. - "--enable-filter=afir" - "--enable-filter=split" - "--enable-filter=drawbox" - "--enable-filter=drawtext" - "--enable-filter=rotate" - "--enable-filter=loop" - "--enable-filter=setpts" - "--enable-filter=movie" - "--enable-filter=alphamerge" - "--enable-filter=boxblur" - "--enable-filter=lut" - "--enable-filter=negate" - "--enable-filter=colorkey" - "--enable-filter=transpose" + ;; More filters. + "--enable-filter=afir" + "--enable-filter=split" + "--enable-filter=drawbox" + "--enable-filter=drawtext" + "--enable-filter=rotate" + "--enable-filter=loop" + "--enable-filter=setpts" + "--enable-filter=movie" + "--enable-filter=alphamerge" + "--enable-filter=boxblur" + "--enable-filter=lut" + "--enable-filter=negate" + "--enable-filter=colorkey" + "--enable-filter=transpose" - "--enable-libfreetype" + "--enable-libfreetype" - #$@(if (string-contains (%current-system) "linux") - ;; Leave out the '--enable-cuvid' ... '--enable-encoder=hevc_nvenc' - ;; flags, as there's no support for ffnvcodec in Guix; - ;; it would not work with Mesa anyway. - '("--enable-pic" - "--extra-cxxflags=-fPIC" - "--extra-cflags=-fPIC" - "--target-os=linux" - "--enable-indev=v4l2" - "--enable-indev=xcbgrab" - "--enable-vdpau" - "--enable-hwaccel=h264_vdpau" - "--enable-hwaccel=mpeg4_vdpau" - "--enable-vaapi" - "--enable-hwaccel=h264_vaapi" - "--enable-hwaccel=mpeg4_vaapi" - "--enable-hwaccel=h263_vaapi" - "--enable-hwaccel=vp8_vaapi" - "--enable-hwaccel=mjpeg_vaapi" - "--enable-hwaccel=hevc_vaapi" - "--enable-encoder=h264_vaapi" - "--enable-encoder=vp8_vaapi" - "--enable-encoder=mjpeg_vaapi" - "--enable-encoder=hevc_vaapi") - '()))))) - (inputs (modify-inputs (package-inputs ffmpeg) - (append pipewire))))) + #$@(if (string-contains (%current-system) "linux") + ;; Leave out the '--enable-cuvid' ... '--enable-encoder=hevc_nvenc' + ;; flags, as there's no support for ffnvcodec in Guix; + ;; it would not work with Mesa anyway. + '("--enable-pic" + "--extra-cxxflags=-fPIC" + "--extra-cflags=-fPIC" + "--target-os=linux" + "--enable-indev=v4l2" + "--enable-indev=xcbgrab" + "--enable-vdpau" + "--enable-hwaccel=h264_vdpau" + "--enable-hwaccel=mpeg4_vdpau" + "--enable-vaapi" + "--enable-hwaccel=h264_vaapi" + "--enable-hwaccel=mpeg4_vaapi" + "--enable-hwaccel=h263_vaapi" + "--enable-hwaccel=vp8_vaapi" + "--enable-hwaccel=mjpeg_vaapi" + "--enable-hwaccel=hevc_vaapi" + "--enable-encoder=h264_vaapi" + "--enable-encoder=vp8_vaapi" + "--enable-encoder=mjpeg_vaapi" + "--enable-encoder=hevc_vaapi") + '()))))) + (inputs (modify-inputs (package-inputs ffmpeg) + (append pipewire)))))) (define-public ffmpegthumbnailer (package @@ -2685,7 +2706,10 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0w0qk61ll0mddbkiwavqfx048sacyvp6fwglms58ypw869rh7iy7")))) + (base32 "0w0qk61ll0mddbkiwavqfx048sacyvp6fwglms58ypw869rh7iy7")) + (patches + (search-patches + "mpv-0.40.0-fix-ffmpeg-8.0.patch")))) (build-system meson-build-system) (arguments (list @@ -2994,7 +3018,7 @@ To load this plugin, specify the following option when starting mpv: (file-name (git-file-name name version)))) (build-system meson-build-system) (inputs - (list mpv libdisplay-info wlroots)) + (list mpv libdisplay-info)) (native-inputs (list pkg-config cmake-minimal)) (home-page "https://github.com/GhostNaN/mpvpaper") @@ -3138,7 +3162,7 @@ video streaming services of the Finnish national broadcasting company Yle.") (define-public yt-dlp (package (name "yt-dlp") - (version "2025.09.23") + (version "2025.09.26") (source (origin (method git-fetch) @@ -3150,7 +3174,7 @@ video streaming services of the Finnish national broadcasting company Yle.") (snippet #~(substitute* "pyproject.toml" (("^.*Programming Language :: Python :: 3\\.13.*$") ""))) (sha256 - (base32 "0x6yjvv0wwyx10bpk2s06k8amah4q6v1g2plwrng1ap2jza539x6")))) + (base32 "0j6l2zskmsvqk8h3ialbymk75i0bfzn2qmc2gk6s1ybhnpryrv7y")))) (build-system pyproject-build-system) (arguments (list @@ -3172,7 +3196,7 @@ video streaming services of the Finnish national broadcasting company Yle.") "'\n"))))) (add-before 'build 'build-generated-files (lambda* (#:key inputs #:allow-other-keys) - (if (search-input-file inputs "bin/pandoc") + (if (which "pandoc") (invoke "make" "PYTHON=python" "yt-dlp" diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index a06082d9503..dc0a1bcc331 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -1516,7 +1516,8 @@ using simplestreams index files as the publishing mechanism version ".tar.xz")) (sha256 (base32 - "1dn6pzv0gzkxrjvi60cdzdmyxqlcsvinbrbds91xm4v7wbn5g1dd")))) + "1dn6pzv0gzkxrjvi60cdzdmyxqlcsvinbrbds91xm4v7wbn5g1dd")) + (patches (search-patches "libosinfo-libxml2-fix.patch")))) (build-system meson-build-system) (arguments (list @@ -1775,7 +1776,7 @@ to integrate other virtualization mechanisms if needed.") `(,glib "bin") vala)) (propagated-inputs ;; ‘Required:’ by the installed .pc files. - (list glib libvirt libxml2-next gobject-introspection)) + (list glib libvirt libxml2 gobject-introspection)) (home-page "https://libvirt.org") (synopsis "GLib wrapper around libvirt") (description "libvirt-glib wraps the libvirt library to provide a @@ -1901,8 +1902,8 @@ virtualization library.") libosinfo libvirt libvirt-glib + libxml2 python-minimal - python-libxml2 python-libvirt python-pycairo python-pygobject diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index f961feab3de..6d07462f4d3 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -771,7 +771,7 @@ the user specifically asks to proxy, so the @dfn{VPN} interface no longer "etc/vpnc/vpnc-script"))))) (native-inputs (list gettext-minimal pkg-config)) (inputs (list lz4 vpnc-scripts)) - (propagated-inputs (list libxml2-next gnutls zlib)) + (propagated-inputs (list libxml2 gnutls zlib)) (synopsis "Client for Cisco VPN") (description "OpenConnect is a client for Cisco's AnyConnect SSL VPN, which is diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm index 53e6e9d4b1d..5ab1feb4658 100644 --- a/gnu/packages/vulkan.scm +++ b/gnu/packages/vulkan.scm @@ -9,6 +9,8 @@ ;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2024 James Smith ;;; Copyright © 2025 John Kehayias +;;; Copyright © 2025 Maxim Cournoyer +;;; Copyright © 2025 Cayetano Santos ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,6 +46,7 @@ #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) #:use-module (gnu packages gl) + #:use-module (gnu packages libffi) #:use-module (gnu packages llvm) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -53,7 +56,7 @@ (define-public spirv-headers (package (name "spirv-headers") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) @@ -62,7 +65,7 @@ (commit (string-append "vulkan-sdk-" version)))) (sha256 (base32 - "15l35w60sbw1i3a48057hvpvldf0lrlfmkz73bp456g2jn5vln23")) + "11nsfr6z11dx6ccyi9anz2iycxr9i06zl8dk4pdllf3dvk5wq61d")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -85,7 +88,7 @@ and for the GLSL.std.450 extended instruction set. (define-public spirv-tools (package (name "spirv-tools") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) @@ -93,19 +96,21 @@ and for the GLSL.std.450 extended instruction set. (url "https://github.com/KhronosGroup/SPIRV-Tools") (commit (string-append "vulkan-sdk-" version)))) (sha256 - (base32 "1ykrsd3fl8sx9sq8pc551swacqnl0xwv3p0l1ppdpw2h2mvz8syr")) + (base32 "015xymrzch87f3xkzx9rvlglqp39zx4vphjb2dkl5w6qcpz5s1y8")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments - `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON" - ;; Some packages like mpv fail to link - ;; when the static libraries are built. - "-DSPIRV_TOOLS_BUILD_STATIC=OFF" - (string-append - "-DSPIRV-Headers_SOURCE_DIR=" - (assoc-ref %build-inputs "spirv-headers"))))) + (list + #:configure-flags + #~(list "-DBUILD_SHARED_LIBS=ON" + ;; Some packages like mpv fail to link + ;; when the static libraries are built. + "-DSPIRV_TOOLS_BUILD_STATIC=OFF" + (string-append + "-DSPIRV-Headers_SOURCE_DIR=" + (assoc-ref %build-inputs "spirv-headers"))))) (inputs (list spirv-headers)) - (native-inputs (list pkg-config python)) + (native-inputs (list pkg-config python-minimal)) (home-page "https://github.com/KhronosGroup/SPIRV-Tools") (synopsis "API and commands for processing SPIR-V modules") (description @@ -117,7 +122,7 @@ parser,disassembler, validator, and optimizer for SPIR-V.") (define-public spirv-cross (package (name "spirv-cross") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) @@ -125,34 +130,35 @@ parser,disassembler, validator, and optimizer for SPIR-V.") (url "https://github.com/KhronosGroup/SPIRV-Cross") (commit (string-append "vulkan-sdk-" version)))) (sha256 - (base32 "1sckwqz67mh48zypgr1r9x101mcq1dlkh8sxi341ynrxzjk8rm3j")) + (base32 "13fci6z74bxm8pbb3plchx31r04yzb4g11dbzcw3337dsgdllqma")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments - `(;; Disable tests for now due to upstream issue hit when running - ;; update-reference-shaders phase: - ;; . - #:tests? #f - #:configure-flags - (list "-DSPIRV_CROSS_SHARED=YES") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests-to-find-deps - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "CMakeLists.txt" - (("\\$\\{CMAKE_(.*)_DIR\\}/external/glslang(.*)/bin") - (string-append (assoc-ref inputs "glslang") "/bin"))) - (substitute* "CMakeLists.txt" - (("\\$\\{CMAKE_(.*)_DIR\\}/external/spirv-tools(.*)/bin") - (string-append (assoc-ref inputs "spirv-tools") "/bin"))))) - (add-before 'check 'update-reference-shaders - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (with-directory-excursion "../source" - (invoke "./update_test_shaders.sh")))))))) + (list + ;; Disable tests for now due to upstream issue hit when running + ;; update-reference-shaders phase: + ;; . + #:tests? #f + #:configure-flags + #~(list "-DSPIRV_CROSS_SHARED=YES") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-tests-to-find-deps + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("\\$\\{CMAKE_(.*)_DIR\\}/external/glslang(.*)/bin") + (string-append (assoc-ref inputs "glslang") "/bin"))) + (substitute* "CMakeLists.txt" + (("\\$\\{CMAKE_(.*)_DIR\\}/external/spirv-tools(.*)/bin") + (string-append (assoc-ref inputs "spirv-tools") "/bin"))))) + (add-before 'check 'update-reference-shaders + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "../source" + (invoke "./update_test_shaders.sh")))))))) (inputs (list glslang spirv-headers spirv-tools)) - (native-inputs (list python)) + (native-inputs (list python-minimal)) (home-page "https://github.com/KhronosGroup/SPIRV-Cross") (synopsis "Parser for and converter of SPIR-V to other shader languages") (description @@ -164,7 +170,7 @@ SPIR-V, aiming to emit GLSL or MSL that looks like human-written code.") (define-public spirv-llvm-translator (package (name "spirv-llvm-translator") - (version "18.1.0") + (version "18.1.10") (source (origin (method git-fetch) @@ -173,7 +179,7 @@ SPIR-V, aiming to emit GLSL or MSL that looks like human-written code.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0yfz02mlnf4ffn67g2ms0w8f7jgdsn438w2dbxd5mvcf5dk2x27b")))) + (base32 "11gmb1kw6j90hwcf6wxjz4pki653lyd8v8kphk7jq67gvw8dkiwy")))) (build-system cmake-build-system) (arguments ;; The test suite is known to fail on several architectures: @@ -201,7 +207,14 @@ SPIR-V, aiming to emit GLSL or MSL that looks like human-written code.") (apply (assoc-ref gnu:%standard-phases 'check) #:test-target "test" args)))))) (inputs (list llvm-18)) - (native-inputs (list clang-18 llvm-18 python-lit spirv-headers)) + (native-inputs + (list + clang-18 + libffi + llvm-18 + pkg-config + python-lit + spirv-headers)) (home-page "https://github.com/KhronosGroup/SPIRV-LLVM-Translator") (synopsis "Bi-directional translation between SPIR-V and LLVM IR") (description @@ -212,7 +225,7 @@ translation between LLVM IR and SPIR-V.") (define-public glslang (package (name "glslang") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) @@ -221,36 +234,39 @@ translation between LLVM IR and SPIR-V.") (commit (string-append "vulkan-sdk-" version)))) (sha256 (base32 - "0kzzjh2dxzkznp75jk9sl4fjjgdy5s6xr8vha9av6cvi3jxm2i8y")) + "1b0zsrv12b34q0wp9g85x11kpd5kjvx4lbn7xv8b4szfpwdkxxxh")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments - `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON" - "-DALLOW_EXTERNAL_SPIRV_TOOLS=ON" - ,@(if (target-riscv64?) - `("-DCMAKE_EXE_LINKER_FLAGS=-latomic") - '())) - #:phases (modify-phases %standard-phases - ,@(if (target-ppc32?) - `((add-after 'unpack 'skip-failing-test - (lambda _ - ;; TODO: Figure out why this test fails. - (substitute* "Test/runtests" - ((".*remap\\.invalid" all) - (string-append "# " all)))))) - '()) - (replace 'check - (lambda* (#:key tests? parallel-tests? #:allow-other-keys) - (when tests? - (invoke "ctest" - "-j" (if parallel-tests? - (number->string (parallel-job-count)) - "1") - "--rerun-failed" - "--output-on-failure"))))))) + (list + #:configure-flags + #~(list "-DBUILD_SHARED_LIBS=ON" + "-DALLOW_EXTERNAL_SPIRV_TOOLS=ON" + #$@(if (target-riscv64?) + `("-DCMAKE_EXE_LINKER_FLAGS=-latomic") + '())) + #:phases + #~(modify-phases %standard-phases + #$@(if (target-ppc32?) + `((add-after 'unpack 'skip-failing-test + (lambda _ + ;; TODO: Figure out why this test fails. + (substitute* "Test/runtests" + ((".*remap\\.invalid" all) + (string-append "# " all)))))) + '()) + (replace 'check + (lambda* (#:key tests? parallel-tests? #:allow-other-keys) + (when tests? + (invoke "ctest" + "-j" (if parallel-tests? + (number->string (parallel-job-count)) + "1") + "--rerun-failed" + "--output-on-failure"))))))) (inputs (list spirv-tools)) (native-inputs - (list pkg-config python)) + (list pkg-config python-minimal)) (home-page "https://github.com/KhronosGroup/glslang") (synopsis "OpenGL and OpenGL ES shader front end and validator") (description @@ -317,7 +333,7 @@ Enhanced Subpixel Morphological Anti-Aliasing (define-public vulkan-headers/no-loader (package (name "vulkan-headers") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) @@ -327,7 +343,7 @@ Enhanced Subpixel Morphological Anti-Aliasing (file-name (git-file-name name version)) (sha256 (base32 - "0ncj4gqb5zmkgmd205frrq8rxxdqlissqpj2fq3wxkdbdyx7pwid")))) + "1kamn5hw5lpw4yxyri4mlrryzhn33bnnrqby0yxla45z5f5f6fb3")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; No tests. @@ -361,7 +377,7 @@ Enhanced Subpixel Morphological Anti-Aliasing (define-public vulkan-loader (package (name "vulkan-loader") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) @@ -371,7 +387,7 @@ Enhanced Subpixel Morphological Anti-Aliasing (file-name (git-file-name name version)) (sha256 (base32 - "1y6wqc8adzg7ndmbr95nzhcxf93qsfndfdnsym5pkbjfx454151d")))) + "0fbpypznznvwkqgf2zw85xdpbiq92j95xyldhnjk94lia6bs4klb")))) (build-system cmake-build-system) (arguments (list @@ -387,31 +403,33 @@ Enhanced Subpixel Morphological Anti-Aliasing %build-inputs "include/vulkan")))) #$@(if (%current-target-system) #~("-DBUILD_TESTS=OFF" "-DUSE_GAS=OFF" - (string-append "-DPKG_CONFIG_EXECUTABLE=" - (search-input-file - %build-inputs - (string-append "bin/" #$(pkg-config-for-target))))) + (string-append + "-DPKG_CONFIG_EXECUTABLE=" + (search-input-file + %build-inputs + (string-append "bin/" #$(pkg-config-for-target))))) #~("-DBUILD_TESTS=ON"))) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-pkg-config-file - (lambda* (#:key inputs #:allow-other-keys) - (let ((vulkan-headers (dirname (search-input-directory - inputs "include/vulkan")))) - ;; Ensure the pkg-config file refers to vulkan-headers. - (substitute* "loader/vulkan.pc.in" - (("^includedir=.*") - (string-append "includedir=" vulkan-headers "\n")))))) - (add-after 'unpack 'use-system-googletest - (lambda _ - (substitute* "tests/CMakeLists.txt" - (((string-append "message\\(FATAL_ERROR \"Could not " - "find googletest directory. See BUILD.md\"\\)")) - "find_package(GTest REQUIRED)")) - ;; Use the namespaced variable. - (substitute* "tests/framework/CMakeLists.txt" - (("PUBLIC gtest ") - "PUBLIC GTest::gtest "))))))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-pkg-config-file + (lambda* (#:key inputs #:allow-other-keys) + (let ((vulkan-headers (dirname (search-input-directory + inputs "include/vulkan")))) + ;; Ensure the pkg-config file refers to vulkan-headers. + (substitute* "loader/vulkan.pc.in" + (("^includedir=.*") + (string-append "includedir=" vulkan-headers "\n")))))) + (add-after 'unpack 'use-system-googletest + (lambda _ + (substitute* "tests/CMakeLists.txt" + (((string-append + "message\\(FATAL_ERROR \"Could not " + "find googletest directory. See BUILD.md\"\\)")) + "find_package(GTest REQUIRED)")) + ;; Use the namespaced variable. + (substitute* "tests/framework/CMakeLists.txt" + (("PUBLIC gtest ") + "PUBLIC GTest::gtest "))))))) (native-inputs (list googletest libxrandr @@ -440,50 +458,56 @@ and the ICD.") license:bsd-3)))) (define-public vulkan-tools - (package - (name "vulkan-tools") - (version "1.4.309.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/KhronosGroup/Vulkan-Tools") - (commit (string-append "vulkan-sdk-" version)))) - (file-name (git-file-name name version)) - (modules '((guix build utils))) - (snippet #~(substitute* "tests/icd/mock_icd_tests.cpp" - ;; Disable driver info test since it relies on git branch info - (("ASSERT_EQ\\(std::string\\(driver_properties\\.driverInfo\\)") - "// ASSERT_EQ(std::string(driver_properties.driverInfo)"))) - (sha256 - (base32 - "0ywvvkra29y2cvw8i9laf4skn6cl7phrwshcc7z9dljb3il87cym")))) - (build-system cmake-build-system) - (inputs - (list glslang libxrandr vulkan-loader wayland wayland-protocols)) - (native-inputs - (list googletest pkg-config python vulkan-volk vulkan-headers)) - (arguments - `(#:configure-flags (list "-DBUILD_TESTS=ON") - #:phases (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "./tests/vulkan_tools_tests"))))))) - (home-page - "https://github.com/KhronosGroup/Vulkan-Tools") - (synopsis "Tools and utilities for Vulkan") - (description - "Vulkan-Tools provides tools and utilities that can assist development by + ;; Required to fix an issue. See: + ;; https://github.com/KhronosGroup/Vulkan-Tools/issues/1130 + (let ((commit "105d6c1fede00c3a9055e5a531ebf3d99bac406e") + (revision "1")) + (package + (name "vulkan-tools") + (version (git-version "1.4.321.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KhronosGroup/Vulkan-Tools") + (commit commit))) + (file-name (git-file-name name version)) + (modules '((guix build utils))) + (snippet + #~(substitute* "tests/icd/mock_icd_tests.cpp" + ;; Disable driver info test since it relies on git branch info + (("ASSERT_EQ\\(std::string\\(driver_properties\\.driverInfo\\)") + "// ASSERT_EQ(std::string(driver_properties.driverInfo)"))) + (sha256 + (base32 + "1dphpf4v0kip2b0vhhwb136gjjmgxc64gg26sg3wpg6nnwakpznc")))) + (build-system cmake-build-system) + (inputs + (list glslang libxrandr vulkan-loader wayland wayland-protocols)) + (native-inputs + (list googletest pkg-config python vulkan-volk vulkan-headers)) + (arguments + (list + #:configure-flags #~(list "-DBUILD_TESTS=ON") + #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "./tests/vulkan_tools_tests"))))))) + (home-page + "https://github.com/KhronosGroup/Vulkan-Tools") + (synopsis "Tools and utilities for Vulkan") + (description + "Vulkan-Tools provides tools and utilities that can assist development by enabling developers to verify their applications correct use of the Vulkan API.") - (license (list license:asl2.0)))) ;LICENSE.txt + (license (list license:asl2.0))))) ;LICENSE.txt (define-public shaderc (package (name "shaderc") ;; shaderc doesn't follow the versioning scheme of vulkan sdk - (version "2025.1") + (version "2025.3") (source (origin (method git-fetch) @@ -493,44 +517,44 @@ API.") (file-name (git-file-name name version)) (sha256 (base32 - "0hbsvyyy5fzgal83z8kx4a3x9d2fnd2fcs53l3s9n0pyybip3i5j")))) + "0w1mj5b3n6kp0brqindb7fppvllzlywkdk1zglkbj3bw8k0795mb")))) (build-system cmake-build-system) (arguments - `(;; FIXME: Skip most of the tests, because enabling system gtest breaks - ;; the build: . - #:configure-flags - (list "-DSHADERC_SKIP_TESTS=ON" - ;; The two flags are copied from: - ;; https://sdk.lunarg.com/sdk/download/1.3.280.0/linux/config.json - "-DSHADERC_ENABLE_SHARED_CRT=ON" - "-DSHADERC_SKIP_COPYRIGHT_CHECK=ON" - "-DPYTHON_EXECUTABLE=python3" - ;; Note: despite the name, this just specifies the headers. - (string-append "-Dglslang_SOURCE_DIR=" - (assoc-ref %build-inputs "glslang") "/include/glslang")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'do-not-look-for-bundled-sources - (lambda _ - (substitute* "CMakeLists.txt" - (("add_subdirectory\\(third_party\\)") - "")) - - (substitute* "glslc/test/CMakeLists.txt" - (("\\$") - (which "spirv-dis"))) - - ;; Do not attempt to use git to encode version information. - (substitute* "glslc/CMakeLists.txt" - (("add_dependencies\\(glslc_exe build-version\\)") - "")) - (call-with-output-file "glslc/src/build-version.inc" - (lambda (port) - (format port "\"~a\"\n\"~a\"\n\"~a\"~%" - ,version - ,(package-version spirv-tools) - ,(package-version glslang)))) - #t))))) + (list + #:tests? #f ; We don't build the tests, see below. + ;; FIXME: Skip most of the tests, because enabling system gtest breaks + ;; the build: . + #:configure-flags + #~(list "-DSHADERC_SKIP_TESTS=ON" + ;; The two flags are copied from: + ;; https://sdk.lunarg.com/sdk/download/1.3.280.0/linux/config.json + "-DSHADERC_ENABLE_SHARED_CRT=ON" + "-DSHADERC_SKIP_COPYRIGHT_CHECK=ON" + "-DPYTHON_EXECUTABLE=python3" + ;; Note: despite the name, this just specifies the headers. + (string-append "-Dglslang_SOURCE_DIR=" + #$(this-package-input "glslang") + "/include/glslang")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'do-not-look-for-bundled-sources + (lambda _ + (substitute* "CMakeLists.txt" + (("add_subdirectory\\(third_party\\)") + "")) + (substitute* "glslc/test/CMakeLists.txt" + (("\\$") + (which "spirv-dis"))) + ;; Do not attempt to use git to encode version information. + (substitute* "glslc/CMakeLists.txt" + (("add_dependencies\\(glslc_exe build-version\\)") + "")) + (call-with-output-file "glslc/src/build-version.inc" + (lambda (port) + (format port "\"~a\"\n\"~a\"\n\"~a\"~%" + #$version + #$(package-version spirv-tools) + #$(package-version glslang))))))))) (inputs (list glslang spirv-headers spirv-tools)) (native-inputs @@ -544,56 +568,57 @@ shader compilation.") (define-public vkd3d (let ((commit "56cd4a94d541707959ce7677af6d1a34739e5579")) ; Release 1.2. (package - (name "vkd3d") - (version "1.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://source.winehq.org/git/vkd3d.git") - (commit commit))) - (sha256 - (base32 - "1n4a622drgnprvz5hjxzyzcsg2lp5rlf1sajki2vzf5gsx6fdpk8")) - (file-name (string-append name "-" version "-checkout")))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags '("--with-spirv-tools") - #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-for-new-vulkan - (lambda _ - ;; Mimic upstream commit 8e7bf8a5c3e0047 for - ;; compatibility with newer vulkan-headers. - (substitute* "libs/vkd3d/vkd3d_private.h" - (("VK_PIPELINE_BIND_POINT_RANGE_SIZE") - "2u")) - #t))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("gettext" ,gettext-minimal) - ("libtool" ,libtool) - ("pkg-config" ,pkg-config))) - (inputs - (list libx11 - libxcb - spirv-headers - spirv-tools - vulkan-headers - vulkan-loader - wine-minimal ; Needed for 'widl'. - xcb-util - xcb-util-keysyms - xcb-util-wm)) - (home-page "https://source.winehq.org/git/vkd3d.git/") - (synopsis "Direct3D 12 to Vulkan translation library") - (description "vkd3d is a library for translating Direct3D 12 to Vulkan.") - (license license:lgpl2.1)))) + (name "vkd3d") + (version "1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://source.winehq.org/git/vkd3d.git") + (commit commit))) + (sha256 + (base32 + "1n4a622drgnprvz5hjxzyzcsg2lp5rlf1sajki2vzf5gsx6fdpk8")) + (file-name (string-append name "-" version "-checkout")))) + (build-system gnu-build-system) + (arguments + (list + #:configure-flags #~(list "--with-spirv-tools") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-for-new-vulkan + (lambda _ + ;; Mimic upstream commit 8e7bf8a5c3e0047 for + ;; compatibility with newer vulkan-headers. + (substitute* "libs/vkd3d/vkd3d_private.h" + (("VK_PIPELINE_BIND_POINT_RANGE_SIZE") + "2u"))))))) + (native-inputs + (list autoconf + automake + gettext-minimal + libtool + pkg-config)) + (inputs + (list libx11 + libxcb + spirv-headers + spirv-tools + vulkan-headers + vulkan-loader + wine-minimal ; Needed for 'widl'. + xcb-util + xcb-util-keysyms + xcb-util-wm)) + (home-page "https://source.winehq.org/git/vkd3d.git/") + (synopsis "Direct3D 12 to Vulkan translation library") + (description "vkd3d is a library for translating Direct3D 12 to Vulkan.") + (license license:lgpl2.1)))) (define-public vulkan-validationlayers (package (name "vulkan-validationlayers") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) (uri (git-reference @@ -608,7 +633,7 @@ shader compilation.") ""))) (sha256 (base32 - "1dvgbgfxcp3ypy06j5m561j1gag0hk40zqd477cdv1kizv6i7nsk")))) + "1lmkcgz80386304s6kr4fi825r5004305fhvfc7gmsqdih0bqcv9")))) (build-system cmake-build-system) (inputs (list glslang libxrandr @@ -619,39 +644,43 @@ shader compilation.") vulkan-loader vulkan-utility-libraries wayland)) - (native-inputs (list googletest pkg-config python spirv-headers vulkan-headers)) + (native-inputs + (list googletest pkg-config python spirv-headers vulkan-headers)) (arguments (list #:tests? #f ; tests crash on some hardware (various upstream issues) #:configure-flags #~(list "-DBUILD_TESTS=ON") - #:phases #~(modify-phases %standard-phases - (add-after 'install 'set-layer-path-in-manifest - (lambda _ - (let ((manifest (string-append #$output - "/share/vulkan/explicit_layer.d" - "/VkLayer_khronos_validation.json"))) - (substitute* manifest - (("\"libVkLayer_khronos_validation.so\"") - (string-append "\"" #$output - "/lib/libVkLayer_khronos_validation.so\"")))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "VK_LAYER_PATH" - (string-append (getcwd) "/layers")) - (setenv "LD_LIBRARY_PATH" - (string-append #$(this-package-input - "vulkan-loader") "/lib")) - (setenv "MESA_SHADER_CACHE_DIR" - (string-append (getcwd) "/shader-cache")) - (setenv "XDG_RUNTIME_DIR" (getcwd)) - (invoke "./tests/vk_layer_validation_tests"))))))) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'set-layer-path-in-manifest + (lambda _ + (let ((manifest + (string-append #$output + "/share/vulkan/explicit_layer.d" + "/VkLayer_khronos_validation.json"))) + (substitute* manifest + (("\"libVkLayer_khronos_validation.so\"") + (string-append + "\"" #$output + "/lib/libVkLayer_khronos_validation.so\"")))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "VK_LAYER_PATH" + (string-append (getcwd) "/layers")) + (setenv "LD_LIBRARY_PATH" + (string-append #$(this-package-input + "vulkan-loader") "/lib")) + (setenv "MESA_SHADER_CACHE_DIR" + (string-append (getcwd) "/shader-cache")) + (setenv "XDG_RUNTIME_DIR" (getcwd)) + (invoke "./tests/vk_layer_validation_tests"))))))) (home-page "https://github.com/KhronosGroup/Vulkan-ValidationLayers") (synopsis "Khronos official validation layers for Vulkan") (description - "Vulkan-ValidationLayers provides the Khronos official validation layers that -can assist development by enabling developers to verify their applications correctly -use the Vulkan API.") + "Vulkan-ValidationLayers provides the Khronos official validation layers +that can assist development by enabling developers to verify their +applications correctly use the Vulkan API.") (license license:asl2.0))) (define-public vulkan-volk @@ -696,7 +725,7 @@ skipping loader dispatch overhead.") (define-public vulkan-memory-allocator (package (name "vulkan-memory-allocator") - (version "3.2.1") + (version "3.3.0") (source (origin (method git-fetch) @@ -707,11 +736,9 @@ skipping loader dispatch overhead.") (file-name (git-file-name name version)) (sha256 (base32 - "0y8ccx080bqrgv71ggixxpl57vc5znq55rnvl4v4srfkjxhz6yiy")))) + "1qadyd9nir9ip176fsxvl91w60mnyvk07d5ihjlpqvl7rdbjmwac")))) (build-system cmake-build-system) - (arguments - ;; no test - `(#:tests? #f)) + (arguments (list #:tests? #f)) ;no tests (inputs (list vulkan-loader vulkan-headers)) (synopsis "Vulkan memory allocation library") (description @@ -725,7 +752,7 @@ storage.") (define-public vulkan-utility-libraries (package (name "vulkan-utility-libraries") - (version "1.4.309.0") + (version "1.4.321.0") (source (origin (method git-fetch) @@ -733,7 +760,7 @@ storage.") (url "https://github.com/KhronosGroup/Vulkan-Utility-Libraries") (commit (string-append "vulkan-sdk-" version)))) (sha256 - (base32 "1ihk95gjszk9yn3r6xvda83qp7f463m86srj6cq43z01sk2naxkr")) + (base32 "1xj860z596p2wgdfc5yr15q0hasz8p4ci6x0j1wim7jklp92g89i")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments diff --git a/gnu/packages/weather.scm b/gnu/packages/weather.scm index 18f392ccf54..6a89c651036 100644 --- a/gnu/packages/weather.scm +++ b/gnu/packages/weather.scm @@ -20,13 +20,14 @@ (define-module (gnu packages weather) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system go) - #:use-module (guix build-system python) + #:use-module (guix build-system pyproject) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (gnu packages) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-xyz) + #:use-module (gnu packages python-build) #:use-module (gnu packages qt) #:use-module (gnu packages xml)) @@ -65,30 +66,35 @@ precipitation amount and probability.") (name "meteo-qt") (version "4.2") (source - (origin (method git-fetch) - (uri (git-reference (url "https://github.com/dglent/meteo-qt") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1cvmh5rq50dncd2fmp4amjb2hhl2mryb2ywg0zdzhz89dkjq0kdk")))) - (build-system python-build-system) - (native-inputs (list python-pyqt-6)) - (propagated-inputs (list python-lxml python-pyqt-6 python-sip)) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dglent/meteo-qt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cvmh5rq50dncd2fmp4amjb2hhl2mryb2ywg0zdzhz89dkjq0kdk")))) + (build-system pyproject-build-system) (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-before 'build 'remove-translations - (lambda _ - ;; Translation processing is broken because Guix thinks lprodump - ;; is in qtbase, not qttools. So, we'll skip it and exclude - ;; qttools from the native input list until it is fixed. - (substitute* "setup.py" - (("/usr") #$output) - (("^.+lrelease-pro-qt6.+$") "") - (("^.+meteo_qt/translations.+$") ""))))))) + (list + #:tests? #f ; No tests. + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'remove-translations + (lambda _ + ;; Translation processing is broken because Guix thinks lprodump + ;; is in qtbase, not qttools. So, we'll skip it and exclude + ;; qttools from the native input list until it is fixed. + (substitute* "setup.py" + (("/usr") #$output) + (("^.+lrelease-pro-qt6.+$") "") + (("^.+meteo_qt/translations.+$") ""))))))) + (native-inputs (list python-pyqt-6 python-setuptools)) + (propagated-inputs (list python-lxml python-pyqt-6 python-sip)) (home-page "https://github.com/dglent/meteo-qt") (synopsis "Weather application for the system tray") - (description "meteo-qt is an application to display weather information in -desktop panels, desktop notifictions and its own window. Weather information is + (description + "meteo-qt is an application to display weather information in desktop +panels, desktop notifictions and its own window. Weather information is retrieved from OpenWeatherMap.") (license license:gpl3))) diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index 5940ca54188..aa55af927a5 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -48,7 +48,6 @@ #:use-module (guix build-system go) #:use-module (guix build-system meson) #:use-module (guix build-system pyproject) - #:use-module (guix build-system python) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) @@ -1095,7 +1094,9 @@ with a terminal interface, for Gemini also a GUI is available.") (file-name (git-file-name name version)) (sha256 (base32 "0jp4v4jw82qqynqqs7x35g5yvm1sd48cvbqh7j2r1ixw1z6ldhc4")))) - (build-system python-build-system) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ; No tests. + (native-inputs (list python-setuptools)) (home-page "https://github.com/xyzshantaram/leo") (synopsis "Gemini client written in Python") (description @@ -1107,21 +1108,31 @@ saved to a file for further viewing in another window.") (define-public av-98 (package (name "av-98") - (version "1.0.1") - (properties - '((upstream-name . "AV-98"))) + (version "1.4") + (properties '((upstream-name . "AV-98"))) (source (origin - (method url-fetch) - (uri (pypi-uri "AV-98" version)) + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~solderpunk/AV-98") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "02fjnc2rvm010gb3i07p8r4xlhrmnv1wca1qymfjcymr7vm68h0i")))) - (build-system python-build-system) - (home-page "https://tildegit.org/solderpunk/AV-98/") + (base32 "04dzkzsan1cnrslsvfgn1whpwald8xy34wqzvq81hd2mvw9a2n69")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #f ; No tests. + #:phases + #~(modify-phases %standard-phases + (add-before 'sanity-check 'configure-sanity-check + (lambda _ + (setenv "HOME" (getcwd))))))) + (native-inputs (list python-setuptools)) + (home-page "https://git.sr.ht/~solderpunk/AV-98") (synopsis "Command line Gemini client") - (description "AV-98 is an experimental client for the Gemini protocol. -Features include + (description + "AV-98 is an experimental client for the Gemini protocol. Features include @itemize @item TOFU or CA server certificate validation; @item Extensive client certificate support if an openssl binary is available; diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm index 8e36fea6de9..eec6bea4ed6 100644 --- a/gnu/packages/wget.scm +++ b/gnu/packages/wget.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2021 Michael Rohleder +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,17 +47,14 @@ (define-public wget (package - (replacement wget/fixed) (name "wget") - (version "1.21.4") + (version "1.25.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/wget/wget-" - version ".tar.lz")) - (sha256 - (base32 - "1nabhxx3rg28h2scba2mlawzjyx3dw07j2kjn76cpvahbyd630rn")))) + (method url-fetch) + (uri (string-append "mirror://gnu/wget/wget-" version ".tar.lz")) + (sha256 + (base32 "07waw3s51zmjqzqq717xyyd353qc1ajcd38lh7y8i85hav3mq8hr")))) (build-system gnu-build-system) (inputs (list gnutls libidn2 libpsl)) @@ -76,17 +74,6 @@ wild cards, supports proxies and cookies, and it can convert absolute links in downloaded documents to relative links.") (license license:gpl3+))) ; some files are under GPLv2+ -(define-public wget/fixed - (package - (inherit wget) - (version "1.25.0") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/wget/wget-" version ".tar.lz")) - (sha256 - (base32 "07waw3s51zmjqzqq717xyyd353qc1ajcd38lh7y8i85hav3mq8hr")))))) - (define-public wgetpaste (package (name "wgetpaste") diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index df1796f7808..e9f9311db7d 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -185,7 +185,7 @@ integrate Windows applications into your desktop.") libgphoto2 openldap samba - sane-backends + sane libpcap libusb libice diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 7b91e2b33a0..e70d6238905 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -1,11 +1,12 @@ ;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Julien Lepiller ;;; Copyright © 2015 Eric Dvorsak ;;; Copyright © 2015 Siniša Biđin ;;; Copyright © 2015, 2016, 2022 Eric Bavier ;;; Copyright © 2015 xd1le ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2016 Danny Milosavljevic -;;; Copyright © 2016, 2019, 2020, 2023, 2024 Efraim Flashner +;;; Copyright © 2016, 2019-2020, 2023-2024 Efraim Flashner ;;; Copyright © 2016 Al McElrath ;;; Copyright © 2016 Carlo Zancanaro ;;; Copyright © 2016 2019, 2021-2022 Ludovic Courtès @@ -81,6 +82,7 @@ ;;; Copyright © 2025 Tomáš Čech ;;; Copyright © 2025 Ricardo Wurmus ;;; Copyright © 2025 Andrew Wong +;;; Copyright © 2025 Hugo Buddelmeijer ;;; ;;; This file is part of GNU Guix. ;;; @@ -243,7 +245,7 @@ the leaves of a full binary tree.") (native-inputs (list pkg-config scdoc ;; for wayland-scanner wayland)) - (inputs (list wayland wlroots libxkbcommon)) + (inputs (list wayland wlroots-0.18 libxkbcommon)) (home-page "https://github.com/cage-kiosk/cage") (synopsis "Wayland kiosk") (description "This package provides a Wayland @dfn{kiosk}, which runs a @@ -428,7 +430,7 @@ loginctl commands (lock/unlock/before-sleep) and inhibit.") hyprland-qtutils hyprlang hyprutils - libinput-minimal-next + libinput-minimal libxcursor libxkbcommon mesa @@ -707,6 +709,85 @@ the i3 window manager through its i3bar component, as an alternative to i3status.") (license license:gpl3+))) +(define-public obconf + (package + (name "obconf") + (version "2.0.4") + (source + (origin + (method url-fetch) + (uri (string-append "http://openbox.org/dist/" name + "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1fanjdmd8727kk74x5404vi8v7s4kpq48l583d12fsi4xvsfb8vi")))) + (inputs (list gtk+-2 + imlib2 + libglade + libsm + librsvg + libxft + openbox + startup-notification)) + (native-inputs (list gettext-minimal pkg-config)) + (build-system gnu-build-system) + (arguments + (list + #:configure-flags + #~(list "--enable-nls" + "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration"))) + (home-page "https://openbox.org/obconf") + (synopsis "Openbox configuration tool") + (description + "Obconf is a tool for configuring the Openbox window manager. +You can configure its appearance, themes, and much more.") + (license license:gpl2+))) + +(define-public openbox + (package + (name "openbox") + (version "3.6.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://openbox.org/dist/openbox/" name "-" + version ".tar.xz")) + (sha256 + (base32 + "0vg2y1qddsdxkjv806mzpvmkgzliab8ll4s7zm7ma5jnriamirxb")) + (patches (search-patches "openbox-add-fix-for-glib2-exposed-segfault.patch" "openbox-python3.patch")))) + (build-system gnu-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'force-reconfigure + ;; This is made necessary by the openbox-python3 patch. + (lambda _ + (delete-file "configure")))))) + (native-inputs (list autoconf automake gettext-minimal libtool pkg-config)) + (propagated-inputs (list python-pyxdg)) + (inputs (list imlib2 + libxml2 + (librsvg-for-system) + libsm + libxcursor + libxinerama + libxml2 + libxrandr + libxft + pango + python-wrapper)) + (synopsis "Box style window manager") + (description + "Openbox is a highly configurable, next generation window manager with +extensive standards support. The *box visual style is well known for its +minimalistic appearance. Openbox uses the *box visual style, while providing +a greater number of options for theme developers than previous *box +implementations.") + (home-page "http://openbox.org/wiki/Main_Page") + (license license:gpl2+))) + (define-public papersway (package (name "papersway") @@ -991,6 +1072,65 @@ and locate windows on all your workspaces, using an interactive dmenu prompt.") (license license:wtfpl2)))) +(define-public quicktile + ;; Latest release, 0.4.0, is 5 years old and does not use pyproject.toml yet. + (let ((commit "2c499beedf31d5906e86c482f70129d94e429350") + (revision "0")) + (package + (name "quicktile") + (version (git-version "0.4.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ssokolow/quicktile") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "08kwilln32kx2cdg1sg7ffb214fkhacchx8jd64pyjbshmradgxr")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "tests") + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'pre-check + ;; tests/test_functional.py moves windows around and thus needs + ;; access to an X server. + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "HOME" "/tmp") + (mkdir-p "/tmp/.config") + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + ;; First run creates /tmp/.config/quicktile.cfg. + (invoke "./quicktile.sh"))))))) + (native-inputs + (list openbox ;necessary for test_functional.py + python-pluggy + python-pytest + python-pytest-cov + python-setuptools + xorg-server-for-tests)) + (inputs + (list gtk+ + libwnck + python-xlib + python-pygobject + python-dbus-python)) + ;; The actual home page https://ssokolow.com/quicktile/ + ;; gives an SSL error. + (home-page "https://github.com/ssokolow/quicktile") + (synopsis "window-tiling hotkeys to any X11 desktop") + (description + "QuickTile is a simple utility, inspired by +@url{https://github.com/dozius/winsplit-revolution, WinSplit Revolution} for +Windows, which adds window-tiling keybindings to existing X11 window manager. +It may be used as a standalone alternative to the keyboard related features of +the Compiz Grid plugin.") + (license license:gpl2+)))) + (define-public i3lock-color (package (name "i3lock-color") @@ -1472,7 +1612,7 @@ the XDG Autostart specification.") tllist scdoc)) (inputs - (list wlroots wayland fcft dbus libpng)) + (list wayland fcft dbus libpng)) (home-page "https://codeberg.org/dnkl/fnott") (synopsis "Keyboard driven and lightweight Wayland notification daemon") (description "Fnott is a keyboard driven and lightweight notification daemon @@ -1909,7 +2049,7 @@ started automatically on the first call via D-Bus.") (native-inputs (list pkg-config)) (inputs - (list wlroots)) + (list wlroots-0.18)) (home-page "https://codeberg.org/dwl/dwl") (synopsis "Dynamic window manager for Wayland") (description @@ -2104,7 +2244,7 @@ XDG-Output for wlclock to work.") (define-public wlroots (package (name "wlroots") - (version "0.18.2") + (version "0.19.1") (source (origin (method git-fetch) @@ -2113,7 +2253,7 @@ XDG-Output for wlclock to work.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1l1c4m8m1h8rl00y9yi6qjma5m3lhai9hqv5578q69yg2dcwraxw")))) + (base32 "1w3nlrvy7625jh4f0l923f7irywzfdashcw5hbf8jq9kpjhpm323")))) (build-system meson-build-system) (arguments (list #:phases @@ -2162,6 +2302,24 @@ Wayland compositor") modules for building a Wayland compositor.") (license license:expat))) ; MIT license +;; Allow packages refering to stable wlroots version, because +;; wlroots updates are backward incompatible. +(define-public wlroots-0.19 wlroots) + +(define-public wlroots-0.18 + (package + (inherit wlroots) + (version "0.18.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.freedesktop.org/wlroots/wlroots") + (commit version))) + (file-name (git-file-name "wlroots" version)) + (sha256 + (base32 "1l1c4m8m1h8rl00y9yi6qjma5m3lhai9hqv5578q69yg2dcwraxw")))))) + (define-public wlroots-0.17 (package (inherit wlroots) @@ -2310,7 +2468,7 @@ narrow the items to those matching the tokens in the input.") pcre2 swaybg wayland - wlroots)) + wlroots-0.18)) (native-inputs (cons* linux-pam mesa pkg-config scdoc wayland-protocols (if (%current-target-system) @@ -2349,7 +2507,7 @@ narrow the items to those matching the tokens in the input.") scenefx swaybg wayland - wlroots)) + wlroots-0.18)) (home-page "https://github.com/WillPower3309/swayfx") (synopsis "Sway Fork with extra options and effects") (description @@ -3796,7 +3954,7 @@ read and write, and compatible with JSON.") (define-public labwc (package (name "labwc") - (version "0.8.4") + (version "0.9.1") (source (origin (method git-fetch) (uri (git-reference @@ -3805,7 +3963,7 @@ read and write, and compatible with JSON.") (file-name (git-file-name name version)) (sha256 (base32 - "1wbza00y2xf2zn34q5c8g5k2dn2xjzbbqmsnjv6c90mh2bbk1q95")))) + "0p475vjn9gg314spf89di6i1l2lr9xx59mz4hq4shvbh64hr48pi")))) (build-system meson-build-system) (native-inputs (list pkg-config gettext-minimal scdoc)) @@ -3818,7 +3976,7 @@ read and write, and compatible with JSON.") libxcb libxml2 pango - wlroots)) + wlroots-0.19)) (home-page "https://labwc.github.io") (synopsis "Window-stacking compositor for Wayland") (description @@ -4484,7 +4642,7 @@ battery efficient---polling is only done when absolutely necessary.") (define-public wideriver (package (name "wideriver") - (version "1.2.0") + (version "1.3.1") (source (origin (method git-fetch) @@ -4493,7 +4651,7 @@ battery efficient---polling is only done when absolutely necessary.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "16i0mzgxn32nrh5ajn0kb4xdwmsjg03amhasxhwyvspar5y4flhg")))) + (base32 "1ljl1finfajinvrj073dbwk9vm352jwr6rm9vn5fkrqi296s1n8x")))) (build-system gnu-build-system) (arguments (list @@ -4504,7 +4662,7 @@ battery efficient---polling is only done when absolutely necessary.") #:phases #~(modify-phases %standard-phases (delete 'configure)))) ; no configure script (native-inputs (list pkg-config cmocka)) - (inputs (list wayland wayland-protocols wlroots)) + (inputs (list wayland wayland-protocols)) (home-page "https://github.com/alex-courtis/wideriver") (synopsis "A set of riverWM layouts") (description @@ -4555,7 +4713,7 @@ configure input, and customize Wayfire plugins.") mesa libxkbcommon libdrm - wlroots)) + wlroots-0.18)) (home-page "https://github.com/wlrfx/scenefx") (synopsis "Drop-in replacement for the wlroots scene API") (description diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 88d06c98f8c..82ed070d402 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -53,7 +53,7 @@ ;;; Copyright © 2021 ikasero ;;; Copyright © 2021 Felix Gruber ;;; Copyright © 2021, 2025 jgart -;;; Copyright © 2022, 2024 John Kehayias +;;; Copyright © 2022, 2024, 2025 John Kehayias ;;; Copyright © 2022 Jai Vetrivelan ;;; Copyright © 2022 Derek Chuank ;;; Copyright © 2022, 2023 Wamm K. D. @@ -633,14 +633,16 @@ avoiding password prompts when X11 forwarding has already been setup.") (define-public libxkbcommon (package (name "libxkbcommon") - (version "1.6.0") + (version "1.11.0") (source (origin - (method url-fetch) - (uri (string-append "https://xkbcommon.org/download/libxkbcommon-" - version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/xkbcommon/libxkbcommon") + (commit (string-append "xkbcommon-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0awwz5pg9x5bj0d7dpg4a7bd4gl6k55mlpxwb12534fkrpn19p0f")))) + "1swa6rf63c0wi0qq5r661g63yk2iwa9l66148078xkrwcf05sp91")))) (outputs '("out" "doc")) (build-system meson-build-system) (inputs @@ -652,12 +654,19 @@ avoiding password prompts when X11 forwarding has already been setup.") xkeyboard-config)) (native-inputs (append - (list bison doxygen pkg-config python - ;; wayland-scanner is required at build time. - wayland) - (if (%current-target-system) - (list pkg-config-for-build) - '()))) + (list bison + doxygen + pkg-config + python + ;; wayland-scanner is required at build time. + wayland + ;; Xvfb for tests. + xorg-server-for-tests + ;; xkbcomp for tests. + xkbcomp) + (if (%current-target-system) + (list pkg-config-for-build) + '()))) (arguments (list #:configure-flags @@ -666,7 +675,8 @@ avoiding password prompts when X11 forwarding has already been setup.") %build-inputs "share/X11/xkb")) (string-append "-Dx-locale-root=" (search-input-directory - %build-inputs "share/X11/locale"))) + %build-inputs "share/X11/locale")) + "-Denable-docs=true") #:phases #~(modify-phases %standard-phases (add-after 'install 'move-doc @@ -695,41 +705,6 @@ X11 (yet).") "See 'COPYING' in the distribution.")) (properties '((cpe-name . "xkbcommon"))))) -(define-public libxkbcommon-1.5 - (package - (inherit libxkbcommon) - (version "1.5.0") - (source (origin - (inherit (package-source libxkbcommon)) - (method url-fetch) - (uri (string-append "https://xkbcommon.org/download/libxkbcommon-" - version ".tar.xz")) - (sha256 - (base32 - "05z08rpa464x8myjxddhix7jp9jcmakd7xrybx4hz8dwpg2123sn")))))) - -(define-public libxkbcommon-1.8 - (package - (inherit libxkbcommon) - (version "1.8.1") - (source (origin - (inherit (package-source libxkbcommon)) - (method git-fetch) - (uri (git-reference - (url "https://github.com/xkbcommon/libxkbcommon") - (commit (string-append "xkbcommon-" version)))) - (file-name (git-file-name (package-name libxkbcommon) version)) - (sha256 - (base32 - "0fz6mf99lyp7x6g6v33210hhpykbg32fjmckyvxfpd805cza0xrj")))) - (arguments - (substitute-keyword-arguments (package-arguments libxkbcommon) - ((#:configure-flags flags #~(list)) - #~(cons "-Denable-docs=true" #$flags)))) - (native-inputs (modify-inputs (package-native-inputs libxkbcommon) - (append xorg-server ;; Xvfb for tests - xkbcomp))))) ;; xkbcomp for tests - (define-public libfakekey (package (name "libfakekey") @@ -902,31 +877,29 @@ typing tool (@code{wtype}, @code{xdotool}, etc.), or via standard output.") (define-public pixman (package (name "pixman") - (version "0.42.2") + (version "0.46.4") (source (origin (method url-fetch) (uri (string-append "https://www.cairographics.org/releases/pixman-" version ".tar.gz")) (sha256 - (base32 "0pk298iqxqr64vk3z6nhjwr6vjg1971zfrjkqy5r9zd2mppq057a")) + (base32 "072rd8sd454rzybmxx90fdzvabzvx0pr57y745qfwnxxqgml976h")) (patches (search-patches "pixman-CVE-2016-5296.patch")))) - (build-system gnu-build-system) + (build-system meson-build-system) (arguments - `(#:configure-flags - (list "--disable-static" - "--enable-timers" - "--enable-gnuplot" - ,@(if (target-arm32?) - `("--disable-arm-simd") - '())))) - (native-inputs (list pkg-config)) - (inputs (list libpng zlib)) + (list + #:configure-flags + #~(list "-Dtimers=true" + "-Dgnuplot=true" + #$@(if (target-arm32?) + '("-Darm-simd=false") + '())))) (synopsis "Low-level pixel manipulation library") (description "Pixman is a low-level software library for pixel manipulation, providing features such as image compositing and trapezoid rasterisation.") - (home-page "http://www.pixman.org/") + (home-page "https://www.pixman.org/") (license license:expat))) (define-public libdrm diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index b7482bfbe97..ed0b1743c91 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -37,6 +37,7 @@ ;;; Copyright © 2024 Nicolas Graves ;;; Copyright © 2024 gemmaro ;;; Copyright © 2025 Antoine Côté +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -188,19 +189,19 @@ binary extension of XML for the purpose of storing and manipulating data in a hierarchical form with variable field lengths.") (license license:lgpl2.1))) -;; Note: Remember to check python-libxml2 when updating this package. (define-public libxml2 (package (name "libxml2") - (version "2.9.14") + (version "2.14.6") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/libxml2/" - (version-major+minor version)"/libxml2-" - version ".tar.xz")) - (sha256 - (base32 - "1vnzk33wfms348lgz9pvkq9li7jm44pvm73lbr3w1khwgljlmmv0")))) + (method url-fetch) + (uri (string-append "mirror://gnome/sources/libxml2/" + (version-major+minor version)"/libxml2-" + version ".tar.xz")) + (sha256 + (base32 + "0fi0jysncjpvhvp29qcx3bydndapwphgkx7ial5kzf7ymyh5ir3w")) + (patches (search-patches "python-libxml2-utf8.patch")))) (build-system gnu-build-system) (outputs '("out" "static" "doc")) (arguments @@ -218,6 +219,13 @@ hierarchical form with variable field lengths.") (string-append "/bin/" file)) ".")) '("config.guess" "config.sub"))))) #~()) + (add-before 'configure 'configure-python + (lambda _ + (substitute* "python/setup.py.in" + ;; The build system ignores C_INCLUDE_PATH & co, so + ;; provide the absolute directory name. + (("/opt/include") + (string-append #$output "/include/libxml2"))))) (add-after 'install 'use-other-outputs (lambda _ (let ((doc (string-append #$output:doc "/share/")) @@ -245,7 +253,7 @@ hierarchical form with variable field lengths.") (native-inputs (append (if (target-loongarch64?) (list config) '()) - (list perl))) + (list perl pkg-config python-minimal))) (native-search-paths (list $SGML_CATALOG_FILES $XML_CATALOG_FILES)) (search-paths native-search-paths) @@ -254,57 +262,23 @@ hierarchical form with variable field lengths.") project (but it is usable outside of the Gnome platform).") (license license:x11))) -(define-public libxml2-next - (package - (inherit libxml2) - (name "libxml2") - (version "2.14.5") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/libxml2/" - (version-major+minor version)"/libxml2-" - version ".tar.xz")) - (sha256 - (base32 - "0jylv2kkyzih710blg24al7b43iaqg6xsfn52qy865knagrhdl03")))) - (native-inputs (modify-inputs (package-native-inputs libxml2) - (append pkg-config - python-minimal))))) - -(define-public libxml2-next/fixed - (package - (inherit libxml2) - (properties '((hidden? . #t))) - (name "libxml2") - (version "2.14.5") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/libxml2/" - (version-major+minor version)"/libxml2-" - version ".tar.xz")) - (sha256 - (base32 - "0jylv2kkyzih710blg24al7b43iaqg6xsfn52qy865knagrhdl03")))) - (arguments - (substitute-keyword-arguments (package-arguments libxml2-next) - ((#:phases phases #~%standard-phases) - #~(modify-phases #$phases - (add-after 'install 'symlink-hardcoded-lib-for-grafts - (lambda _ - (let ((lib (string-append #$output "/lib/libxml2.so"))) - ;; XXX: When grafting, we need to reproduce the file paths to - ;; the libraries too. - (symlink (string-append lib ".16") - (string-append lib ".2"))))))))) - (native-inputs (modify-inputs (package-native-inputs libxml2) - (append pkg-config - python-minimal))))) - -(define-public libxml2-next-for-grafting - (package - (inherit libxml2) - (replacement libxml2-next/fixed) - (properties '((hidden? . #t))))) +;; This is an old version (the most recent that works) of libxml2 solely for +;; building librsvg-2.40. +;; XXX: Remove once Rust (and thus newer librsvg) is supported on all +;; platforms. +(define-public libxml2-2.11 + (hidden-package + (package + (inherit libxml2) + (version "2.11.9") + (source (origin + (inherit (package-source libxml2)) + (uri (string-append "mirror://gnome/sources/libxml2/" + (version-major+minor version)"/libxml2-" + version ".tar.xz")) + (sha256 + (base32 + "17w0a622466k2hi5nln276la6rzfr9xaip3lqj71hmyvxyhmf0bq"))))))) (define-public libxml2-xpath0 (package/inherit libxml2 @@ -320,34 +294,7 @@ provides an @code{--xpath0} option to @command{xmllint} that enables it to output XPath results with a null delimiter."))) (define-public python-libxml2 - (package/inherit libxml2 - (name "python-libxml2") - (source (origin - (inherit (package-source libxml2)) - (patches - (append (search-patches "python-libxml2-utf8.patch") - (origin-patches (package-source libxml2)))))) - (build-system pyproject-build-system) - (outputs '("out")) - (arguments - (list - ;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'. - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'configure - (lambda* (#:key inputs #:allow-other-keys) - (chdir "python") - (let ((libxml2-headers (search-input-directory - inputs "include/libxml2"))) - (substitute* "setup.py" - ;; The build system ignores C_INCLUDE_PATH & co, so - ;; provide the absolute directory name. - (("/opt/include") - (dirname libxml2-headers))))))))) - (native-inputs (list python-setuptools)) - (inputs (list libxml2)) - (synopsis "Python bindings for the libxml2 library"))) + (deprecated-package "python-libxml2" libxml2)) (define-public libxlsxwriter (package @@ -394,7 +341,7 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") (define-public libxslt (package (name "libxslt") - (version "1.1.37") + (version "1.1.43") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources" @@ -402,8 +349,7 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") "/libxslt-" version ".tar.xz")) (sha256 (base32 - "1d1s2bk0m6d7bzml9w90ycl0jlpcy4v07595cwaddk17h3f2fjrs")) - (patches (search-patches "libxslt-generated-ids.patch")))) + "0fhqy01x99iia8306czakxza4spzyn88w4bin4sw5bx57hw6ngas")))) (build-system gnu-build-system) (arguments (list #:phases @@ -1256,7 +1202,7 @@ XSL-T processor. It also performs any necessary post-processing.") "1shk40mpaqaf05skgyxa7qxgcarjd6i1fadn2sk0b8lakfv96bnq")))) (build-system gnu-build-system) (propagated-inputs ; according to xmlsec1.pc - (list libxml2-next libxslt)) + (list libxml2 libxslt)) (inputs (list gnutls libgcrypt libltdl)) (native-inputs @@ -1937,13 +1883,13 @@ because lxml.etree already has its own implementation of XPath 1.0.") (define-public python-lxml (package (name "python-lxml") - (version "5.2.2") + (version "6.0.1") (source (origin (method url-fetch) (uri (pypi-uri "lxml" version)) (sha256 - (base32 "11yvrzlswlh81z6lpmds2is2jd3wkigpwj6mcfcaggl0h64w8bdv")))) + (base32 "14064h0pxdsx36nhyjzrw0v16ygz977qf6l0ydnh5p97pwp8hfib")))) (build-system pyproject-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -1975,19 +1921,13 @@ libxml2 and libxslt.") (sha256 (base32 "03l86qr5xzvz0jcbk669sj8nbw1fjshmf0b7l83gl5cfnx81wm5i")))) (arguments - (list #:phases + (list #:tests? #f ;some tests fail with newer libxml2 + #:phases #~(modify-phases %standard-phases (add-after 'unpack 'relax-gcc-14-strictness (lambda _ (setenv "CFLAGS" - "-Wno-error=incompatible-pointer-types"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (substitute* "src/lxml/tests/test_elementtree.py" - ;; AssertionError: Lists differ: [] != [('end', 'element')] - (("def test_simple_xml") "def _do_not_test_simple_xml")) - (invoke "make" "test")))))))))) + "-Wno-error=incompatible-pointer-types"))))))))) (define-deprecated python-lxml-4.7 python-lxml) (export python-lxml-4.7) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index c3c3a70339d..30a7b5e9d1a 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -5759,7 +5759,7 @@ Wayland.") (define-public libx11 (package (name "libx11") - (version "1.8.10") + (version "1.8.12") (source (origin (method url-fetch) @@ -5767,7 +5767,7 @@ Wayland.") version ".tar.xz")) (sha256 (base32 - "0lywvwsz92j7isglvw2227g3na4ghyspvsvblpf43ns7jfnksfrb")))) + "16lspc3bw2pg3jal7zyq6mxmxmmaax0fz6lgh1n4skqjn2dny0ps")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;8 MiB of man pages + XML diff --git a/gnu/packages/zig-xyz.scm b/gnu/packages/zig-xyz.scm index e24c8f519f2..9665a56a2dc 100644 --- a/gnu/packages/zig-xyz.scm +++ b/gnu/packages/zig-xyz.scm @@ -445,7 +445,7 @@ interface.") `(,@args #:install-source? #f)) (chdir "..")))))) (propagated-inputs - (list wlroots + (list wlroots-0.18 zig-pixman zig-wayland zig-xkbcommon)) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 76533b1a762..1fff153a400 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -80,8 +80,10 @@ #:use-module (gnu packages nfs) #:use-module (gnu packages enlightenment) #:use-module (guix deprecation) + #:use-module (guix i18n) #:use-module (guix records) #:use-module (guix packages) + #:use-module (guix search-paths) #:use-module (guix store) #:use-module (guix ui) #:use-module (guix utils) @@ -147,6 +149,11 @@ accountsservice-service ; deprecated cups-pk-helper-service-type + + sane-configuration + sane-configuration? + sane-configuration-backends + sane-configuration-sane sane-service-type gnome-desktop-configuration @@ -1681,6 +1688,38 @@ accountsservice web site} for more information." ;; The '60-libsane.rules' udev rules refers to the "scanner" group. (list (user-group (name "scanner") (system? #t)))) +(define (non-empty-list-of-packages? val) + (and (not (null? val)) (list-of-packages? val))) + +(define-configuration/no-serialization sane-configuration + (sane + (package sane) + "The package that provides the SANE library.") + (backends + (non-empty-list-of-packages (list sane-backends)) + "A list of packages containing SANE backends.")) + +(define (sane-search-paths config) + (match-record config (sane backends) + (let ((backend-union (directory-union "sane-backends" backends))) + (map (match-lambda + (($ variable (files)) + (cons variable (file-append backend-union "/" files)))) + (package-native-search-paths sane))))) + +(define* (lift-sane-configuration config #:key warn?) + (if (sane-configuration? config) + config + (begin + (when warn? + (warning (G_ "'sane' service now expects a 'sane-configuration' record~%")) + + (when (eq? config sane-backends) + (warning (G_ "'sane-backends' does not include 'hplip' backend anymore. Add it +explicitly when needed.~%")))) + + (sane-configuration (backends (list config)))))) + (define sane-service-type (service-type (name 'sane) @@ -1688,9 +1727,15 @@ accountsservice web site} for more information." "This service provides access to scanners @i{via} @uref{http://www.sane-project.org, SANE} by installing the necessary udev rules.") - (default-value sane-backends-minimal) + (default-value (sane-configuration)) (extensions - (list (service-extension udev-service-type list) + (list (service-extension udev-service-type + (lambda (c) + (sane-configuration-backends + (lift-sane-configuration c #:warn? #t)))) + (service-extension session-environment-service-type + (lambda (c) + (sane-search-paths (lift-sane-configuration c)))) (service-extension account-service-type (const %sane-accounts)))))) @@ -2445,7 +2490,7 @@ applications needing access to be root.") ;; Add udev rules for MTP devices so that non-root users can access ;; them. (simple-service 'mtp udev-service-type (list libmtp)) - ;; Add udev rules for scanners. + ;; Add udev rules and default backends for scanners. (service sane-service-type) ;; Add polkit rules, so that non-root users in the wheel group can ;; perform administrative tasks (similar to "sudo"). diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index be3de699a40..b26dc890a44 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -43,7 +43,6 @@ #:use-module (gnu packages firmware) #:use-module (gnu packages linux) #:use-module (gnu packages ocr) - #:use-module (gnu packages openbox) #:use-module (gnu packages package-management) #:use-module (gnu packages ratpoison) #:use-module (gnu packages suckless) diff --git a/guix/build/meson-build-system.scm b/guix/build/meson-build-system.scm index d11a5d8e18e..d8be1f3faa2 100644 --- a/guix/build/meson-build-system.scm +++ b/guix/build/meson-build-system.scm @@ -64,6 +64,7 @@ includedir "/include")) '()) ,(string-append "--buildtype=" build-type) + "--wrap-mode=nofallback" ,(string-append "-Dc_link_args=-Wl,-rpath=" (assoc-ref outputs "out") "/lib") ,(string-append "-Dcpp_link_args=-Wl,-rpath=" @@ -75,12 +76,12 @@ (chdir build-dir) (apply invoke "meson" "setup" args))) -(define* (build #:key parallel-build? - #:allow-other-keys) +(define* (build #:key parallel-build? #:allow-other-keys) "Build a given meson package." - (invoke "ninja" "-j" (if parallel-build? - (number->string (parallel-job-count)) - "1"))) + (invoke "ninja" "--verbose" + "-j" (if parallel-build? + (number->string (parallel-job-count)) + "1"))) (define* (check #:key tests? test-options parallel-tests? #:allow-other-keys) diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in index 0dfbbd6e61b..9522bdc5c70 100644 --- a/po/packages/POTFILES.in +++ b/po/packages/POTFILES.in @@ -461,7 +461,6 @@ gnu/packages/nushell.scm gnu/packages/ocaml.scm gnu/packages/ocr.scm gnu/packages/onc-rpc.scm -gnu/packages/openbox.scm gnu/packages/opencog.scm gnu/packages/openldap.scm gnu/packages/openstack.scm