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/gnu/local.mk b/gnu/local.mk index 43de2994f45..45cf60d520c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -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,6 +2440,7 @@ 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/wcstools-extend-makefiles.patch \ %D%/packages/patches/wdl-link-libs-and-fix-jnetlib.patch \ 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..ef285ddf835 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -23600,7 +23600,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/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/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/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.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/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/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..fc151da6f8d 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 @@ -1224,14 +1224,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 +1259,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 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/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/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/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/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/messaging.scm b/gnu/packages/messaging.scm index 26ea6d55fe7..65de945b71d 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.") diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index c789ae54fa2..ca3f1f45a9d 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -6090,40 +6090,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/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/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/python-xyz.scm b/gnu/packages/python-xyz.scm index f1fb89a2951..b0416bb861b 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -6088,7 +6088,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)) @@ -13156,8 +13156,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 @@ -15654,14 +15653,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 @@ -17611,16 +17610,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 +17644,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 +17668,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 @@ -21053,13 +21053,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") @@ -35556,7 +35556,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 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..bfb0bb82b55 100644 --- a/gnu/packages/rdesktop.scm +++ b/gnu/packages/rdesktop.scm @@ -252,8 +252,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/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/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/video.scm b/gnu/packages/video.scm index 0db72149759..f49c2a47c11 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -74,6 +74,7 @@ ;;; Copyright © 2025 Sharlatan Hellseher ;;; Copyright © 2025 VnPower ;;; Copyright © 2025 Zhu Zihao +;;; Copyright © 2025 John Kehayias ;;; ;;; This file is part of GNU Guix. ;;; @@ -1527,7 +1528,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 +1537,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 +1645,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 +1675,8 @@ operate properly.") libcaca libcdio-paranoia libdrm + libgme + libplacebo libtheora libva libvdpau @@ -1685,13 +1688,16 @@ operate properly.") mesa openal pulseaudio + shaderc sdl2 soxr speex + spirv-tools srt svt-av1 twolame vidstab + vulkan-loader x265 xvid zlib))) @@ -1701,7 +1707,8 @@ operate properly.") pkg-config texinfo speex - yasm)) + vulkan-headers + nasm)) (arguments (list #:test-target "fate" @@ -1716,7 +1723,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 +1775,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 +1801,7 @@ operate properly.") "--enable-opengl" "--enable-libdrm" "--enable-vaapi" + "--enable-vulkan" "--enable-runtime-cpudetect" @@ -1836,7 +1846,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 +1871,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 +1895,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 +1911,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 +1939,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 @@ -1995,270 +2013,271 @@ audio/video codec library.") ;;; 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 +2704,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 +3016,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") 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/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..637a4aeb4ae 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -243,7 +243,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 +428,7 @@ loginctl commands (lock/unlock/before-sleep) and inhibit.") hyprland-qtutils hyprlang hyprutils - libinput-minimal-next + libinput-minimal libxcursor libxkbcommon mesa @@ -1472,7 +1472,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 +1909,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 +2104,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 +2113,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 +2162,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 +2328,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 +2367,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 +3814,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 +3823,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 +3836,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 +4502,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 +4511,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 +4522,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 +4573,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/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)