diff options
136 files changed, 11328 insertions, 5931 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi index 0f04ef7870..4aa8d34fe5 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -3369,7 +3369,13 @@ it), it may be removed after a @b{one-month review period} of the patch removing it (this applies even when the removal has additional motivations such as security problems affecting the package). -If it has many dependent packages---as is the case for example with +@quotation Note +Learn about pending package removals by checking +@uref{https://codeberg.org/guix/guix/issues?labels=445131, issues and +pull requests with the @samp{deprecation} label}. +@end quotation + +If the package has many dependent packages---as is the case for example with Python version@tie{}2---the relevant team must propose a deprecation removal agenda and seek consensus with other packagers for @b{at least one month}. It may also invite feedback from the broader user diff --git a/doc/guix.texi b/doc/guix.texi index 037ed371d1..100a7ed8b6 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -37878,9 +37878,13 @@ Owner of the @code{cuirass} process. @item @code{group} (default: @code{"cuirass"}) Owner's group of the @code{cuirass} process. -@item @code{interval} (default: @code{60}) +@item @code{interval} (default: @code{300}) Number of seconds between the poll of the repositories followed by the -Cuirass jobs. +Cuirass jobs, by default. + +Note that individual jobset specifications may override this in their +@code{period} field; the value specified here is only used for +specifications that use the default @code{period} value, which is zero. @item @code{ttl} (default: @code{2592000}) Duration to keep build results' GC roots alive, in seconds. @@ -40572,6 +40576,10 @@ permissive OpenSSH secure shell daemon listening on port 2222 @item @code{qemu} (default: @code{qemu-minimal}) The QEMU package to use. +@item @code{type} (default: @code{'hurd-qcow2}) +The image type name. Use @code{'hurd-qcow2} for a 32-bit image or +@code{'hurd64-qcow2} for a 64-bit image. + @item @code{image} (default: @var{hurd-vm-disk-image}) The image object representing the disk image of this virtual machine (@pxref{System Images}). @@ -44746,53 +44754,63 @@ available for each configured user. @cindex OCI-backed, Shepherd services @subsubheading OCI backed services -Should you wish to manage your Docker containers with the same consistent -interface you use for your other Shepherd services, -@var{oci-container-service-type} is the tool to use: given an -@acronym{Open Container Initiative, OCI} container image, it will run it in a +Should you wish to manage your @acronym{Open Container Initiative, OCI} containers +with the same consistent interface you use for your other Shepherd services, +@var{oci-service-type} is the tool to use: given an +OCI container image, it will run it in a Shepherd service. One example where this is useful: it lets you run services -that are available as Docker/OCI images but not yet packaged for Guix. +that are available as OCI images but not yet packaged for Guix. -@defvar oci-container-service-type +@defvar oci-service-type -This is a thin wrapper around Docker's CLI that executes OCI images backed +This is a thin wrapper around Docker's or Podman's CLI that executes OCI images backed processes as Shepherd Services. @lisp -(service oci-container-service-type - (list - (oci-container-configuration - (network "host") - (image - (oci-image - (repository "guile") - (tag "3") - (value (specifications->manifest '("guile"))) - (pack-options '(#:symlinks (("/bin/guile" -> "bin/guile")) - #:max-layers 2)))) - (entrypoint "/bin/guile") - (command - '("-c" "(display \"hello!\n\")"))) - (oci-container-configuration - (image "prom/prometheus") - (ports - '(("9000" . "9000") - ("9090" . "9090")))) - (oci-container-configuration - (image "grafana/grafana:10.0.1") - (network "host") - (volumes - '("/var/lib/grafana:/var/lib/grafana"))))) +(simple-service 'oci-provisioning + oci-service-type + (oci-extension + (networks + (list + (oci-network-configuration (name "monitoring")))) + (containers + (list + (oci-container-configuration + (network "monitoring") + (image + (oci-image + (repository "guile") + (tag "3") + (value (specifications->manifest '("guile"))) + (pack-options '(#:symlinks (("/bin/guile" -> "bin/guile")) + #:max-layers 2)))) + (entrypoint "/bin/guile") + (command + '("-c" "(display \"hello!\n\")"))) + (oci-container-configuration + (image "prom/prometheus") + (network "host") + (ports + '(("9000" . "9000") + ("9090" . "9090")))) + (oci-container-configuration + (image "grafana/grafana:10.0.1") + (network "host") + (volumes + '("/var/lib/grafana:/var/lib/grafana"))))))) @end lisp In this example three different Shepherd services are going to be added to the system. Each @code{oci-container-configuration} record translates to a -@code{docker run} invocation and its fields directly map to options. You can -refer to the -@url{https://docs.docker.com/engine/reference/commandline/run,upstream} -documentation for the semantics of each value. If the images are not found, -they will be -@url{https://docs.docker.com/engine/reference/commandline/pull/,pulled}. The +@samp{docker run} or @samp{podman run} invocation and its fields directly +map to options. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/run,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html,Podman} +upstream documentation for semantics of each value. If the images are not found, +they will be pulled. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/pull/,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-pull.1.html,Podman} +upstream documentation for semantics. The services with @code{(network "host")} are going to be attached to the host network and are supposed to behave like native processes with regard to networking. @@ -44801,6 +44819,99 @@ networking. @c %start of fragment +@deftp {Data Type} oci-configuration +Available @code{oci-configuration} fields are: + +@table @asis +@item @code{runtime} (default: @code{'docker}) (type: symbol) +The OCI runtime to use to run commands. It can be either @code{'docker} or +@code{'podman}. + +@item @code{runtime-cli} (type: maybe-package-or-string) +The OCI runtime command line to be installed in the system profile and used +to provision OCI resources, it can be either a package or a string representing +an absolute file name to the runtime binary entrypoint. When unset it will default +to @code{docker-cli} package for the @code{'docker} runtime or to @code{podman} +package for the @code{'podman} runtime. + +@item @code{runtime-extra-arguments} (default: @code{'()}) (type: list) +A list of strings, gexps or file-like objects that will be placed +after each @command{docker} or @command{podman} invokation. + +@item @code{user} (type: maybe-string) +The user name under whose authority OCI commands will be run. This field will +override the @code{user} field of @code{oci-configuration}. + +@item @code{group} (type: maybe-string) +The group name under whose authority OCI commands will be run. When +using the @code{'podman} OCI runtime, this field will be ignored and the +default group of the user configured in the @code{user} field will be used. +This field will override the @code{group} field of @code{oci-configuration}. + +@item @code{subuids-range} (type: maybe-subid-range) +An optional @code{subid-range} record allocating subuids for the user from +the @code{user} field. When unset, with the rootless Podman OCI runtime, it +defaults to @code{(subid-range (name "oci-container"))}. + +@item @code{subgids-range} (type: maybe-subid-range) +An optional @code{subid-range} record allocating subgids for the user from +the @code{user} field. When unset, with the rootless Podman OCI runtime, it +defaults to @code{(subid-range (name "oci-container"))}. + +@item @code{containers} (default: @code{'()}) (type: list-of-oci-containers) +The list of @code{oci-container-configuration} records representing the +containers to provision. The use of the @code{oci-extension} record should +be preferred for most cases. + +@item @code{networks} (default: @code{'()}) (type: list-of-oci-networks) +The list of @code{oci-network-configuration} records representing the +containers to provision. The use of the @code{oci-extension} record should +be preferred for most cases. + +@item @code{volumes} (default: @code{'()}) (type: list-of-oci-volumes) +The list of @code{oci-volumes-configuration} records representing the +containers to provision. The use of the @code{oci-extension} record should +be preferred for most cases. + +@item @code{verbose?} (default: @code{#f}) (type: boolean) +When true, additional output will be printed, allowing to better follow the +flow of execution. + +@end table + +@end deftp + + +@c %end of fragment + +@c %start of fragment + +@deftp {Data Type} oci-extension +Available @code{oci-extension} fields are: + +@table @asis +@item @code{containers} (default: @code{'()}) (type: list-of-oci-containers) +The list of @code{oci-container-configuration} records representing the +containers to provision. + +@item @code{networks} (default: @code{'()}) (type: list-of-oci-networks) +The list of @code{oci-network-configuration} records representing the +containers to provision. + +@item @code{volumes} (default: @code{'()}) (type: list-of-oci-volumes) +The list of @code{oci-volumes-configuration} records representing the +containers to provision. + +@end table + +@end deftp + + +@c %end of fragment + + +@c %start of fragment + @deftp {Data Type} oci-container-configuration Available @code{oci-container-configuration} fields are: @@ -44818,16 +44929,16 @@ Overwrite the default command (@code{CMD}) of the image. Overwrite the default entrypoint (@code{ENTRYPOINT}) of the image. @item @code{host-environment} (default: @code{'()}) (type: list) -Set environment variables in the host environment where @command{docker -run} is invoked. This is especially useful to pass secrets from the -host to the container without having them on the @command{docker run}'s -command line: by setting the @code{MYSQL_PASSWORD} on the host and by passing +Set environment variables in the host environment where @samp{docker run} +or @samp{podman run} are invoked. This is especially useful to pass secrets +from the host to the container without having them on the OCI runtime command line, +for example: by setting the @code{MYSQL_PASSWORD} on the host and by passing @code{--env MYSQL_PASSWORD} through the @code{extra-arguments} field, it is possible to securely set values in the container environment. This field's value can be a list of pairs or strings, even mixed: @lisp -(list '("LANGUAGE\" . "eo:ca:eu") +(list '("LANGUAGE" . "eo:ca:eu") "JAVA_HOME=/opt/java") @end lisp @@ -44835,22 +44946,24 @@ Pair members can be strings, gexps or file-like objects. Strings are passed directly to @code{make-forkexec-constructor}. @item @code{environment} (default: @code{'()}) (type: list) -Set environment variables. This can be a list of pairs or strings, even mixed: +Set environment variables inside the container. This can be a list of pairs +or strings, even mixed: @lisp (list '("LANGUAGE" . "eo:ca:eu") "JAVA_HOME=/opt/java") @end lisp -Pair members can be strings, gexps or file-like objects. -Strings are passed directly to the Docker CLI. You can refer to the -@uref{https://docs.docker.com/engine/reference/commandline/run/#env,upstream} -documentation for semantics. +Pair members can be strings, gexps or file-like objects. Strings are passed +directly to the OCI runtime CLI. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/run/#env,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#env-e-env,Podman} +upstream documentation for semantics. @item @code{image} (type: string-or-oci-image) The image used to build the container. It can be a string or an -@code{oci-image} record. Strings are resolved by the Docker Engine, and -follow the usual format +@code{oci-image} record. Strings are resolved by the OCI runtime, +and follow the usual format @code{myregistry.local:5000/testing/test-image:tag}. @item @code{provision} (default: @code{""}) (type: string) @@ -44878,7 +44991,7 @@ This is a list of @code{shepherd-action} records defining actions supported by the service. @item @code{network} (default: @code{""}) (type: string) -Set a Docker network for the spawned container. +Set an OCI network for the spawned container. @item @code{ports} (default: @code{'()}) (type: list) Set the port or port ranges to expose from the spawned container. This can be a @@ -44889,10 +45002,11 @@ list of pairs or strings, even mixed: "10443:443") @end lisp -Pair members can be strings, gexps or file-like objects. -Strings are passed directly to the Docker CLI. You can refer to the -@uref{https://docs.docker.com/engine/reference/commandline/run/#publish,upstream} -documentation for semantics. +Pair members can be strings, gexps or file-like objects. Strings are passed +directly to the OCI runtime CLI. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/run/#publish,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#publish-p-ip-hostport-containerport-protocol,Podman} +upstream documentation for semantics. @item @code{volumes} (default: @code{'()}) (type: list) Set volume mappings for the spawned container. This can be a @@ -44903,25 +45017,97 @@ list of pairs or strings, even mixed: "/gnu/store:/gnu/store") @end lisp -Pair members can be strings, gexps or file-like objects. -Strings are passed directly to the Docker CLI. You can refer to the -@uref{https://docs.docker.com/engine/reference/commandline/run/#volume,upstream} -documentation for semantics. +Pair members can be strings, gexps or file-like objects. Strings are passed +directly to the OCI runtime CLI. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/run/#volume,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#volume-v-source-volume-host-dir-container-dir-options,Podman} +upstream documentation for semantics. @item @code{container-user} (default: @code{""}) (type: string) Set the current user inside the spawned container. You can refer to the -@url{https://docs.docker.com/engine/reference/run/#user,upstream} -documentation for semantics. +@url{https://docs.docker.com/engine/reference/run/#user,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#user-u-user-group,Podman} +upstream documentation for semantics. @item @code{workdir} (default: @code{""}) (type: string) Set the current working directory for the spawned Shepherd service. You can refer to the -@url{https://docs.docker.com/engine/reference/run/#workdir,upstream} -documentation for semantics. +@url{https://docs.docker.com/engine/reference/run/#workdir,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#workdir-w-dir,Podman} +upstream documentation for semantics. + +@item @code{extra-arguments} (default: @code{'()}) (type: list) +A list of strings, gexps or file-like objects that will be directly passed +to the @samp{docker run} or @samp{podman run} invokation. + +@end table + +@end deftp + + +@c %end of fragment + +@c %start of fragment + +@deftp {Data Type} oci-network-configuration +Available @code{oci-network-configuration} fields are: + +@table @asis +@item @code{name} (type: string) +The name of the OCI network to provision. + +@item @code{driver} (type: maybe-string) +The driver to manage the network. + +@item @code{gateway} (type: maybe-string) +IPv4 or IPv6 gateway for the subnet. + +@item @code{internal?} (default: @code{#f}) (type: boolean) +Restrict external access to the network + +@item @code{ip-range} (type: maybe-string) +Allocate container ip from a sub-range in CIDR format. + +@item @code{ipam-driver} (type: maybe-string) +IP Address Management Driver. + +@item @code{ipv6?} (default: @code{#f}) (type: boolean) +Enable IPv6 networking. + +@item @code{subnet} (type: maybe-string) +Subnet in CIDR format that represents a network segment. + +@item @code{labels} (default: @code{'()}) (type: list) +The list of labels that will be used to tag the current volume. @item @code{extra-arguments} (default: @code{'()}) (type: list) -A list of strings, gexps or file-like objects that will be directly -passed to the @command{docker run} invocation. +A list of strings, gexps or file-like objects that will be directly passed +to the @samp{docker network create} or @samp{podman network create} +invokation. + +@end table + +@end deftp + + +@c %end of fragment + +@c %start of fragment + +@deftp {Data Type} oci-volume-configuration +Available @code{oci-volume-configuration} fields are: + +@table @asis +@item @code{name} (type: string) +The name of the OCI volume to provision. + +@item @code{labels} (default: @code{'()}) (type: list) +The list of labels that will be used to tag the current volume. + +@item @code{extra-arguments} (default: @code{'()}) (type: list) +A list of strings, gexps or file-like objects that will be directly passed +to the @samp{docker volume create} or @samp{podman volume create} +invokation. @end table @@ -52824,6 +53010,120 @@ For details about @code{readymedia-configuration}, check out the documentation of the system service (@pxref{Miscellaneous Services, @code{readymedia-service-type}}). +@subsubheading OCI backed services + +@cindex OCI-backed, for Home +The @code{(gnu home services containers)} module provides the following service: + +@defvar home-oci-service-type +This is the type of the service that allows to manage your OCI containers with +the same consistent interface you use for your other Home Shepherd services. +@end defvar + +This service is a direct mapping of the @code{oci-service-type} system +service (@pxref{Miscellaneous Services, OCI backed services}). You can +use it like this: + +@lisp +(use-modules (gnu services containers) + (gnu home services containers)) + +(simple-service 'home-oci-provisioning + home-oci-service-type + (oci-extension + (volumes + (list + (oci-volume-configuration (name "prometheus")) + (oci-volume-configuration (name "grafana")))) + (networks + (list + (oci-network-configuration (name "monitoring")))) + (containers + (list + (oci-container-configuration + (network "monitoring") + (image + (oci-image + (repository "guile") + (tag "3") + (value (specifications->manifest '("guile"))) + (pack-options '(#:symlinks (("/bin/guile" -> "bin/guile")) + #:max-layers 2)))) + (entrypoint "/bin/guile") + (command + '("-c" "(display \"hello!\n\")"))) + (oci-container-configuration + (image "prom/prometheus") + (network "monitoring") + (ports + '(("9000" . "9000") + ("9090" . "9090"))) + (volumes + (list + '(("prometheus" . "/var/lib/prometheus"))))) + (oci-container-configuration + (image "grafana/grafana:10.0.1") + (network "monitoring") + (volumes + '(("grafana:/var/lib/grafana")))))))) + +@end lisp + +You may specify a custom configuration by providing a +@code{oci-configuration} record, exactly like for +@code{oci-service-type}, but wrapping it in @code{for-home}: + +@lisp +(use-modules (gnu services) + (gnu services containers) + (gnu home services containers)) + +(service home-oci-service-type + (for-home + (oci-configuration + (runtime 'podman) + (verbose? #t)))) + +(simple-service 'home-oci-provisioning + home-oci-service-type + (oci-extension + (volumes + (list + (oci-volume-configuration (name "prometheus")) + (oci-volume-configuration (name "grafana")))) + (networks + (list + (oci-network-configuration (name "monitoring")))) + (containers + (list + (oci-container-configuration + (network "monitoring") + (image + (oci-image + (repository "guile") + (tag "3") + (value (specifications->manifest '("guile"))) + (pack-options '(#:symlinks (("/bin/guile" -> "bin/guile")) + #:max-layers 2)))) + (entrypoint "/bin/guile") + (command + '("-c" "(display \"hello!\n\")"))) + (oci-container-configuration + (image "prom/prometheus") + (network "monitoring") + (ports + '(("9000" . "9000") + ("9090" . "9090"))) + (volumes + (list + '(("prometheus" . "/var/lib/prometheus"))))) + (oci-container-configuration + (image "grafana/grafana:10.0.1") + (network "monitoring") + (volumes + '(("grafana:/var/lib/grafana")))))))) +@end lisp + @node Invoking guix home @section Invoking @command{guix home} diff --git a/etc/guix-daemon.service.in b/etc/guix-daemon.service.in index 6e534771c6..88929fa904 100644 --- a/etc/guix-daemon.service.in +++ b/etc/guix-daemon.service.in @@ -24,6 +24,10 @@ BindPaths=@storedir@ # Disable host file system mount propagation to keep service view of the # store read-write after 'gnu-store.mount' makes it read-only system-wide. MountFlags=private +# Mitigate race condition between guix-daemon and 'gnu-store.mount'. +# Dependent units will only start after daemon binary is started AND THUS +# the mount point is acquired in a private namespace. +Type=exec # Provide the CAP_CHOWN capability so that guix-daemon can create and chown # /var/guix/profiles/per-user/$USER and also chown failed build directories diff --git a/etc/news.scm b/etc/news.scm index c7b292d617..0a367cc95d 100644 --- a/etc/news.scm +++ b/etc/news.scm @@ -40,6 +40,34 @@ (channel-news (version 0) + (entry (commit "1618ca7aa2ee8b6519ee9fd0b965e15eca2bfe45") + (title + (en "New @command{guix-daemon} privilege escalation vulnerability +fixed")) + (body + (en "A new vulnerability was identified and fixed in the build +daemon, @command{guix-daemon} (CVE ID assignment pending). Everyone is +strongly advised to upgrade @command{guix-daemon}. Guix System users can do +this with commands along these lines: + +@example +sudo guix system reconfigure /run/current-system/configuration.scm +sudo herd restart guix-daemon +@end example + +If you are using Guix on another distro, run @command{info \"(guix) Upgrading +Guix\"} or visit +@uref{https://guix.gnu.org/manual/devel/en/html_node/Upgrading-Guix.html} to +learn how to upgrade Guix. + +This vulnerability lies in the @code{builtin:download} derivation builder: +anyone with access to the daemon can craft a @code{content-addressed-mirrors} +Scheme procedure that the daemon will execute as a build user (or as the +daemon user, when running @command{guix-daemon} unprivileged). An attacker +could use this to gain build user privileges and thereafter compromise builds +performed on the system. See @uref{https://codeberg.org/guix/guix/pulls/2419} +for more information."))) + (entry (commit "3e45fc0f37d027516ac3d112ca7768d698eeac74") (title (en "All Rust applications repackaged") diff --git a/gnu/build/oci-containers.scm b/gnu/build/oci-containers.scm new file mode 100644 index 0000000000..38704e9e4a --- /dev/null +++ b/gnu/build/oci-containers.scm @@ -0,0 +1,210 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;;; +;;; This module contains helpers used as part of the oci-service-type +;;; definition. +;;; +;;; Code: + +(define-module (gnu build oci-containers) + #:use-module (ice-9 format) + #:use-module (ice-9 match) + #:use-module (ice-9 popen) + #:use-module (ice-9 rdelim) + #:use-module (ice-9 textual-ports) + #:use-module (srfi srfi-1) + #:export (oci-read-lines + oci-system* + oci-object-exists? + oci-object-service-available? + oci-image-load + oci-log-verbose + oci-container-execlp + oci-object-create)) + +(define* (oci-read-lines invocation #:key verbose?) + (define (get-lines port) + (let ((lines-string (get-string-all port))) + (string-split lines-string #\newline))) + + (define command + (string-join invocation " ")) + + (when verbose? (format #t "Running ~a~%" command)) + + (with-input-from-port (open-input-pipe command) + (lambda _ + (get-lines (current-input-port))))) + +(define* (oci-log-verbose invocation) + (format #t "Running in verbose mode... +Current user: ~a ~a +Current group: ~a ~a +Current directory: ~a~%" + (getuid) (passwd:name (getpwuid (getuid))) + (getgid) (group:name (getgrgid (getgid))) + (getcwd)) + + (format #t "Running~{ ~a~}~%" invocation)) + +(define* (oci-system* invocation #:key verbose?) + (when verbose? + (format #t "Running~{ ~a~}~%" invocation)) + + (let* ((status (apply system* invocation)) + (exit-code (status:exit-val status))) + (when verbose? + (format #t "Exit code: ~a~%" exit-code)) + status)) + +(define* (oci-object-member name objects + #:key verbose?) + + (define member? (member name objects)) + + (when (and verbose? (> (length objects) 0)) + (format #t "~a is ~apart of:~{ ~a~}~%" + name + (if member? "" "not ") + objects)) + member?) + +(define* (oci-object-list runtime-cli object + #:key verbose? + (format-string "{{.Name}}")) + + (define invocation + (list runtime-cli object "ls" "--format" + (string-append "\"" format-string "\""))) + + (filter + (lambda (name) + (not (string=? (string-trim name) ""))) + (oci-read-lines invocation #:verbose? verbose?))) + +(define* (docker-object-exist? runtime-cli object name + #:key verbose? + (format-string "{{.Name}}")) + + (define objects + (oci-object-list runtime-cli object + #:verbose? verbose? + #:format-string format-string)) + + (oci-object-member name objects #:verbose? verbose?)) + +(define* (podman-object-exist? runtime-cli object name #:key verbose?) + (let ((invocation (list runtime-cli object "exists" name))) + (define exit-code + (status:exit-val (oci-system* invocation #:verbose? verbose?))) + (equal? EXIT_SUCCESS exit-code))) + +(define* (oci-object-exists? runtime runtime-cli object name + #:key verbose? + (format-string "{{.Name}}")) + (if (eq? runtime 'podman) + (podman-object-exist? runtime-cli object name + #:verbose? verbose?) + (docker-object-exist? runtime-cli object name + #:verbose? verbose? + #:format-string format-string))) + +(define* (oci-object-service-available? runtime-cli object names + #:key verbose? + (format-string "{{.Name}}")) + "Whether NAMES are provisioned in the current OBJECT environment." + (define environment + (oci-object-list runtime-cli object + #:verbose? verbose? + #:format-string format-string)) + (when verbose? + (format #t "~a environment:~{ ~a~}~%" object environment)) + + (define available? + (every + (lambda (name) + (oci-object-member name environment #:verbose? verbose?)) + names)) + + (when verbose? + (format #t "~a service is~a available~%" object (if available? "" " not"))) + + available?) + +(define* (oci-image-load runtime runtime-cli tarball name tag + #:key verbose? + (format-string "{{.Repository}}:{{.Tag}}")) + (define load-invocation + (list runtime-cli "load" "-i" tarball)) + + (if (oci-object-exists? runtime runtime-cli "image" tag + #:verbose? verbose? + #:format-string format-string) + (format #t "~a image already exists, skipping.~%" tag) + (begin + (format #t "Loading image for ~a from ~a...~%" name tarball) + + (let ((line (first + (oci-read-lines load-invocation #:verbose? verbose?)))) + (unless (or (eof-object? line) + (string-null? line)) + + (format #t "~a~%" line) + + (let* ((repository&tag + (string-drop line + (string-length + "Loaded image: "))) + (tag-invocation + (list runtime-cli "tag" repository&tag tag)) + (drop-old-tag-invocation + (list runtime-cli "image" "rm" "-f" repository&tag))) + + (unless (string=? repository&tag tag) + (let ((exit-code + (status:exit-val + (oci-system* tag-invocation #:verbose? verbose?)))) + (format #t "Tagged ~a with ~a...~%" tarball tag) + + (when (equal? EXIT_SUCCESS exit-code) + (oci-system* drop-old-tag-invocation #:verbose? verbose?)))))))))) + +(define* (oci-container-execlp invocation #:key verbose? pre-script) + (when pre-script + (pre-script)) + (when verbose? + (oci-log-verbose invocation)) + (apply execlp (first invocation) invocation)) + +(define* (oci-object-create runtime runtime-cli runtime-name + object + invocations + #:key verbose? + (format-string "{{.Name}}")) + (for-each + (lambda (invocation) + (define name (last invocation)) + (if (oci-object-exists? runtime runtime-cli object name + #:format-string format-string + #:verbose? verbose?) + (format #t "~a ~a ~a already exists, skipping creation.~%" + runtime-name name object) + (oci-system* invocation #:verbose? verbose?))) + invocations)) diff --git a/gnu/home/services/containers.scm b/gnu/home/services/containers.scm new file mode 100644 index 0000000000..1ccdb3b246 --- /dev/null +++ b/gnu/home/services/containers.scm @@ -0,0 +1,49 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu home services containers) + #:use-module (gnu home services) + #:use-module (gnu home services shepherd) + #:use-module (gnu services) + #:use-module (gnu services configuration) + #:use-module (gnu services containers) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (srfi srfi-1) + #:export (home-oci-service-type)) + +(define home-oci-service-type + (service-type + (inherit (system->home-service-type oci-service-type)) + (extensions + (list + (service-extension home-profile-service-type + (lambda (config) + (let ((runtime-cli + (oci-configuration-runtime-cli config)) + (runtime + (oci-configuration-runtime config))) + (oci-service-profile runtime runtime-cli)))) + (service-extension home-shepherd-service-type + oci-configuration->shepherd-services))) + (extend + (lambda (config extension) + (for-home + (oci-configuration + (inherit (oci-configuration-extend config extension)))))) + (default-value (for-home (oci-configuration))))) diff --git a/gnu/local.mk b/gnu/local.mk index 0bc9365199..1017920785 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -105,6 +105,7 @@ GNU_SYSTEM_MODULES = \ %D%/home/services.scm \ %D%/home/services/admin.scm \ %D%/home/services/backup.scm \ + %D%/home/services/containers.scm \ %D%/home/services/desktop.scm \ %D%/home/services/dict.scm \ %D%/home/services/dotfiles.scm \ @@ -146,7 +147,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/anthy.scm \ %D%/packages/antivirus.scm \ %D%/packages/apl.scm \ - %D%/packages/apple.scm \ %D%/packages/apparmor.scm \ %D%/packages/appimage.scm \ %D%/packages/apr.scm \ @@ -239,13 +239,11 @@ GNU_SYSTEM_MODULES = \ %D%/packages/dezyne.scm \ %D%/packages/decker.scm \ %D%/packages/dhall.scm \ - %D%/packages/dico.scm \ %D%/packages/dictd.scm \ %D%/packages/dotnet.scm \ %D%/packages/dictionaries.scm \ %D%/packages/diffoscope.scm \ %D%/packages/digest.scm \ - %D%/packages/direct-connect.scm \ %D%/packages/disk.scm \ %D%/packages/distributed.scm \ %D%/packages/display-managers.scm \ @@ -539,7 +537,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/pcre.scm \ %D%/packages/pdf.scm \ %D%/packages/pem.scm \ - %D%/packages/pep.scm \ %D%/packages/perl.scm \ %D%/packages/perl-check.scm \ %D%/packages/perl-compression.scm \ @@ -837,6 +834,7 @@ GNU_SYSTEM_MODULES = \ %D%/build/linux-initrd.scm \ %D%/build/linux-modules.scm \ %D%/build/marionette.scm \ + %D%/build/oci-containers.scm \ %D%/build/secret-service.scm \ \ %D%/tests.scm \ @@ -1440,6 +1438,8 @@ dist_patch_DATA = \ %D%/packages/patches/ghostscript-no-header-id.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-creationdate.patch \ + %D%/packages/patches/gimp-fix-metadata-editor.patch \ + %D%/packages/patches/gimp-fix-tiff-load.patch \ %D%/packages/patches/git-filter-repo-generate-doc.patch \ %D%/packages/patches/gklib-suitesparse.patch \ %D%/packages/patches/glib-appinfo-watch.patch \ @@ -1619,7 +1619,8 @@ dist_patch_DATA = \ %D%/packages/patches/insight-toolkit-fix-build.patch \ %D%/packages/patches/irrlicht-use-system-libs.patch \ %D%/packages/patches/irrlicht-link-against-needed-libs.patch \ - %D%/packages/patches/isl-0.11.1-aarch64-support.patch \ + %D%/packages/patches/isl-0.11.1-aarch64-support.patch \ + %D%/packages/patches/ispell-for-linphone-cmake.patch \ %D%/packages/patches/jamesdsp-fix-bulid-on-pipewire-1.4.0.patch\ %D%/packages/patches/jami-disable-webengine.patch \ %D%/packages/patches/jami-enable-testing.patch \ @@ -1768,6 +1769,7 @@ dist_patch_DATA = \ %D%/packages/patches/libmpeg2-global-symbol-test.patch \ %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \ %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \ + %D%/packages/patches/liblinphone-jsoncpp.patch \ %D%/packages/patches/libphonenumber-reproducible-build.patch \ %D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch \ %D%/packages/patches/libquicktime-ffmpeg.patch \ @@ -1803,7 +1805,8 @@ dist_patch_DATA = \ %D%/packages/patches/lierolibre-remove-arch-warning.patch \ %D%/packages/patches/lierolibre-try-building-other-arch.patch \ %D%/packages/patches/libcdio-glibc-compat.patch \ - %D%/packages/patches/linphone-desktop-without-sdk.patch \ + %D%/packages/patches/linphone-desktop-ispell.patch \ + %D%/packages/patches/linphone-desktop-qtkeychain.patch \ %D%/packages/patches/linux-libre-infodocs-target.patch \ %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \ %D%/packages/patches/linux-libre-arm64-mnt-reform-revert-phy-rockchip-samsung.patch \ @@ -1811,7 +1814,6 @@ dist_patch_DATA = \ %D%/packages/patches/linux-libre-arm64-mnt-reform-revert-vop2-display-modes.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \ %D%/packages/patches/linux-pam-unix_chkpwd.patch \ - %D%/packages/patches/linuxdcpp-openssl-1.1.patch \ %D%/packages/patches/lirc-localstatedir.patch \ %D%/packages/patches/lirc-reproducible-build.patch \ %D%/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch \ @@ -1833,6 +1835,7 @@ dist_patch_DATA = \ %D%/packages/patches/lugaru-fix-sound.patch \ %D%/packages/patches/luit-posix.patch \ %D%/packages/patches/lxc-no-static-bin.patch \ + %D%/packages/patches/lxsession-potfiles-ignore.patch \ %D%/packages/patches/mactelnet-remove-init.patch \ %D%/packages/patches/mailutils-variable-lookup.patch \ %D%/packages/patches/mandoc-support-zstd-compression.patch \ @@ -1858,6 +1861,7 @@ dist_patch_DATA = \ %D%/packages/patches/lvm2-no-systemd.patch \ %D%/packages/patches/maturin-no-cross-compile.patch \ %D%/packages/patches/mecab-variable-param.patch \ + %D%/packages/patches/mediastreamer2-cmake-findgsm.patch \ %D%/packages/patches/mediasdk-gcc-14.patch \ %D%/packages/patches/memtest86+-build-reproducibly.patch \ %D%/packages/patches/mercurial-hg-extension-path.patch \ @@ -1899,6 +1903,8 @@ dist_patch_DATA = \ %D%/packages/patches/mosaicatcher-unbundle-htslib.patch \ %D%/packages/patches/mrrescue-support-love-11.patch \ %D%/packages/patches/mrustc-patches.patch \ + %D%/packages/patches/mswebrtc-b64-refactor.patch \ + %D%/packages/patches/mswebrtc-cmake.patch \ %D%/packages/patches/mtools-mformat-uninitialized.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/musescore-fix-build.patch \ @@ -1935,11 +1941,13 @@ dist_patch_DATA = \ %D%/packages/patches/nss-getcwd-nonnull.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-3.56-pkgconfig.patch \ + %D%/packages/patches/nss-disable-broken-tests.patch \ + %D%/packages/patches/nss-3.115-disable-broken-tests.patch \ + %D%/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch \ %D%/packages/patches/ntp-fix-dereferencing-the-wrong-variable.patch \ %D%/packages/patches/nvi-assume-preserve-path.patch \ %D%/packages/patches/nvi-dbpagesize-binpower.patch \ %D%/packages/patches/nvi-db4.patch \ - %D%/packages/patches/nyacc-binary-literals.patch \ %D%/packages/patches/obs-modules-location.patch \ %D%/packages/patches/ocaml-ctypes-test-oo.patch \ %D%/packages/patches/ocaml-multiple-definitions.patch \ @@ -2072,6 +2080,7 @@ dist_patch_DATA = \ %D%/packages/patches/sdl-pango-matrix_declarations.patch \ %D%/packages/patches/sdl-pango-sans-serif.patch \ %D%/packages/patches/smalltalk-multiplication-overflow.patch \ + %D%/packages/patches/soci-mysql-ddl-types.patch \ %D%/packages/patches/sqlite-hurd.patch \ %D%/packages/patches/strace-readlink-tests.patch \ %D%/packages/patches/sunxi-tools-remove-sys-io.patch \ @@ -2189,11 +2198,10 @@ dist_patch_DATA = \ %D%/packages/patches/qdigidoc-bundle-tsl-files.patch \ %D%/packages/patches/qemu-build-info-manual.patch \ %D%/packages/patches/qemu-disable-bios-tables-test.patch \ - %D%/packages/patches/qemu-disable-migration-test.patch \ %D%/packages/patches/qemu-glibc-2.27.patch \ %D%/packages/patches/qemu-glibc-2.30.patch \ - %D%/packages/patches/qemu-glibc-2.41.patch \ %D%/packages/patches/qemu-fix-agent-paths.patch \ + %D%/packages/patches/qemu-fix-test-virtio-version.patch \ %D%/packages/patches/qrcodegen-cpp-cmake.patch \ %D%/packages/patches/qtbase-absolute-runpath.patch \ %D%/packages/patches/qtbase-fix-thread-test.patch \ @@ -2502,6 +2510,7 @@ dist_patch_DATA = \ %D%/packages/patches/zig-0.14-fix-runpath.patch \ %D%/packages/patches/zig-0.14-use-baseline-cpu-by-default.patch \ %D%/packages/patches/zig-0.14-use-system-paths.patch \ + %D%/packages/patches/zig-0.15-fix-runpath.patch \ %D%/packages/patches/zsh-egrep-failing-test.patch \ %D%/packages/patches/zuo-bin-sh.patch \ %D%/packages/patches/zxing-cpp-1.2.0-gcc-14.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 2e10b5bdc0..a2778cc84b 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -217,14 +217,14 @@ (define-public aide (package (name "aide") - (version "0.19.1") + (version "0.19.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/aide/aide/releases/download/v" version "/aide-" version ".tar.gz")) (sha256 - (base32 "0lhbx7ilwzpfl77vi7b6cklhgzk1iwyfp4fvvgvlmmq30igvzy3d")))) + (base32 "1i3lbsw1mhsnq54bx48zikdiph1ihxn021ca7kmys4b1yh2jnxi3")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--with-posix-acl" @@ -575,7 +575,7 @@ interface and is based on GNU Guile.") (if (or (target-arm?) (target-riscv64?)) guile-fibers-1.1 - guile-fibers)))) + guile-fibers-1.3)))) ;pinned version to avoid rebuilds (inputs (modify-inputs (package-inputs shepherd-0.9) (replace "guile-fibers" (this-package-native-input "guile-fibers")))))) @@ -2922,7 +2922,7 @@ system is under heavy load.") (define-public stress-ng (package (name "stress-ng") - (version "0.18.04") + (version "0.19.03") (source (origin (method git-fetch) @@ -2931,7 +2931,7 @@ system is under heavy load.") (commit (string-append "V" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "100w4qkrzpg7jjl4dw0c376xi811qnjmlbffiy43i945f9vl3dc7")))) + (base32 "1phrmjvvjn55pyfljfkk604d8q8wn17l416v91hskj98v7b7yhck")))) (build-system gnu-build-system) (arguments ;; XXX The test suite seems to cause instability on the VisionFive 2 @@ -3015,7 +3015,7 @@ environment variable is set and output is to tty.") (define-public lr (package (name "lr") - (version "1.6") + (version "2.0") (source (origin (method git-fetch) @@ -3024,14 +3024,14 @@ environment variable is set and output is to tty.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0qixmvxikyz02348xc0a718m9b1pzcazvf36rjbdk6ayn66g9hsd")))) + (base32 "05k971vf6080igfila8iav5d4j7sgh301123yng9lvsmr8frf8mf")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; There are no tests. - #:make-flags (list (string-append "CC=" ,(cc-for-target)) - (string-append "PREFIX=" %output)) - #:phases (modify-phases %standard-phases - (delete 'configure)))) + (list #:tests? #f ; There are no tests. + #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" %output)) + #:phases #~(modify-phases %standard-phases + (delete 'configure)))) (synopsis "Tool to generate customized file listings") (description "lr is a tool for generating file listings, which includes the best @@ -4639,7 +4639,7 @@ information tool.") (define-public fastfetch (package (name "fastfetch") - (version "2.50.2") + (version "2.51.1") (source (origin (method git-fetch) @@ -4648,7 +4648,7 @@ information tool.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "17pasb0cckp9pjjcmfi07lfmsg5wf59gynxq7m5w57jlzq10k3vm")) + (base32 "1c5z1mgpgm8nzxkdjfh0412zdnv1f8i1vvic2h5v99f9cmdjwr25")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/3rdparty"))))) @@ -4666,15 +4666,7 @@ information tool.") "/share/hwdata/pci.ids") (string-append "-DCUSTOM_AMDGPU_IDS_PATH=" #$(this-package-input "libdrm") - "/share/libdrm/amdgpu.ids")) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-yyjson - (lambda _ - ;; workaround for https://github.com/fastfetch-cli/fastfetch/pull/1904 - (substitute* "src/util/FFstrbuf.h" - (("\"3rdparty/yyjson/yyjson.h\"") - "<yyjson.h>"))))))) + "/share/libdrm/amdgpu.ids")))) (inputs (list dbus glib hwdata diff --git a/gnu/packages/aidc.scm b/gnu/packages/aidc.scm index d8aa9ab2f9..5d1ead9bcc 100644 --- a/gnu/packages/aidc.scm +++ b/gnu/packages/aidc.scm @@ -122,29 +122,6 @@ integration of this capability into your own programs.") (home-page "https://github.com/zxing-cpp/zxing-cpp") (license license:asl2.0))) -;;; This older variant is kept for kaidan, liblinphone and yosys-clang. -(define-public zxing-cpp-1.2a - ;; Use the master branch as it includes unreleased build system improvements - ;; allowing to use system libraries (instead of attempting to fetch them - ;; from the Internet). - (let ((revision "0") - (commit "00783db7aa3bcf8620a301854ac71c0ceaaca0c1")) - (package/inherit zxing-cpp - (name "zxing-cpp") - (version (git-version "1.2.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/zxing-cpp/zxing-cpp") - (commit commit))) - (patches (search-patches "zxing-cpp-1.2.0-gcc-14.patch")) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1yl2cpaqiv1g4nq9v0xfj1vd5faz55k4541vz6hsffvcxgn9nmc5")))) - (arguments '(#:configure-flags '())) - (native-inputs (list fmt-8 googletest))))) - ;;; This older variant is kept for gst-plugins-bad (see: ;;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1684). (define-public zxing-cpp-1.2 diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm index f9bc43f952..c884c1561c 100644 --- a/gnu/packages/android.scm +++ b/gnu/packages/android.scm @@ -1358,7 +1358,23 @@ mounted via FUSE.") #:tests? #f ; no tests provided upstream #:phases ;; There is no configure step. - #~(modify-phases %standard-phases (delete 'configure)))) + #~(modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'patch-calloc-order + ;; As of the 1.1.5 release, the calloc argument order is + ;; wrong, and GCC 14 recognises this. We correct it here. + ;; When updating this package, remove these patches + ;; (fixed in master). + (lambda _ + (substitute* "backed_block.cpp" + (("calloc[(]sizeof[(]struct backed_block_list[)], 1[)]") + "calloc(1, sizeof(struct backed_block_list))")) + (substitute* "simg2simg.cpp" + (("calloc[(]sizeof[(]struct sparse_file[*][)], files[)]") + "calloc(files, sizeof(struct sparse_file*))")) + (substitute* "sparse.cpp" + (("calloc[(]sizeof[(]struct sparse_file[)], 1[)]") + "calloc(1, sizeof(struct sparse_file))"))))))) (inputs (list zlib)) (home-page "https://github.com/anestisb/android-simg2img") (synopsis "Convert Android sparse images to raw ext4 images") diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm index 5d159a90ef..3312ce2fb5 100644 --- a/gnu/packages/apl.scm +++ b/gnu/packages/apl.scm @@ -28,12 +28,10 @@ #:use-module (guix svn-download) #:use-module (guix gexp) #:use-module (guix packages) - #:use-module (guix build-system font) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (gnu packages bash) #:use-module (gnu packages compression) - #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) #:use-module (gnu packages java) #:use-module (gnu packages maths) @@ -86,86 +84,6 @@ an implementation of the ISO standard 13751.") (license license:gpl3+)))) -(define-public font-apl2741-unicode - (let ((commit "1e11efae38e5095bfe49a786b111d563e83dad03")) - (package - (name "font-apl2741-unicode") - (version "1668049300") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/abrudz/APL2741.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0i1yk1x99lr2swlbq9r7dny5w70zwiwi8lpfcw4n7k7pfbw0xh7y")))) - (build-system trivial-build-system) - (native-inputs (list fontforge)) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let* ((source (assoc-ref %build-inputs "source")) - (out (assoc-ref %outputs "out")) - (dest (string-append out "/share/fonts/truetype")) - (fontforge (string-append - (assoc-ref %build-inputs "fontforge") - "/bin/fontforge"))) - (mkdir-p dest) - (invoke fontforge "-lang=ff" "-c" "Open($1); Generate($2)" - (string-append source "/APL2741.sfd") - (string-append dest "/APL2741.ttf")))))) - (synopsis "APL2741 Unicode font") - (home-page "https://abrudz.github.io/APL2741/") - (description "APL font based on Adrian Smith's IBM Selectric APL2741 -golf-ball font. It supports most special characters used by popular APL -implementations, some additional mathematical and typographical symbols, -single line drawing characters, as well as the full Unicode APL range, -including both uppercase and lowercase underscored alphabets, as-of-yet unused -symbols, and almost all Latin-1 accented letters.") - (license license:unlicense)))) - -(define-public font-apl333 - (package - (name "font-apl333") - ;; Version number as for apl-385, last modified 2013-04-20. - (version "20130420") - (source - (origin - (method url-fetch) - (uri (string-append "https://apl385.com/fonts/" "apl333.zip")) - (sha256 - (base32 "0yn0ha7d14vp4ma3lxbc9kpyrn20m7brjisr6w55c9mi24w9v3a5")))) - (build-system font-build-system) - (home-page "https://apl385.com/fonts/index.htm") - (synopsis "Variable-width APL font inspired by Comic Sans Serif") - (description - "Variable-width version of Adrian Smith's APL385 font developed with APL -software vendors in the late 1980s.") - (license license:public-domain))) - -(define-public font-apl385 - (package - (name "font-apl385") - ;; No version number or release, unzipping source and checking file times - ;; shows the font file was last modified on 2016-08-21. - (version "20160821") - (source - (origin - (method url-fetch) - (uri (string-append "https://apl385.com/fonts/" "apl385.zip")) - (sha256 - (base32 "132qfsnx0v6qf8x8iy3flivv449nz42nnpkwjysmz65w6wqxpk1g")))) - (build-system font-build-system) - (home-page "https://apl385.com/fonts/index.htm") - (synopsis "Monospaced APL font inspired by Comic Sans Serif") - (description - "Adrian Smith's monospaced APL font developed with APL software vendors -in the late 1980s.") - (license license:public-domain))) - (define-public dzaima-apl (package (name "dzaima-apl") diff --git a/gnu/packages/apple.scm b/gnu/packages/apple.scm deleted file mode 100644 index b59eee1802..0000000000 --- a/gnu/packages/apple.scm +++ /dev/null @@ -1,59 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2022 B. Wilson <elaexuotee@wilsonb.com> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages apple) - #:use-module (gnu packages bison) - #:use-module (guix build-system gnu) - #:use-module (guix packages) - #:use-module (guix git-download) - #:use-module ((guix licenses) #:prefix license:)) - -(define-public apple-bash - (package - (name "apple-bash") - (version "125") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/apple-oss-distributions/bash.git") - (commit (string-append "bash-" version)))) - (sha256 - (base32 "1d4s1z57yiyhgb6i22kb9al31j1fv9a4rp1bb747ny6grdvc4919")) - (file-name (git-file-name name version)))) - (build-system gnu-build-system) - (native-inputs (list bison)) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'configure 'pre-configure - (lambda _ - ;; An XCode project wraps the actual bash source. - (chdir "bash-3.2") - ;; The xlocale.h header was removed in glibc 2.26. - (substitute* "lib/glob/smatch.c" - (("xlocale.h") "locale.h")) - ;; EBADEXEC is XNU-specific. - (substitute* "execute_cmd.c" - (("EBADEXEC") "ENOEXEC"))))))) - (home-page "https://github.com/apple-oss-distributions/bash/") - (synopsis "Bash used on Apple macOS systems") - (description - "This is the version of Bash, forked from GNU Bash 3.2, released on Apple -macOS systems.") - (license license:gpl2+))) diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index ffb13025f3..8c192b1604 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2021 Sergiu Ivanov <sivanov@colimite.fr> ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,6 +35,9 @@ (define-module (gnu packages aspell) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) + #:use-module (guix git-download) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix licenses) #:use-module (guix utils) @@ -438,3 +442,43 @@ dictionaries, including personal ones.") European languages.") (home-page "https://www.cs.hmc.edu/~geoff/ispell.html") (license bsd-3))) + +;;; This is basically ispell but built with CMake, and which provides a CMake +;;; config file. +(define-public ispell-for-linphone + (let ((commit "05574fe160222c3d0b6283c1433c9b087271fad1") + (revision "0")) + (package + (inherit ispell) + (name "ispell-for-linphone") + ;; The version is captured in the ISPELL_VERSION variable in the + ;; CMakeLists.txt file at the root of the project. + (version (git-version "3.4.05" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.linphone.org/BC/public/external/ispell") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0shwbms6y0i18n2qnvjlbwfmzk5rydlp7wbf4dl1rn74r244p132")) + (patches (search-patches "ispell-for-linphone-cmake.patch")))) + (build-system cmake-build-system) + (arguments + (substitute-keyword-arguments (package-arguments ispell) + ((#:modules _ ''()) + '((guix build cmake-build-system) + (guix build utils) + (srfi srfi-26))) + ((#:phases phases '%standard-phases) + #~(modify-phases #$phases + (add-before 'configure 'really-configure + (assoc-ref %standard-phases 'configure)) + (add-after 'configure 'install-headers + (lambda _ + (let ((include-dir (string-append #$output "/include/ISpell"))) + (with-directory-excursion "../source" + (for-each (cut install-file <> include-dir) + '("config.h" "defhash.h" "ispell.h" + "libispell.h" "local.h"))))))))))))) diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index 47f2ee90b7..1051fde7cb 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -17,6 +17,7 @@ ;;; Copyright © 2024-2025 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; Copyright © 2025 Vasilii Smirnov <vasilii.smirnov@mailbox.org> ;;; Copyright © 2025 Daniel Ziltener <dziltener@lyrion.ch> +;;; Copyright © 2025 Hugo Buddelmeijer <hugo@buddelmeijer.nl> ;;; ;;; This file is part of GNU Guix. ;;; @@ -137,7 +138,7 @@ (define-public alfa (package (name "alfa") - (version "2.2") + (version "2.3") (source (origin (method git-fetch) (uri (git-reference @@ -145,7 +146,7 @@ (commit (string-append "v" version)))) (sha256 (base32 - "0aqxqar36822mh373awsl79j7zn8vik4yddyydsxv0c76gn4i2k3")) + "1wi7pjra49qyyz8qz2qcgjcjck16ld0zczavxqn2xksdx1p99ajs")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -279,7 +280,7 @@ wide set of telescopes.") (define-public astroterm (package (name "astroterm") - (version "1.0.8") + (version "1.0.9") (source (origin (method git-fetch) @@ -288,7 +289,7 @@ wide set of telescopes.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "10y776rh6ww1zjk96cd497ipbr54q0wdd1g7ybsrffdbrzc6l8jx")))) + (base32 "03vrprrahhfp7jbl1apmpxmv05fb8lw469fnsnq7sajdhc3waifx")))) (build-system meson-build-system) (arguments (list @@ -631,7 +632,8 @@ accurately in real time at any rate desired.") (arguments (list #:configure-flags - #~(list (string-append "--with-bzip2=" #$(this-package-input "bzip2"))) + #~(list "--enable-reentrant" + (string-append "--with-bzip2=" #$(this-package-input "bzip2"))) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-paths @@ -743,6 +745,54 @@ learning framework primarily developed and used for astronomical data analysis.") (license license:asl2.0))) +(define-public cpl + (package + (name "cpl") + (version "7.3.2") + (source + (origin + (method url-fetch) + (uri (string-append + "https://ftp.eso.org/pub/dfs/pipelines/libraries/cpl/cpl-" + version ".tar.gz")) + (sha256 + (base32 "083ppsa6ifc52m0s4ww4l9cajnh2f0y3s5bxaq31drihhrd2c355")))) + (build-system gnu-build-system) + (arguments + ;; pycpl expects to find a lib/esopipes-plugins directory. This is + ;; overruled by the PYESOREX_PLUGIN_DIR search path, but the default + ;; directory is still consulted and therefor needs to exist. + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'create-plugins-directory + (lambda _ + (mkdir-p (string-append #$output "/lib/esopipes-plugins"))))))) + (native-inputs + (list automake + autoconf + libtool + pkg-config + perl)) + (inputs + (list cfitsio + wcslib + fftw + fftwf)) + (home-page "https://www.eso.org/sci/software/cpl/") + (synopsis "Common Pipeline Library for astronomical data reduction") + (description + "The @acronym{CPL, Common Pipeline Library} comprises a set of ISO-C +libraries that provide a comprehensive, efficient and robust software toolkit +to develop astronomical data-reduction tasks (known as recipes). These +data-reduction tasks can then be executed manually by a user, or can be +triggered in an automated data-reduction framework (known as pipelines) which +are used at @acronym{ESO, European Southern Observatory} to monitor the health +status of @acronym{VLT, Very Large Telescope} instruments, for quick-look data +processing at the observatory, and the creation of data products available +from the ESO archive facility.") + (license license:gpl2+))) + (define-public erfa (package (name "erfa") @@ -768,6 +818,45 @@ Standards of Fundamental Astronomy} library published by the @acronym{IAU, International Astronomical Union}.") (license license:bsd-3))) +(define-public esorex + (package + (name "esorex") + (version "3.13.10") + (source + (origin + (method url-fetch) + (uri (string-append + "https://ftp.eso.org/pub/dfs/pipelines/libraries/esorex/esorex-" + version ".tar.gz")) + (sha256 + (base32 "1mkxjm2rnmviqfblnr4wwb3simvs7f5dly66qylvdfynvg3gk2d9")))) + (build-system gnu-build-system) + (native-inputs + (list automake + autoconf + libtool + pkg-config + perl)) + (inputs + (list cfitsio + wcslib + cpl)) + (native-search-paths + (list (search-path-specification + (variable "ESOREX_PLUGIN_DIR") + (files '("lib/esopipes-plugins"))))) + (home-page "https://www.eso.org/sci/software/cpl/esorex.html") + (synopsis "The European Southern Observatory Recipe Execution Tool") + (description + "EsoRex is the @acronym{European Southern Observatory,ESO} Recipe +Execution Tool. It can list, configure and execute @acronym{Common Pipeline +Library,CPL}-based recipes from the command line.") + ;; Set a rerlease-monitoring-url because the ftp directory includes + ;; prereleases that should not be refreshed to. + (properties `((release-monitoring-url + . "https://www.eso.org/sci/software/cpl/download.html"))) + (license license:gpl2+))) + (define-public eye (package (name "eye") @@ -798,6 +887,82 @@ applications of EyE include adaptive filtering, feature detection and cosmetic corrections.") (license license:cecill))) +(define-public ginga + (package + (name "ginga") + (version "5.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ginga" version)) + (sha256 + (base32 "0wv8fb8p8icsvkh2rn8jcxxx33kgac36gm9xqbgpm2z7z6m4haa7")))) + (build-system pyproject-build-system) + (arguments + (list + ;; AssertionError: Not equal to tolerance rtol=1e-07, atol=0.0001 + #:test-flags #~(list "-k" "not test_fwhm") + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-home + (lambda _ + ;; Relax matplotlib warning: ... because the default path + ;; (/homeless-shelter/.config/matplotlib) is not a writable + ;; directory ... + (setenv "HOME" "/tmp")))))) + (native-inputs + (list python-attrs + python-pytest-doctestplus + python-pytest-astropy + python-pytest-astropy-header + python-setuptools-next)) + (inputs + (list python-astropy + python-numpy + python-packaging + python-pillow + python-puremagic + python-pyyaml + python-qtpy + ;; [recomended] + opencv + python-astroquery + python-dateutil + python-exif-read + python-matplotlib + python-photutils + python-pillow-heif + python-scipy + ;; [qt6] + python-pyqt-6 + ;; [pyside6] + python-pyside-6 + ;; [tk,web] + python-pycairo + python-tornado)) + (home-page "https://ejeschke.github.io/ginga/") + (synopsis "Scientific image viewer and toolkit for FITS files") + (description + "Ginga is a toolkit designed for building viewers for scientific image +data in Python, visualizing 2D pixel data in numpy arrays. It can view +astronomical data such as contained in files based on the FITS (Flexible Image +Transport System) file format. It is written and is maintained by software +engineers at the National Astronomical Observatory of Japan (NAOJ), the Space +Telescope Science Institute (STScI), and other contributing entities. + +The Ginga toolkit centers around an image display object which supports +zooming and panning, color and intensity mapping, a choice of several +automatic cut levels algorithms and canvases for plotting scalable geometric +forms. In addition to this widget, a general purpose \"reference\" FITS +viewer is provided, based on a plugin framework. A fairly complete set of +standard plugins are provided for features that we expect from a modern FITS +viewer: panning and zooming windows, star catalog access, cuts, star +pick/FWHM, thumbnails, etc.") +(license license:bsd-3))) + +(define-public ginga-qt5 + (deprecated-package "ginga-qt5" ginga)) + (define-public glnemo2 (package (name "glnemo2") @@ -1093,7 +1258,7 @@ floating-point (no compression, LZW- or ZIP-compressed), FITS 8-bit, 16-bit, (define-public indi (package (name "indi") - (version "2.1.4") + (version "2.1.5") (source (origin (method git-fetch) @@ -1102,7 +1267,7 @@ floating-point (no compression, LZW- or ZIP-compressed), FITS 8-bit, 16-bit, (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "18rrp8mp0j126c1v3rpksyjkacq86520qmq4r5bkl78yf9dfxq3i")))) + (base32 "03qr5kvjr9dy8pwppn74mblkjxvm1nksbw2d9xinva8x4lxv8pry")))) (build-system cmake-build-system) (arguments (list @@ -1553,18 +1718,11 @@ R. Seaman's protocol} #~(begin ;; XXX: 'delete-all-but' is copied from the turbovnc package. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "thirdparty" "thirdparty.cmake"))))) (build-system cmake-build-system) (arguments @@ -1721,20 +1879,22 @@ model-fitting photometry or morphological analyses.") #~(list "--numprocesses" (number->string (min 8 (parallel-job-count)))) #:phases #~(modify-phases %standard-phases + ;; It fails to check SunPy's optional inputs versions. + (delete 'sanity-check) (add-before 'check 'set-home (lambda _ ;; E PermissionError: [Errno 13] Permission denied: ;; '/homeless-shelter' (setenv "HOME" "/tmp")))))) (native-inputs - (list python-pytest + (list nss-certs-for-test + python-pytest python-pytest-astropy python-pytest-cov python-pytest-doctestplus python-pytest-xdist - python-setuptools - python-setuptools-scm-next - python-wheel)) + python-setuptools-next + python-setuptools-scm-next)) (propagated-inputs (list python-sunpy)) (home-page "https://aia.lmsal.com/") @@ -1812,13 +1972,13 @@ Main features: (define-public python-asdf (package (name "python-asdf") - (version "4.3.0") + (version "4.4.0") (source (origin (method url-fetch) (uri (pypi-uri "asdf" version)) (sha256 - (base32 "0z88vzk3z9cdfafv8rbw4l6kz6panxamd21zafs6hj0w3zxpa7cn")))) + (base32 "0gincjs1vn6wxryazbkgmxy45cn1azb2yphj7nwg05yjwccn257p")))) (build-system pyproject-build-system) (arguments (list @@ -1877,8 +2037,21 @@ implementation of the ASDF Standard.") (build-system pyproject-build-system) (arguments (list + ;; tests: 4419 passed, 1 skipped #:test-flags - #~(list "--numprocesses" (number->string (parallel-job-count))) + #~(list "--numprocesses" (number->string (parallel-job-count)) + "-k" (string-join + ;; AttributeError: 'AsdfFile' object has no attribute + ;; '_open_impl' + (list "not test_legacy_icrs_deseialize" + "test_read_examples[example0]" + "test_read_examples[example1]" + "test_read_examples[example2]" + "test_read_examples[example3]" + "test_read_examples[example4]" + "test_read_examples[example5]" + "test_read_examples[example6]") + " and not ")) #:phases #~(modify-phases %standard-phases (add-before 'check 'set-home-env @@ -1896,7 +2069,7 @@ implementation of the ASDF Standard.") python-asdf-coordinates-schemas python-asdf-standard python-asdf-transform-schemas - python-astropy + python-astropy-minimal python-numpy python-packaging)) (home-page "https://github.com/astropy/asdf-astropy") @@ -2432,13 +2605,13 @@ constraints (i.e., altitude, airmass, moon separation/illumination, etc.) (define-public python-astropy (package (name "python-astropy") - (version "7.0.1") + (version "7.1.0") (source (origin (method url-fetch) (uri (pypi-uri "astropy" version)) (sha256 - (base32 "0q74735xzrvxxpjv3sa8w68sfnziw1jilr70qba7qhxj8fsfwbrr")) + (base32 "1iakikzhw173djb2p24229ndpvzpbcanyg9h4k7viccm48r59wn8")) (modules '((guix build utils))) (snippet '(begin @@ -2454,6 +2627,7 @@ constraints (i.e., altitude, airmass, moon separation/illumination, etc.) (build-system pyproject-build-system) (arguments (list + ;; tests: 29347 passed, 373 skipped, 233 xfailed, 32 warnings #:test-flags #~(list "--pyargs" "astropy" ;; XXX: Tests are not thread save when they are more than 8. @@ -2493,37 +2667,56 @@ constraints (i.e., altitude, airmass, moon separation/illumination, etc.) pkg-config python-cython-3 python-extension-helpers - python-ipython python-objgraph - python-pandas python-pytest python-pytest-astropy python-pytest-astropy-header - python-pytest-mpl + python-pytest-doctestplus python-pytest-xdist - python-scikit-image - python-setuptools - python-setuptools-scm + python-setuptools-scm-next python-sgp4 python-skyfield - python-threadpoolctl - python-timezonefinder - python-wheel)) + python-threadpoolctl)) (inputs - (list expat wcslib)) + (list expat + wcslib)) (propagated-inputs (list python-astropy-iers-data - python-configobj - python-h5py - python-jplephem - python-matplotlib + python-configobj ;to replace custom module python-numpy python-packaging - python-ply - python-pyarrow + python-ply ;to replace custom module python-pyerfa python-pyyaml - python-scipy)) + ;; [recommended] + python-matplotlib + python-scipy + ;; [jupyter] + ;; python-ipydatagrid ;no packaged + python-ipykernel + python-ipython + python-ipywidgets + python-jupyter-core + python-pandas + ;; [optional] + python-asdf + python-asdf-astropy + python-beautifulsoup4 + python-bleach + python-bottleneck + python-certifi + python-dask + python-fsspec + python-h5py + python-html5lib + python-jplephem + python-mpmath + python-pandas + python-pyarrow + python-pytz + python-s3fs + python-sortedcontainers + python-uncompresspy)) (home-page "https://www.astropy.org/") (synopsis "Core package for Astronomy in Python") (description @@ -2593,13 +2786,13 @@ astronomy and astrophysics.") (define-public python-astropy-iers-data (package (name "python-astropy-iers-data") - (version "0.2025.7.21.0.41.39") + (version "0.2025.8.18.0.40.14") (source (origin (method url-fetch) (uri (pypi-uri "astropy_iers_data" version)) (sha256 - (base32 "14qa0h3jx5iawmb0cpwak1wna0jhjsi18zm4wmdicyb9kly7b0p4")))) + (base32 "1srqhva7snjaygfji4947q4lxhdqph1l97lxjvk4s8ls5w32yrhc")))) (build-system pyproject-build-system) (arguments (list #:tests? #f)) ; no tests @@ -2634,13 +2827,15 @@ celestial-to-terrestrial coordinate transformations.") pkg-config python-cython-3 python-extension-helpers - python-setuptools - python-setuptools-scm - python-wheel)) + python-setuptools-scm-next)) (propagated-inputs - (modify-inputs (package-propagated-inputs python-astropy) - (delete python-matplotlib - python-scipy))))) + (list python-astropy-iers-data + python-configobj ;to replace custom module + python-numpy + python-packaging + python-ply ;to replace custom module + python-pyerfa + python-pyyaml)))) (define-public python-astroquery (package @@ -2787,44 +2982,32 @@ aim of simplifying and streamlining data conversion and standardization.") (define-public python-bayesicfitting (package (name "python-bayesicfitting") - (version "3.2.3") + (version "3.2.4") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/dokester/BayesicFitting") - (commit (string-append "v" version)))) + (url "https://github.com/dokester/BayesicFitting") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0q7s7glf4b46vln67x7ggbpkbi4anyh3f3ldwafc2hggsrmx683q")))) + (base32 "1fdxrmcbjfpvz1czmvq4kz2scdiw77kyzsgv6c0isijk1hckgcik")))) (build-system pyproject-build-system) (arguments (list + ;; XXX: To run full tests suite is quite expansive, select the one which + ;; is mentioned in <BayesicFitting/test/testall.csh>. #:test-flags #~(list "-m" "unittest" "discover" - "-p" "Test*.py" + "-p" "TestUserModel.py" "--top-level-directory" ".") #:phases #~(modify-phases %standard-phases - ;; XXX: Some tests fail for some reason. Disable those tests for now. - (add-before 'check 'disable-failing-tests - (lambda _ - (substitute* "BayesicFitting/test/TestNestedSampler.py" - ;; Fails with "AssertionError: False is not true". - (("def test3") - "def _test3") - ;; Fails with "Thread Error" exception. - (("def test1") - "def _test1")) - (substitute* "BayesicFitting/test/TestPhantomSampler.py" - ;; Fails with "Thread Error" exception. - (("def test1") - "def _test1")))) (replace 'check (lambda* (#:key tests? test-flags #:allow-other-keys) (when tests? - (chdir "BayesicFitting/test") - (apply invoke "python" test-flags))))))) + (with-directory-excursion "BayesicFitting/test" + (apply invoke "python" test-flags)))))))) (native-inputs (list python-setuptools python-wheel)) @@ -2834,7 +3017,7 @@ aim of simplifying and streamlining data conversion and standardization.") python-matplotlib python-numpy python-scipy)) - (home-page "https://www.bayesicfitting.nl") + (home-page "https://dokester.github.io/BayesicFitting/") (synopsis "Python Toolbox for Astronimical Bayesian fitting") (description "The BayesicFitting package is a python version of the the fitter classes @@ -3019,7 +3202,7 @@ bad pixel tracking throughout the reduction process.") (define-public python-cdflib (package (name "python-cdflib") - (version "1.3.4") + (version "1.3.6") (source (origin (method git-fetch) ; no tests in PyPI release @@ -3028,7 +3211,7 @@ bad pixel tracking throughout the reduction process.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1j0q0mgs6y5zyf3sjz49msp471kwl1la4rabga5pbyzfwfmxlihj")))) + (base32 "1rlzmwnlz77n8c62h050jc2njy10bfby671p3w7y6r6y6642xrdi")))) (build-system pyproject-build-system) (arguments (list #:phases @@ -3044,16 +3227,17 @@ bad pixel tracking throughout the reduction process.") python-pytest python-pytest-cov python-pytest-remotedata - python-setuptools + python-setuptools-next python-setuptools-scm - python-wheel python-xarray)) (propagated-inputs (list python-numpy)) (home-page "https://github.com/MAVENSDC/cdflib") (synopsis "Python library to deal with NASA's CDF astronmical data format") - (description "This package provides a Python @acronym{CDF, Computable -Document Format} reader toolkit. + (description + "This package provides a Python @acronym{CDF, Computable Document Format} +reader toolkit. + It provides the following functionality: @itemize @item Ability to read variables and attributes from CDF files @@ -3471,7 +3655,7 @@ files and provide related services.") (define-public python-czml3 (package (name "python-czml3") - (version "2.3.5") + (version "2.3.6") (source (origin (method git-fetch) @@ -3482,7 +3666,7 @@ files and provide related services.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1c2nw1rdllla76z8gkfv2a1dqc302cayhhkqn3xn4b0vgsn1z1k2")))) + (base32 "1b8zsbixa0n1zqjs497i0f3v7fr0vgj7jxqdsiqg0g5l66gq0c4f")))) (build-system pyproject-build-system) (native-inputs (list python-pytest @@ -3506,13 +3690,13 @@ Cesium.") (define-public python-dkist (package (name "python-dkist") - (version "1.14.0") + (version "1.15.0") (source (origin (method url-fetch) (uri (pypi-uri "dkist" version)) (sha256 - (base32 "061hgrg69cpnn2j6gaivjbkxwiz6rpmyf6igxq58h82g4r7yl6ya")))) + (base32 "0j5jxf624s746syam472k2xz3m77p66z9d7c8rz19f0xv3792xql")))) (build-system pyproject-build-system) (arguments (list @@ -3522,6 +3706,8 @@ Cesium.") "--deselect=dkist/net/tests/test_client.py::test_fetch_with_headers") #:phases #~(modify-phases %standard-phases + ;; XXX: It fails to check SunPy's optional inputs versions. + (delete 'sanity-check) (add-before 'check 'pre-check (lambda _ (setenv "HOME" "/tmp")))))) @@ -3539,12 +3725,16 @@ Cesium.") python-pytest-mpl python-pytest-remotedata python-pytest-xdist - python-setuptools - python-setuptools-scm-next - python-wheel)) + python-setuptools-next + python-setuptools-scm-next)) (propagated-inputs (list python-aiohttp python-asdf + python-asdf-astropy + python-asdf-coordinates-schemas + python-asdf-standard + python-asdf-transform-schemas + python-asdf-wcs-schemas python-astropy python-dask python-globus-sdk @@ -3552,6 +3742,7 @@ Cesium.") python-matplotlib python-ndcube python-numpy + python-packaging python-parfive python-platformdirs python-sunpy @@ -3566,7 +3757,7 @@ help you search, obtain and use DKIST data as part of your Python software.") (define-public python-drizzle (package (name "python-drizzle") - (version "2.1.0") + (version "2.1.1") (source (origin (method git-fetch) ;no test data in PyPI archive @@ -3575,7 +3766,7 @@ help you search, obtain and use DKIST data as part of your Python software.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1adp5bhzgrw0csn5wvpij7hzm5wh3zr4nkvpq0a8lb93ifk6k5gh")))) + (base32 "0s2vydy3fp6hvlzxdhx6my4js3vc7vpvy3hpgj4kjkl0r47s9vpx")))) (build-system pyproject-build-system) (arguments (list @@ -3593,8 +3784,7 @@ help you search, obtain and use DKIST data as part of your Python software.") python-gwcs python-pytest python-setuptools-next - python-setuptools-scm - python-wheel)) + python-setuptools-scm)) (propagated-inputs (list python-numpy)) (home-page "https://github.com/spacetelescope/drizzle") @@ -3708,19 +3898,21 @@ used with local NetDRMS sites.") (define-public python-dust-extinction (package (name "python-dust-extinction") - (version "1.5") + (version "1.6") (source (origin (method url-fetch) (uri (pypi-uri "dust_extinction" version)) (sha256 - (base32 "0f0g6gh4kj83xfv0cdp30dahs80pnhsj7c6ryz3f59qf6d5zqard")))) + (base32 "01iap2k49izn53v23kwkkpr5j5xhgk79xlwx6cb6h5ng29274nq5")))) (build-system pyproject-build-system) (native-inputs - (list python-pytest-astropy - python-wheel)) + (list python-pytest + python-pytest-doctestplus + python-setuptools-next)) (propagated-inputs - (list python-astropy python-scipy)) + (list python-astropy + python-scipy)) (home-page "http://dust-extinction.readthedocs.io/") (synopsis "Interstellar Dust Extinction Models") (description @@ -3728,6 +3920,49 @@ used with local NetDRMS sites.") implemented using the astropy.modeling framework.") (license license:bsd-3))) +(define-public python-edps + (package + (name "python-edps") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://ftp.eso.org/pub/dfs/pipelines/libraries/edps/edps-" + version ".tar.gz")) + (sha256 + (base32 "0wigb3ni663a8fp9wdsnlbg789y2898j3x523isb68mnq72fqblw")))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #f)) ;no tests in tarball + (native-inputs + (list python-pytest + python-setuptools-next)) + (propagated-inputs + (list python-astropy + python-fastapi + python-networkx + python-pyyaml + python-requests + python-uvicorn + python-tinydb + python-frozendict + python-jinja2 + python-pydantic-2 + python-psutil)) + (home-page "https://www.eso.org/sci/software/edps.html") + (synopsis "ESO's Data Processing System") + (description + "@acronym{European Southern Observatory Data Processing System EDPS} is a +system to automatically organise data from ESO instruments for pipeline +processing and running the pipeline on these data. It is used for quality +control at ESO. The current public release is a beta version without a GUI. +A GUI is being developed and the system is meant to eventually replace the +older EsoReflex environment.") + (properties '((upstream-name . "edps"))) + (license license:bsd-3))) + (define-public python-ephem (package (name "python-ephem") @@ -3787,7 +4022,7 @@ tools for astronomers.") (define-public python-extinction (package (name "python-extinction") - (version "0.4.7") + (version "0.4.8") (source (origin (method git-fetch) ; No tests in PyPI @@ -3796,7 +4031,7 @@ tools for astronomers.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "04k9mfbijf2nwzhh9sxpkswxk7077d7gbc6nq4hjb51h8rslcjg2")))) + (base32 "1dcb4c1rjv0msb3kagpgrj2xlb5spv8j76giy14vxkvz33lm4pz7")))) (build-system pyproject-build-system) (arguments (list @@ -3804,8 +4039,7 @@ tools for astronomers.") (native-inputs (list python-cython python-pytest - python-setuptools - python-wheel)) + python-setuptools-next)) (propagated-inputs (list python-numpy)) (home-page "https://github.com/sncosmo/extinction") @@ -3950,79 +4184,17 @@ Python.") (license license:bsd-2))) (define-public python-ginga - (package + (package/inherit ginga (name "python-ginga") - (version "5.3.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "ginga" version)) - (sha256 - (base32 "04ag7v2srpl0scd3x27bbzkpfih98rrxhqvrsxy03l84g3zzrj6k")))) - (build-system pyproject-build-system) - (arguments - (list - ;; AssertionError: Not equal to tolerance rtol=1e-07, atol=0.0001 - #:test-flags #~(list "-k" "not test_fwhm") - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-home - (lambda _ - ;; Relax matplotlib warning: ... because the default path - ;; (/homeless-shelter/.config/matplotlib) is not a writable - ;; directory ... - (setenv "HOME" "/tmp")))))) - (native-inputs - (list python-attrs - python-docutils - python-pytest-astropy - python-pytest-astropy-header - python-tornado)) + (inputs '()) (propagated-inputs - (list opencv - python-astropy - python-astroquery - python-dateutil - python-exif-read - python-fitsio - python-magic - python-matplotlib + (list python-astropy python-numpy python-packaging - python-photutils python-pillow python-puremagic python-pyyaml - python-qtpy - python-scipy - python-tomli)) - (home-page "https://ejeschke.github.io/ginga/") - (synopsis "Scientific image viewer and toolkit for FITS files") - (description - "Ginga is a toolkit designed for building viewers for scientific image -data in Python, visualizing 2D pixel data in numpy arrays. It can view -astronomical data such as contained in files based on the FITS (Flexible Image -Transport System) file format. It is written and is maintained by software -engineers at the National Astronomical Observatory of Japan (NAOJ), the Space -Telescope Science Institute (STScI), and other contributing entities. - -The Ginga toolkit centers around an image display object which supports -zooming and panning, color and intensity mapping, a choice of several -automatic cut levels algorithms and canvases for plotting scalable geometric -forms. In addition to this widget, a general purpose \"reference\" FITS -viewer is provided, based on a plugin framework. A fairly complete set of -standard plugins are provided for features that we expect from a modern FITS -viewer: panning and zooming windows, star catalog access, cuts, star -pick/FWHM, thumbnails, etc.") -(license license:bsd-3))) - -(define-public ginga-qt5 - (package/inherit python-ginga - (name "ginga-qt5") - (inputs - (modify-inputs (package-inputs python-ginga) - (prepend python-pyqt))) - (synopsis "Qt5 image viewer build based on python-ginga library"))) + python-qtpy)))) (define-public python-glue-astronomy (package @@ -4071,19 +4243,19 @@ astronomy-specific functionality") (define-public python-glue-core (package (name "python-glue-core") - (version "1.22.2") + (version "1.23.0") (source (origin (method url-fetch) (uri (pypi-uri "glue_core" version)) (sha256 - (base32 "0abv3snac3i78mc3ai29hbpamfqhig5ldlb9jpnn4sxpm2p7s5rc")))) + (base32 "0g79gw6ffz4bsby5kazv9a1mbrwa6b75kkal2bi2wjwz855nqsh6")))) (build-system pyproject-build-system) (native-inputs (list python-pytest python-pytest-mpl - python-setuptools-scm - python-wheel)) + python-setuptools-next + python-setuptools-scm-next)) (propagated-inputs (list python-astrodendro python-astropy @@ -4114,16 +4286,16 @@ across many files.") (define-public python-glue-qt (package (name "python-glue-qt") - (version "0.3.3") + (version "0.4.0") (source (origin (method git-fetch) ; no fresh release PyPI (uri (git-reference - (url "https://github.com/glue-viz/glue-qt") - (commit (string-append "v" version)))) + (url "https://github.com/glue-viz/glue-qt") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "14qzxszpzjz57bl75ybj8jlx73cd8lsgbb8id9gx4anq9sydzgqj")))) + (base32 "1ay0y0g2vgy2mn1dk9yxim0449lnny9fd7lplqqwy9vxhkh4gnxp")))) (build-system pyproject-build-system) (arguments (list @@ -4132,17 +4304,16 @@ across many files.") (add-before 'build 'set-env-version (lambda _ (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))) - (add-before 'check 'prepare-x - (lambda _ - (system "Xvfb &") - (setenv "DISPLAY" ":0") - (setenv "HOME" "/tmp")))))) + (add-before 'check 'prepare-x + (lambda _ + (system "Xvfb &") + (setenv "DISPLAY" ":0") + (setenv "HOME" "/tmp")))))) (native-inputs (list python-objgraph python-pytest - python-setuptools - python-setuptools-scm - python-wheel + python-setuptools-next + python-setuptools-scm-next xorg-server-for-tests)) (propagated-inputs (list python-astropy @@ -4241,16 +4412,21 @@ specifically pulsar timing array signals.") (define-public python-gwcs (package (name "python-gwcs") - (version "0.25.1") + (version "0.25.2") (source (origin (method url-fetch) (uri (pypi-uri "gwcs" version)) (sha256 - (base32 "0zr2mmad7qk1almw3kc3xqdhfkxbjg7yfc5a9cif4l0m8r11gr0x")))) + (base32 "12hs7qa03blpxp2i97n3wckvih7zcmpm4k4ia0p3hird49qq7l44")))) (build-system pyproject-build-system) (arguments (list + ;; tests: 1021 passed, 10 skipped, 1 deselected, 9 warnings + #:test-flags + ;; XXX: This is worth checking out more closely: + ;; Not equal to tolerance rtol=1e-07, atol=0. + #~(list "-k" "not test_fitswcs_imaging[fits_wcs_imaging_simple2]") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'relax-requirements @@ -4261,10 +4437,8 @@ specifically pulsar timing array signals.") (native-inputs (list python-pytest python-pytest-astropy - python-pyyaml python-setuptools-next - python-setuptools-scm-next - python-wheel)) + python-setuptools-scm-next)) (propagated-inputs (list python-asdf python-asdf-astropy @@ -4460,7 +4634,7 @@ scheme and builds with the HEALPix C++ library.") python-setuptools python-wheel)) (propagated-inputs - (list python-astropy + (list python-astropy-6 python-emcee python-h5py python-lenstronomy @@ -4562,17 +4736,18 @@ observationally-derived galaxy merger catalogs.") (define-public python-irispy-lmsal (package (name "python-irispy-lmsal") - (version "0.3.0") + (version "0.3.1") (source (origin (method url-fetch) (uri (pypi-uri "irispy_lmsal" version)) (sha256 - (base32 "0pqwgg89qq75nz7201535ixkcjqbqbdv3qmhcig2h2ah9fpcfpyy")))) + (base32 "037ip97kb5sq98shgw4d1c5x7lpbzksampfw7d97x59zbvbmvwhn")))) (build-system pyproject-build-system) (arguments (list #:test-flags + ;; See: <https://github.com/LM-SAL/irispy-lmsal/issues/83>. ;; Expected: ;; np.float64(0.33) ;; Got: @@ -4580,6 +4755,8 @@ observationally-derived galaxy merger catalogs.") #~(list "--deselect=irispy/obsid.py::irispy.obsid.ObsID") #:phases #~(modify-phases %standard-phases + ;; XXX: It fails to check SunPy's optional inputs versions. + (delete 'sanity-check) (add-before 'check 'set-home (lambda _ ;; E PermissionError: [Errno 13] Permission denied: @@ -4587,10 +4764,10 @@ observationally-derived galaxy merger catalogs.") (setenv "HOME" "/tmp")))))) (native-inputs (list ffmpeg + python-pooch python-pytest-astropy - python-setuptools - python-setuptools-scm - python-wheel)) + python-setuptools-next + python-setuptools-scm)) (propagated-inputs (list python-dkist python-mpl-animators @@ -4677,6 +4854,8 @@ milliarcsecond).") (substitute* "pyproject.toml" ;; drizzle>=2.0.1,<2.1.0 ((">=2.0.1,<2.1.0") ">=2.0.1") + ;; stcal>=1.14.1,<1.15.0 + ((">=1.14.1,<1.15.0") "") ;; scipy>=1.14.1 (("1.14.1") "1.12.0") ;; XXX: Can't detect opencv-python version. The input opencv @@ -4901,6 +5080,7 @@ astronomical tables (build-system pyproject-build-system) (arguments (list + ;; tests: 1338 passed, 350 warnings #:test-flags #~(list "--numprocesses" (number->string (parallel-job-count)) ;; TypeError: SparseSolverBase.__init__() got an @@ -4929,9 +5109,14 @@ astronomical tables ;; TypeError: SLIT_Starlets.function_2d() got an ;; unexpected keyword argument 'n_pix_x' "test_pixelbased_modelling" - ;; AssertionError: Arrays are not almost equal to 1 - ;; decimals ACTUAL: 0.8382375738251702 - "test_run_fit") + ;; XXX: These are precision errors in tests which + ;; need to be checked properly: AssertionError: + ;; Arrays are not almost equal ... + "test_run_fit" + "test_multiplane" + ;; ModuleNotFoundError: No module named + ;; 'astropy.cosmology._utils' + "test_short_and_laconic") " and not ")))) (native-inputs (list python-colossus @@ -5274,7 +5459,7 @@ Carlo.") (build-system pyproject-build-system) (arguments (list - ;; 393 passed, 7 skipped, 31 deselected, 10 xfailed + ;; tests: 393 passed, 7 skipped, 10 xfailed #:test-flags #~(list "--numprocesses" (number->string (parallel-job-count)) "-k" (string-join @@ -5303,7 +5488,8 @@ Carlo.") ;; Permission denied: '/homeless-shelter' (setenv "HOME" "/tmp")))))) (native-inputs - (list python-dask + (list nss-certs-for-test + python-dask python-pytest python-pytest-astropy python-pytest-mpl @@ -5444,7 +5630,7 @@ of astronomical sources.") (define-public python-pint-pulsar (package (name "python-pint-pulsar") - (version "1.1.3") + (version "1.1.4") (source (origin (method git-fetch) ; no tests data in the PyPI tarball @@ -5453,7 +5639,7 @@ of astronomical sources.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0n66z7v30q1981hx4q5vy3mibrh453gak8dd938038r5mwddya3f")))) + (base32 "0522p1gns52vzgj1l89s1s3idi40910hv4dpbhy4r1ijmwfb3kdg")))) (build-system pyproject-build-system) (arguments (list @@ -5669,6 +5855,39 @@ position-frequency slice.") (list python-setuptools python-wheel))))) +(define-public python-pycpl + (package + (name "python-pycpl") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://ftp.eso.org/pub/dfs/pipelines/libraries/pycpl/pycpl-" + version ".tar.gz")) + (sha256 + (base32 "0kfzx4k8z2k0ms6q8f16wqr120drd8fqrw9qpnks419pyc8cr5xp")))) + (build-system pyproject-build-system) + (native-inputs + (list cmake-minimal + pybind11 + python-pandas + python-pytest + python-scipy + python-setuptools-next)) + (inputs + (list cpl)) + (propagated-inputs + (list python-astropy)) + (home-page "https://www.eso.org/sci/software/pycpl/pycpl-site/") + (synopsis "Python bindings for ESO's CPL") + (description + "PyCPL provides Python3 language bindings for the complete programming +API of the @acronym{European Southern Observatory, ESO} @acronym{Common +Pipeline Library, CPL} toolkit, including the CPL plugin interface.") + (properties '((upstream-name . "pycpl"))) + (license license:bsd-3))) + (define-public python-pyerfa (package (name "python-pyerfa") @@ -5719,21 +5938,54 @@ Astronomical Union (IAU). All C routines are wrapped as Numpy universal functions, so that they can be called with scalar or array inputs.") (license license:bsd-3))) +(define-public python-pyesorex + (package + (name "python-pyesorex") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://ftp.eso.org/pub/dfs/pipelines/libraries/pyesorex/pyesorex-" + version ".tar.gz")) + (sha256 + (base32 "1ynb9q9aj51mdva1b76fkz7mlw5q8nlfs8f5f70bhila8iincjca")))) + (build-system pyproject-build-system) + (native-inputs + (list python-pytest + python-setuptools-next)) + (propagated-inputs + (list python-pycpl)) + (native-search-paths + (list (search-path-specification + (variable "PYESOREX_PLUGIN_DIR") + (files '("lib/esopipes-plugins"))))) + (home-page "https://www.eso.org/sci/software/pycpl/pycpl-site/") + (synopsis "Alternative Python CLI for ESO's Rex") + (description + "PyEsoRex is a command line tool which can serve as a drop-in replacement +of EsoRex, which can execute both, existing pipeline recipes implemented using +the @acronym{Common Pipeline Library, CPL} C API, and recipes implemented +using the PyCPL Python API.") + (properties '((upstream-name . "pyesorex"))) + (license license:bsd-3))) + (define-public python-pyhalo (package (name "python-pyhalo") - (version "1.4.1") + (version "1.4.3") (source (origin (method url-fetch) (uri (pypi-uri "pyhalo" version)) (sha256 - (base32 "06zdcr82fzzn6zkjralmv9qv7qjyjkni1p1rg60bvl8h013v3xp6")))) + (base32 "1yh5acjiwkfm4sjiydksg9187k3lwsads1p9zy0ck7wb6jwxrj81")))) (build-system pyproject-build-system) (arguments (list - ;; ValueError: The truth value of an array with more than one element is - ;; ambiguous. Use a.any() or a.all() + ;; tests: 194 passed, 3 deselected, 119 warnings + ;; ValueError: The truth value of an array with more than one element + ;; is ambiguous. Use a.any() or a.all() #:test-flags #~(list "-k" "not test_vmax") #:phases #~(modify-phases %standard-phases @@ -6067,6 +6319,8 @@ end products of specific X-ray observatories.") #~(list "--numprocesses" (number->string (parallel-job-count))) #:phases #~(modify-phases %standard-phases + ;; XXX: It fails to check SunPy's optional inputs versions. + (delete 'sanity-check) (add-before 'check 'set-home-env (lambda _ ;; Tests require HOME to be set. @@ -6127,102 +6381,103 @@ PSF} describing how the optical system spreads light from sources.") (license license:expat))) (define-public python-romancal - ;; The compatible version is not released yet, use the latest commit. - (let ((commit "ae864a407fc16001d3a0370779caa381f994f718") - (revision "0")) - (package - (name "python-romancal") - (version (git-version "0.19.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/spacetelescope/romancal") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0dxgwy6qva8ss7xb6hlkck6kysikgmn0byprvj4kx1l82gm1sk0g")))) - (build-system pyproject-build-system) - (arguments - (list - #:test-flags - #~(list "--color=no" - "--numprocesses" (number->string (min 8 (parallel-job-count))) - ;; XXX: Tests requiring network access or additional setup, - ;; check how to run them locally. - "--ignore=romancal/assign_wcs/tests/test_wcs.py" - "--ignore=romancal/dark_current/tests/test_dark.py" - "--ignore=romancal/dq_init/tests/test_dq_init.py" - "--ignore=romancal/flatfield/tests/test_flatfield.py" - "--ignore=romancal/flux/tests/test_flux_step.py" - "--ignore=romancal/lib/engdb/tests/test_engdb_tools.py" - "--ignore=romancal/linearity/tests/test_linearity.py" - "--ignore=romancal/multiband_catalog/tests/test_multiband_catalog.py" - "--ignore=romancal/orientation/tests/test_set_telescope_pointing.py" - "--ignore=romancal/photom/tests/test_photom.py" - "--ignore=romancal/ramp_fitting/tests/test_ramp_fit_cas22.py" - "--ignore=romancal/ramp_fitting/tests/test_ramp_fit_likelihood.py" - "--ignore=romancal/refpix/tests/test_step.py" - "--ignore=romancal/resample/tests/test_resample.py" - "--ignore=romancal/saturation/tests/test_saturation.py" - "--ignore=romancal/skycell/tests/test_skycell.py" - "--ignore=romancal/skycell/tests/test_skycell_match.py" - "--ignore=romancal/skymatch/tests/test_skymatch.py" - "--ignore=romancal/source_catalog/tests/test_psf.py" - "--ignore=romancal/source_catalog/tests/test_source_catalog.py" - "--ignore=romancal/stpipe/tests/test_core.py" - "--ignore=romancal/tweakreg/tests/test_tweakreg.py") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "pyproject.toml" - ;; XXX: scipy >=1.14.1 - ((" >=1.14.1") "")))) - (add-before 'build 'set-version - (lambda _ - (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" - #$(version-major+minor+point version))))))) - (native-inputs - (list nss-certs-for-test - python-ci-watson - python-deepdiff - ;; python-edp ;not packaged - python-pytest - python-pytest-astropy - python-pytest-xdist - python-setuptools-next - python-setuptools-scm - python-stpreview - python-wheel)) - (propagated-inputs - (list python-asdf - python-asdf-astropy - python-astropy - python-crds - python-drizzle - python-gwcs - python-jsonschema - python-numpy - python-pandas - python-photutils - python-pyarrow - python-pyparsing - python-requests - python-roman-datamodels - python-scipy - python-spherical-geometry - python-stcal - python-stpipe - python-stpsf - python-stsci-imagestats - python-tweakwcs)) - (home-page "https://github.com/spacetelescope/romancal") - (synopsis "Nancy Grace Roman Space Telescope observations processing library") - (description - "This package implements a functionality for calibration of science + (package + (name "python-romancal") + (version "0.20.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/spacetelescope/romancal") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "16aa8ylq6281k1z3yz0lzbw0ca9l7fgci1s14jqd9ymcmssnf4q4")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + #~(list "--color=no" + "--numprocesses" (number->string (min 8 (parallel-job-count))) + ;; XXX: Tests requiring network access or additional setup, + ;; check how to run them locally. + "--ignore=romancal/assign_wcs/tests/test_wcs.py" + "--ignore=romancal/dark_current/tests/test_dark.py" + "--ignore=romancal/dq_init/tests/test_dq_init.py" + "--ignore=romancal/flatfield/tests/test_flatfield.py" + "--ignore=romancal/flux/tests/test_flux_step.py" + "--ignore=romancal/lib/engdb/tests/test_engdb_tools.py" + "--ignore=romancal/linearity/tests/test_linearity.py" + "--ignore=romancal/multiband_catalog/tests/test_multiband_catalog.py" + "--ignore=romancal/orientation/tests/test_set_telescope_pointing.py" + "--ignore=romancal/photom/tests/test_photom.py" + "--ignore=romancal/ramp_fitting/tests/test_ramp_fit_cas22.py" + "--ignore=romancal/ramp_fitting/tests/test_ramp_fit_likelihood.py" + "--ignore=romancal/refpix/tests/test_step.py" + "--ignore=romancal/resample/tests/test_resample.py" + "--ignore=romancal/saturation/tests/test_saturation.py" + "--ignore=romancal/skycell/tests/test_skycell.py" + "--ignore=romancal/skycell/tests/test_skycell_match.py" + "--ignore=romancal/skymatch/tests/test_skymatch.py" + "--ignore=romancal/source_catalog/tests/test_psf.py" + "--ignore=romancal/source_catalog/tests/test_source_catalog.py" + "--ignore=romancal/stpipe/tests/test_core.py" + "--ignore=romancal/tweakreg/tests/test_tweakreg.py") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "pyproject.toml" + ;; XXX: scipy >=1.14.1 + ((" >=1.14.1") "") + (("stsci.imagestats >= 1.8.3") + ;; Cant' find the version even if it's added. + "stsci.imagestats")))) + (add-before 'build 'set-version + (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" + #$(version-major+minor+point version))))))) + (native-inputs + (list nss-certs-for-test + python-ci-watson + python-deepdiff + ;; python-edp ;not packaged + python-pytest + python-pytest-astropy + python-pytest-xdist + python-setuptools-next + python-setuptools-scm + python-stpreview)) + (propagated-inputs + (list python-asdf + python-asdf-astropy + python-astropy + python-crds + python-drizzle + python-gwcs + python-jsonschema + python-numpy + python-pandas + python-photutils + python-pyarrow + python-requests + python-roman-datamodels + python-scipy + python-spherical-geometry + python-stcal + python-stpipe + python-stsci-imagestats + python-tweakwcs + ;; [sdp] + python-pysiaf + ;; python-roman-photoz ;not packaged + python-stpreview)) + (home-page "https://github.com/spacetelescope/romancal") + (synopsis "Nancy Grace Roman Space Telescope observations processing library") + (description + "This package implements a functionality for calibration of science observations from the Nancy Grace Roman Space Telescope.") - (license license:bsd-3)))) + (license license:bsd-3))) (define-public python-sbpy (package @@ -6348,17 +6603,24 @@ library with bug fixtures.") (define-public python-sgp4 (package (name "python-sgp4") - (version "2.24") + (version "2.25") (source (origin (method url-fetch) (uri (pypi-uri "sgp4" version)) (sha256 - (base32 "0ll3gxjf697llh6nvisxnj2h4hl23nq1m24ymsykz8kf4ygj8man")))) + (base32 "0x06mxdmk2rsbp7ymjvvbj8pwkf4y2w6g8p0znw9zmi5rinxr7p1")))) (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "sgp4.tests"))))))) (native-inputs - (list python-setuptools - python-wheel)) + (list python-setuptools-next)) (propagated-inputs (list python-numpy)) (home-page "https://github.com/brandon-rhodes/python-sgp4") @@ -6709,13 +6971,13 @@ but has evolved to support other missions as well.") (define-public python-space-dolphin (package (name "python-space-dolphin") - (version "1.1.2") + (version "1.1.3") (source (origin (method url-fetch) (uri (pypi-uri "space_dolphin" version)) (sha256 - (base32 "0qxpb6ss0w4f6mnisri3i3a5g5dfa12a7iimdchzqql7r53x7xiq")))) + (base32 "0qsdaqbdf51ai54w4d483bf9kxjjcsr5fiqs861z7k7s7zrjms0r")))) (build-system pyproject-build-system) (arguments (list @@ -7156,13 +7418,13 @@ of axis order, spatial projections, and spectral units that exist in the wild. (define-public python-specutils (package (name "python-specutils") - (version "2.0.0") + (version "2.1.0") (source (origin (method url-fetch) (uri (pypi-uri "specutils" version)) (sha256 - (base32 "0ngq4r7awkbwdbi7a8isj6iw66xk3s26yjp0c0qvl6wvf9hby59r")))) + (base32 "02yf0s0qcwhj7qn0l3glvdlap4pr15s4hm2ki14py2k5sfv8j0ab")))) (build-system pyproject-build-system) (arguments (list @@ -7194,10 +7456,9 @@ of axis order, spatial projections, and spectral units that exist in the wild. (native-inputs (list python-matplotlib python-pytest-astropy - python-setuptools + python-setuptools-next python-setuptools-scm - python-spectral-cube - python-wheel)) + python-spectral-cube)) (propagated-inputs (list python-asdf python-asdf-astropy @@ -7384,13 +7645,13 @@ and CAS statistics), as well as fitting 2D Sérsic profiles.") (define-public python-stcal (package (name "python-stcal") - (version "1.14.1") + (version "1.15.0") (source (origin (method url-fetch) (uri (pypi-uri "stcal" version)) (sha256 - (base32 "1y3w1nlb4f56f9w7ql1al35mj2xv53cagrnpqknl1kh6r6qg7pqj")))) + (base32 "0q27dw3gsv03kik63rclpg0si8qb2k7l8lhszi2b1948kb0spwnn")))) (build-system pyproject-build-system) (arguments (list @@ -7907,13 +8168,13 @@ implementation package such as asdf-astropy.") (define-public python-rad (package (name "python-rad") - (version "0.26.0") + (version "0.27.0") (source (origin (method url-fetch) (uri (pypi-uri "rad" version)) (sha256 - (base32 "0vxkjsj9bdl84076lbric4jn531jv46i2wwfxak50i5mik8r7zjg")))) + (base32 "04vzqkcw6la5n2jw92khmqnizs2nf5vb27nknn3c6wj1jwfwl6bv")))) (build-system pyproject-build-system) (arguments (list @@ -7932,8 +8193,7 @@ implementation package such as asdf-astropy.") python-pytest-doctestplus python-semantic-version python-setuptools-next - python-setuptools-scm - python-wheel)) + python-setuptools-scm)) (propagated-inputs (list python-asdf python-asdf-astropy)) @@ -8030,16 +8290,17 @@ channels (define-public python-roman-datamodels (package (name "python-roman-datamodels") - (version "0.26.0") + (version "0.27.0") (source (origin (method url-fetch) (uri (pypi-uri "roman_datamodels" version)) (sha256 - (base32 "0kiv139q6q3pjlalb16nqcyib8hmd9svr4y24s7g0as08x09d7zl")))) + (base32 "1631jpv7mcrcka6bfxp04ih43wlm9pmqsqxckqyv6y9jgsipjxy3")))) (build-system pyproject-build-system) (arguments (list + ;; tests: 4185 passed, 1 skipped, 1 xfailed #:test-flags #~(list "--numprocesses" (number->string (parallel-job-count))) #:phases @@ -8148,20 +8409,19 @@ task}.") (define-public python-stsci-skypac (package (name "python-stsci-skypac") - (version "1.0.10") + (version "1.0.11") (source (origin (method url-fetch) (uri (pypi-uri "stsci_skypac" version)) (sha256 - (base32 "0amfknfxzrmia0d8x83i9h2v5760ynvfgfs0kzpb1ib0vyaci671")))) + (base32 "1pfgcgcgwvlil4m0v7d6raya70s74knimfh8yn634kapf24xxy1k")))) (build-system pyproject-build-system) (arguments (list #:tests? #f)) ; no tests in PyPI or git (native-inputs - (list python-setuptools - python-setuptools-scm-next - python-wheel)) + (list python-setuptools-next + python-setuptools-scm-next)) (propagated-inputs (list python-astropy python-numpy @@ -8386,7 +8646,8 @@ Telescope, HST}).") ;; For tests: Permission denied: '/homeless-shelter' (setenv "HOME" "/tmp")))))) (native-inputs - (list python-dask + (list nss-certs-for-test + python-dask python-pytest-astropy python-pytest-mpl python-pytest-xdist @@ -8429,16 +8690,16 @@ Telescope, HST}).") (lambda _ (setenv "HOME" "/tmp")))))) (native-inputs - (list python-pytest + (list nss-certs-for-test + python-pytest python-pytest-arraydiff python-pytest-doctestplus python-pytest-xdist python-reproject - python-setuptools + python-setuptools-next python-setuptools-scm-next python-streamtracer - python-sympy - python-wheel)) + python-sympy)) (propagated-inputs (list python-astropy python-numpy @@ -8517,23 +8778,30 @@ SunPy.") (define-public python-sunpy (package (name "python-sunpy") - (version "6.1.1") + (version "7.0.1") (source (origin (method url-fetch) (uri (pypi-uri "sunpy" version)) (sha256 - (base32 "1nqk5q4gd7w59zsps8gyzh6r1mmpzia0z5494za6na5vn2qsc2f6")))) + (base32 "1q7z74jf9r65clrq7g6mqqap6455krfp4mxbjs3039jk5gs8d47m")))) (build-system pyproject-build-system) (arguments (list + ;; tests: 2439 passed, 3 xfailed, 35 warnings #:test-flags #~(list "--pyargs" "sunpy" "--numprocesses" (number->string (min 8 (parallel-job-count))) - ;; Test introduces a time bomb and fails with error: ValueError: + "-m" "not remote_data" + ;; [1] Test introduces a time bomb and fails with error: ValueError: ;; interpolating from IERS_Auto using predictive values that are ;; more than 30.0 days old. - "-k" "not test_print_params") + ;; [2,3] Failed: DID NOT RAISE <class 'ModuleNotFoundError'> + "-k" (string-join + (list "not test_print_params" ;1 + "test_main_nonexisting_module" ;2 + "test_main_stdlib_module") ;3 + " and not ")) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'remove-test-files @@ -8553,20 +8821,19 @@ SunPy.") (with-directory-excursion "/tmp" (apply invoke "pytest" "-vv" test-flags)))))))) (native-inputs - (list opencv ; For tests, includes OpenCV-Python + (list nss-certs-for-test + opencv ; For tests, includes OpenCV-Python python-aiohttp python-extension-helpers python-hvpy python-jplephem ;; python-mplcairo ; Not packed yet in Guix - python-packaging python-pytest-astropy python-pytest-mock python-pytest-mpl python-pytest-xdist - python-setuptools - python-setuptools-scm-next - python-wheel)) + python-setuptools-next + python-setuptools-scm-next)) (propagated-inputs (list python-asdf python-asdf-astropy @@ -8583,10 +8850,12 @@ SunPy.") python-matplotlib python-mpl-animators python-numpy + python-packaging python-pandas python-parfive python-pyerfa python-reproject + python-requests-next python-scikit-image python-scipy ;; python-spiceypy ; Not packed yet in Guix, long journey. @@ -8617,7 +8886,8 @@ to the SolarSoft data analysis environment.") python-fsspec python-mpl-animators python-parfive - python-pyerfa))))) + python-pyerfa + python-requests-next))))) (define-public python-sunpy-soar (package @@ -8660,13 +8930,16 @@ to the SolarSoft data analysis environment.") " and not ")) #:phases #~(modify-phases %standard-phases + ;; XXX: It fails to check SunPy's optional inputs versions. + (delete 'sanity-check) (add-before 'check 'set-home-env (lambda _ ;; Tests require HOME to be set. ;; Permission denied: '/homeless-shelter' (setenv "HOME" "/tmp")))))) (native-inputs - (list python-pytest + (list nss-certs-for-test + python-pytest python-pytest-doctestplus python-responses python-setuptools @@ -8687,31 +8960,20 @@ to the SolarSoft data analysis environment.") (define-public python-sunraster (package (name "python-sunraster") - (version "0.6.0") + (version "0.6.1") (source (origin (method url-fetch) (uri (pypi-uri "sunraster" version)) (sha256 - (base32 "1nyrhn7if7xpl97k6nzsxymdi6b77n61xlh1il3m58rdrjyp5q81")))) + (base32 "0a1w7958n4m1qm59x6y00a0p45b5drnj1ippwl7gvszbwamhr2gr")))) (build-system pyproject-build-system) (arguments (list #:test-flags #~(list "--numprocesses" (number->string (parallel-job-count)) "--ignore=docs/data_types/raster.rst" - "--ignore=docs/data_types/spectrogram.rst" - "-k" (string-join - ;; XXX: Reported upstream: - ;; <https://github.com/sunpy/sunraster/issues/281> - (list "not test_apply_exposure_time_correction" - "test_ndcube_components_after_slicing" - "test_read_spice_l2_fits_multiple_files_dumbbells" - "test_read_spice_l2_fits_multiple_rasters_multiple_windows" - "test_read_spice_l2_fits_multiple_rasters_single_window" - "test_read_spice_l2_fits_multiple_sns_multiple_windows" - "test_read_spice_l2_fits_single_file_dumbbells") - " and not ")) + "--ignore=docs/data_types/spectrogram.rst") #:phases #~(modify-phases %standard-phases (add-before 'check 'pre-check @@ -8720,14 +8982,14 @@ to the SolarSoft data analysis environment.") ;; '/homeless-shelter' (setenv "HOME" "/tmp")))))) (native-inputs - (list python-pytest + (list nss-certs-for-test + python-pytest python-pytest-astropy python-pytest-doctestplus python-pytest-xdist python-setuptools-next python-setuptools-scm-next - python-sunpy-minimal - python-wheel)) + python-sunpy-minimal)) (propagated-inputs (list python-astropy python-ndcube @@ -9580,23 +9842,18 @@ deconvolution). Such post-processing is not performed by Stackistry.") (license license:gpl3+))) (define-public stellarium - ;; XXX: 25.1 does not provide option to build with system MD4C, see - ;; <https://github.com/Stellarium/stellarium/issues/4267>, using the latest - ;; commit. - (let ((commit "045915b9dca754f6eec1bdc311428eb3e98d1002") - (revision "2")) - (package + (package (name "stellarium") - (version (git-version "25.1" revision commit)) + (version "25.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/Stellarium/stellarium") - (commit commit))) + (url "https://github.com/Stellarium/stellarium") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1nrjfa1aq0inrbr66w8n8lqjkn0nsssjfl0dfrc4maynjp63gqkq")))) + (base32 "0fxdvybdcnlkjkyx1kqc7gg7p55qd4h1ri0mmn1xj2g5fxsbs0nr")))) (build-system qt-build-system) ;; TODO: Complete documentation build and split into dedicated outputs. (arguments @@ -9605,11 +9862,11 @@ deconvolution). Such post-processing is not performed by Stackistry.") #:tests? #f #:configure-flags #~(list "-DENABLE_GPS=1" - ;; TODO: Enable when all of the dependencies are available for Qt6. - "-DENABLE_QT6=0" "-DENABLE_TESTING=0" (string-append "-DCMAKE_CXX_FLAGS=-isystem " - #$(this-package-input "qtserialport") "/include/qt5")) + #$(this-package-input "qtpositioning") "/include/qt6" + " -isystem " + #$(this-package-input "qtserialport") "/include/qt6")) #:phases #~(modify-phases %standard-phases (add-before 'check 'set-offscreen-display @@ -9617,24 +9874,25 @@ deconvolution). Such post-processing is not performed by Stackistry.") (setenv "QT_QPA_PLATFORM" "offscreen") (setenv "HOME" "/tmp")))))) (inputs - (list calcmysky-qt5 + (list calcmysky + eigen + glm gpsd indi libnova md4c nlopt openssl - qtbase-5 - qtcharts-5 - qtlocation-5 - qtmultimedia-5 + qtbase + qtcharts + qtlocation + qtmultimedia qtpositioning - qtscript-5 - qtserialport-5 + qtserialport qttranslations - qtwayland-5 - qtwebengine-5 - qxlsx-qt5 + qtwayland + qtwebengine + qxlsx zlib)) (native-inputs (list doxygen @@ -9643,7 +9901,7 @@ deconvolution). Such post-processing is not performed by Stackistry.") mesa perl python-wrapper - qttools-5)) + qttools)) (home-page "https://stellarium.org/") (synopsis "3D sky viewer") (description @@ -9651,7 +9909,7 @@ deconvolution). Such post-processing is not performed by Stackistry.") 3D, just like what you see with the naked eye, binoculars, or a telescope. It can be used to control telescopes over a serial port for tracking celestial objects.") - (license license:gpl2+)))) + (license license:gpl2+))) (define-public stuff ;; XXX: No version tag available in GitHub. @@ -9934,7 +10192,7 @@ n-body file formats (nemo, Gadget binaries 1 and 2, Gadget hdf5, Ramses).") (define-public uraniborg (package (name "uraniborg") - (version "0.0.8") + (version "0.0.10") (source (origin (method git-fetch) @@ -9943,23 +10201,23 @@ n-body file formats (nemo, Gadget binaries 1 and 2, Gadget hdf5, Ramses).") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0jr4sj42cg1b1n74yag1a4rbysk53s9a3qbd3sg5qaabvjs534v1")))) + (base32 "0bz2k2x06nyvhr9v4z6f21cf29pqsj9m4qyn8sdbl421wsqj31wg")))) (build-system go-build-system) (arguments (list - #:tests? #f ; XXX: tests require some config files which are not in Git #:install-source? #f #:import-path "bitbucket.org/dpnash/uraniborg" #:phases #~(modify-phases %standard-phases (add-before 'build 'patch-config - ;; TODO: This might be patched in the upstream, see - ;; <https://codeberg.org/astronexus/uraniborg/issues/1>. (lambda* (#:key import-path #:allow-other-keys) (with-directory-excursion (string-append "src/" import-path) (substitute* "consts.go" - (("config/") (string-append #$output "/etc/uraniborg/")) - (("data/") (string-append #$output "/share/uraniborg/data/"))) + (("DEFAULT_BASE_DIR = \".\"") (format #f "DEFAULT_BASE_DIR = ~s" #$output)) + (("\"config\"") (format #f "~s" "etc/uraniborg")) + (("\"data\"") (format #f "~s" "share/uraniborg/data")) + (("\"charts\"") (format #f "~s" "share/uraniborg/charts")) + (("\"fonts\"") (format #f "~s" "share/uraniborg/fonts"))) (substitute* (find-files "config" ".*\\.yaml$") (("fonts/") (string-append #$output "/share/uraniborg/fonts/")))))) (add-after 'install 'install-runtime-files @@ -9967,11 +10225,19 @@ n-body file formats (nemo, Gadget binaries 1 and 2, Gadget hdf5, Ramses).") (with-directory-excursion (string-append "src/" import-path) (let ((etc (string-append #$output "/etc/uraniborg")) (data (string-append #$output "/share/uraniborg/data")) + (charts (string-append #$output "/share/uraniborg/charts")) (fonts (string-append #$output "/share/uraniborg/fonts"))) (copy-recursively "config" etc) + (copy-recursively "charts" charts) (copy-recursively "fonts" fonts) - (system* "gunzip" "data/athyg_32_subset.csv.gz") - (install-file "data/athyg_32_subset.csv" data)))))))) + (system* "gunzip" "data/athyg_33_subset.csv.gz") + (install-file "data/athyg_33_subset.csv" data))))) + (delete 'check) + (add-after 'install-runtime-files 'post-install-check + (lambda* (#:key tests? import-path #:allow-other-keys) + (when tests? + (with-directory-excursion (string-append "src/" import-path) + (invoke "go" "test" "-v" "./...")))))))) (native-inputs (list go-codeberg-org-astronexus-brahe go-dario-cat-mergo @@ -9990,7 +10256,10 @@ from the HYG catalog. @code{uraniborg} lets you view the sky from both the solar system and from any star in the AT-HYG catalog with a known distance (over 2.5 million stars -currently).") +currently). + +Base directory containing custom config, data, charts and fonts may be +adjusted with command line option @code{-b}, by default set to store path.") (license (list license:asl2.0 ;; Roboto fonts license:silofl1.1 ;; Noto Sans fonts license:gpl3+)))) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 066621037e..e01d0def8f 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016–2023 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018 okapi <okapi@firemail.cc> -;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2018, 2020, 2022-2025 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@gnu.org> @@ -1922,7 +1922,7 @@ synthesis.") (define-public snapcast (package (name "snapcast") - (version "0.29.0") + (version "0.32.3") (source (origin (method git-fetch) (uri (git-reference @@ -1931,21 +1931,21 @@ synthesis.") (file-name (git-file-name name version)) (sha256 (base32 - "1960xp54vsndj9vvc03kx9kg9phdchdgrfghhvcp2b0nfq2qcqqm")))) + "06hllji1621f29g6ymbysi1vkndjsrwj63f5ph30f6kvv3c8sqx4")))) (build-system cmake-build-system) - (arguments - '(#:tests? #f)) ; no included tests + (arguments '(#:tests? #f)) ;no included tests (inputs - (list boost - libvorbis - soxr - alsa-lib + (list alsa-lib avahi - pulseaudio + boost + expat flac - opus)) - (native-inputs - (list pkg-config)) + libvorbis + openssl + opus + pulseaudio + soxr)) + (native-inputs (list pkg-config)) (home-page "https://github.com/badaix/snapcast") (synopsis "Synchronous multiroom audio player") (description @@ -6479,16 +6479,16 @@ workstations as well as consumer software such as music players.") (define-public redkite (package (name "redkite") - (version "1.3.1") ;marked unmaintained as of Oct. 2021 + (version "2.1.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/free-sm/redkite") + (url "https://github.com/quamplex/redkite") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1zb2k2a4m7z2ravqrjn8fq8lic20wbr2m8kja3p3113jsk7j9zvd")))) + (base32 "1xn7vnv7zszy0f1ynxd7qn0131w0gmk3rp3my4xjh143dhck4q4b")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no tests included @@ -6496,13 +6496,13 @@ workstations as well as consumer software such as music players.") (list cairo)) (native-inputs (list pkg-config)) - (synopsis "Small GUI toolkit") + (synopsis "Lightweight graphics widget toolkit for embedded GUI") (description "Redkite is a small GUI toolkit developed in C++17 and inspired from other well known GUI toolkits such as Qt and GTK. It is minimal on purpose and is intended to be statically linked to applications, therefore satisfying any requirements they may have to be self contained, as is the case with audio plugins.") - (home-page "https://gitlab.com/geontime/redkite") + (home-page "https://github.com/quamplex/redkite") (license license:gpl3+))) (define-public carla diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index c20722245f..6f705e760c 100644 --- a/gnu/packages/benchmark.scm +++ b/gnu/packages/benchmark.scm @@ -233,7 +233,7 @@ This can give a much better understanding of the command's performance.") (define-public benchmark (package (name "benchmark") - (version "1.5.6") + (version "1.9.4") (source (origin (method git-fetch) (uri (git-reference @@ -242,7 +242,7 @@ This can give a much better understanding of the command's performance.") (file-name (git-file-name name version)) (sha256 (base32 - "030g4d8vpn2442dsap0qw86lsw7xfl36k0x0x9bn0vvm11qvjn8c")))) + "05b5sf0dmgr5s9dbvasg8rndh754kkc4chni6ynqa1h8m5q0kg1z")))) (build-system cmake-build-system) (native-inputs `(("googletest-source" ,(package-source googletest)) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 1b381f1bb8..a7135759f9 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -7162,7 +7162,7 @@ bases are detected.") (define-public trinityrnaseq (package (name "trinityrnaseq") - (version "2.13.2") + (version "2.15.2") (source (origin (method git-fetch) (uri (git-reference @@ -7172,7 +7172,7 @@ bases are detected.") (file-name (git-file-name name version)) (sha256 (base32 - "1qszrxqbx4q5pavpgm4rkrh1z1v1mf7qx83vv3fnlqdmncnsf1gv")))) + "06qvxy6wvvjpn1mkg8m78syyn98xj76569gpl2jbc9q036i56kh8")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index c4b721c9f5..94d49e1458 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -2154,3 +2154,103 @@ the features of iPXE without the hassle of reflashing.") "-o" (string-append firmware "/efi-" name ".rom"))))) '#$roms))))))))))) + +(define-public refind + (package + (name "refind") + (version "0.14.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/refind/" version + "/refind-src-" version ".tar.gz")) + (sha256 + (base32 + "1w682p0j59apjcy26xzzhv70fyd8nqjs47i8cz2qcsx71pl3rngp")) + (snippet + #~(begin + (use-modules (guix build utils)) + (delete-file-recursively + "refind/tools_x64/gptsync_x64.efi"))))) + (build-system gnu-build-system) + (outputs '("out" "doc")) + (native-inputs + (list binutils)) + (inputs + (list gnu-efi)) + (arguments + (list #:tests? #f ; no tests + #:make-flags + #~(list ;; Make build reproducible. + ;; Also disables secure boot anti-rollback protection. + ;; Otherwise, "objcopy --add-section" would change the + ;; timestamp inside the EFI file. + "OMIT_SBAT=1" + (string-append "AR=" #$(ar-for-target)) + (string-append "CC=" #$(cc-for-target)) + (string-append "LD=" #$(ld-for-target)) + (string-append "EFIINC=" (assoc-ref %build-inputs "gnu-efi") + "/include/efi") + (string-append "GNUEFILIB=" (assoc-ref %build-inputs "gnu-efi") + "/lib") + (string-append "EFILIB=" (assoc-ref %build-inputs "gnu-efi") + "/lib") + (string-append "EFICRT0=" (assoc-ref %build-inputs "gnu-efi") + "/lib") + (string-append "OBJCOPY=" (assoc-ref %build-inputs "binutils") + "/bin/objcopy")) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'build 'build-fs + (lambda* (#:key inputs make-flags #:allow-other-keys) + (apply invoke "make" "fs" make-flags))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out-sbin (string-append #$output "/sbin")) + (out-share + (string-append #$output "/share/refind-" + #$version)) + (out-share-refind + (string-append out-share "/refind"))) + (mkdir-p out-share) + (copy-recursively "banners" + (string-append out-share "/banners")) + (copy-recursively "fonts" + (string-append out-share "/fonts")) + (for-each (lambda (name) + (copy-recursively name + (string-append + out-share-refind "/" + name))) + (find-files "." "^drivers_" #:directories? #t)) + (copy-recursively "icons" + (string-append out-share-refind "/icons")) + ;(copy-recursively "keys" "/etc/refind.d") + (install-file "mkrlconf" out-sbin) + (install-file "mvrefind" out-sbin) + (install-file "refind-sb-healthcheck" out-sbin) + (install-file "refind-install" out-share) + (install-file "refind-mkdefault" out-sbin) + (install-file "refind.conf-sample" out-share-refind) + (for-each + (lambda (name) + (install-file name + (string-append #$output "/share/man/man8"))) + (find-files "docs/man" "[.]8$")) + (for-each (lambda (f) + (install-file f out-share-refind)) + (find-files "refind" "refind.*\\.efi$"))))) + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out-doc + (string-append #$output:doc "/share/doc/refind-" + #$version))) + (copy-recursively "docs/refind" + (string-append out-doc "/refind")) + (copy-recursively "docs/Styles" + (string-append out-doc "/Styles")))))))) + (synopsis "rEFInd boot manager") + (description "This package provides a boot manager that is an EFI +program.") + (home-page "https://www.rodsbooks.com/refind/") + (license license:gpl3+))) diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm index 934466f951..5fc5d385d0 100644 --- a/gnu/packages/browser-extensions.scm +++ b/gnu/packages/browser-extensions.scm @@ -328,7 +328,7 @@ with the @uref{https://keepassxc.org, KeePassXC} password manager.") (define noscript (package (name "noscript") - (version "13.0.8") + (version "13.0.9") (source (origin (method url-fetch/zipbomb) (uri (string-append @@ -336,7 +336,7 @@ with the @uref{https://keepassxc.org, KeePassXC} password manager.") ".xpi")) (sha256 (base32 - "1p6jrz22jjzcqlbza2v8nix2sx9xjgl43vmm43hwrf9w13z8r5wx")))) + "1xbisx3xqak9aj7nb2lh94an6yfldsl6a2g2qc87vxi1zwdbcnjj")))) (build-system copy-build-system) (properties '((addon-id . "{73a6fe31-595d-460b-a920-fcc0f8843232}"))) (arguments diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm index da8b558c6f..ae3047f13b 100644 --- a/gnu/packages/calendar.scm +++ b/gnu/packages/calendar.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2025 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> ;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2025 Ashish SHUKLA <ashish.is@lostca.se> ;;; ;;; This file is part of GNU Guix. ;;; @@ -278,7 +279,7 @@ command-line interface} and a @acronym{TUI, textual user interface} named (define-public remind (package (name "remind") - (version "5.0.5") + (version "6.0.1") (source (origin (method url-fetch) @@ -289,7 +290,7 @@ command-line interface} and a @acronym{TUI, textual user interface} named ".") ".tar.gz")) (sha256 - (base32 "0yc0lfrl0zzc1bn5fkigararg44bdryis7vjnm8vzs21as9r0dbz")))) + (base32 "01zhs8lgncpm1229s7b49fhnwwnxyyan845gb47ppkfn03vvc187")))) (properties `((output-synopsis "tcl" "graphical front-end to Remind calendar program"))) (build-system gnu-build-system) diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 7d081e3e3f..d508f37730 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -15,7 +15,6 @@ ;;; Copyright © 2020, 2021, 2023 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2021 lu hui <luhuins@163.com> -;;; Copyright © 2021, 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com> ;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2023 Fries <fries1234@protonmail.com> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> @@ -950,88 +949,6 @@ extensions over the standard utility.") (properties '((lint-hidden-cves . ("CVE-2023-40305" "CVE-2024-0911"))))))) -(define-public cdecl - (package - (name "cdecl") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append "https://www.ibiblio.org/pub/linux/devel/lang/c/cdecl-" - version ".tar.gz")) - (sha256 - (base32 "0dm98bp186r4cihli6fmcwzjaadgwl1z3b0zdxfik8h7hkqawk5p")))) - (build-system gnu-build-system) - (arguments - `(#:make-flags - ,#~(list "LIBS=-lreadline" - (string-append "BINDIR=" #$output "/bin") - (string-append "MANDIR=" #$output "/share/man/man1")) - #:phases - (modify-phases %standard-phases - (delete 'configure) ; No configure script. - (add-after 'unpack 'fix-build - (lambda _ - (substitute* "Makefile" - (("lex cdlex.l") - "flex cdlex.l")) - (substitute* "cdecl.c" - ;; Fix "error: conflicting types for ‘getline’". - (("char \\* getline\\(\\)") - "char * our_getline(void)") - (("char \\* getline \\(\\)") - "char * our_getline(void)") - (("line = getline\\(\\)") - "line = our_getline()") - ;; Fix "error: conflicting types for ‘getopt’". - (("int getopt\\(int,char \\*\\*,char \\*\\);") - "") - ;; Fix invalid use of "restrict" as a variable name. - (("i, j, restrict") - "i, j, restriction") - (("restrict =") - "restriction =") - ;; Fix "warning: implicit declaration of function ‘add_history’". - (("# include <readline/readline.h>" all) - (string-append all "\n# include <readline/history.h>")) - ;; Fix "warning: implicit declaration of function ‘dotmpfile_from_string’". - (("void setprogname\\(char \\*\\);" all) - (string-append all "\nint dotmpfile_from_string(char *);")) - ;; Fix "warning: implicit declaration of function ‘completion_matches’". - (("matches = completion_matches\\(text, command_completion\\);") - "matches = rl_completion_matches(text, command_completion);") - (("char \\* command_completion\\(char \\*, int\\);") - "char * command_completion(const char *, int);") - (("char \\* command_completion\\(char \\*text, int flag\\)") - "char * command_completion(const char *text, int flag)") - ;; Fix "warning: ‘CPPFunction’ is deprecated". - (("rl_attempted_completion_function = \\(CPPFunction \\*\\)attempt_completion;") - "rl_attempted_completion_function = (rl_completion_func_t *)attempt_completion;") - ;; Fix "warning: ‘Function’ is deprecated". - (("rl_completion_entry_function = \\(Function \\*\\)keyword_completion;") - "rl_completion_entry_function = (rl_compentry_func_t *)keyword_completion;")) - ;; Fix typo in man page. - (substitute* "cdecl.1" - (("<storage>\t::= auto \\| extern \\| register \\| auto") - "<storage>\t::= auto | extern | register | static")))) - (add-before 'install 'create-directories - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (man (string-append out "/share/man/man1"))) - (mkdir-p bin) - (mkdir-p man))))) - #:tests? #f)) ; No "check" target. - (native-inputs (list bison flex)) - (inputs (list readline)) - (home-page "https://www.ibiblio.org/pub/linux/devel/lang/c/") - (synopsis "Turn English phrases into C or C++ declarations and vice versa") - (description "@code{cdecl} is a program that turns English-like phrases into C -declarations. It can also translate C into pseudo-English. It also handles -type casts and C++. It has command-line editing and history with the GNU -Readline library.") - (license license:public-domain))) - (define-public sourcetrail (package (name "sourcetrail") diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 1971417a95..90cb365c42 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -3750,17 +3750,8 @@ is the GNU Compiler Collection.") ;; automatically "redirects" them to 'gcc-toolchain'. (deprecated-package "gcc" gcc-toolchain)) - -(define-public gdc-toolchain-10 - (package (inherit (make-gcc-toolchain gdc-10)) - (synopsis "Complete GCC tool chain for D lang development") - (description "This package provides a complete GCC tool chain for -D lang development to be installed in user profiles. This includes -gdc, as well as libc (headers and binaries, plus debugging symbols -in the @code{debug} output), and binutils."))) - -(define-public gdc-toolchain-11 - (package (inherit (make-gcc-toolchain gdc-11)) +(define-public gdc-toolchain + (package (inherit (make-gcc-toolchain gdc)) (synopsis "Complete GCC tool chain for D lang development") (description "This package provides a complete GCC tool chain for D lang development to be installed in user profiles. This includes diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index e060795da9..a12dcb9d91 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -2041,8 +2041,10 @@ other values of screen objects, by setting their values as the tween starting point and then, after each tween step, plugging back the result.") (license license:expat))) -;;; This older LTS release is kept for tensorflow. (define-public abseil-cpp-20200923.3 + ;; "guix refresh -l" shows no dependents of this package, but by input + ;; rewriting, grpc-1.16.1 depends on it; + ;; in turn this is an input to hyperledger-iroha and tensorflow. (package (name "abseil-cpp") (version "20200923.3") diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index e85017ee2d..2459f2695f 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021, 2022 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2022 Allan Adair <allan@adair.no> -;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2022, 2024-2025 Maxim Cournoyer <maxim@guixoic.coop> ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> ;;; Copyright © 2023 Ivan Vilata-i-Balaguer <ivan@selidor.net> ;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com> @@ -137,55 +137,59 @@ fast, secure, parallelizable, capable of incremental updates.") (license (list license:asl2.0 license:cc0)))) ; dual licensed (define-public libdecaf - (package - (name "libdecaf") - (version "1.0.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "git://git.code.sf.net/p/ed448goldilocks/code") - (commit - (string-append "v" version)))) - (file-name - (git-file-name name version)) - (sha256 - (base32 "1ajgmyvc6a4m1h2hg1g4wz7ibx10x1xys9m6ancnmmf1f2srlfly")))) - (build-system cmake-build-system) - (outputs '("out" "python" "doc")) - (arguments - `(#:configure-flags '("-DENABLE_STATIC=OFF") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-python-binding - (lambda _ - (substitute* "python/setup.py" - (("gmake") - "make") - (("'\\.\\.', 'build', 'lib', 'libdecaf\\.so'") - "'..', '..', 'build', 'src', 'libdecaf.so'")))) - (add-after 'install 'install-python-binding - (lambda* (#:key outputs #:allow-other-keys) - (with-directory-excursion "../source/python" - (invoke "python" "setup.py" "install" - (string-append "--prefix=" (assoc-ref outputs "python")) - "--root=/")))) - (add-after 'install-python-binding 'install-documentation - (lambda* (#:key outputs #:allow-other-keys) - (invoke "make" "doc") - (let* ((doc (assoc-ref outputs "doc")) - (dest (string-append doc "/share/doc"))) - (copy-recursively "doc" dest))))))) - (native-inputs - `(("dot" ,graphviz) - ("doxygen" ,doxygen) - ("python" ,python-wrapper))) - (synopsis "Decaf Elliptic Curve Library") - (description "The libdecaf library is an implementation of elliptic curve + ;; The 1.0.2 release fails due to some compiler warning treated as an error + ;; (see: https://sourceforge.net/p/ed448goldilocks/tickets/16/). Use the + ;; latest commit available. + (let ((commit "e5cc6240690d3ffdfcbdb1e4e851954b789cd5d9") + (revision "0")) + (package + (name "libdecaf") + (version (git-version "1.0.2" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.code.sf.net/p/ed448goldilocks/code") + (commit commit))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "1gxf503cnmgsv7s0dm82rrizjhifdhdh42sfvbfsdj55syjnv1p2")))) + (build-system cmake-build-system) + (outputs '("out" "python" "doc")) + (arguments + (list #:imported-modules (append %cmake-build-system-modules + %python-build-system-modules) + #:modules '((guix build cmake-build-system) + ((guix build python-build-system) #:prefix python:) + (guix build utils)) + #:configure-flags #~(list "-DENABLE_STATIC=OFF") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-python-binding + (lambda _ + (substitute* "python/setup.py" + (("gmake") + "make") + (("'\\.\\.', 'build', 'lib', 'libdecaf\\.so'") + "'..', '..', 'build', 'src', 'libdecaf.so'")))) + (add-after 'unpack 'ensure-no-mtimes-pre-1980 + (assoc-ref python:%standard-phases 'ensure-no-mtimes-pre-1980)) + (add-after 'install 'install-python-binding + (lambda* (#:key inputs outputs #:allow-other-keys) + (with-directory-excursion "../source/python" + (invoke "python" "setup.py" "install" + (string-append + "--prefix=" + (python:site-packages inputs outputs))))))))) + (native-inputs (list python-minimal-wrapper)) + (synopsis "Decaf Elliptic Curve Library") + (description "The libdecaf library is an implementation of elliptic curve cryptography using the Montgomery and Edwards curves Curve25519, Ed25519, Ed448-Goldilocks and Curve448, using the Decaf encoding.") - (home-page "https://ed448goldilocks.sourceforge.net/") - (license (list license:expat ;library - license:bsd-2)))) ;python bindings + (home-page "https://ed448goldilocks.sourceforge.net/") + (license (list license:expat ;library + license:bsd-2))))) ;python bindings (define-public libsodium (package diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 1500fbe145..a8196648f6 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -5803,24 +5803,26 @@ The drivers officially supported by @code{libdbi} are: (file-name (git-file-name name version)) (sha256 (base32 - "12aq7pama96l2c1kmfkclb4bvrsxs9a8ppgk5gmzw45w2lg35i0y")))) + "12aq7pama96l2c1kmfkclb4bvrsxs9a8ppgk5gmzw45w2lg35i0y")) + (patches (search-patches "soci-mysql-ddl-types.patch")))) (build-system cmake-build-system) (propagated-inputs ;; Headers of soci has include-references to headers of these inputs. - `(("firebird" ,firebird) - ("postgresql" ,postgresql) - ("sqlite" ,sqlite) - ("odbc" ,unixodbc) - ("boost" ,boost) - ("mariadb:dev" ,mariadb "dev"))) + (list firebird + postgresql + sqlite + unixodbc + boost + `(,mariadb "dev"))) (arguments - `(#:configure-flags - ;; C++11 (-DSOCI_CXX11) is OFF by default. hyperledger-iroha needs it. - (list "-DCMAKE_CXX_STANDARD=17" - "-DSOCI_LIBDIR=lib" - ;; This is for relocation when linking statically - "-DCMAKE_CXX_FLAGS=-fPIE") - #:tests? #f)) ; may require running database management systems + (list #:configure-flags + ;; C++11 (-DSOCI_CXX11) is OFF by default. hyperledger-iroha needs + ;; it. + #~(list "-DCMAKE_CXX_STANDARD=17" + "-DSOCI_LIBDIR=lib" + ;; This is for relocation when linking statically + "-DCMAKE_CXX_FLAGS=-fPIE") + #:tests? #f)) ; may require running database management systems (synopsis "C++ Database Access Library") (description "SOCI is an abstraction layer for several database backends, including diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index a0345d8278..302c6482ea 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -59,6 +59,9 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-web) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages image) #:use-module (gnu packages lesstif) #:use-module (gnu packages libusb) @@ -770,7 +773,7 @@ error reporting, better tracing, profiling, and a debugger.") (define-public rr (package (name "rr") - (version "5.8.0") + (version "5.9.0") (source (origin (method git-fetch) (uri (git-reference @@ -778,7 +781,7 @@ error reporting, better tracing, profiling, and a debugger.") (commit version))) (sha256 (base32 - "16w6vvvgww4i2f0jk5zlrr6606fj8kps21fnw0pshyw88l141rqn")) + "18bahi9b7pz8s7vq8r52fg4pdnj62ymx4yyqjkiwnxlp06pdgqd3")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -792,6 +795,7 @@ error reporting, better tracing, profiling, and a debugger.") (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath=" (assoc-ref %build-inputs "capnproto") "/lib,-rpath=" (assoc-ref %build-inputs "zlib") + "/lib,-rpath=" (assoc-ref %build-inputs "zstd") "/lib") ,@(if (and (not (%current-target-system)) (member (%current-system) @@ -815,9 +819,14 @@ error reporting, better tracing, profiling, and a debugger.") (setenv "HOME" (getcwd)) #t))))) (native-inputs - (list pkg-config ninja which)) + (list lldb pkg-config which)) (inputs - (list gdb capnproto python python-pexpect zlib)) + (list gdb + capnproto + python + python-pexpect + zlib + `(,zstd "lib"))) ;; List of supported systems according to 'src/preload/raw_syscall.S'. (supported-systems '("x86_64-linux" "i686-linux" "aarch64-linux")) @@ -1043,7 +1052,7 @@ to aid in debugging.") (define-public delve (package (name "delve") - (version "1.23.1") + (version "1.25.1") (source (origin (method git-fetch) @@ -1053,13 +1062,34 @@ to aid in debugging.") (file-name (git-file-name name version)) (sha256 (base32 - "1k0ink3jjplbq1si7cnrm7ch6jasnc3y83yksmrwhhbfa1ybk87s")))) + "0rfpgh9ijb0lcyrfscxb3k1552wwhqj0jxv5zfyrsfm1n6j8dc93")) + (snippet + #~(begin (use-modules (guix build utils)) + (delete-file-recursively "vendor"))))) (build-system go-build-system) (arguments - (list #:import-path "github.com/go-delve/delve/cmd/dlv" + (list #:tests? #f ;XXX: Some tests fail, check why. + #:import-path "github.com/go-delve/delve/cmd/dlv" #:unpack-path "github.com/go-delve/delve" - #:install-source? #f - #:phases #~(modify-phases %standard-phases (delete 'check)))) + #:install-source? #f)) + (native-inputs + (list go-github-com-cilium-ebpf + go-github-com-cosiner-argv + go-github-com-creack-pty + go-github-com-derekparker-trie + go-github-com-go-delve-liner + go-github-com-google-go-dap + go-github-com-hashicorp-golang-lru + go-github-com-mattn-go-colorable + go-github-com-mattn-go-isatty + go-github-com-spf13-cobra + go-github-com-spf13-pflag + go-go-starlark-net + go-golang-org-x-arch + go-golang-org-x-sys + go-golang-org-x-telemetry + go-golang-org-x-tools + go-gopkg-in-yaml-v3)) (home-page "https://github.com/go-delve/delve") (synopsis "Debugger for the Go programming language") (description "Delve is a debugger for the Go programming language.") diff --git a/gnu/packages/dezyne.scm b/gnu/packages/dezyne.scm index 25429e6ab4..52bc0ada28 100644 --- a/gnu/packages/dezyne.scm +++ b/gnu/packages/dezyne.scm @@ -34,14 +34,14 @@ (define-public dezyne (package (name "dezyne") - (version "2.18.3") + (version "2.18.4") (source (origin (method url-fetch) (uri (string-append "https://dezyne.org/download/dezyne/" name "-" version ".tar.gz")) (sha256 - (base32 "1c4bi3gpl2fi6pk8z9gmrspg2ad7flkgqjs18bnczswii47yg2s8")))) + (base32 "0392p1601czz6yvlxd2b8phhmy35b62i4m1jgpfldzl6d18f7adr")))) (inputs (list bash-minimal boost guile-3.0 diff --git a/gnu/packages/dico.scm b/gnu/packages/dico.scm deleted file mode 100644 index 16cd2ebd83..0000000000 --- a/gnu/packages/dico.scm +++ /dev/null @@ -1,95 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015-2016, 2018, 2024-2025 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> -;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> -;;; Copyright © 2025 Artyom V. Poptsov <poptsov.artyom@gmail.com> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages dico) - #:use-module (guix packages) - #:use-module ((guix licenses) #:select (gpl3+)) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (gnu packages) - #:use-module (gnu packages bash) - #:use-module (gnu packages crypto) - #:use-module (gnu packages readline) - #:use-module (gnu packages m4) - #:use-module (gnu packages groff) - #:use-module (gnu packages guile) - #:use-module (gnu packages python) - #:use-module (gnu packages pcre) - #:use-module (gnu packages gsasl) - #:use-module (gnu packages autotools) - #:use-module (gnu packages compression) - #:use-module (gnu packages wordnet)) - -(define-public dico - (package - (name "dico") - (version "2.12") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/dico/dico-" - version ".tar.xz")) - (sha256 - (base32 - "1xvahrav8aml90qcj4cj3a33y0n7nm1k0ywgks1zy2q91v2qk2vj")))) - (build-system gnu-build-system) - (arguments - '(#:configure-flags (list (string-append "--with-guile-site-dir=" %output - "/share/guile/site/2.0") - "--disable-static") - #:phases (modify-phases %standard-phases - (add-before 'build 'set-shell-file-name - (lambda* (#:key inputs #:allow-other-keys) - ;; This code invokes "/bin/sh -c 'm4 -s ...'". - (substitute* "grecs/src/grecs-lex.c" - (("\"/bin/sh\"") - (string-append "\"" - (search-input-file inputs "/bin/sh") - "\""))))) - (add-before 'check 'silence-guile - (lambda _ - ;; Guile is too talkative, which disturbs the test - ;; infrastructure. Gag it. - (setenv "GUILE_AUTO_COMPILE" "0") - (setenv "GUILE_WARN_DEPRECATED" "no")))))) - (native-inputs (list groff)) - (inputs - (list m4 ;used at run time - bash-minimal ;likewise - pcre - python-wrapper - guile-2.2 - gsasl - readline - zlib - wordnet - libxcrypt ;for 'crypt' - libltdl)) - (home-page "https://www.gnu.org.ua/software/dico/") - (synopsis "Implementation of DICT server (RFC 2229)") - (description - "GNU Dico implements a flexible dictionary server and client according to -RFC 2229 (DICT Server). It is able to access any database available, -regardless of format, thanks to its modular structure. New modules may be -written in C, Guile or Python. Dico also includes a command-line client, -which may be used to query remote dictionary databases.") - (license gpl3+))) diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm index f51ed24111..5e53675ea7 100644 --- a/gnu/packages/dictionaries.scm +++ b/gnu/packages/dictionaries.scm @@ -1,15 +1,19 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014-2016, 2021, 2024 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014-2016, 2018, 2021, 2024, 2025 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016-2018, 2020-2023, 2025 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2017, 2018, 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2020 Lu hux <luhux@outlook.com> +;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2022 ROCKTAKEY <rocktakey@gmail.com> ;;; Copyright © 2022 Runciter <runciter@whispers-vpn.org> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2025 Artyom V. Poptsov <poptsov.artyom@gmail.com> +;;; Copyright © 2025 Zhu Zihao <all_but_last@163.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,27 +45,87 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages compression) + #:use-module (gnu packages compression) + #:use-module (gnu packages crypto) #:use-module (gnu packages curl) + #:use-module (gnu packages dictd) #:use-module (gnu packages emacs) #:use-module (gnu packages flex) #:use-module (gnu packages fribidi) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) + #:use-module (gnu packages groff) + #:use-module (gnu packages gsasl) + #:use-module (gnu packages guile) #:use-module (gnu packages linux) + #:use-module (gnu packages m4) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages readline) - #:use-module (gnu packages texinfo) - #:use-module (gnu packages compression) + #:use-module (gnu packages speech) #:use-module (gnu packages tcl) + #:use-module (gnu packages texinfo) #:use-module (gnu packages web) - #:use-module (gnu packages xml) - #:use-module (gnu packages dictd) - #:use-module (gnu packages speech) - #:use-module (gnu packages perl)) + #:use-module (gnu packages wordnet) + #:use-module (gnu packages xml)) +(define-public dico + (package + (name "dico") + (version "2.12") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/dico/dico-" + version ".tar.xz")) + (sha256 + (base32 + "1xvahrav8aml90qcj4cj3a33y0n7nm1k0ywgks1zy2q91v2qk2vj")))) + (build-system gnu-build-system) + (arguments + (list + #:configure-flags #~(list "--disable-static") + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'set-shell-file-name + (lambda* (#:key inputs #:allow-other-keys) + ;; This code invokes "/bin/sh -c 'm4 -s ...'". + (substitute* "grecs/src/grecs-lex.c" + (("\"/bin/sh\"") + (string-append "\"" + (search-input-file inputs "/bin/sh") + "\""))))) + (add-before 'check 'silence-guile + (lambda _ + ;; Guile is too talkative, which disturbs the test + ;; infrastructure. Gag it. + (setenv "GUILE_AUTO_COMPILE" "0") + (setenv "GUILE_WARN_DEPRECATED" "no")))))) + (native-inputs (list groff)) + (inputs + (list m4 ;used at run time + bash-minimal ;likewise + pcre + python-wrapper + guile-3.0 + gsasl + readline + zlib + wordnet + libxcrypt ;for 'crypt' + libltdl)) + (home-page "https://www.gnu.org.ua/software/dico/") + (synopsis "Implementation of DICT server (RFC 2229)") + (description + "GNU Dico implements a flexible dictionary server and client according to +RFC 2229 (DICT Server). It is able to access any database available, +regardless of format, thanks to its modular structure. New modules may be +written in C, Guile or Python. Dico also includes a command-line client, +which may be used to query remote dictionary databases.") + (license license:gpl3+))) (define-public vera (package diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm index a5b371a099..a9b1f9d565 100644 --- a/gnu/packages/diffoscope.scm +++ b/gnu/packages/diffoscope.scm @@ -267,7 +267,7 @@ install.") (define-public reprotest (package (name "reprotest") - (version "0.7.29") + (version "0.7.30") (source (origin (method git-fetch) @@ -276,7 +276,7 @@ install.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "17n7pdqil3jmpwcshr6dm5qsbpim3847smgxa82wy33kl2bz1ai8")))) + (base32 "013mqbbh6dcia2i4qdi4270lcgzr0k879phsaydf9b5ng9fkdajl")))) (build-system pyproject-build-system) (arguments (list diff --git a/gnu/packages/direct-connect.scm b/gnu/packages/direct-connect.scm deleted file mode 100644 index 8c816ce714..0000000000 --- a/gnu/packages/direct-connect.scm +++ /dev/null @@ -1,87 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> -;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages direct-connect) - #:use-module (guix build-system scons) - #:use-module (guix deprecation) - #:use-module (guix gexp) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (gnu packages) - #:use-module (gnu packages boost) - #:use-module (gnu packages build-tools) - #:use-module (gnu packages compression) - #:use-module (gnu packages gettext) - #:use-module (gnu packages gnome) - #:use-module (gnu packages gtk) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages tls) - #:use-module (gnu packages version-control)) - -;; TODO Remove on the next python-team iteration. -;; Unmaintained for 14 years, tried updating it here: -;; https://lists.sr.ht/~ngraves/devel/patches/60080 -;; but it's too hard for most likely no users. -;; If you use this package, let python-team know or try to fix it. -(define-deprecated/public linuxdcpp #f - (package - (name "linuxdcpp") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://launchpad.net/linuxdcpp/1.1/1.1.0/+download/linuxdcpp-" - version ".tar.bz2")) - (sha256 - (base32 "12i92hirmwryl1qy0n3jfrpziwzb82f61xca9jcjwyilx502f0b6")) - (patches (search-patches "linuxdcpp-openssl-1.1.patch")) - (modules '((guix build utils))) - (snippet - #~(begin - (substitute* "SConstruct" - ;; This compares single char[]acters in the version string, and - ;; broke when GCC went into double digits. - (("conf.CheckCXXVersion\\([^\\)]*\\)") - "True") - ;; Not all valid C++98 code is valid C++14 (and higher) code. - (("'-D_REENTRANT'" match) - (string-append match ", '-std=gnu++98'"))))))) - (build-system scons-build-system) - (arguments - `(#:scons ,scons-python2 - #:scons-flags (list (string-append "PREFIX=" %output)) - #:tests? #f)) ; no tests - (inputs - (list boost - bzip2 - gtk+-2 - libglade - libnotify - openssl)) - (native-inputs - (list bazaar gettext-minimal pkg-config)) - (home-page "https://launchpad.net/linuxdcpp/") - (synopsis "Direct Connect client") - (description "LinuxDC++ is a Direct Connect (DC) client. Direct Connect -is a peer-to-peer file-sharing protocol. Clients connect to a central hub -where they can chat or share files with one another. Users can view other -users' list of shared files or search the hub for files.") - (license license:gpl2+))) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index cd1d0c0d9a..098f109cc0 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2022 Pradana Aumars <paumars@courrier.dev> ;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2025 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2025 jgart <jgart@dismail.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1925,6 +1926,35 @@ image files already supported by it.") variables to configure your Django application.") (license license:expat))) +(define-public python-django-widget-tweaks + (package + (name "python-django-widget-tweaks") + (version "1.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-widget-tweaks" version)) + (sha256 + (base32 "1ir9qrygb0bsi53sqxs7052i5gpbzz3h8j3m5j94x6dv3rl8088w")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "django" "test" + "--settings=tests.settings"))))))) + (native-inputs (list python-setuptools python-wheel)) + (propagated-inputs (list python-django)) + (home-page "https://github.com/jazzband/django-widget-tweaks") + (synopsis "Tweak the form field rendering in Django templates") + (description + "This package provides a way to tweak the form field rendering in +templates and not in python-level form definitions.") + (license license:expat))) + (define-public python-django-cleanup (package (name "python-django-cleanup") diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm index 7c20450b5f..f07586f711 100644 --- a/gnu/packages/electronics.scm +++ b/gnu/packages/electronics.scm @@ -216,39 +216,40 @@ to take care of the OS-specific details when writing software that uses serial p (file-name (git-file-name name version)))) (outputs '("out" "doc")) (arguments - `(#:tests? #f ; tests need USB access - #:phases - (modify-phases %standard-phases - (add-before 'configure 'change-udev-group - (lambda _ - (substitute* (find-files "contrib" "\\.rules$") - (("plugdev") "dialout")))) - (add-after 'build 'build-doc - (lambda _ - (invoke "doxygen"))) - (add-after 'install 'install-doc - (lambda* (#:key outputs #:allow-other-keys) - (copy-recursively "doxy/html-api" - (string-append (assoc-ref outputs "doc") - "/share/doc/libsigrok")))) - (add-after 'install-doc 'install-udev-rules - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (rules (string-append out "/lib/udev/rules.d/"))) - (for-each (lambda (file) - (install-file file rules)) - (find-files "contrib" "\\.rules$"))))) - (add-after 'install-udev-rules 'install-fw - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((fx2lafw (assoc-ref inputs "sigrok-firmware-fx2lafw")) - (out (assoc-ref outputs "out")) - (dir-suffix "/share/sigrok-firmware/") - (input-dir (string-append fx2lafw dir-suffix)) - (output-dir (string-append out dir-suffix))) - (for-each - (lambda (file) - (install-file file output-dir)) - (find-files input-dir ".")))))))) + (list + #:tests? #f ; tests need USB access + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'change-udev-group + (lambda _ + (substitute* (find-files "contrib" "\\.rules$") + (("plugdev") "dialout")))) + (add-after 'build 'build-doc + (lambda _ + (invoke "doxygen"))) + (add-after 'install 'install-doc + (lambda _ + (copy-recursively + "doxy/html-api" + (string-append #$output:doc "/share/doc/libsigrok")))) + (add-after 'install-doc 'install-udev-rules + (lambda _ + (for-each + (lambda (file) + (install-file + file + (string-append #$output "/lib/udev/rules.d/"))) + (find-files "contrib" "\\.rules$")))) + (add-after 'install-udev-rules 'install-fw + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((fx2lafw (assoc-ref inputs "sigrok-firmware-fx2lafw")) + (dir-suffix "/share/sigrok-firmware/") + (input-dir (string-append fx2lafw dir-suffix)) + (output-dir (string-append #$output dir-suffix))) + (for-each + (lambda (file) + (install-file file output-dir)) + (find-files input-dir ".")))))))) (native-inputs (list autoconf automake doxygen graphviz libtool sigrok-firmware-fx2lafw pkg-config)) @@ -289,18 +290,18 @@ supported devices, as well as input/output file format support.") "11l8vnf2khqbaqas7cfnq3f8q5w7am6nbkkd5mqj5kpb3ya2avb9")))) (outputs '("out" "doc")) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'build 'build-doc - (lambda _ - (invoke "doxygen") - #t)) - (add-after 'install 'install-doc - (lambda* (#:key outputs #:allow-other-keys) - (copy-recursively "doxy/html-api" - (string-append (assoc-ref outputs "doc") - "/share/doc/libsigrokdecode")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'build 'build-doc + (lambda _ + (invoke "doxygen"))) + (add-after 'install 'install-doc + (lambda _ + (copy-recursively + "doxy/html-api" + (string-append #$output:doc + "/share/doc/libsigrokdecode"))))))) (native-inputs (list check doxygen graphviz pkg-config automake autoconf libtool)) ;; libsigrokdecode.pc lists "python" in Requires.private, and "glib" in @@ -644,28 +645,29 @@ formats.") (package (name "pulseview") (version "0.4.2") - (source (origin - (method url-fetch) - (uri (string-append - "https://sigrok.org/download/source/pulseview/pulseview-" - version ".tar.gz")) - (sha256 - (base32 - "1jxbpz1h3m1mgrxw74rnihj8vawgqdpf6c33cqqbyd8v7rxgfhph")) - (patches (search-patches "pulseview-qt515-compat.patch" - "pulseview-glib-2.68.patch")))) + (source + (origin + (method url-fetch) + (uri (string-append + "https://sigrok.org/download/source/pulseview/pulseview-" + version ".tar.gz")) + (sha256 + (base32 + "1jxbpz1h3m1mgrxw74rnihj8vawgqdpf6c33cqqbyd8v7rxgfhph")) + (patches (search-patches "pulseview-qt515-compat.patch" + "pulseview-glib-2.68.patch")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ;format_time_minutes_test is failing - #:phases - (modify-phases %standard-phases - (add-after 'install 'remove-empty-doc-directory - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (with-directory-excursion (string-append out "/share") - ;; Use RMDIR to never risk silently deleting files. - (rmdir "doc/pulseview") - (rmdir "doc")))))))) + (list + #:tests? #f ;format_time_minutes_test is failing + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'remove-empty-doc-directory + (lambda _ + (with-directory-excursion (string-append #$output "/share") + ;; Use RMDIR to never risk silently deleting files. + (rmdir "doc/pulseview") + (rmdir "doc"))))))) (native-inputs (list pkg-config qttools-5)) (inputs @@ -678,8 +680,8 @@ formats.") qtsvg-5)) (home-page "https://www.sigrok.org/wiki/PulseView") (synopsis "Qt based logic analyzer, oscilloscope and MSO GUI for sigrok") - (description "PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI -for sigrok.") + (description "PulseView is a Qt based logic analyzer, oscilloscope and MSO +GUI for sigrok.") (license license:gpl3+))) (define-public python-cocotb diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 8574ce7291..ef7ab1855c 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -10762,7 +10762,7 @@ files which are intended to be packages.") (define-public emacs-el-job (package (name "emacs-el-job") - (version "2.4.7") + (version "2.4.8") (source (origin (method git-fetch) (uri (git-reference @@ -10771,7 +10771,7 @@ files which are intended to be packages.") (file-name (git-file-name name version)) (sha256 (base32 - "0gspy2yvi7pyzvw73p49s42a3w104xlrwwvwykw93rf277kq4i6d")))) + "0acyk63052vsii7xnfp6l4n1s4063lprapp662p4p660wk559fnr")))) (build-system emacs-build-system) (arguments (list #:test-command #~(list "emacs" "-Q" "--batch" @@ -30623,6 +30623,30 @@ When @code{gac-automatically-push-p} is non-nil, it also tries to push to the current upstream.") (license license:gpl3+))) +(define-public emacs-ultra-scroll + (package + (name "emacs-ultra-scroll") + (version "0.4.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jdtsmith/ultra-scroll") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0k1xqkxq89mz8dvzbfpks3jnrcmbd0hcz8a0hib1m3ka55hpczqz")))) + (build-system emacs-build-system) + (arguments (list #:tests? #f)) ;no tests + (home-page "https://github.com/jdtsmith/ultra-scroll") + (synopsis "Scroll Emacs like lightning") + (description + "@code{ultra-scroll} is a smooth-scrolling package for Emacs. It +provides highly optimized, pixel-precise smooth-scrolling which can readily +keep up with the very high event rates of modern track-pads and high-precision +wheel mice.") + (license license:gpl3+))) + (define-public emacs-smooth-scroll (package (name "emacs-smooth-scroll") diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index b456507324..0ac1cb974d 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -25,6 +25,7 @@ ;;; Copyright © 2025 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2025 Andrew Wong <wongandj@icloud.comg> ;;; Copyright © 2025 Anderson Torres <anderson.torres.8519@gmail.com> +;;; Copyright © 2025 Laura Kirsch <laurakirsch240406@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -643,18 +644,11 @@ turbo speed, networked multiplayer, and graphical enhancements.") #~(begin ;; XXX: 'delete-all-but' is copied from the turbovnc package. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) ;; Clean up the source from bundled libraries we don't need. (delete-all-but "Externals" @@ -2866,18 +2860,11 @@ GLSL (@file{.slang}) shaders for use with RetroArch.") (srfi srfi-26)) ;; XXX: 'delete-all-but' is copied from the turbovnc package. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) ;; Remove as much bundled sources as possible, shaving off about ;; 65 MiB. (delete-all-but "deps" @@ -4366,72 +4353,96 @@ on a Commodore C64, C128 etc.") (license license:zlib))) (define-public flycast - (package - (name "flycast") - (version "2.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/flyinghead/flycast") - (commit (string-append "v" version)) - ;; There are many bundled packages here included as git - ;; submodules. Removing many of them would require patching the - ;; source code and repository layout. - (recursive? #t))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0ainy75gkrvilcm89hq6wq9md41w0mxgp6l27q5fzrxxykpjh6ym")) - (modules '((guix build utils))) - (snippet #~(begin - (substitute* "CMakeLists.txt" - (("add_subdirectory\\(core/deps/Vulkan-Headers\\)") - "find_package(VulkanHeaders)")) - (with-directory-excursion "core/deps" - (for-each delete-file-recursively - '("SDL" - "Spout" - "Syphon" - "Vulkan-Headers" - "breakpad" - "discord-rpc" - "libzip" - "oboe"))))))) - (build-system cmake-build-system) - (arguments - (list - #:tests? #f ; no test suite - #:configure-flags - #~(list "-DUSE_ALSA=ON" - "-DUSE_BREAKPAD=OFF" - "-DUSE_DX11=OFF" - "-DUSE_DX9=OFF" - ;; The USE_HOST_GLSLANG option is not implemented correctly. - ;; (see: https://github.com/flyinghead/flycast/issues/1843) - "-DUSE_HOST_GLSLANG=OFF" - "-DUSE_HOST_LIBZIP=ON" - "-DUSE_HOST_SDL=ON" - "-DUSE_LIBAO=ON" - "-DUSE_LUA=ON" - "-DUSE_PULSEAUDIO=ON" - "-DUSE_VULKAN=ON"))) - (inputs (list alsa-lib - ao - curl - glslang - libzip - lua - miniupnpc - pulseaudio - sdl2 - spirv-tools - vulkan-headers - pkg-config)) - (home-page "https://github.com/flyinghead/flycast") - (synopsis "Sega Dreamcast, Naomi, Naomi 2, and Atomiswave emulator") - (description "Flycast is a multi-platform Sega Dreamcast, Naomi, Naomi 2, + ;; Use a git snapshot as the latest 2.5 release is still on an older glslang + ;; version that doesn't build with GCC 14. + (let ((commit "33833cfd1ed2d94d907223442fdb8cdafd8d5d80") + (revision "0")) + (package + (name "flycast") + (version (git-version "2.5" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flyinghead/flycast") + (commit commit) + ;; There are many bundled packages here included as git + ;; submodules, but removing many of them would require patching + ;; the source code and repository layout (see: <>). + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "16vwhw33zhq2b8mpg863cn7sz4f04wxjz2650jgqjv7i5lkdd1g9")) + (modules '((guix build utils))) + (snippet #~(begin + ;; TODO: Uncomment after our vulkan-headers + ;; are update to 1.3.261.0 or newer. + ;; (substitute* "CMakeLists.txt" + ;; (("add_subdirectory\\(core/deps/Vulkan-Headers\\)") + ;; "find_package(VulkanHeaders)")) + (with-directory-excursion "core/deps" + (for-each + delete-file-recursively + '("SDL" + "Spout" + "Syphon" + ;; TODO: Uncomment after our vulkan-headers + ;; are update to 1.3.261.0 or newer. + ;;"Vulkan-Headers" + "breakpad" + "discord-rpc" + ;; XXX: The libretro build requires the bundled + ;; libzip, which it uses to produce a + ;; static library. + ;;"libzip" + "oboe"))))))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:configure-flags + #~(list "-DUSE_ALSA=ON" + "-DUSE_BREAKPAD=OFF" + "-DUSE_DX11=OFF" + "-DUSE_DX9=OFF" + ;; The USE_HOST_GLSLANG option is not implemented correctly. + ;; (see: https://github.com/flyinghead/flycast/issues/1843) + "-DUSE_HOST_GLSLANG=OFF" + "-DUSE_HOST_LIBZIP=ON" + "-DUSE_HOST_SDL=ON" + "-DUSE_LIBAO=ON" + "-DUSE_LIBCDIO=ON" + "-DUSE_LUA=ON" + "-DUSE_PULSEAUDIO=ON" + "-DUSE_VULKAN=ON"))) + (native-inputs (list pkg-config)) + (inputs (list alsa-lib + ao + curl + glslang + libcdio + libzip + lua + miniupnpc + pulseaudio + sdl2 + spirv-tools + ;; TODO: Uncomment after vulkan-headers + ;; is updated to 1.3.261.0 or newer. + ;;vulkan-headers + )) + (home-page "https://github.com/flyinghead/flycast") + (synopsis "Sega Dreamcast, Naomi, Naomi 2, and Atomiswave emulator") + (description "Flycast is a multi-platform Sega Dreamcast, Naomi, Naomi 2, and Atomiswave emulator derived from reicast.") - (license license:gpl2+))) + (license license:gpl2+)))) + +(define-public libretro-flycast + (package/inherit flycast + (name "libretro-flycast") + (arguments (substitute-keyword-arguments (package-arguments flycast) + ((#:configure-flags flags) + #~(cons "-DLIBRETRO=ON" #$flags)))))) (define-public freedisksysrom ;; There is no release; use the latest commit. @@ -4703,3 +4714,45 @@ information. Useful for cross-architecture tools (such as @code{python-pyvex}). (synopsis "8051/8052 emulator with curses-based UI") (description "emu8051 is a simulator of the 8051/8052 microcontrollers.") (license license:expat)))) + +(define-public fceux + (package + (name "fceux") + (version "2.6.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/TASEmulators/fceux") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "02s5qmxdxpsa71977z9bs5vfhnszn5nr5hk05wns8cm9nshbg7as")) + (modules '((guix build utils))) + (snippet #~(map delete-file-recursively + (list "output/lua5.1.dll" "output/lua51.dll" + "src/drivers/win" "fceux-server" "vc"))))) + (build-system cmake-build-system) + (arguments + (list + ;; No test suite. + #:tests? #f)) + (inputs (list qtbase-5 + zlib + minizip + sdl2 + lua-5.1 + libx264 + x265 + ffmpeg + libxkbcommon + libarchive)) + (native-inputs (list pkg-config)) + (synopsis "NES/Famicom emulator") + (description + "FCEUX is a Nintendo Entertainment System (NES), Famicom, Famicom Disk +System (FDS), and Dendy emulator. It supports NTSC (USA/JPN), PAL (European), +and NTSC-PAL Hybrid modes. It also offers tools for debugging, rom-hacking, +map making, Tool-assisted movies, and Lua scripting.") + (home-page "https://fceux.com/web/home.html") + (license license:gpl2+))) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index e77193ecf2..1cbd256871 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1308,7 +1308,7 @@ Emacs).") (define-public kicad (package (name "kicad") - (version "9.0.3") + (version "9.0.4") (source (origin (method git-fetch) (uri (git-reference @@ -1316,7 +1316,7 @@ Emacs).") (commit version))) (sha256 (base32 - "19rij2hz79rsmikdbygxzll2l7im5qi3i6phz4sdiagkc5k8b3rb")) + "0736hhf8rs4g8cyhy3xyamyr4iszlvf18a1hwfpcv6qxy0hcbdcv")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -1425,7 +1425,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "186nmy222m2k8snwk5i2f9igamflj9avfnhv5ksrbhx5wyrx7fy2")))) + "00cnras41sp5kpvaqqymygis08q5kmsix18bi8hlhhw6yk525vnp")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DBUILD_FORMATS=html") @@ -1456,7 +1456,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "0r9aimyrv7p4ykqnwb9ac3fd0dv11zmv2ll6qkmm5s875s35hhfl")))) + "0qm1zq8bq6r7l1pssb9isnm5a03kixf5p3x7670ap4xwligdn3wg")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no tests exist @@ -1485,7 +1485,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "1ysnj0973y05nn016hxrghccfv65cas772i369xflay0sns8anqf")))) + "15kdg661pq79npwb4j28hllqrvwygsz5rblzbdishiikysrba8wl")))) (synopsis "Official KiCad footprint libraries") (description "This package contains the official KiCad footprint libraries."))) @@ -1502,7 +1502,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "0njv4y31k62qhcx0xxcl94p34jgna8z4bs3hwjwzjfmp7ddl2dyx")))) + "0ngf0k5f0a073k5v4q78zk6gj6xjjxzbb6551qf9k9wy8bsmgr2k")))) (synopsis "Official KiCad 3D model libraries") (description "This package contains the official KiCad 3D model libraries."))) @@ -3505,7 +3505,7 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.") (define-public freecad (package (name "freecad") - (version "1.0.1") + (version "1.0.2") (source (origin (method git-fetch) @@ -3514,7 +3514,7 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0p3pa4w1xj7sgqk9vxdri8l3hbx0a8iz2pwn8gwjqlhc62z4hrg8")) + (base32 "1zyz473fzrz9h073wp4k65qq4bkhqsp245nsv6nv186sl78l99xa")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm index 5648fa8f4a..55be426345 100644 --- a/gnu/packages/fcitx5.scm +++ b/gnu/packages/fcitx5.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2022 dan <i@dan.games> ;;; Copyright © 2024 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2024 Charles <charles@charje.net> +;;; Copyright © 2025 VnPower <vnpower@loang.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) + #:use-module (guix build-system qt) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages anthy) #:use-module (gnu packages boost) @@ -413,6 +415,33 @@ the Anthy input method.") backend.") (license license:gpl3+))) +(define-public fcitx5-unikey + (package + (name "fcitx5-unikey") + (version "5.1.7") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fcitx/fcitx5-unikey") + (commit version))) + (sha256 + (base32 "0j82r63vn1rmjz2m92x6xksn548mmkiwcjkziqh6dp6aysxszvxx")) + (file-name (git-file-name name version)))) + (build-system qt-build-system) + (arguments + (list #:qtbase qtbase)) + (inputs + (list gettext-minimal + fcitx5 + fcitx5-qt)) + (native-inputs + (list extra-cmake-modules + pkg-config)) + (home-page "https://github.com/fcitx/fcitx5-unikey") + (synopsis "Unikey (Vietnamese Input Method) engine support for Fcitx5") + (description "This provides Unikey input method support for Fcitx5.") + (license license:gpl2+))) + (define-public fcitx5-chewing (package (name "fcitx5-chewing") diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index dd1402a37e..b990338d78 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -845,7 +845,7 @@ blockchain.") ;; the system's dynamically linked library. (package (name "monero") - (version "0.18.4.1") + (version "0.18.4.2") (source (origin (method git-fetch) @@ -863,7 +863,7 @@ blockchain.") delete-file-recursively '("external/miniupnp" "external/rapidjson")))) (sha256 - (base32 "0k4z01l8dvnazh650yarwn6ja1wrxcqq4g7302xw0dhw7h1qvy1j")))) + (base32 "1285kigw9j633ghvp4apld9ddrvw7hjgjv23yabjvl7l2gc6hlv6")))) (build-system cmake-build-system) (native-inputs (list doxygen @@ -950,7 +950,7 @@ the Monero command line client and daemon.") (define-public monero-gui (package (name "monero-gui") - (version "0.18.4.1") + (version "0.18.4.2") (source (origin (method git-fetch) @@ -966,7 +966,7 @@ the Monero command line client and daemon.") ;; See the 'extract-monero-sources' phase. (delete-file-recursively "monero"))) (sha256 - (base32 "1r2cfzh4lc94mb7fqa8f41613msnsyy5kz6mzcr4npjpm8bxqs8k")))) + (base32 "0sa90shh82k6pzj1xr1f6x13q1q4mif4v00zahq96i7iglqpn4b6")))) (build-system qt-build-system) (native-inputs `(,@(package-native-inputs monero) @@ -2530,7 +2530,7 @@ and manipulation.") (define-public xmrig (package (name "xmrig") - (version "6.22.2") + (version "6.24.0") (source (origin (method git-fetch) @@ -2538,7 +2538,7 @@ and manipulation.") (url "https://github.com/xmrig/xmrig") (commit (string-append "v" version)))) (file-name (git-file-name name version)) - (sha256 (base32 "0dis9v8xykiqqzcib22djgmzyvx71akjs25aqvxjjzl1n8cm4npz")) + (sha256 (base32 "10q91sh29hlb7yd4lkfjsrk16qgb2j1z19ac77c9y7ccfci97f01")) (modules '((guix build utils))) (snippet ;; TODO: Try to use system libraries instead of bundled ones in @@ -2587,7 +2587,7 @@ mining.") (define-public p2pool (package (name "p2pool") - (version "4.9") + (version "4.9.1") (source (origin (method git-fetch) @@ -2596,7 +2596,7 @@ mining.") (commit (string-append "v" version)) (recursive? #t))) (file-name (git-file-name name version)) - (sha256 (base32 "0898a823mi38z6dwdm6crb2l98rv79sznmqwa0ss96xggvk12nlw")) + (sha256 (base32 "0zdsp6pb4rlbdqanx94rw1rii5jih1szf4rl3nf8fldvjkwkydlf")) (modules '((guix build utils))) (snippet #~(for-each delete-file-recursively diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 68229aab85..51c724eb74 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -663,7 +663,7 @@ executing in M-mode.") (define-public seabios (package (name "seabios") - (version "1.16.2") + (version "1.17.0") (source (origin (method git-fetch) @@ -672,7 +672,7 @@ executing in M-mode.") (commit (string-append "rel-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1mal2zqn4ppxdjxddrxcphm6z9n8n4rw97xl2hldd7spw57nwq97")) + (base32 "0v4rsv2mh6rmb9n2fc1df439z16qgmnkbv0vb5ylmpqzqfbjjd3q")) (modules '((guix build utils))) (snippet #~(begin @@ -703,12 +703,6 @@ executing in M-mode.") ;; If we use (cc-for-target) then we have the system prefix ;; twice or we might have the wrong prefix. (setenv "CC" "gcc"))) - (add-before 'build 'build-description-tables - (lambda _ - ;; Regenerate the ACPI description tables. - (invoke "make" "iasl") - ;; Clear temporary files added by the iasl target. - (invoke "make" "clean"))) (replace 'install (lambda _ (install-file "out/bios.bin" diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index c21d7c183d..a206016453 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -2642,6 +2642,134 @@ programming. Iosevka is completely generated from its source code.") (sha256 (base32 "08ijx9rbcx95yiaiwv6k25xmsi24rdy50mkmmaw94mmwv22mxdra")))))) +(define-public font-apl2741-unicode + (let ((commit "1e11efae38e5095bfe49a786b111d563e83dad03")) + (package + (name "font-apl2741-unicode") + (version "1668049300") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abrudz/APL2741.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0i1yk1x99lr2swlbq9r7dny5w70zwiwi8lpfcw4n7k7pfbw0xh7y")))) + (build-system trivial-build-system) + (native-inputs (list fontforge)) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((source (assoc-ref %build-inputs "source")) + (out (assoc-ref %outputs "out")) + (dest (string-append out "/share/fonts/truetype")) + (fontforge (string-append + (assoc-ref %build-inputs "fontforge") + "/bin/fontforge"))) + (mkdir-p dest) + (invoke fontforge "-lang=ff" "-c" "Open($1); Generate($2)" + (string-append source "/APL2741.sfd") + (string-append dest "/APL2741.ttf")))))) + (synopsis "APL2741 Unicode font") + (home-page "https://abrudz.github.io/APL2741/") + (description "APL font based on Adrian Smith's IBM Selectric APL2741 +golf-ball font. It supports most special characters used by popular APL +implementations, some additional mathematical and typographical symbols, +single line drawing characters, as well as the full Unicode APL range, +including both uppercase and lowercase underscored alphabets, as-of-yet unused +symbols, and almost all Latin-1 accented letters.") + (license license:unlicense)))) + +(define-public font-apl333 + (package + (name "font-apl333") + ;; Version number as for apl-385, last modified 2013-04-20. + (version "20130420") + (source + (origin + (method url-fetch) + (uri (string-append "https://apl385.com/fonts/" "apl333.zip")) + (sha256 + (base32 "0yn0ha7d14vp4ma3lxbc9kpyrn20m7brjisr6w55c9mi24w9v3a5")))) + (build-system font-build-system) + (home-page "https://apl385.com/fonts/index.htm") + (synopsis "Variable-width APL font inspired by Comic Sans Serif") + (description + "Variable-width version of Adrian Smith's APL385 font developed with APL +software vendors in the late 1980s.") + (license license:public-domain))) + +(define-public font-apl385 + (package + (name "font-apl385") + ;; No version number or release, unzipping source and checking file times + ;; shows the font file was last modified on 2016-08-21. + (version "20160821") + (source + (origin + (method url-fetch) + (uri (string-append "https://apl385.com/fonts/" "apl385.zip")) + (sha256 + (base32 "132qfsnx0v6qf8x8iy3flivv449nz42nnpkwjysmz65w6wqxpk1g")))) + (build-system font-build-system) + (home-page "https://apl385.com/fonts/index.htm") + (synopsis "Monospaced APL font inspired by Comic Sans Serif") + (description + "Adrian Smith's monospaced APL font developed with APL software vendors +in the late 1980s.") + (license license:public-domain))) + +(define-public font-apl386 + ;; Neither releases nor tags + (let ((commit "c5bca014b6610ee170985c3ce32a8bb14dbd7b94") + (revision "1")) + (package + (name "font-apl386") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abrudz/APL386") + (commit commit))) + (file-name (git-file-name name revision)) + (sha256 + (base32 "0z7kpqgfrb053rajnr08n02rdwg5w1aynxj13ys93j0k3xvv5a75")))) + (build-system font-build-system) + (synopsis "Font suitable for APL programming language") + (description + "APL386 is an evolution of Adrian Smith's APL385 font with a fun, +whimsical look, inspired by Comic Sans Serif.") + (home-page "https://abrudz.github.io/APL386/") + (license license:unlicense)))) + +(define-public font-bqn386 + ;; Neither releases nor tags + (let ((commit "4d8b9f668ba76a15ca9cd44d9bfedaf95a4c0d96") + (revision "1")) + (package + (name "font-bqn386") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dzaima/BQN386") + (commit commit))) + (file-name (git-file-name name revision)) + (sha256 + (base32 "1l2ycjs85vps7sy5yg19mq1xdnfv4lx3skw921yw1rhx9xdvhrgc")))) + (build-system font-build-system) + (synopsis "Font suitable for APL and BQN programming languages") + (description + "BQN386 is an extension of APL386 font. This font keeps regular APL +characters mostly intact.") + (home-page "https://dzaima.github.io/BQN386/") + (license license:unlicense)))) + (define-public font-aporetic (package (name "font-aporetic") diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm index 0ff3025187..377aeeb251 100644 --- a/gnu/packages/fpga.scm +++ b/gnu/packages/fpga.scm @@ -144,6 +144,29 @@ formal verification.") formal verification. This is the Yosyshq fork of ABC.") (license (license:non-copyleft "file:///copyright.txt")))) +(define-public apycula + (package + (name "apycula") + (version "0.23") + ;; The pypi tar.gz file includes the necessary .pickle files, not available + ;; in the home-page repository. + (source + (origin + (method url-fetch) + (uri (pypi-uri "apycula" version)) + (sha256 + (base32 "1kk9hi8zhdp1am5vj716lwlmrs31lxrwhdbbc4qsad470dcjqs57")))) + (build-system pyproject-build-system) + (arguments (list #:tests? #f)) ;requires Gowin EDA tools + (inputs (list python-crc)) + (native-inputs (list python-setuptools python-wheel)) + (home-page "https://github.com/YosysHQ/apicula/") + (synopsis "Gowin FPGA bitstream format") + (description + "The project Apycula provides tools to support development and +generating bitstreams with Gowin FPGAs.") + (license license:expat))) + (define-public iverilog (package (name "iverilog") @@ -396,115 +419,114 @@ files.") license:bsd-2))))) ;for lz4-derived sources (define-public nextpnr - (package - (name "nextpnr") - (version "0.8") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/YosysHQ/nextpnr/") - (commit (string-append "nextpnr-" version)) - ;; XXX: Fetch some bundled libraries such as QtPropertyBrowser, - ;; json11 and python-console, which have custom modifications or - ;; no longer have their original upstream. - (recursive? #t))) - (file-name (git-file-name name version)) - (modules '((guix build utils) - (ice-9 ftw) - (srfi srfi-26))) - (snippet - '(begin - ;; XXX: 'delete-all-but' is copied from the turbovnc package. - (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) - (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) - (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) - (delete-all-but "3rdparty" - ;; The following sources have all been patched, so - ;; cannot easily be unbundled. - "QtPropertyBrowser" - "json11" - "python-console" - "oourafft"))) - (patches (search-patches "nextpnr-gtest.patch" - "nextpnr-imgui.patch")) - (sha256 - (base32 "0p53a2gl89hf3hfwdxs6pykxyrk82j4lqpwd1fqia2y0c9r2gjlm")))) - (build-system qt-build-system) - (arguments - (list - #:cmake cmake ;CMake 3.25 or higher is required. - #:configure-flags - ;; TODO: enable more architectures? - #~(list "-DARCH=generic;ice40;ecp5;himbaechel" - "-DBUILD_GUI=ON" - "-DUSE_OPENMP=ON" - "-DBUILD_TESTS=ON" - "-DHIMBAECHEL_UARCH=ng-ultra" - "-DHIMBAECHEL_NGULTRA_DEVICES=ng-ultra" - "-DHIMBAECHEL_PRJBEYOND_DB=/tmp/prjbeyond-db" - (string-append "-DCURRENT_GIT_VERSION=nextpnr-" #$version) - (string-append "-DICESTORM_INSTALL_PREFIX=" - #$(this-package-input "icestorm")) - (string-append "-DTRELLIS_INSTALL_PREFIX=" - #$(this-package-input "prjtrellis")) - "-DUSE_IPO=OFF") - #:phases - #~(modify-phases %standard-phases - ;; Required by himbaechel architecture, ng-ultra support. - (add-after 'unpack 'get-prjbeyond-db - (lambda _ - (copy-recursively - #$(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/yosyshq-GmbH/prjbeyond-db/") - ;; We take latest commit, as indicated in nextpnr’s - ;; README.md file - (commit "06d3b424dd0e52d678087c891c022544238fb9e3"))) - (sha256 - (base32 - "17dd3cgms2fy6xvz7magdmvv92km4cqh2kz9dyjrvz5y8caqav4y"))) - "/tmp/prjbeyond-db"))) - (add-after 'unpack 'unbundle-sanitizers-cmake - (lambda _ - (substitute* "CMakeLists.txt" - ;; Use the system sanitizers-cmake module. This is made - ;; necessary 'sanitizers-cmake' installing a FindPackage - ;; module but no CMake config file. - (("\\$\\{CMAKE_SOURCE_DIR}/3rdparty/sanitizers-cmake/cmake") - (string-append - #$(this-package-native-input "sanitizers-cmake") - "/share/sanitizers-cmake/cmake")))))))) - (native-inputs - (list googletest - sanitizers-cmake)) - (inputs - (list boost - corrosion - eigen - icestorm - prjtrellis - pybind11 - python - qtbase-5 - qtwayland-5 - qtimgui - yosys)) - (synopsis "Place-and-Route tool for FPGAs") - (description "Nextpnr is a portable FPGA place and route tool.") - (home-page "https://github.com/YosysHQ/nextpnr/") - (license license:isc))) + ;; Necessary for compatibility with latest apycula. + ;; TODO: Remove with release 0.9. + (let ((commit "d796cc720b60ccc18580c686d93c8751fe461532") + (revision "0")) + (package + (name "nextpnr") + (version (git-version "0.8" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/YosysHQ/nextpnr/") + (commit commit) + ;; XXX: Fetch some bundled libraries such as QtPropertyBrowser, + ;; json11 and python-console, which have custom modifications or + ;; no longer have their original upstream. + (recursive? #t))) + (file-name (git-file-name name version)) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-26))) + (snippet + '(begin + ;; XXX: 'delete-all-but' is copied from the turbovnc package. + (define (delete-all-but directory . preserve) + (with-directory-excursion directory + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) + (items (scandir "." pred))) + (for-each (cut delete-file-recursively <>) items)))) + (delete-all-but "3rdparty" + ;; The following sources have all been patched, so + ;; cannot easily be unbundled. + "QtPropertyBrowser" + "json11" + "python-console" + "oourafft"))) + (patches (search-patches "nextpnr-gtest.patch" + "nextpnr-imgui.patch")) + (sha256 + (base32 "1arj25vad76wg6b5yaaky4cby5zp9v92pdd4y3l0kxi7wvxhmmya")))) + (build-system qt-build-system) + (arguments + (list + #:cmake cmake ;CMake 3.25 or higher is required. + #:configure-flags + ;; TODO: enable more architectures? + #~(list "-DARCH=generic;ice40;ecp5;himbaechel" + "-DBUILD_GUI=ON" + "-DUSE_OPENMP=ON" + "-DBUILD_TESTS=ON" + "-DHIMBAECHEL_UARCH=ng-ultra;gowin" + "-DHIMBAECHEL_NGULTRA_DEVICES=ng-ultra" + "-DHIMBAECHEL_SPLIT=ON" + "-DHIMBAECHEL_PRJBEYOND_DB=/tmp/prjbeyond-db" + (string-append "-DCURRENT_GIT_VERSION=nextpnr-" #$version) + (string-append "-DICESTORM_INSTALL_PREFIX=" + #$(this-package-input "icestorm")) + (string-append "-DTRELLIS_INSTALL_PREFIX=" + #$(this-package-input "prjtrellis")) + "-DUSE_IPO=OFF") + #:phases + #~(modify-phases %standard-phases + ;; Required by himbaechel architecture, ng-ultra support. + (add-after 'unpack 'get-prjbeyond-db + (lambda _ + (copy-recursively + #$(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/yosyshq-GmbH/prjbeyond-db/") + ;; We take latest commit, as indicated in nextpnr’s + ;; README.md file + (commit "06d3b424dd0e52d678087c891c022544238fb9e3"))) + (sha256 + (base32 + "17dd3cgms2fy6xvz7magdmvv92km4cqh2kz9dyjrvz5y8caqav4y"))) + "/tmp/prjbeyond-db"))) + (add-after 'unpack 'unbundle-sanitizers-cmake + (lambda _ + (substitute* "CMakeLists.txt" + ;; Use the system sanitizers-cmake module. This is made + ;; necessary 'sanitizers-cmake' installing a FindPackage + ;; module but no CMake config file. + (("\\$\\{CMAKE_SOURCE_DIR}/3rdparty/sanitizers-cmake/cmake") + (string-append + #$(this-package-native-input "sanitizers-cmake") + "/share/sanitizers-cmake/cmake")))))))) + (native-inputs + (list googletest + sanitizers-cmake)) + (inputs + (list apycula + boost + corrosion + eigen + icestorm + prjtrellis + pybind11 + python + qtbase-5 + qtwayland-5 + qtimgui + yosys)) + (synopsis "Place-and-Route tool for FPGAs") + (description "Nextpnr is a portable FPGA place and route tool.") + (home-page "https://github.com/YosysHQ/nextpnr/") + (license license:isc)))) (define-public nextpnr-ice40 (deprecated-package "nextpnr-ice40" nextpnr)) @@ -584,16 +606,16 @@ Python program.") (define-public python-myhdl (package (name "python-myhdl") - (version "0.11") + (version "0.11.51") (source (origin (method url-fetch) (uri (pypi-uri "myhdl" version)) (sha256 (base32 - "04fi59cyn5dsci0ai7djg74ybkqfcjzhj1jfmac2xanbcrw9j3yk")))) + "0b360smk2m60vhxdi837hz75m0pnms477wkn9gh6m4v3nih1v4cx")))) (build-system python-build-system) - (home-page "https://www.myhdl.org/") + (home-page "http://www.myhdl.org/") (synopsis "Python as a Hardware Description Language") (description "This package provides a library to turn Python into a hardware description and verification language.") @@ -656,7 +678,7 @@ automated testing of HDL code.") (define-public nvc (package (name "nvc") - (version "1.17.1") + (version "1.17.2") (source (origin (method git-fetch) (uri (git-reference @@ -665,7 +687,7 @@ automated testing of HDL code.") (file-name (git-file-name name version)) (sha256 (base32 - "0k5l5z5x4k7rfcrnxskbqk0icpr13ax6r2f0dkpscadavbmv0qz6")))) + "0hr5y9ys5kf096x18mh10wwqa0hbzlmdj7pyayc6szsjla1d3mk0")))) (build-system gnu-build-system) (arguments (list #:out-of-source? #t @@ -709,7 +731,7 @@ automated testing of HDL code.") (define-public systemc (package (name "systemc") - (version "3.0.0") + (version "3.0.1") (source (origin (method git-fetch) @@ -718,7 +740,7 @@ automated testing of HDL code.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1v5fg3h9ffdzq9f6zplvr9all00ssc1gpdvbg129xahkrbl53kvw")))) + (base32 "1c8brlv3702p2ivifai9929bg20y30jb301ap0gdmz305q8mcb33")))) (native-inputs (list perl)) (build-system cmake-build-system) (arguments @@ -729,7 +751,7 @@ automated testing of HDL code.") #:phases #~(modify-phases %standard-phases (replace 'check (assoc-ref gnu:%standard-phases 'check))))) - (home-page "https://accellera.org/community/systemc") + (home-page "https://systemc.org/") (synopsis "Library for event-driven simulation") (description "SystemC is a C++ library for modeling concurrent systems, and the @@ -773,61 +795,66 @@ using different abstraction levels.") (list perl python systemc)) (build-system gnu-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'bootstrap - (lambda _ (invoke "autoconf"))) - (add-after 'unpack 'adjust-source - (lambda _ - (substitute* "bin/verilator" - (("/bin/echo") "echo")))) - (add-before 'check 'disable-gdb-safe-path - (lambda _ - (setenv "HOME" (getcwd)) - (mkdir-p (string-append (getcwd) "/.config/gdb")) - (with-output-to-file (string-append (getcwd) "/.config/gdb/gdbinit") - (lambda () - (display "set auto-load safe-path /")))))) - #:test-target "test")) + (list + #:phases + #~(modify-phases %standard-phases + (replace 'bootstrap + (lambda _ (invoke "autoconf"))) + (add-after 'unpack 'adjust-source + (lambda _ + (substitute* "bin/verilator" + (("/bin/echo") "echo")))) + (add-before 'check 'disable-gdb-safe-path + (lambda _ + (setenv "HOME" (getcwd)) + (mkdir-p (string-append (getcwd) "/.config/gdb")) + (with-output-to-file + (string-append (getcwd) "/.config/gdb/gdbinit") + (lambda () + (display "set auto-load safe-path /")))))) + #:test-target "test")) (home-page "https://www.veripool.org/verilator/") (synopsis "Verilog/SystemVerilog simulator") (description - "Verilator transforms the specified Verilog or SystemVerilog code by reading it, -performing lint checks, and optionally inserting assertion checks and -coverage-analysis points. It outputs single- or multi-threaded @file{.cpp} -and @file{.h} files.") + "Verilator transforms the specified Verilog or SystemVerilog code by +reading it, performing lint checks, and optionally inserting assertion checks +and coverage-analysis points. It outputs single- or multi-threaded +@file{.cpp} and @file{.h} files.") (license license:lgpl3))) (define-public fftgen - (let ((commit "1d75a992efd0528edea128a903aafdabe133cb08") ;no releases - (revision "0")) + (let ((commit "3378b77d83a98b06184656a5cb9b54e50dfe4485") ;no releases + (revision "1")) (package (name "fftgen") (version (git-version "0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ZipCPU/dblclockfft") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0qq874yalzpjdwnxhc5df8a0ifywv29wcncb09945x56xplvkcmd")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ZipCPU/dblclockfft") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rvln871wjkbbqnv88jnx328xlhn5sgbr8fglk3ajnd9rwgiq3jg")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ;no tests - #:make-flags '("CFLAGS=-g -O2") ;default flags lack -O2 - #:phases (modify-phases %standard-phases - (delete 'configure) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") - "/bin"))) - (install-file "sw/fftgen" bin))))))) + (list + #:test-target "bench-test" + #:make-flags #~(list "CFLAGS=-g -O2") ;default flags lack -O2 + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda _ + (install-file "sw/fftgen" + (string-append #$output "/bin"))))))) + (native-inputs (list bc fftw python-minimal verilator which)) (synopsis "Generic pipelined FFT core generator") (description "fftgen produces @acronym{FFT, fast-Fourier transforms} hardware designs in Verilog.") - (home-page "https://zipcpu.com/") + (home-page "https://github.com/ZipCPU/zipcpu/") (license license:lgpl3+)))) (define-public openfpgaloader @@ -899,7 +926,7 @@ to @samp{info \"(guix) Base Services\"} for examples.") #:test-flags #~(list "test_all.py"))) (native-inputs (list python-pytest python-setuptools python-wheel)) (propagated-inputs (list python-networkx python-six)) - (home-page "https://gitlab.com/ohwr/project/hdl-make/") + (home-page "https://ohwr.gitlab.io/project/hdl-make/") (synopsis "Generate multi-purpose makefiles for HDL projects") (description "Hdlmake helps manage and share @acronym{HDL, hardware description diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 0d3d663ab8..d8ec14af1c 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -12476,80 +12476,6 @@ game.") ;thanks to Debian for description computer opponents or against real players online.") (license license:agpl3+))) -(define-public xblackjack - (package - (name "xblackjack") - (version "2.2") - (source - (origin - (method url-fetch) - (uri (string-append "https://www.ibiblio.org/pub/X11/contrib/games/" - "xblackjack-" version ".tar.gz")) - (sha256 - (base32 "05h93rya7zwnx2l58f0a7wkjadymkj4y77clcr2hryhrhhy1vwjx")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((imake (assoc-ref inputs "imake")) - (out (assoc-ref outputs "out"))) - (substitute* "Imakefile" - (("EXTRA_LIBRARIES = -lXm \\$\\(DEPLIBS\\) -lbsd") - "EXTRA_LIBRARIES = -lXm -lXt -lXmu -lXext -lX11") - (("^#define NonStandardInstallTargets NO") - "#define NonStandardInstallTargets YES") - (("BINDIR = /usr/local/bin") - (string-append "BINDIR = " out "/bin")) - (("MANDIR = /usr/local/man/cat1") - (string-append "MANDIR = " out "/share/man/man1")) - (("XAPPLOADDIR = /usr/local/lib/app-defaults") - (string-append "XAPPLOADDIR = " out "/lib/X11/app-defaults"))) - - (invoke "xmkmf") ; Generate Makefile. - (substitute* "Makefile" - ((imake) out) - (("ETCX11DIR = /etc/X11") - (string-append "ETCX11DIR = " out "/etc/X11")) - ;; Fix incorrect argument given to gcc. Error message: - ;; "gcc: error: DefaultGcc2AMD64Opt: No such file or directory" - (("CDEBUGFLAGS = [^\n]*") "")) - - ;; Fix header paths. - (substitute* '("Draw.c" - "Strategy.c") - (("^#include <X11/Xm/Xm.h>") - "#include <Xm/Xm.h>")) - (substitute* "Strategy.c" - (("^#include <X11/Xm/Label.h>") - "#include <Xm/Label.h>")) - - ;; Fix compilation errors. - (substitute* "Table.c" - (("/\\* focus_moved_proc \\*/\tXtInheritFocusMovedProc,") "") - (("_XmMoveObject\\(\\(RectObj\\) w, rx, ry\\);") - "_XmMoveObject(w, rx, ry);") - (("_XmResizeObject\\(\\(RectObj\\) managed->locs[i].w, nw, nh,") - "_XmResizeObject(managed->locs[i].w, nw, nh,"))))) - (add-after 'install 'install-man-pages - (lambda _ - (invoke "make" "install.man")))) - #:tests? #f)) ; No check target. - (inputs - (list lesstif libx11 libxext libxmu libxt)) - (native-inputs - (list imake)) - (home-page "https://www.ibiblio.org/pub/X11/contrib/games/") - (synopsis "X11/Motif blackjack game") - (description - "Xblackjack is a MOTIF/OLIT based tool constructed to get you ready for -the casino. It was inspired by a book called \"Beat the Dealer\" by Edward -O. Thorp, Ph.D. of UCLA. A number of important statistics are maintained -for display, and used by the program to implement Thorp's \"Complete Point -System\" (high-low system).") - (license (license:x11-style "" "See file headers.")))) - (define-public xevil ;; This game is old. Use a maintained fork that builds with modern toolchains ;; on modern, 64-bit hardware. diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index caeba83735..8ce59145ec 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -1285,12 +1285,7 @@ as the 'native-search-paths' field." "gfortran" '("fortran") %generic-search-paths))) -(define-public gdc-10 - (hidden-package - (custom-gcc gcc-10 "gdc" '("d") - %generic-search-paths))) - -(define-public gdc-11 +(define-public gdc-11 ;kept for bootstrapping (hidden-package (custom-gcc gcc-11 "gdc" '("d") %generic-search-paths))) @@ -1298,8 +1293,18 @@ as the 'native-search-paths' field." ;;; Alias tracking the latest GDC version. (define-public gdc (hidden-package - (custom-gcc gcc "gdc" '("d") - %generic-search-paths))) + (let ((base (custom-gcc gcc + "gdc" '("d") + %generic-search-paths))) + (package + (inherit base) + (native-inputs + (modify-inputs (package-native-inputs base) + ;; Since GCC 12, GDC is self-hosted, requiring a version of itself + ;; to build. + ;; XXX: GCC must be prepended as well to avoid an issue with the C++ + ;; headers ordering. + (prepend gcc gdc-11))))))) (define-public gm2 (hidden-package diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 4a0fa38f0c..2a662752ba 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -349,7 +349,9 @@ buffers.") (version-major+minor version) "/gimp-" version ".tar.bz2")) (sha256 - (base32 "0vl57w9w31cgz6nbkpqfycsnwi5qym87jw31hvz3320wq7p4ba2h")))) + (base32 "0vl57w9w31cgz6nbkpqfycsnwi5qym87jw31hvz3320wq7p4ba2h")) + (patches (search-patches "gimp-fix-tiff-load.patch" + "gimp-fix-metadata-editor.patch")))) (build-system gnu-build-system) (outputs '("out" "doc")) ; 9 MiB of gtk-doc HTML diff --git a/gnu/packages/golang-web.scm b/gnu/packages/golang-web.scm index 3476b06461..e797dba593 100644 --- a/gnu/packages/golang-web.scm +++ b/gnu/packages/golang-web.scm @@ -453,7 +453,7 @@ handlers.") (define-public go-github-com-alexliesenfeld-health (package (name "go-github-com-alexliesenfeld-health") - (version "0.8.0") + (version "0.8.1") (source (origin (method git-fetch) @@ -462,7 +462,7 @@ handlers.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1fchlvxwidsscskwq07vhxfwcn5wbigbizi51619l8gg09mr158q")))) + (base32 "19p0rs1dmvf3cnylyykmmnma2g5x2vy8gasr2rjl28ma58w6l0d3")))) (build-system go-build-system) (arguments (list @@ -1077,18 +1077,11 @@ parameter types for AWS Secrets Manager.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "service" "sqs") (delete-all-but "." "service"))))) (build-system go-build-system) @@ -1578,7 +1571,7 @@ and reduce scope of key compromise. (define-public go-github-com-caddyserver-zerossl (package (name "go-github-com-caddyserver-zerossl") - (version "0.1.0") + (version "0.1.3") (source (origin (method git-fetch) @@ -1587,7 +1580,7 @@ and reduce scope of key compromise. (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0hr2kdabhm35hz5krp7m3g6wxvyb9xlqgmy3krf4wwb3yabsqp1m")))) + (base32 "16mrlmsl3ajdrn2qsdq51k79z3fi8v8j82r2c6xyj7mp2yr979h6")))) (build-system go-build-system) (arguments (list @@ -4175,6 +4168,30 @@ replacement for memcached in many cases. It provides a data loading mechanism with caching and de-duplication that works across a set of peer processes.") (license license:asl2.0))) +(define-public go-github-com-google-go-dap + (package + (name "go-github-com-google-go-dap") + (version "0.12.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/go-dap") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0c0941wxnpx3pscf08gr6vrn90rja8k8pjhl1px0r54kcjidd5js")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/google/go-dap")) + (home-page "https://github.com/google/go-dap") + (synopsis "Implementation of the Debug Adapter Protocol in Golang") + (description + "Package dap contains data types and code for Debug Adapter +Protocol (DAP) specification.") + (license license:asl2.0))) + (define-public go-github-com-google-go-github-v31 (package (name "go-github-com-google-go-github-v31") @@ -8706,7 +8723,7 @@ to @url{https://www.rfc-editor.org/rfc/rfc3550, RFC 3550}, (define-public go-github-com-pion-rtp (package (name "go-github-com-pion-rtp") - (version "1.8.11") + (version "1.8.21") (source (origin (method git-fetch) @@ -8715,11 +8732,13 @@ to @url{https://www.rfc-editor.org/rfc/rfc3550, RFC 3550}, (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1a4fj31j7glhfsnxxwm8r72l6capz9mh8kfr340659ahgiijdkcg")))) + (base32 "1hc5cdxgf0m44awvzzaby3hrlnhjbxjivl6981069xwgxspqakhm")))) (build-system go-build-system) (arguments (list #:import-path "github.com/pion/rtp")) + (native-inputs + (list go-github-com-stretchr-testify)) (propagated-inputs (list go-github-com-pion-randutil)) (home-page "https://github.com/pion/rtp") @@ -8821,7 +8840,7 @@ Protocol,SCTP} as specified in (package (inherit go-github-com-pion-srtp-v2) (name "go-github-com-pion-srtp-v3") - (version "3.0.4") + (version "3.0.7") (source (origin (method git-fetch) @@ -8830,7 +8849,7 @@ Protocol,SCTP} as specified in (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "03343fsgrawfy9plsl7y5022ygjln3jvsn3im5xl1qwnc68rb1a2")))) + (base32 "0l8y01ci5fsx8b6ajn9cvs45hqpz838x0jnyyj1p2z714nw9jh61")))) (arguments (list #:import-path "github.com/pion/srtp/v3")) @@ -10186,7 +10205,7 @@ Supports S3 and STS.") (define-public go-github-com-sourcegraph-jsonrpc2 (package (name "go-github-com-sourcegraph-jsonrpc2") - (version "0.2.0") + (version "0.2.1") (home-page "https://github.com/sourcegraph/jsonrpc2") (source (origin @@ -10196,7 +10215,7 @@ Supports S3 and STS.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1id35b4mhif9gy1b70mv0x7xkmpm2p8xydix8six10yjyhvm1wjh")))) + (base32 "0nxiq8da4x4sipjkap50cfzjg9b8vqm45w65hbjywwj6q73jl54a")))) (build-system go-build-system) (arguments '(#:import-path "github.com/sourcegraph/jsonrpc2")) @@ -10484,6 +10503,52 @@ runtime. It has zero dependencies, and doesn't rely on CGO. This means you can run applications in other languages and still keep cross compilation.") (license license:asl2.0))) +(define-public go-github-com-things-go-go-socks5 + (package + (name "go-github-com-things-go-go-socks5") + (version "0.0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/things-go/go-socks5") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0r7v1bpja4j8q9bjh124w8l5m29vwnpaq0flm97izvzw4pcyxybf")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/things-go/go-socks5")) + (native-inputs + (list go-github-com-stretchr-testify)) + (propagated-inputs + (list go-golang-org-x-net)) + (home-page "https://github.com/things-go/go-socks5") + (synopsis "SOCKS5 with full TCP/UDP and IPv4/IPv6 support in Golang") + (description + "This package implements a @url{http://en.wikipedia.org/wiki/SOCKS, +SOCKS5}. SOCKS (Secure Sockets) is used to route traffic between a client and +server through an intermediate proxy layer. This can be used to bypass +firewalls or NATs. + +Features: +@itemize +@item support socks5 server +@item support TCP/UDP and IPv4/IPv6 +@item unit tests +@item \"No Auth\" mode +@item user/password authentication optional user addr limit +@item support for the CONNECT command +@item support for the ASSOCIATE command +@item rules to do granular filtering of commands +@item custom DNS resolution +@item custom goroutine pool +@item buffer pool design and optional custom buffer pool +@item custom logger +@end itemize") + (license license:expat))) + (define-public go-github-com-tj-go-elastic (package (name "go-github-com-tj-go-elastic") @@ -11864,18 +11929,11 @@ Handler) and routes @code{WithRouteTag}.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "propagators" "autoprop") (delete-all-but "." "propagators"))))) (build-system go-build-system) @@ -12109,9 +12167,9 @@ go.opentelemetry.io/otel/trace.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/otlp/otlptrace")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/otlp/otlptrace")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12124,18 +12182,11 @@ go.opentelemetry.io/otel/trace.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters/otlp" "otlptrace") (delete-all-but "." "exporters") ;; Submodules with their own go.mod files and packed as separated @@ -12171,9 +12222,9 @@ go.opentelemetry.io/otel/trace.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/otlp/otlptrace/otlptracegrpc")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/otlp/otlptrace/otlptracegrpc")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12186,18 +12237,11 @@ go.opentelemetry.io/otel/trace.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters/otlp/otlptrace" "otlptracegrpc") (delete-all-but "." "exporters"))))) (build-system go-build-system) @@ -12234,9 +12278,9 @@ By default the telemetry is sent to @@url{https://localhost:4317}.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/otlp/otlptrace/otlptracehttp")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/otlp/otlptrace/otlptracehttp")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12249,18 +12293,11 @@ By default the telemetry is sent to @@url{https://localhost:4317}.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters/otlp/otlptrace" "otlptracehttp") (delete-all-but "." "exporters"))))) (build-system go-build-system) @@ -12328,9 +12365,9 @@ telemetry to be written to an output destination as JSON.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "exporters/zipkin")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "exporters/zipkin")))) (file-name (git-file-name name version)) (sha256 (base32 "1kvfbqc56p1h9rh9cvgn37ya6k10613r0f2rhjiwrrkgs2mszk30")) @@ -12343,18 +12380,11 @@ telemetry to be written to an output destination as JSON.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "exporters" "zipkin") (delete-all-but "." "exporters"))))) (build-system go-build-system) @@ -12383,9 +12413,9 @@ telemetry to be written to an output destination as JSON.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "log")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "log")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12398,18 +12428,11 @@ telemetry to be written to an output destination as JSON.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "." "log"))))) (build-system go-build-system) (arguments @@ -12450,8 +12473,8 @@ OpenTelemetry API."))) (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version #:subdir "sdk")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version #:subdir "sdk")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12464,18 +12487,11 @@ OpenTelemetry API."))) ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "." "sdk") (delete-file-recursively "sdk/log") (delete-file-recursively "sdk/metric"))))) @@ -12506,9 +12522,9 @@ OpenTelemetry API."))) (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "sdk/log")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "sdk/log")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12521,18 +12537,11 @@ OpenTelemetry API."))) ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "sdk" "log") (delete-all-but "." "sdk"))))) (build-system go-build-system) @@ -12561,9 +12570,9 @@ OpenTelemetry API."))) (origin (method git-fetch) (uri (git-reference - (url "https://github.com/open-telemetry/opentelemetry-go") - (commit (go-version->git-ref version - #:subdir "sdk/metric")))) + (url "https://github.com/open-telemetry/opentelemetry-go") + (commit (go-version->git-ref version + #:subdir "sdk/metric")))) (file-name (git-file-name name version)) (sha256 (base32 "0sb36qyq389fif9qp5iiqp6w41dfcwi95gb0bsbvznvijhd8c1cc")) @@ -12576,18 +12585,11 @@ OpenTelemetry API."))) ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "sdk" "metric") (delete-all-but "." "sdk"))))) (build-system go-build-system) @@ -12752,7 +12754,7 @@ the standard @code{context} package to store request-scoped values.") (define-public go-golang-zx2c4-com-wireguard (package (name "go-golang-zx2c4-com-wireguard") - (version "0.0.0-20231211153847-12269c276173") + (version "0.0.0-20250521234502-f333402bd9cb") (source (origin (method git-fetch) @@ -12764,33 +12766,16 @@ the standard @code{context} package to store request-scoped values.") (commit (go-version->git-ref version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1fbc6m0ahifhrd6jdrpdxi8l3b2slpp8fmv20kpq2yzz19vzzgkf")))) + (base32 "1h4rmdvssk939gk31f0sfwa1yaks72zk8rkcs7fj3qcvl8sgq6hr")))) (build-system go-build-system) (arguments (list - #:import-path "golang.zx2c4.com/wireguard" - #:phases - #~(modify-phases %standard-phases - ;; XXX: Workaround for go-build-system's lack of Go modules - ;; support. - (replace 'check - (lambda* (#:key tests? import-path #:allow-other-keys) - (when tests? - (with-directory-excursion (string-append "src/" import-path) - (invoke "go" "test" "-v" - ;; "./tune/..." ; Requires gvisor.dev/gvisor, not packed yet - "./" - "./conn/..." - "./device/..." - "./ipc/..." - "./ratelimiter/..." - "./replay/..." - "./rwcancel/..." - "./tai64n/...")))))))) + #:import-path "golang.zx2c4.com/wireguard")) (propagated-inputs (list go-golang-org-x-crypto go-golang-org-x-net - go-golang-org-x-sys)) + go-golang-org-x-sys + go-gvisor-dev-gvisor)) (home-page "https://git.zx2c4.com/wireguard") (synopsis "Implementation of WireGuard in Go") (description "This package is a Go Implementation of WireGuard.") @@ -12804,8 +12789,8 @@ the standard @code{context} package to store request-scoped values.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/googleapis/go-genproto") - (commit (go-version->git-ref version #:subdir "googleapis/api")))) + (url "https://github.com/googleapis/go-genproto") + (commit (go-version->git-ref version #:subdir "googleapis/api")))) (modules '((guix build utils) (ice-9 ftw) (srfi srfi-26))) @@ -12815,18 +12800,11 @@ the standard @code{context} package to store request-scoped values.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) ;; Submodules with their own go.mod files and packaged separately: ;; ;; - google.golang.org/genproto/googleapis/api/apikeys diff --git a/gnu/packages/golang-xyz.scm b/gnu/packages/golang-xyz.scm index f7126c2d7e..73c4b4cd3d 100644 --- a/gnu/packages/golang-xyz.scm +++ b/gnu/packages/golang-xyz.scm @@ -1013,6 +1013,32 @@ Distance}.") http://tartarus.org/~martin/PorterStemmer/index.html.") (license license:expat))) +(define-public go-github-com-akamensky-argparse + (package + (name "go-github-com-akamensky-argparse") + (version "1.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/akamensky/argparse") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1m7rzrfwyrwxbbry5ppds2b3c5gdslpakvjhsh6i8mhdfhywd8wc")))) + (build-system go-build-system) + (arguments + (list + ;; Panic: unexpected call to os.Exit(0) during test. + #:test-flags #~(list "-skip" "TestUsageString") + #:import-path "github.com/akamensky/argparse")) + (home-page "https://github.com/akamensky/argparse") + (synopsis "Argparse for golang") + (description + "This package implements a flexible and configurable option for command +line arguments parsing.") + (license license:expat))) + (define-public go-github-com-alecaivazis-survey-v2 (package (name "go-github-com-alecaivazis-survey-v2") @@ -4625,6 +4651,30 @@ submodules: @end itemize") (license license:asl2.0))) +(define-public go-github-com-cosiner-argv + (package + (name "go-github-com-cosiner-argv") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cosiner/argv") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ard8655lr4rqd929pvn9phv4mbgzrl3rswcl6i7p97cls7gn2yc")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/cosiner/argv")) + (home-page "https://github.com/cosiner/argv") + (synopsis "Split command line string into arguments array") + (description + "Package argv parses command line string into arguments array using the +bash syntax.") + (license license:expat))) + (define-public go-github-com-couchbase-gomemcached (package (name "go-github-com-couchbase-gomemcached") @@ -5367,6 +5417,46 @@ formatting information, rather than the current locale name.") encoding/decoding. It has no dependencies.") (license license:expat))) +(define-public go-github-com-derekparker-trie + (package + (name "go-github-com-derekparker-trie") + (version "0.0.0-20230829180723-39f4de51ef7d") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/derekparker/trie") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ik8xsxm7bd12lycga6d0zw561axmdwdqxi5qbf39n7mw41l9vj2")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/derekparker/trie")) + (home-page "https://github.com/derekparker/trie") + (synopsis "Prefix/fuzzy string searching in Golang") + (description "Implementation of an R-Way Trie data structure.") + (license license:expat))) + +(define-public go-github-com-derekparker-trie-v3 + (package + (inherit go-github-com-derekparker-trie) + (name "go-github-com-derekparker-trie-v3") + (version "3.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/derekparker/trie") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "02br0cw2wh27xffs1hsbwh145d3vpaihcd7mygf36ihdhrp00pka")))) + (arguments + (list + #:import-path "github.com/derekparker/trie/v3")))) + (define-public go-github-com-detailyang-go-fallocate (package (name "go-github-com-detailyang-go-fallocate") @@ -7511,6 +7601,35 @@ killing a command. All operations are safe to call from multiple goroutines.") (license license:expat))) +;; For delve@1.25.1 +(define-public go-github-com-go-delve-liner + (hidden-package + (package + (name "go-github-com-go-delve-liner") + (version "1.2.3-0.20231231155935-4726ab1d7f62") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/go-delve/liner") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0f94qx7jzign64gv865whirq9xw7rakxf3wy4y9fsn52bxx408x0")))) + (build-system go-build-system) + (arguments + (list + #:import-path "github.com/go-delve/liner")) + (propagated-inputs + (list go-github-com-mattn-go-runewidth + go-golang-org-x-sys)) + (home-page "https://github.com/go-delve/liner") + (synopsis "Command line editor Go library") + (description + "This package is an alternative fork of https://github.com/peterh/liner +to build @code{delve} - debugger for the Go programming language.") + (license license:expat)))) + (define-public go-github-com-go-errors-errors (package (name "go-github-com-go-errors-errors") @@ -12279,6 +12398,35 @@ representation suitable for computing diffs.") @end itemize") (license license:expat))) +(define-public go-github-com-landlock-lsm-go-landlock + (package + (name "go-github-com-landlock-lsm-go-landlock") + (version "0.0.0-20250303204525-1544bccde3a3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/landlock-lsm/go-landlock") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "00qis8gg2ajyph9jyrjghm6cn0h22pwjwdp6qa22ji6jslgnm02n")))) + (build-system go-build-system) + (arguments + (list + #:skip-build? #t + #:import-path "github.com/landlock-lsm/go-landlock")) + (propagated-inputs + (list go-golang-org-x-sys + go-kernel-org-pub-linux-libs-security-libcap-psx)) + (home-page "https://landlock.io/") + (synopsis "Golang library for the Linux Landlock sandboxing feature") + (description + "This package implements a restriction for the current processes' ability +to use files, using Linux 5.13's +@url{https://docs.kernel.org/security/landlock.html, Landlock} feature.") + (license license:expat))) + (define-public go-github-com-lann-builder (package (name "go-github-com-lann-builder") @@ -21790,9 +21938,9 @@ when they'd prefer a more familiar, loosely typed API.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/uber-go/zap") - (commit (go-version->git-ref version - #:subdir "exp")))) + (url "https://github.com/uber-go/zap") + (commit (go-version->git-ref version + #:subdir "exp")))) (file-name (git-file-name name version)) (sha256 (base32 "05i15278swdmpif3p6g18sy0sn7rnfdl3m2rj5p30cnyb0j29vig")) @@ -21805,18 +21953,11 @@ when they'd prefer a more familiar, loosely typed API.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "." "exp"))))) (build-system go-build-system) (arguments @@ -22586,6 +22727,33 @@ kubernetes-independent packages supplementing the @url{https://pkg.go.dev/std#stdlib,Go standard libs}.") (license license:asl2.0))) +(define-public go-kernel-org-pub-linux-libs-security-libcap-psx + (package + (name "go-kernel-org-pub-linux-libs-security-libcap-psx") + (version "1.2.76") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.kernel.org/pub/scm/libs/libcap/libcap.git") + (commit (go-version->git-ref version + #:subdir "psx")))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0va0bkq5kxf0ccsdpw598vsmk4kdzhaafjvym0g5b2n49c5sn59b")))) + (build-system go-build-system) + (arguments + (list + #:import-path "kernel.org/pub/linux/libs/security/libcap/psx" + #:unpack-path "kernel.org/pub/linux/libs/security/libcap")) + ;; Redirects from <https://kernel.org/pub/linux/libs/security/libcap> + (home-page "https://sites.google.com/site/fullycapable") + (synopsis "API for invoking Linux system calls in Golang") + (description + "This package provides a support for system calls that are run +simultaneously on all threads under Linux.") + (license license:gpl2))) + (define-public go-maunium-net-go-mauflag (package (name "go-maunium-net-go-mauflag") diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index b56c2a62c6..620ed7e66f 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -31,7 +31,7 @@ ;;; Copyright © 2020, 2021 Masaya Tojo <masaya@tojo.tokyo> ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com> ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com> -;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com> +;;; Copyright © 2020, 2025 Liliana Marie Prikler <liliana.prikler@gmail.com> ;;; Copyright © 2020, 2021, 2022 pukkamustard <pukkamustard@posteo.net> ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> @@ -163,14 +163,14 @@ (define-public artanis (package (name "artanis") - (version "1.2.2") + (version "1.3.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/artanis/artanis-" version ".tar.gz")) (sha256 (base32 - "013rs623075bbf824hf6jxng0kwbmg587l45fis9mmpq5168kspq")) + "16cwjyl0ykz6r7vvczrwaik6y4pc0fwc0hvwskfbgv9z71j2alzi")) (modules '((guix build utils))) (snippet '(begin @@ -1063,14 +1063,15 @@ tables.") (replace "guile-lib" guile2.2-lib) (replace "guile-smc" guile2.2-smc))))) -(define-public guile-fibers +(define-public guile-fibers-1.3 (package (name "guile-fibers") (version "1.3.1") + (home-page "https://codeberg.org/fibers/fibers") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/wingo/fibers") + (url home-page) (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -1137,11 +1138,26 @@ communication between fibers. Note that Fibers makes use of some Guile 2.1/2.2-specific features and is not available for Guile 2.0.") - (home-page "https://github.com/wingo/fibers") (properties '((upstream-name . "fibers"))) (license license:lgpl3+))) -(define-public guile-fibers-1.3 guile-fibers) +(define-public guile-fibers-1.4 + (package + (inherit guile-fibers-1.3) + (name "guile-fibers") + (version "1.4.0") + (source + (origin (inherit (package-source guile-fibers-1.3)) + (file-name (git-file-name name version)) + (uri (git-reference + (url (package-home-page guile-fibers-1.3)) + (commit (string-append "v" version)))) + (sha256 + (base32 + "1ryp04w6ghgdfhlv9hkwl00iv6nwnw2hj2pywlxvpp92pyxhkwpi")) + (patches '()))))) + +(define-public guile-fibers guile-fibers-1.4) (define-public guile-fibers-1.1 (package @@ -1961,17 +1977,21 @@ the Guile compiler tower to generate the DSL from AWS JSON specifications.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1lvxic93cyzhdq7gb22pfz5j5pf7b1pcv0ahblkan8jbhzpqxvm0")))) + (base32 "1lvxic93cyzhdq7gb22pfz5j5pf7b1pcv0ahblkan8jbhzpqxvm0")) + ;; FIXME: report upstream and remove when fixed. + (modules '((guix build utils))) + (snippet '(substitute* "module/Makefile.am" + (("compile-ffi -o mosquitto-nyacc.scm") + "compile-ffi -X -o $(srcdir)/ffi/mosquitto-nyacc.scm"))))) (build-system gnu-build-system) (arguments (list - #:make-flags - #~(list "GUILE_AUTO_COMPILE=0") + #:parallel-build? #f #:phases #~(modify-phases %standard-phases (add-before 'build 'patch-extension-path (lambda* (#:key inputs #:allow-other-keys) - (setenv "HOME" "/tmp") + (setenv "GUILE_AUTO_COMPILE" "0") (with-directory-excursion "module" (invoke "make" "ffi/mosquitto.scm") (substitute* "ffi/mosquitto.scm" @@ -1983,7 +2003,7 @@ the Guile compiler tower to generate the DSL from AWS JSON specifications.") (native-inputs (list autoconf automake guile-3.0 - nyacc-2.01 + nyacc pkg-config texinfo)) (inputs (list mosquitto)) @@ -4924,6 +4944,68 @@ return accumulators. It is implemented by wrapping the sample implementation in a thin Guile compatibility layer.") (license license:gpl3+)))) +(define-public guile-srfi-165 + (let ((commit "1b441c0edc258e39cb943096bd47dd45071e2f70") + (revision "0")) + (package + (name "guile-srfi-165") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/scheme-requests-for-implementation/srfi-165") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ac1nmf413sayy0xq4c2l4kmbjkh8ksg3s4fwgk44zcd8phy3kxw")))) + (build-system guile-build-system) + (arguments + (list + #:scheme-file-regexp "(srfi-165|impl)\\.scm$" + #:documentation-file-regexp "srfi-165\\.html$" + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'rename-files + (lambda _ + (mkdir-p "srfi/srfi-165") + (rename-file "srfi/165.scm" "srfi/srfi-165/impl.scm") + (substitute* "srfi/165.sld" + (("\\(include \"165.scm\"\\)") + "(include \"srfi-165/impl.scm\")")) + (rename-file "srfi/165.sld" "srfi/srfi-165.scm"))) + (add-after 'build 'check-installed + (lambda _ + (substitute* "srfi/165/test.sld" + (("srfi 165 test") "srfi #{165}# test")) + (define-values (scm go) (target-guile-scm+go #$output)) + + (invoke "guile" + "-L" scm "-C" go + "-l" "./srfi/165/test.sld" + "-c" + (format #f "~S" + '(begin + (use-modules (srfi #{165}# test)) + (run-tests))))))))) + (native-inputs (list guile-3.0 + guile-srfi-125 + guile-srfi-128 + guile-srfi-146)) + (propagated-inputs + (list guile-srfi-125 guile-srfi-128 guile-srfi-146)) + (home-page "https://srfi.schemers.org/srfi-165/") + (synopsis "Environment/Reader Monad") + (description + "This library provides the sample implementation of SRFI-165. +This SRFI defines an environment monad, which models computations that depend on +values from a shared environment. These computations can read values from the +environment, pass values to subsequent computations, execute sub-computations in +an extended environment, and modify the environment for future computations.") + (license license:expat)))) + (define-public guile-srfi-180 (let ((commit "9188bf9724c6d320ef804579d222e855b007b193") (revision "0")) @@ -6729,15 +6811,15 @@ tools.") (define-public guile-eris (package (name "guile-eris") - (version "1.0.0") + (version "1.2.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://codeberg.org/eris/guile-eris.git") - (commit (string-append "v" version)))) + (url "https://codeberg.org/eris/guile-eris.git") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) - (sha256 (base32 "0d4wbjwwaxk0zn5gjhl86qhvk1aisgzp1vnvy4xbvrv5ydqpgyqm")))) + (sha256 (base32 "03z9dr725kdj57gmkwnx6v6p8nkf0xbn359q2dnn4b29x3dxf39x")))) (build-system gnu-build-system) (arguments '()) (native-inputs @@ -6750,8 +6832,14 @@ tools.") guile-quickcheck)) (inputs (list guile-3.0)) (propagated-inputs - (list guile-sodium)) - (synopsis "Guile implementation of the Encoding for Robust Immutable Storage (ERIS)") + (list guile-sodium + guile-coap + guile-fibers + guile-sqlite3 + guile-zstd + guile-cbor)) + (synopsis "Guile implementation of the Encoding for Robust Immutable +Storage (ERIS)") (description "Guile-ERIS is a Guile implementation of the @url{http://purl.org/eris, Encoding for Robust Immutable Storage (ERIS)}. ERIS allows arbitrary content @@ -6943,9 +7031,12 @@ schedulers.") (("dynamic-link \"libyaml\"") (format #f "dynamic-link \"~a/lib/libyaml\"" (assoc-ref inputs "libyaml"))))))))) - (native-inputs (list gcc guile-3.0 nyacc)) + ;; guile-libyaml does not work with nyacc-2.02.2. See + ;; https://github.com/mwette/guile-libyaml/issues/7 for upstream bug + ;; report. Hence, we use the older nyacc-1.08.1. + (native-inputs (list gcc guile-3.0 nyacc-1.08.1)) (inputs (list libyaml)) - (propagated-inputs (list guile-bytestructures nyacc)) + (propagated-inputs (list guile-bytestructures nyacc-1.08.1)) (home-page "https://github.com/mwette/guile-libyaml") (synopsis "Guile wrapper for libyaml") (description diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index 421993d12c..4f3d493dda 100644 --- a/gnu/packages/hardware.scm +++ b/gnu/packages/hardware.scm @@ -74,6 +74,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages lxqt) + #:use-module (gnu packages man) #:use-module (gnu packages messaging) #:use-module (gnu packages mtools) #:use-module (gnu packages package-management) @@ -212,6 +213,94 @@ Notable features include: @end itemize") (license (list license:bsd-0 license:gpl3+)))) +(define-public deskflow + (package + (name "deskflow") + (version "1.23.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/deskflow/deskflow") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wgj0sjnxkfplpq05q2lqgag29l7bf4cqdw0xmr89ayrh1nyjxa1")))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list "-DCMAKE_SKIP_RPATH=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-files + (lambda _ + (substitute* "deploy/linux/deploy.cmake" + (("message.FATAL_ERROR.*os-release.*") + "set(RELEASE_FILE_CONTENTS \"\")\n")) + (substitute* "src/lib/deskflow/unix/AppUtilUnix.cpp" + (("/usr/share/X11/xkb/rules/evdev.xml") + (string-append #$(this-package-input "xkeyboard-config") + "/share/X11/xkb/rules/evdev.xml"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "QT_QPA_PLATFORM" "offscreen") + ;; From the project GitHub actions: "Integration tests are + ;; flakey by nature, make them optional". See: + ;; <.github/workflows/continuous-integration.yml>. + (invoke "./bin/legacytests")))) + (add-after 'install 'wrap-executable + (lambda _ + (let ((qtbase #$(this-package-input "qtbase"))) + (wrap-program (string-append #$output "/bin/deskflow") + `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" = + (,(string-append qtbase "/lib/qt6/plugins/platforms")))))))))) + (native-inputs + (list doxygen + googletest + sysprof + vulkan-headers + coreutils + help2man + pkg-config)) + (inputs + (list bash-minimal + cli11 + gdk-pixbuf + libei + libportal + libx11 + libxi + libxinerama + libxkbcommon + libxkbfile + libxrandr + libxtst + libsm + libice + openssl + pugixml + python + qtbase + qtsvg + qttranslations + qttools + qtwayland + tomlplusplus + wayland + wayland-protocols + xkeyboard-config)) + (home-page "https://deskflow.org/") + (synopsis "Share a single keyboard and mouse between multiple computers") + (description + "Deskflow is a keyboard and mouse sharing app. Use the keyboard, +mouse,or trackpad of one computer to control nearby computers, and work +seamlessly between them. It's like a software KVM (but without the video). +TLS encryption is enabled by default. It supports Wayland clipboard +sharing.") + (license license:gpl2))) + (define-public hw-probe (package (name "hw-probe") diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index 5a1f654652..43a1fdca22 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -297,7 +297,7 @@ to @code{cabal repl}).") (define-public git-annex (package (name "git-annex") - (version "10.20250630") + (version "10.20250721") (source (origin ;; hackage release doesn't include everything needed for extra bits. @@ -307,7 +307,7 @@ to @code{cabal repl}).") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1livig1x1a929qagisjx33pzmgv38d6fzf11bmy2jfpgvvlk9mfx")))) + (base32 "1a2g4z9fl90kyl7k6clmc61ma2njnljr4na6jbf04m43qnnr9s5a")))) (build-system haskell-build-system) (properties '((upstream-name . "git-annex"))) (arguments diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm index 25867b3895..f9df4a12f0 100644 --- a/gnu/packages/haskell-crypto.scm +++ b/gnu/packages/haskell-crypto.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net> ;;; Copyright © 2017, 2019, 2023 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,7 @@ #:use-module (gnu packages tls) #:use-module (guix build-system haskell) #:use-module (guix download) + #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils)) @@ -899,18 +901,20 @@ regular) Diffie Hellman key exchanges, and many extensions.") (define-public ghc-hsopenssl (package (name "ghc-hsopenssl") - (version "0.11.7.5") + (version "0.11.7.9") (source (origin (method url-fetch) (uri (hackage-uri "HsOpenSSL" version)) (sha256 - (base32 "0y0l5nb0jsc8lm12w66a2n7nwcrgjxy1q2xdy8a788695az5xy71")))) + (base32 "0z3nyqlcgqw4ncn90gs6bznyj3lrqpjv83nzs4854knm15x6cbsa")))) (build-system haskell-build-system) (properties '((upstream-name . "HsOpenSSL"))) - (inputs (list ghc-network openssl)) (arguments - `(#:extra-directories ("openssl"))) + (list #:extra-directories (list "openssl") + #:configure-flags + #~(list "--ghc-options=-optc=-Wno-incompatible-pointer-types"))) + (inputs (list ghc-network openssl)) (home-page "https://github.com/haskell-cryptography/HsOpenSSL") (synopsis "Partial OpenSSL binding for Haskell") (description diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm index 5dafd4e955..f99e8c4ae7 100644 --- a/gnu/packages/image-processing.scm +++ b/gnu/packages/image-processing.scm @@ -69,6 +69,7 @@ #:use-module (gnu packages curl) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) + #:use-module (gnu packages engineering) #:use-module (gnu packages flex) #:use-module (gnu packages fontutils) #:use-module (gnu packages game-development) @@ -942,17 +943,17 @@ recalculates.") (define-public paraview (package (name "paraview") - (version "5.11.1") + (version "6.0.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://gitlab.kitware.com/paraview/paraview.git") + (url "https://gitlab.kitware.com/paraview/paraview") (commit (string-append "v" version)) (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 "0m1lgkl95f0pyhxp97gq2rf8hibv39v4c49imfj1va40z0flvard")) + (base32 "1m1c7vngrpaqdqvnjx4wj0va20hih5rb7rf0a44mp3wqgp4wgy0f")) (modules '((guix build utils))) (snippet ;; TODO: Also remove unused bundled libraries and plugins? @@ -976,7 +977,7 @@ recalculates.") (for-each (lambda (dir) (delete-file-recursively (string-append "VTK/ThirdParty/" dir "/vtk" dir))) - '(;;"cgns" + '("cgns" "cli11" ;;"diy2" "doubleconversion" @@ -984,11 +985,12 @@ recalculates.") ;;"exodusII" "expat" ;;"exprtk" + ;;"fast-float" ;;"fides" "fmt" "freetype" "gl2ps" - "glew" + ;;"glad" ;;"h5part" "hdf5" ;;"ioss" @@ -1011,13 +1013,14 @@ recalculates.") "sqlite" "theora" "tiff" + ;;"token" "utf8" ;;"verdict" + ;;"viskores" ;;"vpic" ;;"vtkm" ;;"xdmf2" ;;"xdmf3" - ;;"zfp" "zlib")))))) (build-system qt-build-system) (arguments @@ -1025,7 +1028,7 @@ recalculates.") #:build-type "Release" ; 542 MiB in release mode #:tests? #f ; Downloads test data #:configure-flags - #~(let ((doc (string-append #$output "/share/doc/" #$name "-" #$version))) + #~(let ((doc (string-append "share/doc/" #$name "-" #$version))) (list (string-append "-DCMAKE_INSTALL_DOCDIR=" doc) ; For paraview.qch @@ -1095,6 +1098,7 @@ recalculates.") ;; External libraries for ParaView and VTK "-DVTK_MODULE_USE_EXTERNAL_ParaView_protobuf=ON" + "-DVTK_MODULE_USE_EXTERNAL_VTK_cgns=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_cli11=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON" @@ -1102,7 +1106,6 @@ recalculates.") "-DVTK_MODULE_USE_EXTERNAL_VTK_fmt=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps=ON" - "-DVTK_MODULE_USE_EXTERNAL_VTK_glew=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON" "-DVTK_MODULE_USE_EXTERNAL_VTK_jsoncpp=ON" @@ -1148,17 +1151,17 @@ recalculates.") python-sphinx)) (inputs (list boost + cgns cli11 curl double-conversion eigen expat ffmpeg - fmt + fmt-11 freetype gdal gl2ps - glew gmsh hdf5 nlohmann-json ;For ParFlow; build fails diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm index 96153a4415..a128b8fb61 100644 --- a/gnu/packages/ipfs.scm +++ b/gnu/packages/ipfs.scm @@ -1531,9 +1531,9 @@ code prior to it getting merged into @code{go-cid}.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/ipfs-shipyard/nopfs") - (commit (go-version->git-ref version - #:subdir "ipfs")))) + (url "https://github.com/ipfs-shipyard/nopfs") + (commit (go-version->git-ref version + #:subdir "ipfs")))) (file-name (git-file-name name version)) (sha256 (base32 "00lwizzdfdx6kynxddal3all6q9dhwqanpkw0d0vxlwik4nkvxa5")) @@ -1546,18 +1546,11 @@ code prior to it getting merged into @code{go-cid}.") ;; Consider to implement it as re-usable procedure in ;; guix/build/utils or guix/build-system/go. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) (delete-all-but "." "ipfs"))))) (build-system go-build-system) (arguments diff --git a/gnu/packages/lesstif.scm b/gnu/packages/lesstif.scm index 2c435d999b..f0ef220742 100644 --- a/gnu/packages/lesstif.scm +++ b/gnu/packages/lesstif.scm @@ -32,29 +32,6 @@ #:use-module (gnu packages xorg)) -(define-public lesstif - (package - (name "lesstif") - (version "0.95.2") - (source - (origin - (method url-fetch) - (uri (string-append - "mirror://sourceforge/lesstif/lesstif/" version - "/lesstif-" version ".tar.bz2")) - (sha256 - (base32 - "1qzpxjjf7ri1jzv71mvq5m9g8hfaj5yzwp30rwxlm6n2b24a6jpb")))) - (build-system gnu-build-system) - (propagated-inputs - (list printproto)) - (inputs - (list libxext libxt)) - (home-page "https://lesstif.sourceforge.net/") - (synopsis "Clone of the Motif toolkit for the X window system") - (description "Clone of the Motif toolkit for the X window system.") - (license license:gpl2+))) ; some files are lgpl2.1+ or x11 - (define-public motif ;; This commit is from February 2023 and v2.3.8 from 2017. (let ((commit "0f556b0873c72ba1152a12fd54c3198ee039e413") diff --git a/gnu/packages/librewolf.scm b/gnu/packages/librewolf.scm index 28c61faf82..c26ccde598 100644 --- a/gnu/packages/librewolf.scm +++ b/gnu/packages/librewolf.scm @@ -116,14 +116,14 @@ (define computed-origin-method (@@ (guix packages) computed-origin-method)) (define firefox-l10n - (let ((commit "25c14798b15f9933b6c1e2bc655030842b6e0edd")) + (let ((commit "2962877b9abd5bfa1e24e5bbc1e16e47e12d6760")) (origin (method git-fetch) (uri (git-reference (url "https://github.com/mozilla-l10n/firefox-l10n.git") (commit commit))) (file-name (git-file-name "firefox-l10n" commit)) - (sha256 (base32 "06iymygkf94s04ixvk1mlis9p5lmypx5k8pmrd3z3jddpmawk0r1"))))) + (sha256 (base32 "1gaxbjjm0d4k4wgl64mwcxy2hx1vdq1dbmvjacg2fqxpnb62481x"))))) (define* (make-librewolf-source #:key version firefox-hash librewolf-hash l10n) (let* ((ff-src (firefox-source-origin @@ -193,10 +193,20 @@ "librewolf-compare-paths.patch" "librewolf-use-system-wide-dir.patch" "librewolf-add-store-to-rdd-allowlist.patch")) - ;; XXX: 75 Mo (800+ Mo uncompressed) of unused tests. - ;; Removing it makes it possible to compile on some systems. + ;; Slim down the tarball by removing unbundled libraries and 75 Mo (800+ + ;; Mo uncompressed) of unused tests. + ;; TODO: Unbundle security/nss and media/libpng. (modules '((guix build utils))) - (snippet #~(delete-file-recursively "testing/web-platform"))))) + (snippet + #~(for-each delete-file-recursively + '("testing/web-platform" + "gfx/cairo/libpixman" + "js/src/ctypes/libffi" + "ipc/chromium/src/third_party/libevent" + "media/libvpx" + "docs/nspr" + "media/libwebp" + "modules/zlib")))))) ;;; Define the versions of rust needed to build firefox, trying to match ;;; upstream. See table at [0], `Uses' column for the specific version. @@ -210,17 +220,17 @@ ;; It's used for cache validation and therefore can lead to strange bugs. ;; ex: date '+%Y%m%d%H%M%S' ;; or: (format-time-string "%Y%m%d%H%M%S") -(define %librewolf-build-id "20250727200313") +(define %librewolf-build-id "20250829153926") (define-public librewolf (package (name "librewolf") - (version "141.0-1") + (version "142.0.1-1") (source (make-librewolf-source #:version version - #:firefox-hash "1j1m6niw47xi6aj9rlcny8jhqkppjvg22cq7mikim93wpf22m640" - #:librewolf-hash "18k3d09dr6jkhr6g8z8c3aa7jj0ynjalkmvc3nj7wd98mgvky2xj" + #:firefox-hash "1h0hx0jxwy4rshdq6s5l5hbj8gyhn2zssisr59skwf63si7b9bdh" + #:librewolf-hash "1myzm6jblnrw1vdf5xlynbfr6a9swwcaws689az7xgq6s6n0rc3y" #:l10n firefox-l10n)) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm index 9b84a5b3a9..cd4a1ac3ae 100644 --- a/gnu/packages/linphone.scm +++ b/gnu/packages/linphone.scm @@ -1,7 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU -;;; ;;; Copyright © 2020, 2021 Raghav Gururajan <raghavgururajan@disroot.org> -;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2021, 2024-2025 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2023 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2023 Andreas Enge <andreas@enge.fr> @@ -25,6 +24,7 @@ #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages aidc) + #:use-module (gnu packages aspell) #:use-module (gnu packages audio) #:use-module (gnu packages avahi) #:use-module (gnu packages cpp) @@ -46,6 +46,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) + #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) #:use-module (gnu packages telephony) #:use-module (gnu packages tls) @@ -62,75 +63,69 @@ #:use-module (guix build-system qt)) (define-public bcunit - (let ((commit "74021cc7cb20a4e177748dd2948173e1f9c270ae") - (revision "0")) - (package - (name "bcunit") - (version (git-version "3.0.2" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "git://git.linphone.org/bcunit") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0npdwvanjkfg9vrqs5yi8vh6wliv50ycdli8pzavir84nb31nq1b")))) - (build-system cmake-build-system) - (outputs '("out" "doc")) - (arguments - `(#:configure-flags (list "-DENABLE_STATIC=NO" - "-DENABLE_CURSES=ON" - "-DENABLE_DOC=ON" - "-DENABLE_EXAMPLES=ON" - "-DENABLE_TEST=ON" - "-DENABLE_MEMTRACE=ON") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda _ - ;; Include BCunit headers for examples. - (substitute* "Examples/CMakeLists.txt" - (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}") - (string-append "${CMAKE_CURRENT_SOURCE_DIR} " - "${PROJECT_SOURCE_DIR}/BCUnit/Headers " - "${CMAKE_BINARY_DIR}/BCUnit/Headers"))) - ;; Link bcunit and bcunit_tests libraries. - (substitute* "BCUnit/Sources/CMakeLists.txt" - (("target_include_directories\\(bcunit_test PUBLIC Test\\)") - (string-append - "target_include_directories(bcunit_test PUBLIC Test)\n" - "target_link_libraries(bcunit_test bcunit)"))))) - (replace 'check - (lambda _ - (with-directory-excursion "BCUnit/Sources/Test" - (invoke "./test_bcunit")))) - (add-after 'install 'move-doc - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (doc (assoc-ref outputs "doc"))) - (for-each mkdir-p - `(,(string-append doc "/share/doc") - ,(string-append doc "/share/BCUnit"))) - (rename-file - (string-append out "/share/doc/BCUnit") - (string-append doc "/share/doc/BCUnit")) - (rename-file - (string-append out "/share/BCUnit/Examples") - (string-append doc "/share/BCUnit/Examples")))))))) - (inputs - (list ncurses)) - (synopsis "Belledonne Communications Unit Testing Framework") - (description "BCUnit is a fork of the defunct project CUnit, with + (package + (name "bcunit") + (version "5.3.57") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.linphone.org/BC/public/bcunit.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "02aqc8052vidc8ylkwiv2rqddl58fccrjz561j8zfqlwm2irnsg3")))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON" + "-DENABLE_BCUNIT_CURSES=ON" + "-DENABLE_BCUNIT_DOC=ON" + "-DENABLE_BCUNIT_EXAMPLES=ON" + "-DENABLE_BCUNIT_TEST=ON" + "-DENABLE_BCUNIT_MEMTRACE=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda _ + ;; Include BCunit headers for examples. + (substitute* "Examples/CMakeLists.txt" + (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}") + (string-append "${CMAKE_CURRENT_SOURCE_DIR} " + "${PROJECT_SOURCE_DIR}/BCUnit/Headers " + "${CMAKE_BINARY_DIR}/BCUnit/Headers"))) + ;; Link bcunit and bcunit_tests libraries. + (substitute* "BCUnit/Sources/CMakeLists.txt" + (("target_include_directories\\(bcunit_test PUBLIC Test\\)") + (string-append + "target_include_directories(bcunit_test PUBLIC Test)\n" + "\ttarget_link_libraries(bcunit_test bcunit)"))))) + (add-after 'install 'patch-BCUnitConfig.cmake + (lambda _ + (substitute* (string-append + #$output "/share/BCUnit/cmake/BCUnitConfig.cmake") + ;; This is only added for convenience when doing static builds. + ;; Since this is not a common case, avoid the find_dependency on + ;; ncurses, which would require propagating it. + (("find_dependency\\(Curses)") + "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "BCUnit/Sources/Test" + (invoke "./test_bcunit")))))))) + (inputs (list ncurses)) + (synopsis "Belledonne Communications Unit Testing Framework") + (description "BCUnit is a fork of the defunct project CUnit, with several fixes and patches applied. It is a unit testing framework for writing, administering, and running unit tests in C.") - (home-page "https://gitlab.linphone.org/BC/public/bcunit") - (license license:lgpl2.0+)))) + (home-page "https://gitlab.linphone.org/BC/public/bcunit") + (license license:lgpl2.0+))) (define-public bctoolbox (package (name "bctoolbox") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -139,52 +134,51 @@ writing, administering, and running unit tests in C.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0b51308jy5z32gp594r78jvbyrha16sanxdnbcmxgrwnb4myqx5j")))) + (base32 "178axy7gmmi6fzjbz7aaawcx0qg50i4hnn7ab6w642b02vxfr386")))) (build-system cmake-build-system) (outputs '("out" "debug")) (arguments - `(#:configure-flags (list "-DENABLE_STATIC=OFF" - ;; Do not use -Werror, because due to skipping - ;; a test there are unused procedures. - "-DENABLE_STRICT=OFF") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-cmake - (lambda* (#:key inputs #:allow-other-keys) - ;; Fix decaf dependency (see: - ;; https://gitlab.linphone.org/BC/public/bctoolbox/-/issues/3). - (let* ((decaf (assoc-ref inputs "libdecaf"))) - (substitute* (find-files "." "CMakeLists.txt") - (("find_package\\(Decaf CONFIG\\)") - "set(DECAF_FOUND 1)") - (("\\$\\{DECAF_INCLUDE_DIRS\\}") - (string-append decaf "/include/decaf")) - (("\\$\\{DECAF_TARGETNAME\\}") - "decaf"))))) - (add-after 'unpack 'skip-problematic-tests - (lambda _ - ;; The following test relies on networking; disable it. - (substitute* "tester/port.c" - (("[ \t]*TEST_NO_TAG.*bctbx_addrinfo_sort_test\\),") - "")))) - (add-after 'unpack 'fix-installed-resource-directory-detection - (lambda _ - ;; There's some broken logic in tester.c that checks if CWD, or - ;; if its parent exist, and if so, sets the prefix where the test - ;; resources are looked up to; disable it (see: - ;; https://gitlab.linphone.org/BC/public/bctoolbox/-/issues/4). - (substitute* "src/tester.c" - (("if \\(file_exists\\(\".\"\\)\\)") - "if (NULL)") - (("if \\(file_exists\\(\"..\"\\)\\)") - "if (NULL)")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (with-directory-excursion "tester" - (invoke "./bctoolbox_tester")))))))) - (inputs - (list bcunit libdecaf mbedtls-lts)) + (list + #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON" + ;; Do not use -Werror, because due to skipping + ;; a test there are unused procedures. + "-DENABLE_STRICT=OFF") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-cmake + (lambda* (#:key inputs #:allow-other-keys) + ;; Fix decaf dependency (see: + ;; https://gitlab.linphone.org/BC/public/bctoolbox/-/issues/3). + (substitute* (find-files "." "CMakeLists.txt") + (("find_package\\(Decaf CONFIG\\)") + "set(DECAF_FOUND 1)") + (("\\$\\{DECAF_INCLUDE_DIRS\\}") + (search-input-directory inputs "include/decaf")) + (("\\$\\{DECAF_TARGETNAME\\}") + "decaf")))) + (add-after 'unpack 'skip-problematic-tests + (lambda _ + ;; The following test relies on networking; disable it. + (substitute* "tester/port.c" + (("[ \t]*TEST_NO_TAG.*bctbx_addrinfo_sort_test\\),") + "")))) + (add-after 'unpack 'fix-installed-resource-directory-detection + (lambda _ + ;; There's some broken logic in tester.c that checks if CWD, or + ;; if its parent exist, and if so, sets the prefix where the test + ;; resources are looked up to; disable it (see: + ;; https://gitlab.linphone.org/BC/public/bctoolbox/-/issues/4). + (substitute* "src/tester.c" + (("if \\(file_exists\\(\".\"\\)\\)") + "if (NULL)") + (("if \\(file_exists\\(\"..\"\\)\\)") + "if (NULL)")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "tester" + (invoke "./bctoolbox-tester")))))))) + (inputs (list bcunit libdecaf mbedtls-lts)) (synopsis "Belledonne Communications Tool Box") (description "BcToolBox is an utilities library used by Belledonne Communications software like belle-sip, mediastreamer2 and linphone.") @@ -194,7 +188,7 @@ Communications software like belle-sip, mediastreamer2 and linphone.") (define-public belr (package (name "belr") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -203,33 +197,33 @@ Communications software like belle-sip, mediastreamer2 and linphone.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1bj8qd4ahbff476z0ccwsxy7qznqi6n5l1pdd7zbvk0h53zyj74c")))) + (base32 "1jqv2rfclzwsglwgvx7ypy0yhwbjxrsbik6xipf48770qmdz3bj9")))) (build-system cmake-build-system) (outputs '("out" "debug" "tester")) (arguments (list - #:configure-flags '(list "-DENABLE_STATIC=OFF") + #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON") #:phases #~(modify-phases %standard-phases (delete 'check) ;moved after the install phase (add-after 'install 'check (lambda* (#:key tests? outputs #:allow-other-keys) (when tests? - (invoke (string-append #$output:tester "/bin/belr_tester"))))) + (invoke (string-append #$output:tester "/bin/belr-tester"))))) (add-after 'install 'move-tester (lambda _ (for-each mkdir-p (list (string-append #$output:tester "/bin") (string-append #$output:tester "/share"))) (rename-file - (string-append #$output "/bin/belr_tester") - (string-append #$output:tester "/bin/belr_tester")) + (string-append #$output "/bin/belr-tester") + (string-append #$output:tester "/bin/belr-tester")) (rename-file (string-append #$output "/share/belr-tester/res") ;; The detect_res_prefix procedure in bctoolbox's tester.c ;; resolves the resource path based on the executable path and ;; name, so have it match. - (string-append #$output:tester "/share/belr_tester"))))))) + (string-append #$output:tester "/share/belr-tester"))))))) (inputs (list bctoolbox)) (synopsis "Belledonne Communications Language Recognition Library") @@ -243,7 +237,7 @@ IETF.") (define-public belcard (package (name "belcard") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -252,12 +246,12 @@ IETF.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1rl1x7rnlnncb45sjp8r2xbcwr9l8qv5bhfybhr0mmvsv3a4k4a3")))) + (base32 "1d69s7v3yd276nasfxnsjp3q820pcchdpdpw4y7ak7sf6gr6mrrh")))) (build-system cmake-build-system) (outputs '("out" "debug" "tester")) (arguments (list - #:configure-flags '(list "-DENABLE_STATIC=OFF") + #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-vcard-grammar-location @@ -270,7 +264,7 @@ IETF.") (format #f "define VCARD_GRAMMAR ~s" vcard-grammar)))))) (add-after 'install 'install-tester (lambda _ - (let ((test-name (string-append #$name "_tester"))) + (let ((test-name (string-append #$name "-tester"))) (for-each mkdir-p (list (string-append #$output:tester "/bin") (string-append #$output:tester "/share"))) @@ -283,9 +277,10 @@ IETF.") (lambda* (#:key tests? #:allow-other-keys) (when tests? (invoke (string-append #$output:tester - "/bin/belcard_tester")))))))) - (inputs - (list bctoolbox belr)) + "/bin/belcard-tester")))))))) + (inputs (list bctoolbox)) + ;; Belr is required by BelCardConfig.cmake, so must be propagated. + (propagated-inputs (list belr)) (synopsis "Belledonne Communications VCard Library") (description "Belcard is a C++ library to manipulate VCard standard format.") @@ -295,7 +290,7 @@ format.") (define-public bcmatroska2 (package (name "bcmatroska2") - (version "5.2.1") + (version "5.3.57") (source (origin (method git-fetch) @@ -304,21 +299,12 @@ format.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "14c79znw37q3yc7llbv2wmxmm4a3ws6iq3cvgkbmcnf7hmhm7zdi")))) + (base32 "1fdlvsca34armxasj2g4vxjzm9iiqfl7832qqlggh04yw21cfa5c")))) (build-system cmake-build-system) (arguments (list #:tests? #f ;No test target - #:phases - '(modify-phases %standard-phases - ;; See - ;; https://gitlab.linphone.org/BC/public/bcmatroska2/-/merge_requests/18 - (add-after 'unpack 'fix-build-system - (lambda _ - (substitute* "corec/corec/CMakeLists.txt" - (("helpers/file/file_libc.c") ""))))) - #:configure-flags - '(list "-DENABLE_STATIC=NO"))) ;Not required + #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON"))) (inputs (list bctoolbox)) (synopsis "Belledonne Communications Media Container") (description "BcMatroska is a free and open standard multi-media container @@ -331,80 +317,85 @@ Matroska multimedia container format.") license:lgpl2.1+)))) ;for LibMatroska2 (define-public bcg729 - (package - (name "bcg729") - (version "1.1.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "git://git.linphone.org/bcg729") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1hal6b3w6f8y5r1wa0xzj8sj2jjndypaxyw62q50p63garp2h739")))) - (build-system cmake-build-system) - (arguments - `(#:configure-flags (list "-DENABLE_STATIC=NO" - "-DENABLE_TESTS=YES") - #:phases - (modify-phases %standard-phases - (add-before 'check 'copy-inputs - (lambda* (#:key inputs #:allow-other-keys) - (let ((test-patterns (assoc-ref inputs "test-patterns")) - (dest (string-append "test/bcg729-patterns.zip"))) - (copy-recursively test-patterns dest)))) - (replace 'check - (lambda _ - (with-directory-excursion "test" - (invoke "unzip" "bcg729-patterns.zip") - (for-each - (lambda (test-name) - (invoke "./testCampaign" "-s" test-name)) - (list "fixedCodebookSearch" - "postProcessing" - "adaptativeCodebookSearch" - "computeLP" - "computeAdaptativeCodebookGain" - "postFilter" - "decoder" - "LPSynthesisFilter" - "decodeLSP" - ;; "encoder" - ;; "LSPQuantization" - "preProcessing" - "decodeFixedCodeVector" - "CNGdecoder" - ;; "LP2LSPConversion" - "gainQuantization" - "findOpenLoopPitchDelay" - "decodeGains" - "computeWeightedSpeech" - "interpolateqLSPAndConvert2LP" - "decodeAdaptativeCodeVector")))))))) - (native-inputs - `(("perl" ,perl) - ("test-patterns" - ,(origin - (method url-fetch) - (uri (string-append "http://www.belledonne-communications.com/" - "bc-downloads/bcg729-patterns.zip")) - (sha256 - (base32 "1kivarhh3izrl9sg0szs6x6pbq2ap0y6xsraw0gbgspi4gnfihrh")))) - ("unzip" ,unzip))) - (synopsis "Belledonne Communications G729 Codec") - (description "BcG729 is an implementation of both encoder and decoder of + ;; mediastreamer2 needs a more recent commit than the latest release to + ;; detect the BCG729 package. + (let ((commit "8bec1e5fc072f3669e435edd137eb3da6da2eef7") + (revision "1")) + (package + (name "bcg729") + (version (git-version "1.1.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.linphone.org/BC/public/bcg729.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1s0bnxqv7xrh65ypdyvahjslx8rj0q1zm0bpvwcakf5hs7h45g7x")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags (list "-DBUILD_SHARED_LIBS=YES" + "-DENABLE_UNIT_TESTS=YES") + #:phases + (modify-phases %standard-phases + (add-before 'check 'copy-inputs + (lambda* (#:key inputs #:allow-other-keys) + (let ((test-patterns (assoc-ref inputs "test-patterns")) + (dest (string-append "test/bcg729-patterns.zip"))) + (copy-recursively test-patterns dest)))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "test" + (invoke "unzip" "bcg729-patterns.zip") + (for-each + (lambda (test-name) + (invoke "./testCampaign" "-s" test-name)) + (list "fixedCodebookSearch" + "postProcessing" + "adaptativeCodebookSearch" + "computeLP" + "computeAdaptativeCodebookGain" + "postFilter" + "decoder" + "LPSynthesisFilter" + "decodeLSP" + ;; "encoder" + ;; "LSPQuantization" + "preProcessing" + "decodeFixedCodeVector" + "CNGdecoder" + ;; "LP2LSPConversion" + "gainQuantization" + "findOpenLoopPitchDelay" + "decodeGains" + "computeWeightedSpeech" + "interpolateqLSPAndConvert2LP" + "decodeAdaptativeCodeVector"))))))))) + (native-inputs + `(("perl" ,perl) + ("test-patterns" + ,(origin + (method url-fetch) + (uri (string-append "http://www.belledonne-communications.com/" + "bc-downloads/bcg729-patterns.zip")) + (sha256 + (base32 "1kivarhh3izrl9sg0szs6x6pbq2ap0y6xsraw0gbgspi4gnfihrh")))) + ("unzip" ,unzip))) + (synopsis "Belledonne Communications G729 Codec") + (description "BcG729 is an implementation of both encoder and decoder of the ITU G729 speech codec. The library written in C 99 is fully portable and can be executed on many platforms including both ARM and x86 processors. It supports concurrent channels encoding and decoding for multi call application such as conferencing.") - (home-page "https://linphone.org/technical-corner/bcg729") - (license license:gpl3+))) + (home-page "https://linphone.org/technical-corner/bcg729") + (license license:gpl3+)))) (define-public ortp (package (name "ortp") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -413,14 +404,14 @@ such as conferencing.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1hzbrj1ny3lr9sql0lrxggc48sqv5j2yvbpnrdnph88pwzrdnbn5")))) + (base32 "1bl3ig1xbxprcdid9i8bnl433x4crxqnj30x5lxiy9ka79b8s8r6")))) (build-system cmake-build-system) (outputs '("out" "tester" "doc")) ;1.5 MiB of HTML doc (arguments (list #:tests? #f ;requires networking - #:configure-flags '(list "-DENABLE_STATIC=NO" + #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON" "-DENABLE_DOC=NO" ;XXX: missing link for b64 "-DENABLE_TESTS=YES" ;; fix build error with GCC 14. @@ -459,7 +450,7 @@ implements the RFC 3550 standard.") (define-public bzrtp (package (name "bzrtp") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -468,15 +459,17 @@ implements the RFC 3550 standard.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0dvn1w0g9c07llz9n82l6qdzz8lzz74jcdm1yyfks0jy7i63cr8w")))) + (base32 "1q8w5blf2cjmzyv4bdd7zg4lv3pfjq6w6cfm6d75az4xqzg023kp")))) (build-system cmake-build-system) (arguments - `(#:configure-flags - (list - "-DENABLE_STATIC=NO" - "-DENABLE_TESTS=YES"))) - (inputs - (list bctoolbox libxml2 sqlite)) + (list + #:configure-flags #~(list "-DBUILD_SHARED_LIBS=YES" + "-DENABLE_DOC=YES") + #:tests? #f)) ;tests require external resources + (inputs (list bctoolbox libxml2)) + ;; sqlite is listed in the interface link libraries of bzrtp, and must be + ;; available at build time when using the bzrtp library. + (propagated-inputs (list sqlite)) (synopsis "Belledonne Communications ZRTP Library") (description "BZRTP is an implementation of ZRTP keys exchange protocol, written in C. It is fully portable and can be executed on many platforms @@ -487,7 +480,7 @@ including both ARM and x86.") (define-public belle-sip (package (name "belle-sip") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -496,12 +489,12 @@ including both ARM and x86.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0yx1qvzp11ysh24hxrvz7dm69j8zswa0xcx9m42vcv95z72166cq")))) + (base32 "1jmvf1s54ppc0qfi2wl6whk7s3lghpzzp6597nblncjsr2i6ha6c")))) (build-system cmake-build-system) (outputs '("out" "tester")) (arguments (list - #:configure-flags '(list "-DENABLE_STATIC=NO" + #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON" "-DENABLE_MDNS=ON" ;; We skip a test and thus have an unused ;; procedure, so we need to disable -Werror. @@ -536,7 +529,7 @@ including both ARM and x86.") (delete 'check) ;move after install (add-after 'install 'separate-outputs (lambda _ - (let ((tester-name "belle_sip_tester")) + (let ((tester-name "belle-sip-tester")) (for-each mkdir-p (list (string-append #$output:tester "/bin") (string-append #$output:tester "/share"))) (rename-file (string-append #$output "/bin") @@ -547,7 +540,7 @@ including both ARM and x86.") (lambda* (#:key tests? #:allow-other-keys) (when tests? (let ((tester (string-append #$output:tester - "/bin/belle_sip_tester"))) + "/bin/belle-sip-tester"))) (for-each (lambda (suite-name) (invoke tester "--suite" suite-name)) (list "Object inheritance" @@ -566,8 +559,7 @@ including both ARM and x86.") "Refresher" ;;"HTTP stack" "Object"))))))))) - (inputs - (list avahi bctoolbox belr zlib)) + (inputs (list avahi bctoolbox belr zlib)) (synopsis "Belledonne Communications SIP Library") (description "Belle-sip is a modern library implementing SIP transport, transaction and dialog layers. It is written in C, with an object-oriented @@ -578,7 +570,7 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (define-public mediastreamer2 (package (name "mediastreamer2") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -587,12 +579,12 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0mj0q2xaac22p2wf5gvgaiga03fbydilxfxzwyc6nwp5fyjnzawd")))) + (base32 "1zv13icfdpaq7fa325mnqf340vbvif9791hb9h22qpc0f2wcwvjb")))) (outputs '("out" "doc" "tester")) (build-system cmake-build-system) (arguments (list - #:configure-flags '(list "-DENABLE_STATIC=NO" + #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON" "-DENABLE_PCAP=YES" ;; Do not fail on compile warnings. "-DENABLE_STRICT=NO" @@ -619,7 +611,7 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (delete 'check) ;move after install (add-after 'install 'separate-outputs (lambda _ - (let ((tester-name (string-append #$name "_tester")) + (let ((tester-name (string-append #$name "-tester")) (doc-name (string-append #$name "-" #$version))) (for-each mkdir-p (list (string-append #$output:tester "/bin") @@ -637,7 +629,7 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (add-after 'separate-outputs 'check (lambda _ (let ((tester (string-append #$output:tester - "/bin/mediastreamer2_tester"))) + "/bin/mediastreamer2-tester"))) (for-each (lambda (suite-name) (invoke tester "--suite" suite-name)) ;; Some tests fail, due to requiring access to the @@ -658,28 +650,29 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") bcg729 bcmatroska2 bctoolbox + bzrtp + dav1d ffmpeg-4 glew glu - mesa-utils gsm + libjpeg-turbo + libpcap + libsrtp + libtheora + libvpx + libx11 + libxv mesa + mesa-utils opus ortp - libpcap portaudio pulseaudio spandsp speex speexdsp - libsrtp - libtheora - libjpeg-turbo - v4l-utils - libvpx - libx11 - libxv - bzrtp)) + v4l-utils)) (synopsis "Belledonne Communications Streaming Engine") (description "Mediastreamer2 is a powerful and lightweight streaming engine for telephony applications. This media processing and streaming toolkit is @@ -691,7 +684,7 @@ including media capture, encoding and decoding, and rendering.") (define-public lime (package (name "lime") - (version "5.2.49") + (version "5.3.57") (source (origin (method git-fetch) @@ -700,39 +693,36 @@ including media capture, encoding and decoding, and rendering.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1mglnypxl3glwvwf2h5q4ikbm6wbcd9pb7kdws8zajjhk9q803jr")))) + (base32 "1jd549f4cky5rcvq3d2zn8d383jahdi71nhkzblnr6mqqbn6b7sa")))) (build-system cmake-build-system) (outputs '("out" "doc")) (arguments - `(#:configure-flags (list "-DENABLE_STATIC=NO" - "-DENABLE_C_INTERFACE=YES" - "-DENABLE_DOC=YES") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda _ - ;; Disable tests that require networking. - (substitute* "tester/CMakeLists.txt" - (("add_test\\(?.*\"Hello World\"\\)") "") - (("add_test\\(?.*\"lime\"\\)") "") - (("add_test\\(?.*\"FFI\"\\)") "") - (("add_test\\(?.*\"Multidomains\"\\)") "") - (("add_test\\(?.*\"Lime server\"\\)") "")))) - (add-after 'build 'build-doc - (lambda _ - (invoke "make" "doc"))) - (add-after 'install 'install-doc - (lambda* (#:key outputs #:allow-other-keys) - (let* ((doc (assoc-ref outputs "doc")) - (dir (string-append doc "/share/doc")) - (dest (string-append dir "/" ,name "-" ,version))) - (mkdir-p dest) - (copy-recursively "doc" dest))))))) - (native-inputs - `(("dot" ,graphviz) - ("doxygen" ,doxygen))) - (inputs - (list bctoolbox belle-sip soci)) + (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON" + "-DENABLE_C_INTERFACE=YES" + "-DENABLE_DOC=YES") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda _ + ;; Disable tests that require networking. + (substitute* "tester/CMakeLists.txt" + (("add_test\\(?.*\"Hello World\"\\)") "") + (("add_test\\(?.*\"lime\"\\)") "") + (("add_test\\(?.*\"FFI\"\\)") "") + (("add_test\\(?.*\"Multidomains\"\\)") "") + (("add_test\\(?.*\"Lime server\"\\)") "")))) + (add-after 'build 'build-doc + (lambda _ + (invoke "make" "doc"))) + (add-after 'install 'install-doc + (lambda _ + (let* ((doc #$output:doc) + (dir (string-append doc "/share/doc")) + (dest (string-append dir "/" #$name "-" #$version))) + (mkdir-p dest) + (copy-recursively "doc" dest))))))) + (native-inputs (list graphviz doxygen)) + (inputs (list bctoolbox belle-sip belr soci)) (synopsis "Belledonne Communications Encryption Library") (description "LIME is an encryption library for one-to-one and group instant messaging, allowing users to exchange messages privately and @@ -744,7 +734,7 @@ device.") (define-public liblinphone (package (name "liblinphone") - (version "5.2.50") + (version "5.3.57") (source (origin (method git-fetch) @@ -753,37 +743,41 @@ device.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1lvbva234rmck57cxgswgqqvnq8r58i0ls4qgpymrxdfj74rinxj")))) + (base32 "1f3hcbdkd8nqvjm5avylz226a8in360yiafcsxpa69wvh1a03i4h")) + (patches (search-patches "liblinphone-jsoncpp.patch")))) (outputs '("out" "tester")) (build-system cmake-build-system) (arguments (list #:tests? #f ; Tests require networking #:configure-flags - '(list "-DENABLE_FLEXIAPI=NO" ;requires jsoncpp, but it cannot be found - "-DENABLE_STATIC=NO" - "-DENABLE_DOC=NO" ;requires unpackaged javasphinx - "-DENABLE_LDAP=YES" - "-DENABLE_STRICT=NO") + #~(list "-DBUILD_SHARED_LIBS=ON" + "-DENABLE_DOC=NO" ;requires unpackaged javasphinx + "-DENABLE_LDAP=YES" + "-DENABLE_STRICT=NO") #:phases #~(modify-phases %standard-phases (add-after 'install 'separate-outputs (lambda* (#:key outputs #:allow-other-keys) - (let ((tester-name (string-append #$name "_tester"))) + (let ((tester-name (string-append #$name "-tester"))) (for-each mkdir-p (list (string-append #$output:tester "/bin") (string-append #$output:tester "/share"))) - (rename-file (string-append #$output "/bin/" tester-name) - (string-append #$output:tester "/bin/" tester-name)) - (rename-file (string-append #$output "/bin/groupchat_benchmark") - (string-append #$output:tester "/bin/groupchat_benchmark")) - (rename-file (string-append #$output "/share/" tester-name) - (string-append #$output:tester "/share/" tester-name)))))))) + (rename-file + (string-append #$output "/bin/" tester-name) + (string-append #$output:tester "/bin/" tester-name)) + (rename-file + (string-append #$output "/bin/liblinphone-groupchat-benchmark") + (string-append #$output:tester "/bin/liblinphone-groupchat-benchmark")) + (rename-file + (string-append #$output "/share/" tester-name) + (string-append #$output:tester "/share/" tester-name)))))))) (native-inputs (list graphviz doxygen gettext-minimal perl + pkg-config python-wrapper python-pystache python-six @@ -791,20 +785,24 @@ device.") (inputs (list bctoolbox belcard - belle-sip belr bzrtp - lime libnotify - libxml2 - mediastreamer2 openldap-for-linphone - ortp soci - sqlite xsd zlib - zxing-cpp-1.2a)) + zxing-cpp)) + (propagated-inputs + ;; The following libraries are "required" by the LibLinphoneConfig.cmake + ;; CMake module. + (list belle-sip + jsoncpp + mediastreamer2 + libxml2 + lime + ortp + sqlite)) (synopsis "Belledonne Communications Softphone Library") (description "Liblinphone is a high-level SIP library integrating all calling and instant messaging features into an unified @@ -817,7 +815,7 @@ and video calls or instant messaging capabilities to an application.") (define-public linphone-desktop (package (name "linphone-desktop") - (version "5.0.14") + (version "5.2.6") (source (origin (method git-fetch) @@ -826,29 +824,30 @@ and video calls or instant messaging capabilities to an application.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0glrfsp087ni5hn6x6p4f6y63r4nyp061yyy0rfgddbxkzdqi2j1")) - (patches (search-patches "linphone-desktop-without-sdk.patch")))) + (base32 "06qfmgnsyaw1mdhd04pibsyfchy1bj15zvy36wz82g5dx3c5yj17")) + (patches + (search-patches "linphone-desktop-cmake-belcard.patch" + "linphone-desktop-cmake-find-modules.patch" + "linphone-desktop-ispell.patch" + "linphone-desktop-qtkeychain.patch")))) (build-system qt-build-system) (outputs '("out" "debug")) (arguments (list #:tests? #f ; No test target #:configure-flags - #~(list (string-append "-DFULL_VERSION=" #$version) - (string-append "-DCMAKE_INSTALL_PREFIX=" #$output) + #~(list (string-append "-DLINPHONEAPP_VERSION=" #$version) (string-append "-DCMAKE_INSTALL_BINDIR=" #$output "/bin") (string-append "-DCMAKE_INSTALL_DATAROOTDIR=" #$output "/share") + (string-append "-DCMAKE_INSTALL_INCLUDEDIR=" #$output "/include") (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib") "-DENABLE_UPDATE_CHECK=NO" "-DENABLE_DAEMON=YES" - "-DENABLE_CONSOLE_UI=YES") + "-DENABLE_CONSOLE_UI=YES" + "-DLinphoneCxx_TARGET=liblinphone++" + "-DLINPHONE_QT_ONLY=YES") ;avoid building linphone SDK #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'pre-configure - (lambda _ - (make-file-writable "linphone-app/linphoneqt_version.cmake") - (substitute* "linphone-app/linphoneqt_version.cmake" - (("\\$\\{GUIX-SET-VERSION\\}") #$version)))) (add-before 'install 'pre-install (lambda _ (mkdir-p (string-append #$output "/share/linphone")) @@ -875,18 +874,19 @@ and video calls or instant messaging capabilities to an application.") (mkdir-p (dirname grammar-dest)) (symlink (string-append liblinphone "/share/belr/grammars") grammar-dest))))))) - (native-inputs - (list pkg-config qttools-5)) + (native-inputs (list pkg-config qttools-5)) (inputs (list bctoolbox belcard - belr + ispell-for-linphone liblinphone mediastreamer2 ortp qtbase-5 qtdeclarative-5 qtgraphicaleffects + qtkeychain + qtmultimedia-5 qtquickcontrols-5 qtquickcontrols2-5 qtsvg-5 @@ -913,11 +913,12 @@ and video calls or instant messaging capabilities to an application.") (license license:gpl3+))) (define-public msopenh264 - (let ((commit "88697cc95140017760d6da408cb0efdc5e86e40a") + ;; Unreleased commits are needed for the build to succeed. + (let ((commit "041b07a81f88f1dde2ebb7a1ea0b0e2ec281ab20") (revision "0")) (package (name "msopenh264") - (version (git-version "1.2.1" revision commit)) + (version (git-version "5.2.0" revision commit)) (source (origin (method git-fetch) @@ -926,14 +927,20 @@ and video calls or instant messaging capabilities to an application.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "10y3b6s934f2wbsf60b3p0g6hffizjqrj5in8l4sida2fjdxlwwy")))) + (base32 "0hwf8x5dc3iksdv61k4raswngyk3cyx8700v2rzrm296aw74f5r1")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; No test target - #:configure-flags - (list "-DENABLE_STATIC=NO"))) ; Not required - (inputs - (list bctoolbox mediastreamer2 openh264 ortp)) + (list + #:tests? #f ; No test target + #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-Mediastreamer2_PLUGINS_DIR + (lambda _ + (substitute* "src/CMakeLists.txt" + (("\\$\\{Mediastreamer2_PLUGINS_DIR}") + (string-append #$output "/lib/mediastreamer/plugins")))))))) + (inputs (list bctoolbox mediastreamer2 openh264 ortp)) (synopsis "Media Streamer H.264 Codec") (description "MsOpenH264 is an H.264 encoder/decoder plugin for mediastreamer2 based on the openh264 library.") @@ -941,11 +948,12 @@ and video calls or instant messaging capabilities to an application.") (license license:gpl2+)))) (define-public mssilk - (let ((commit "dd0f31ee795faa7ea89e601b072dae4cd1df7e3f") + ;; The latest release doesn't build; use the latest commit. + (let ((commit "0c6893fb74ecca34cb2707f7fffd0d7487b24925") (revision "0")) (package (name "mssilk") - (version (git-version "1.1.1" revision commit)) + (version (git-version "1.2.0" revision commit)) (source (origin (method git-fetch) @@ -954,14 +962,20 @@ and video calls or instant messaging capabilities to an application.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1dann5fnzqp6wjlwc6bl2k9b6rvn6bznqb3qsi1kgv9dnq44cbr0")))) + (base32 "1hpsh0iyby44hdanmkjnad7p9flhq2wcim8nl5bkyv1gw50sanli")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; No test target - #:configure-flags - (list "-DENABLE_STATIC=NO"))) ; Not required - (inputs - (list bctoolbox mediastreamer2 ortp)) + (list + #:tests? #f ; No test target + #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-Mediastreamer2_PLUGINS_DIR + (lambda _ + (substitute* "CMakeLists.txt" + (("\\$\\{Mediastreamer2_PLUGINS_DIR}") + (string-append #$output "/lib/mediastreamer/plugins")))))))) + (inputs (list bctoolbox mediastreamer2 ortp)) (synopsis "Media Streamer SILK Codec") (description "MSSILK is a plugin of MediaStreamer, adding support for AMR codec. It is based on the Skype's SILK implementation.") @@ -969,62 +983,68 @@ codec. It is based on the Skype's SILK implementation.") (license license:gpl2+)))) (define-public mswebrtc - (let ((commit "946ca706733f36a6b4923f04e569531125462d1d") - (revision "0")) - (package - (name "mswebrtc") - (version (git-version "1.1.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.linphone.org/BC/public/mswebrtc") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1pfg9m6bpbv0f53nx72rdxhlyriax9pg4yj0gpwq8ha6lqnpwg1x")))) - (build-system cmake-build-system) - (arguments - `(#:tests? #f ; No test target - #:configure-flags - (list - "-DENABLE_STATIC=NO") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'copy-inputs - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((webrtc-from (assoc-ref inputs "webrtc")) - (webrtc-to (string-append (getcwd) "/webrtc"))) - (copy-recursively webrtc-from webrtc-to)) - #t))))) - (native-inputs - `(("webrtc" - ,(origin - (method git-fetch) - (uri - (git-reference - (url "https://gitlab.linphone.org/BC/public/external/webrtc") - (commit "583acd27665cfadef8ab03eb85a768d308bd29dd"))) - (file-name - (git-file-name "webrtc-for-mswebrtc" version)) - (sha256 - (base32 - "1maqychrgwy0z4zypa03qp726l2finw64z6cymdzhd58ql3p1lvm")))) - ("python" ,python-wrapper))) - (inputs - (list bctoolbox mediastreamer2 ortp)) - (synopsis "Media Streamer WebRTC Codec") - (description "MSWebRTC is a plugin of MediaStreamer, adding support for + ;; A newer, unreleased commit is needed to detect a recent oRTP; use the + ;; latest one available. + (package + (name "mswebrtc") + (version "1.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.linphone.org/BC/public/mswebrtc") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10j124vd9zm03s1vzb74n3zjrf6x1nfvji7vryih4dq2xlgrqxx6")) + (patches (search-patches "mswebrtc-b64-refactor.patch" + "mswebrtc-cmake.patch")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ; No test target + #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-Mediastreamer2_PLUGINS_DIR + (lambda _ + (substitute* "CMakeLists.txt" + (("\\$\\{Mediastreamer2_PLUGINS_DIR}") + (string-append #$output "/lib/mediastreamer/plugins"))))) + (add-after 'unpack 'copy-inputs + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((webrtc-from (assoc-ref inputs "webrtc")) + (webrtc-to (string-append (getcwd) "/webrtc"))) + (copy-recursively webrtc-from webrtc-to))))))) + (native-inputs + `(("webrtc" + ,(origin + (method git-fetch) + (uri + (git-reference + (url "https://gitlab.linphone.org/BC/public/external/webrtc") + (commit "583acd27665cfadef8ab03eb85a768d308bd29dd"))) + (file-name + (git-file-name "webrtc-for-mswebrtc" version)) + (sha256 + (base32 + "1maqychrgwy0z4zypa03qp726l2finw64z6cymdzhd58ql3p1lvm")))) + ("python" ,python-wrapper))) + (inputs (list bctoolbox mediastreamer2 ortp)) + (synopsis "Media Streamer WebRTC Codec") + (description "MSWebRTC is a plugin of MediaStreamer, adding support for WebRTC codec. It includes features from WebRTC, such as, iSAC and AECM.") - (home-page "https://gitlab.linphone.org/BC/public/mswebrtc") - (license license:gpl2+)))) + (home-page "https://gitlab.linphone.org/BC/public/mswebrtc") + (license license:gpl2+))) (define-public msamr - (let ((commit "5ab5c098299107048dfcbfc741f7392faef167bd") - (revision "0")) + ;; The latest 1.1.4 release is 2 years old, doesn't build with a recent + ;; bctoolbox; use the latest commit available. + (let ((commit "129fc98c04a5cd412d5393427d43b0b445263ead") + (revision "1")) (package (name "msamr") - (version (git-version "1.1.3" revision commit)) + (version (git-version "1.1.4" revision commit)) (source (origin (method git-fetch) @@ -1033,19 +1053,30 @@ WebRTC codec. It includes features from WebRTC, such as, iSAC and AECM.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1g79lw1qi1mlw3v1b0cixmqiwjql81gz9naakb15n8pvaag9aaqm")))) + (base32 "0zp5vmhgp18812j2pbys7g3v0slkc70q9qp7k26bk7iddg1yy9x2")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; No test target - #:configure-flags - (list "-DENABLE_STATIC=NO" ; Not required - "-DENABLE_WIDEBAND=YES"))) + (list + #:tests? #f ; No test target + #:configure-flags + #~(list "-DBUILD_SHARED_LIBS=YES" + "-DENABLE_WIDEBAND=YES") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-Mediastreamer2_PLUGINS_DIR + (lambda _ + ;; msamr tries to install its plugins to + ;; Mediastreamer2_PLUGINS_DIR, which is provided by + ;; mediastreamer2 and points to its installation prefix. + (substitute* "src/CMakeLists.txt" + (("\\$\\{Mediastreamer2_PLUGINS_DIR}") + (string-append #$output "/lib/mediastreamer/plugins")))))))) (inputs - `(("bctoolbox" ,bctoolbox) - ("mediastreamer2" ,mediastreamer2) - ("opencoreamr" ,opencore-amr) - ("ortp" ,ortp) - ("voamrwbenc" ,vo-amrwbenc))) + (list bctoolbox + mediastreamer2 + opencore-amr + ortp + vo-amrwbenc)) (synopsis "Media Streamer AMR Codec") (description "MSAMR is a plugin of MediaStreamer, adding support for AMR codec. It is based on the opencore-amr implementation.") diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 36cef84b14..83536ca746 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -34,7 +34,7 @@ ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de> ;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com> -;;; Copyright © 2019-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019-2025 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2019 Stefan Stefanović <stefanx2ovic@gmail.com> ;;; Copyright © 2019-2022 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net> @@ -83,6 +83,7 @@ ;;; Copyright © 2024 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2024, 2025 Ashish SHUKLA <ashish.is@lostca.se> ;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com> +;;; Copyright © 2025 Mathieu Laparie <mlaparie@disr.it> ;;; ;;; This file is part of GNU Guix. ;;; @@ -514,7 +515,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "stable" kernels. That is, the most recently released major ;; versions that are still supported upstream. -(define-public linux-libre-6.15-version "6.15.10") +(define-public linux-libre-6.15-version "6.15.11") (define-public linux-libre-6.15-gnu-revision "gnu") (define deblob-scripts-6.15 (linux-libre-deblob-scripts @@ -524,7 +525,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0301x3n5qbg8xm48pxq1dhrq0vkr61bqdcyaz0mbckrg20kw6m67"))) (define-public linux-libre-6.15-pristine-source (let ((version linux-libre-6.15-version) - (hash (base32 "01pxk3cnil1wbysp4s6ybh5djskxzf9llmk1qy7zfr2l4mwnbkd4"))) + (hash (base32 "14sxwrvw9p4ybizb8ky1rgahc62q0aw5qkmzqp3cpnavqfgldaw9"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.15))) @@ -533,7 +534,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; Here are the support timelines: ;; <https://www.kernel.org/category/releases.html> -(define-public linux-libre-6.12-version "6.12.42") +(define-public linux-libre-6.12-version "6.12.43") (define-public linux-libre-6.12-gnu-revision "gnu") (define deblob-scripts-6.12 (linux-libre-deblob-scripts @@ -543,7 +544,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1yl447396g454116j8v17wsqg5i0gyb2rrxvaygw6xdkbwrrj28j"))) (define-public linux-libre-6.12-pristine-source (let ((version linux-libre-6.12-version) - (hash (base32 "1yy17c06sn6l0skz8n1kxqhzldgwxxd0xhs11fd3086d56554128"))) + (hash (base32 "1vmxywg11z946i806sg7rk7jr9px87spmwwbzjxpps2nsjybpjqg"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.12))) @@ -2348,7 +2349,7 @@ and the notification, WiFi, and Bluetooth LED.") (define-public tuxedo-keyboard (package (name "tuxedo-keyboard") - (version "4.14.2") + (version "4.15.4") (source (origin (method git-fetch) @@ -2357,21 +2358,23 @@ and the notification, WiFi, and Bluetooth LED.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0b7qivyd8r58cq84q11b2z919px5p9k5zbinm6ahj07w0lsq2j7b")))) + (base32 "0mimgcbp57gp3smd439g8040sl80qqnfzmh2vhs2qv1kwyxs75sq")))) (build-system linux-module-build-system) (arguments (list #:tests? #f)) ; no test suite + ;; This package fails to build on aarch64, and the manufacturer only sells + ;; machines based on Intel-compatible processors. For more information, see + ;; <https://codeberg.org/guix/guix/pulls/1795>. + (supported-systems '("i686-linux" "x86_64-linux")) (home-page "https://gitlab.com/tuxedocomputers/development/packages/tuxedo-drivers") (synopsis "Linux kernel modules to control keyboard on most Tuxedo computers") (description "This package provides the @code{tuxedo_keyboard}, @code{tuxedo_io}, @code{clevo_wmi} @acronym{WMI, Windows Management Engine} and the @code{clevo_acpi} @acronym{ACPI, Advanced Configuration and Power Interface} -kernel modules to control the keyboard on most Tuxedo computers. Only white -backlight only models are currently not supported. The @code{tuxedo_io} -module is also needed for the @code{tuxedo-control-center} (short tcc) -package.") - (license license:gpl3+))) +kernel modules to control the keyboard on most Tuxedo computers. The @code{tuxedo_io} +module is also needed for the @code{tuxedo-control-center} (short tcc) package.") + (license license:gpl2+))) (define-public evdi (package @@ -3063,7 +3066,7 @@ deviation, and minimum and maximum values. It can show a nice histogram too.") ;; FIXME: For now we cannot reliably run tests on GNU/Hurd: ;; <https://bugs.gnu.org/47791>. #:tests? (and (not (%current-target-system)) - (not (string-suffix? "-gnu" (%current-system)))) + (not (system-hurd?))) #:phases #~(modify-phases %standard-phases @@ -3378,24 +3381,20 @@ slabtop, tload, top, vmstat, w, watch and sysctl.") (define-public usbutils (package (name "usbutils") - (version "017") + (version "018") (source (origin - (method url-fetch) - (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/" - "usbutils-" version ".tar.xz")) - (sha256 - (base32 "0nz008kshcajc9asxr4j5dh4wgq72z52lws4ga6y60wirzymz8m6")))) - (build-system gnu-build-system) + (method url-fetch) + (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/" + "usbutils-" version ".tar.xz")) + (sha256 + (base32 "14xd7j9fl3pm0z4dhqj3mf9paqk431kq4vi602f5hiw5nmcqpxl3")))) + (build-system meson-build-system) (outputs (list "out" "python")) (arguments (list #:phases #~(modify-phases %standard-phases - (add-before 'bootstrap 'patch-bootstrap-scripts - (lambda _ - (substitute* "usbhid-dump/bootstrap" - (("/bin/sh") (which "sh"))))) (add-after 'install 'separate-python-output ;; Separating one Python script shaves more than 106 MiB from :out. (lambda _ @@ -3404,17 +3403,21 @@ slabtop, tload, top, vmstat, w, watch and sysctl.") (new (string-append #$output:python "/" file))) (mkdir-p (dirname new)) (rename-file old new))) - (list "bin/lsusb.py"))))))) - (inputs - (list eudev libusb python)) - (native-inputs - (list autoconf automake libtool pkg-config)) + (list "bin/lsusb.py")))) + (add-after 'install 'install-usbreset + (lambda _ + (install-file "usbreset" + (string-append #$output "/bin"))))))) + (native-inputs (list pkg-config)) + (inputs (list eudev libusb python)) (home-page "http://www.linux-usb.org/") (synopsis "Tools for working with USB devices") (description - "Collection of tools to query what type of USB devices are connected to the -system, including @command{lsusb}.") + "Collection of tools to query what type of USB devices are connected to +the system, including @command{lsusb}. The experimental @command{usbreset} +command included in the package, but be aware that it may not work for all +devices.") (license license:gpl2+))) (define-public usbip-utils @@ -8103,124 +8106,128 @@ not as a replacement for it.") license:gpl3+)))) ; everything else (define-public hotspot - (package - (name "hotspot") - (version "1.5.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/KDAB/hotspot") - (commit (string-append "v" version)) - ;; Include the bundled perfparser and PrefixTickLabels - ;; libraries, which are to be used in source form. - (recursive? #t))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "04k2rvf2lgi8hp7dzqzn65fcd2lsiylwr04d44q75j0wvgbjjv1v")))) - (build-system qt-build-system) - (arguments - (list - ;; As mentioned in the option help text, the KAuth helper cannot be - ;; installed to a custom prefix and the build fails with "file cannot - ;; create directory: /polkit-1/actions. Maybe need administrative" - ;; (see: https://bugs.kde.org/show_bug.cgi?id=363678). - #:configure-flags #~(list "-DINSTALL_KAUTH_HELPER=OFF" - "-DQT6_BUILD=ON") - #:qtbase qtbase - ;; The 'tst_models' and 'tst_callgraphgenerator' fail, with - ;; the later seemingly requiring sudo or access to the kernel - ;; trace points. - #:test-exclude - (string-append - "(" - (string-join - ;; The 'tst_models' expected output doesn't exactly - ;; match. - '("tst_models" - ;; The 'tst_callgraphgenerator' perf invocation - ;; fails when run in the build container. - "tst_callgraphgenerator" - ;; The 'tst_perfparser' test requires sudo/access - ;; to the kernel scheduler trace points. - "tst_perfparser") - "|") - ")") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-perfparser - ;; XXX: This phase is copied from qt-creator: keep them in sync! - (lambda* (#:key inputs #:allow-other-keys) - ;; perfparser attempts to dynamically load the demangle - ;; libraries; use their absolute file name to avoid having to - ;; set LD_LIBRARY_PATH. - (let ((librustc_demangle.so - (with-exception-handler (lambda (ex) - (if (search-error? ex) - #f - (raise-exception ex))) - (lambda () - (search-input-file inputs "lib/librustc_demangle.so")) - #:unwind? #t))) - (substitute* "3rdparty/perfparser/app/demangler.cpp" - (("loadDemangleLib\\(QStringLiteral\\(\"rustc_demangle\")" - all) - (if librustc_demangle.so - (format #f "loadDemangleLib(QStringLiteral(~s)" - librustc_demangle.so) - all)) ;no rustc_demangle; leave unchanged - (("loadDemangleLib\\(QStringLiteral\\(\"d_demangle\")") - (format #f "loadDemangleLib(QStringLiteral(~s)" - (search-input-file inputs - "lib/libd_demangle.so"))))))) - (add-after 'unpack 'path-paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/perfoutputwidgetkonsole.cpp" - (("\"tail\"") - (format #f "~s" (search-input-file inputs "bin/tail")))) - (substitute* "src/perfrecord.cpp" - (("\"perf( )?\"" _ space) - (string-append "\"" (search-input-file inputs "bin/perf") - (or space "") "\"")))))))) - (native-inputs - (list extra-cmake-modules - vulkan-headers)) - (inputs - (append - (list coreutils-minimal - d-demangler - elfutils - karchive - kconfig - kcoreaddons - kddockwidgets - kgraphviewer - ki18n - kio - kiconthemes - kitemmodels - kitemviews - knotifications - kparts - ksyntaxhighlighting - kwindowsystem - libxkbcommon - perf - qtdeclarative - qtsvg - solid - threadweaver - `(,zstd "lib")) - (if (supported-package? rust-rustc-demangle-capi-0.1) - (list rust-rustc-demangle-capi-0.1) - '()))) - (home-page "https://github.com/KDAB/hotspot") - (synopsis "Performance analysis GUI for Linux perf") - (description "Hotspot is a standalone GUI for performance data analysis. + ;; Use the latest git commit as it includes unreleased fixes for the test + ;; suite. + (let ((commit "5cec69301a3f34ada86ce9fe01a9538b04b3cf7c") + (revision "0")) + (package + (name "hotspot") + (version (git-version "1.5.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KDAB/hotspot") + (commit commit) + ;; Include the bundled perfparser and PrefixTickLabels + ;; libraries, which are to be used in source form. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "115gskjdcb1q3mgrnv1qcdrhxabjzl1hhkpk1klk67ayicsk1ym6")))) + (build-system qt-build-system) + (arguments + (list + ;; As mentioned in the option help text, the KAuth helper cannot be + ;; installed to a custom prefix and the build fails with "file cannot + ;; create directory: /polkit-1/actions. Maybe need administrative" + ;; (see: https://bugs.kde.org/show_bug.cgi?id=363678). + #:configure-flags #~(list "-DINSTALL_KAUTH_HELPER=OFF" + "-DQT6_BUILD=ON") + #:qtbase qtbase + ;; The 'tst_models' and 'tst_callgraphgenerator' fail, with + ;; the later seemingly requiring sudo or access to the kernel + ;; trace points. + #:test-exclude + (string-append + "(" + (string-join + ;; The 'tst_models' expected output doesn't exactly + ;; match. + '("tst_models" + ;; The 'tst_callgraphgenerator' perf invocation + ;; fails when run in the build container. + "tst_callgraphgenerator" + ;; The 'tst_perfparser' test requires sudo/access + ;; to the kernel scheduler trace points. + "tst_perfparser") + "|") + ")") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-perfparser + ;; XXX: This phase is copied from qt-creator: keep them in sync! + (lambda* (#:key inputs #:allow-other-keys) + ;; perfparser attempts to dynamically load the demangle + ;; libraries; use their absolute file name to avoid having to + ;; set LD_LIBRARY_PATH. + (let ((librustc_demangle.so + (with-exception-handler (lambda (ex) + (if (search-error? ex) + #f + (raise-exception ex))) + (lambda () + (search-input-file inputs "lib/librustc_demangle.so")) + #:unwind? #t))) + (substitute* "3rdparty/perfparser/app/demangler.cpp" + (("loadDemangleLib\\(QStringLiteral\\(\"rustc_demangle\")" + all) + (if librustc_demangle.so + (format #f "loadDemangleLib(QStringLiteral(~s)" + librustc_demangle.so) + all)) ;no rustc_demangle; leave unchanged + (("loadDemangleLib\\(QStringLiteral\\(\"d_demangle\")") + (format #f "loadDemangleLib(QStringLiteral(~s)" + (search-input-file inputs + "lib/libd_demangle.so"))))))) + (add-after 'unpack 'path-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/perfoutputwidgetkonsole.cpp" + (("\"tail\"") + (format #f "~s" (search-input-file inputs "bin/tail")))) + (substitute* "src/perfrecord.cpp" + (("\"perf( )?\"" _ space) + (string-append "\"" (search-input-file inputs "bin/perf") + (or space "") "\"")))))))) + (native-inputs + (list extra-cmake-modules + vulkan-headers)) + (inputs + (append + (list coreutils-minimal + d-demangler + elfutils + karchive + kconfig + kcoreaddons + kddockwidgets + kgraphviewer + ki18n + kio + kiconthemes + kitemmodels + kitemviews + knotifications + kparts + ksyntaxhighlighting + kwindowsystem + libxkbcommon + perf + qtdeclarative + qtsvg + solid + threadweaver + `(,zstd "lib")) + (if (supported-package? rust-rustc-demangle-capi-0.1) + (list rust-rustc-demangle-capi-0.1) + '()))) + (home-page "https://github.com/KDAB/hotspot") + (synopsis "Performance analysis GUI for Linux perf") + (description "Hotspot is a standalone GUI for performance data analysis. It aims to be similar to KCachegrind, but for data collected with @command{perf}, a profiler for use with the kernel Linux. Its main feature is graphically visualizing a @file{perf.data} file.") - (license (list license:gpl2+ license:gpl3+)))) ;dual licensed + (license (list license:gpl2+ license:gpl3+))))) ;dual licensed (define-public ecryptfs-utils (package @@ -12190,6 +12197,36 @@ virtual server table in the Linux kernel. The Linux Virtual Server can be used to build scalable network services based on a cluster of two or more nodes.") (license license:gpl2+))) +(define-public ryzenadj + (package + (name "ryzenadj") + (version "0.17.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/flygoat/ryzenadj/archive/refs/tags/" + "v" version ".tar.gz")) + (sha256 + (base32 "0i2x6kbn2ix52vjz1mmh0c0g3w0k4sn0lq68wbsk0pgndzcck2l4")) + (modules '((guix build utils))) + (snippet + '(begin (delete-file-recursively "win32") + #t)))) + (build-system cmake-build-system) + (inputs (list pciutils)) + (arguments + (list #:tests? #f ; No test suite + #:phases #~(modify-phases %standard-phases + (add-before 'install 'build + (lambda _ + (invoke "cmake" "-DCMAKE_BUILD_TYPE=Release" ".")))))) + (home-page "https://github.com/flygoat/ryzenadj") + (synopsis "Power management tool for AMD Ryzen APUs") + (description + "@command{ryzenadj} is an utility to adjust power management settings for +AMD Ryzen mobile processors. You will need to ensure it can access /dev/mem, +for instance by using the \"iomem=relaxed\" kernel argument.") + (license license:lgpl3))) + (define-public ryzen-smu (package (name "ryzen-smu") diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 1a4fa92789..1c9ed7c431 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -12205,8 +12205,8 @@ interfaces as well as a functional and an object oriented interface.") `(cons "clsql-cffi" ,asd-systems))))))) (define-public sbcl-clss - (let ((revision "2") - (commit "f62b849189c5d1be378f0bd3d403cda8d4fe310b")) + (let ((revision "3") + (commit "cd5f603e8207ec23c147c5cfda636ef8273a7525")) (package (name "sbcl-clss") (version (git-version "0.3.1" revision commit)) @@ -12215,10 +12215,10 @@ interfaces as well as a functional and an object oriented interface.") (method git-fetch) (uri (git-reference - (url "https://github.com/Shinmera/clss") + (url "https://codeberg.org/shinmera/clss") (commit commit))) (sha256 - (base32 "1033dchpanhcgxl5qfhr80aw9adbp9bvllhzvvy5p9mrfnidd1fv")) + (base32 "15wh1zafamxc5z5hni9ni72xg4n24am2xfqv7fwwhfw1sl06bcm2")) (file-name (git-file-name name version)))) (inputs (list sbcl-array-utils sbcl-plump)) @@ -12226,7 +12226,7 @@ interfaces as well as a functional and an object oriented interface.") (synopsis "DOM tree searching engine based on CSS selectors") (description "CLSS is a DOM traversal engine based on CSS selectors. It makes use of the Plump-DOM and is used by lQuery.") - (home-page "https://github.com/Shinmera/clss") + (home-page "https://codeberg.org/shinmera/clss") (license license:zlib)))) (define-public cl-clss @@ -27494,6 +27494,39 @@ internbombing, excessive input and macro characters.") (define-public ecl-safe-read (sbcl-package->ecl-package sbcl-safe-read)) +(define-public sbcl-salmagundi + (let ((commit "aa231f6043111ec5dbeb06feab732efb7d59c959") + (revision "0")) + (package + (name "sbcl-salmagundi") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/s-expressionists/Salmagundi") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1i0hknnd555ih509kvna2xdirfxyy05wr2bp628997rnj8drlsnx")))) + (build-system asdf-build-system/sbcl) + (inputs (list sbcl-trivial-package-locks)) + (home-page "https://github.com/s-expressionists/Salmagundi") + (synopsis "Implementation of Common Lisp hash tables") + (description "This library contains code that implements Common Lisp +hash tables.") + (license license:bsd-2)))) + +(define-public cl-salmagundi + (sbcl-package->cl-source-package sbcl-salmagundi)) + +(define-public ecl-salmagundi + (sbcl-package->ecl-package sbcl-salmagundi)) + +(define-public clasp-salmagundi + (sbcl-package->clasp-package sbcl-salmagundi)) + (define-public sbcl-salza2 (package (name "sbcl-salza2") @@ -31694,6 +31727,39 @@ in DEFPACKAGE.") (define-public ecl-trivial-package-local-nicknames (sbcl-package->ecl-package sbcl-trivial-package-local-nicknames)) +(define-public sbcl-trivial-package-locks + (let ((commit "ca2e2b17124c7898942894383002313cea59486d") + (revision "0")) + (package + (name "sbcl-trivial-package-locks") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/yitzchak/trivial-package-locks") + (commit commit))) + (file-name (git-file-name "cl-trivial-package-locks" commit)) + (sha256 + (base32 "0kbyrkd7a9apyq83bl96jspjggjsswxh93111wrmpvhbnm2vll60")))) + (build-system asdf-build-system/sbcl) + (native-inputs (list sbcl-parachute)) + (home-page "https://github.com/yitzchak/trivial-package-locks") + (synopsis "Standard interface to the various package lock implementations") + (description + "This package provides a standard interface to the various package lock +implementations of Common Lisp.") + (license license:expat)))) + +(define-public cl-trivial-package-locks + (sbcl-package->cl-source-package sbcl-trivial-package-locks)) + +(define-public ecl-trivial-package-locks + (sbcl-package->ecl-package sbcl-trivial-package-locks)) + +(define-public clasp-trivial-package-locks + (sbcl-package->clasp-package sbcl-trivial-package-locks)) + (define-public sbcl-trivial-raw-io (let ((commit "b1a3c876305baa0dead419841de7b3e433a75867") (revision "1")) diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 7a748e2bad..a87634eb83 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -1384,7 +1384,14 @@ Library.") "-DBUILD_SHARED_LIBS:BOOL=TRUE" "-DLLVM_VERSION_SUFFIX=")))) (properties `((hidden? . #t) - ,@(package-properties llvm-19))))) + ,@(package-properties llvm-19))) + (home-page "https://github.com/ROCm/llvm-project") + (synopsis + (string-append (package-synopsis llvm-14) " (AMD fork)")) + (description + (string-append (package-description llvm-14) " + +This AMD fork includes AMD-specific additions.")))) diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index 7fb07cab0c..bfdbafa1bb 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -1309,104 +1309,6 @@ multiple local rocks trees.") (define-public luarocks (make-luarocks "luarocks" lua)) -(define-public emilua - (package - (name "emilua") - (version "0.4.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/emilua/emilua.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dwag2pyqc0g86rris4w4fzafmz9a6kiqd47vdq7hl3a1lyi74mx")))) - (build-system meson-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/emilua_gperf.awk" - (("/usr/bin/env") (which "env"))) - (substitute* "src/system.cpp" - (("P_PIDFD") "P_PID")) - - (copy-recursively - (assoc-ref inputs "emilua-http") - "emilua-http") - (copy-recursively - (assoc-ref inputs "trial-protocol") - "trial-protocol") - - (with-directory-excursion "subprojects" - (symlink "../emilua-http" "emilua-http") - (copy-file "packagefiles/emilua-http/meson.build" - "emilua-http/meson.build") - (symlink "../trial-protocol" "trial-protocol") - (copy-file "packagefiles/trial.protocol/meson.build" - "trial-protocol/meson.build"))))) - #:configure-flags - #~(list "-Denable_http=true" - "-Denable_file_io=true" - "-Denable_io_uring=true" - ;; TODO: Linux namespaces are disabled for now due to conflict - ;; with some packages in guix. - "-Denable_linux_namespaces=false" - "-Denable_manpages=false" - "-Dversion_suffix=-guix1"))) - (native-inputs - (list luajit-lua52-openresty - re2c - gperf - xxd - pkg-config)) - (inputs - `(("emilua-http" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/BoostGSoC14/boost.http") - (commit "93ae527c89ffc517862e1f5f54c8a257278f1195"))) - (sha256 - (base32 - "0jm7fw0cjd3s9zkkvyh6mcj6z32hcy7l9bszv74l92qk15ivvp9h")))) - ("trial-protocol" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/breese/trial.protocol") - (commit "79149f604a49b8dfec57857ca28aaf508069b669"))) - (sha256 - (base32 - "0k42i5b4v3zz5x0r3dssiymgmn2x8zg4fzdksya9aggxgigippsx")))) - ("boost" ,boost) - ("boost-static" ,boost-static) - ("fmt" ,fmt-8) - ("gcc" ,gcc-12) - ("luajit-lua52-openresty" ,luajit-lua52-openresty) - ("ncurses" ,ncurses) - ("serd" ,serd) - ("sord" ,sord) - ("libcap" ,libcap) - ("liburing" ,liburing) - ("openssl" ,openssl))) - (native-search-paths - (list - (search-path-specification - (variable "EMILUA_PATH") - (files - (list (string-append "lib/emilua-" (version-major+minor version))))))) - (home-page "https://gitlab.com/emilua/emilua") - (synopsis "Lua execution engine") - (description - "Emilua is a LuaJIT-based Lua execution engine that supports async IO, -fibers and actor-inspired threading. The experimental builtin HTTP module is -enabled.") - (license license:boost1.0))) - (define-public fennel (package (name "fennel") diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index 30437ae565..4623871309 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2025 John Khoo <johnkhootf@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -47,6 +48,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages lsof) #:use-module (gnu packages openbox) + #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) #:use-module (gnu packages text-editors) @@ -66,22 +68,42 @@ #:use-module (guix packages) #:use-module (guix utils)) +(define delete-generated-c-files + ;; Remove C files generated by Vala so we can build from source. + '(let* ((c->vala + (lambda (file) + (string-append (string-drop-right file 2) + ".vala"))) + (generated-c-file? + (lambda (file stat) + (and (string-suffix? ".c" file) + (file-exists? (c->vala file)))))) + (for-each delete-file + (find-files "." generated-c-file?)))) + (define-public libfm (package (name "libfm") - (version "1.3.2") + (version "1.4.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/pcmanfm/" - "PCManFM%20%2B%20Libfm%20%28tarball%20release" - "%29/LibFM/" name "-" version ".tar.xz")) - (sha256 - (base32 - "1rfira3lx8v6scz1aq69925j4vslpp36bmgrrzcfby2c60q2c155")))) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/libfm") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1gxg09lcacy7dh5pg1bm3rw11jffg7y59j0cb2cfsrgf0g5bjsvn")) + (modules '((guix build utils))) + (snippet delete-generated-c-files))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--with-gtk=3"))) (inputs (list glib gtk+)) (native-inputs (list intltool + which + automake + autoconf + gtk-doc `(,glib "bin") ; for gtester libtool menu-cache @@ -97,8 +119,9 @@ Glib/GIO giving a higher-level API.") (package (inherit libfm) (name "libfm-extra") (arguments '(#:configure-flags '("--with-extra-only"))) - (inputs (list glib)) - (native-inputs (list intltool libtool pkg-config)) + (inputs (list glib libexif)) + (native-inputs + (list autoconf automake gtk-doc intltool libtool pkg-config which)) (synopsis "File management support (extra library)") (description "This package contains a stand-alone library which extends the libFM file management library."))) @@ -106,18 +129,20 @@ libFM file management library."))) (define-public lxappearance (package (name "lxappearance") - (version "0.6.3") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/" - "LXAppearance/lxappearance-" version ".tar.xz")) + (version "0.6.4") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxappearance") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0f4bjaamfxxdr9civvy55pa6vv9dx1hjs522gjbbgx7yp1cdh8kj")))) + (base32 "1cia6mkb3fqy3rgfprlmq0ajh15cnazdwdkv4zd19klrh4jzg4xp")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--enable-gtk3"))) (inputs (list gtk+)) - (native-inputs (list intltool pkg-config)) + (native-inputs (list automake autoconf intltool pkg-config)) (synopsis "LXDE GTK+ theme switcher") (description "LXAppearance is a desktop-independent GTK+ theme switcher able to change themes, icons, and fonts used by GTK+ applications.") @@ -127,16 +152,16 @@ able to change themes, icons, and fonts used by GTK+ applications.") (define-public lxrandr (package (name "lxrandr") - (version "0.3.2") + (version "0.3.3") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/LXRandR" - "%20%28monitor%20config%20tool%29/LXRandR%20" - (version-major+minor version) ".x/" - "lxrandr-" version ".tar.xz")) - (sha256 - (base32 - "04n3vgh3ix12p8jfs4w0dyfq3anbjy33h7g53wbbqqc0f74xyplb")))) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxrandr") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1vh5r6bwafh9mq7syhdw1f2ahwvibq2wdc1ij84hbaa5bnyjfr8h")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--enable-gtk3") @@ -150,7 +175,7 @@ able to change themes, icons, and fonts used by GTK+ applications.") (("(\"|')xrandr\"" _ match) (string-append match (which "xrandr") "\"")))))))) (inputs (list gtk+ xrandr)) - (native-inputs (list intltool pkg-config)) + (native-inputs (list automake autoconf intltool pkg-config)) (synopsis "LXDE monitor configuration tool") (description "LXRandR is a very basic monitor configuration tool. It relies on the X11 resize-and-rotate (RandR) extension but doesn't aim to be a @@ -163,20 +188,20 @@ or external monitor.") (define-public lxtask (package (name "lxtask") - (version "0.1.10") + (version "0.1.12") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/LXTask" - "%20%28task%20manager%29/LXTask%20" - (version-major+minor version) ".x/" - "lxtask-" version ".tar.xz")) - (sha256 - (base32 - "0b2fxg8jjjpk219gh7qa18g45365598nd2bq7rrq0bdvqjdxy5i2")))) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxtask") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11vcl0k2yhx59599fdk8gv5jh2gsgh7rmp2syybk3vpmby6p93h4")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--enable-gtk3"))) (inputs (list gtk+)) - (native-inputs (list intltool pkg-config)) + (native-inputs (list automake autoconf intltool pkg-config)) (synopsis "LXDE task manager") (description "LXTask is a lightweight task manager derived from Xfce task manager with all dependencies on Xfce removed. LXTask is based on the GTK+ @@ -187,19 +212,20 @@ toolkit. It allows users to monitor and control of running processes.") (define-public lxterminal (package (name "lxterminal") - (version "0.3.2") + (version "0.4.1") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/LXTerminal" - "%20%28terminal%20emulator%29/LXTerminal%20" - version "/" name "-" version ".tar.xz")) - (sha256 - (base32 - "1124pghrhnx6q4391ri8nvi6bsmvbj1dx81an08mird8jf2b2rii")))) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxterminal") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "159p34caid7ca679ly1lhvw4qclqh23ddsiphlw9yn0h9v8s2dd0")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--enable-gtk3"))) (inputs (list gtk+ vte/gtk+-3)) - (native-inputs (list intltool pkg-config)) + (native-inputs (list automake autoconf intltool pkg-config)) (synopsis "LXDE terminal emulator") (description "LXTerminal is a VTE-based terminal emulator. It supports multiple tabs and has only minimal dependencies thus being completely @@ -211,19 +237,19 @@ performance, all instances of the terminal are sharing a single process.") (define-public menu-cache (package (name "menu-cache") - (version "1.1.0") + (version "1.1.1") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1iry4zlpppww8qai2cw4zid4081hh7fz8nzsp5lqyffbkm2yn0pd")))) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/menu-cache") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qhc72xinxmd68nfrph9jfwymkw9x71drgksz2r2k5nzv9p7cnp5")))) (build-system gnu-build-system) - (inputs `(("glib" ,glib) - ("libfm" ,libfm-extra))) - (native-inputs (list pkg-config)) + (inputs (list glib libfm-extra)) + (native-inputs (list automake autoconf libtool gtk-doc pkg-config)) (arguments `(#:configure-flags '("CFLAGS=-fcommon"))) (synopsis "LXDE implementation of the freedesktop menu's cache") @@ -235,20 +261,22 @@ speed up the access to freedesktop.org defined application menus.") (define-public pcmanfm (package (name "pcmanfm") - (version "1.3.2") + (version "1.4.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/pcmanfm/" - "PCManFM%20%2B%20Libfm%20%28tarball%20release" - "%29/PCManFM/pcmanfm-" version ".tar.xz")) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/pcmanfm") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "1xqc2k2jh165mm81xg0ghxx0ml1s3rhh4ndvbzkcri4kfhj7pjql")))) + "0dkl12a6x9w3ka4g2qx0ssxdv7v432xar6v2gddzbzsxg4546hp2")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--with-gtk=3"))) (inputs (list gtk+ gvfs ;for trash and mount support libfm libx11)) - (native-inputs (list intltool libtool pkg-config)) + (native-inputs (list intltool automake autoconf libtool pkg-config)) (propagated-inputs (list lxmenu-data)) ;for "Open With..." application list (synopsis "LXDE file manager") @@ -417,19 +445,19 @@ customizable menu system, and Bash integration.") (define-public lxmenu-data (package (name "lxmenu-data") - (version "0.1.5") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge//lxde/" - "lxmenu-data%20%28desktop%20menu%29/" - name "-" version ".tar.xz")) + (version "0.1.6") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxmenu-data") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "1f5sh2dvb3pdnjlcsyzq9543ck2jsqizkx3204cr22zm5s6j3qwz")))) + (base32 "1abicrm66pn4vphlwx0rg2q3wvjmzijf0vgpml1vr3zkp7xm01z5")))) (build-system gnu-build-system) (native-inputs - (list pkg-config intltool)) + (list glib automake autoconf pkg-config intltool)) (synopsis "Freedesktop.org desktop menus for LXDE") (description "Lxmenu-data provides files required to build freedesktop.org @@ -440,19 +468,19 @@ menu spec-compliant desktop menus for LXDE.") (define-public lxde-icon-theme (package (name "lxde-icon-theme") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/LXDE%20Icon%20Theme/" - "lxde-icon-theme-" version "/" - name "-" version ".tar.xz")) + (version "0.5.2") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxde-icon-theme") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0v4i6x86fr2hbx4fb2si7y2qzmj7h6hcjwaifnin18r8kwwvgl73")))) + (base32 "0sv3pzvxs1gxa7dpqs7zls3wc7kj9x8w99i4h56mdsc6vz61y3mp")))) (build-system gnu-build-system) (native-inputs - (list pkg-config)) + (list automake autoconf pkg-config)) (synopsis "LXDE default icon theme based on nuoveXT2") (description "Lxde-icon-theme provides an default icon theme for LXDE.") @@ -462,17 +490,16 @@ menu spec-compliant desktop menus for LXDE.") (define-public lxde-common (package (name "lxde-common") - (version "0.99.2") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/" - "lxde-common%20%28default%20config%29/" - "lxde-common%20" (version-major+minor version) "/" - name "-" version ".tar.xz")) + (version "0.99.3") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxde-common") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0mj84fa3f4ak1jjslrwc2q3ci9zxrxpciggviza9bjb0168brn8w")))) + (base32 "0py5dazjmz7yh5p0zv7psgsx4291cg21h5kw6ww5bzvr34kpbnwc")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -486,7 +513,7 @@ menu spec-compliant desktop menus for LXDE.") "/bin/lxsession"))) #t)))))) (native-inputs - (list pkg-config intltool lxmenu-data lxde-icon-theme)) + (list automake autoconf pkg-config intltool lxmenu-data lxde-icon-theme)) (inputs (list lxsession ;; ("lxlock" ,lxlock) ;for 'lxde-screenlock.desktop' @@ -500,22 +527,22 @@ menu spec-compliant desktop menus for LXDE.") (define-public lxinput (package (name "lxinput") - (version "0.3.5") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/" - "LXInput%20%28Kbd%20and%20amp_%20mouse%20config%29/" - "LXInput%200.3.x/" name "-" version ".tar.xz")) + (version "0.3.6") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxinput") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "123f3yn4rp1w5b3n5aj3ad9snkxab29qkrs7bcvf5bx4cn57g3sf")))) + (base32 "13xqxwsb00h20yg514pjmdlvmfqv029nwdy70aaqn0r0jz670sm7")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list "--enable-gtk3"))) (inputs (list gtk+)) (native-inputs - (list pkg-config intltool)) + (list automake autoconf pkg-config intltool)) (synopsis "Tool for mouse and keyboard configuration in LXDE") (description "Lxinput provides a small program to configure keyboard and mouse @@ -526,41 +553,24 @@ in LXDE.") (define-public lxsession (package (name "lxsession") - (version "0.5.5") + (version "0.5.6") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/" - "LXSession%20%28session%20manager%29/" - "LXSession%200.5.x/" - "lxsession-" version ".tar.xz")) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxsession") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0imv9nysip1j9lrb2z96kl05isjgp312323wnnd5b59h0ff0sgp4")) + (base32 "0mgykzhd5n11mfcbpaqb841f4jwy1yhmd1xn49dxc2hci8bx26fx")) + ;; Fix https://github.com/lxde/lxsession/issues/42 + (patches (search-patches "lxsession-potfiles-ignore.patch")) (modules '((guix build utils))) - (snippet - ;; Remove C files generated by Vala so we can build from source. - '(let* ((c->vala - (lambda (file) - (string-append (string-drop-right file 2) - ".vala"))) - (generated-c-file? - (lambda (file stat) - (and (string-suffix? ".c" file) - (file-exists? (c->vala file)))))) - (for-each delete-file - (find-files "." generated-c-file?)))))) + (snippet delete-generated-c-files))) (build-system gnu-build-system) (arguments - `(#:configure-flags (list "--enable-gtk3" - ;; Fix build with GCC 14. - "CFLAGS=-Wno-error=incompatible-pointer-types") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'rm-stamp - (lambda _ - (for-each delete-file (find-files "." "\\.stamp$")) - ;; Force regeneration of configure script. - (delete-file "configure")))))) + `(#:configure-flags (list "--enable-gtk3"))) (inputs (list gtk+ polkit)) @@ -581,16 +591,17 @@ in LXDE.") (define-public lxpanel (package (name "lxpanel") - (version "0.10.1") + (version "0.11.1") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/lxde/" - "LXPanel%20%28desktop%20panel%29/" - "LXPanel%200.10.x/lxpanel-" - version ".tar.xz")) + (method git-fetch) + (uri + (git-reference + (url "https://github.com/lxde/lxpanel") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "1s0y8jjkw6qz0r8l90618b8xly0c8g906kah7b162sz3sxbqyc8y")))) + (base32 "1xqhxcwhx2qlgsri10gwldb0xz9ajsc3iqnn8d53bjb4yh0vk5wf")))) (build-system gnu-build-system) (arguments (list @@ -619,6 +630,9 @@ in LXDE.") wireless-tools)) (native-inputs (list docbook-xml + libtool + automake + autoconf gettext-minimal intltool pkg-config)) diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm index 2662235679..634a2f5849 100644 --- a/gnu/packages/lxqt.scm +++ b/gnu/packages/lxqt.scm @@ -103,7 +103,7 @@ to statistics about the system on which it's run.") (define-public lxqt-build-tools (package (name "lxqt-build-tools") - (version "2.1.0") + (version "2.2.1") (source (origin (method url-fetch) @@ -111,7 +111,7 @@ to statistics about the system on which it's run.") "/download/" version "/lxqt-build-tools-" version ".tar.xz")) (sha256 - (base32 "1ycfzl8sfa2d1bnlyj6b3726mfb6kpj5768fhpw1ypkgjclvcn14")))) + (base32 "0brkiq62cv5rp2knq3dbdzh4cv6l670x1bfxq1537k2mdcpdzp0k")))) (build-system cmake-build-system) (arguments (list @@ -151,7 +151,7 @@ itself as well as other components maintained by the LXQt project.") (define-public libqtxdg (package (name "libqtxdg") - (version "4.1.0") + (version "4.2.0") (source (origin (method url-fetch) @@ -159,7 +159,7 @@ itself as well as other components maintained by the LXQt project.") "https://github.com/lxqt/libqtxdg/releases/download/" version "/libqtxdg-" version ".tar.xz")) (sha256 - (base32 "02c8irxyra0kfm7k1jkcxinfipib3w9jn2lk91hnl6jnv6bx6106")))) + (base32 "0ap81y7sbqwcdfsdlyxihs12chfv332fgg6y0sl6zmjhhlhk1m55")))) (build-system cmake-build-system) (arguments '(#:configure-flags @@ -188,7 +188,7 @@ in Qt.") (define-public qtxdg-tools (package (name "qtxdg-tools") - (version "4.1.0") + (version "4.2.0") (source (origin (method url-fetch) @@ -196,7 +196,7 @@ in Qt.") "https://github.com/lxqt/qtxdg-tools/releases/download/" version "/qtxdg-tools-" version ".tar.xz")) (sha256 - (base32 "1dk6m6gyarnhjw42hdf2bpkfcdpb98dy28l2nmpj46h985v9pmfv")))) + (base32 "1bv3immy1idp7jc0csnjkiw8vvqkr8g84hnnvl6k8297g4vnwfjh")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no tests (propagated-inputs (list libqtxdg)) @@ -211,7 +211,7 @@ applications.") (define-public liblxqt (package (name "liblxqt") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) @@ -219,7 +219,7 @@ applications.") "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1q1wn53rsy6bagngj1k53sipmbga3pbwk446kd1m6prwz1i0p0hh")))) + (base32 "1j0918fyka0kxwsn3mgnjnfc8cvdp6dsgg0i40877ysry0dqp2aa")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no tests @@ -277,14 +277,14 @@ and memory usage or network traffic.") (define-public lxqt-about (package (name "lxqt-about") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0js94q82rpaqkdg6vl3p4w4kw091dp6wixgkw5dbvqsnaw2v8nd0")))) + (base32 "0vypdk0nf2rr7riv8xp7wy1x9694i73rgk0dj9x39gh53jm4xjy5")))) (build-system cmake-build-system) (inputs (list liblxqt)) @@ -307,14 +307,14 @@ LXQt and the system it's running on.") (define-public lxqt-admin (package (name "lxqt-admin") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "047m08hhl8ykk2n2zr0h38f0ynq6b81v80hqrfhqfik3c20895ss")))) + (base32 "03gkb7gwq0gy9ihvawn38i36nkfmwyslf8wmbp4ssj129i94sphq")))) (build-system cmake-build-system) (inputs (list liblxqt polkit-qt6)) @@ -340,14 +340,14 @@ the operating system LXQt is running on.") (define-public lxqt-menu-data (package (name "lxqt-menu-data") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1d7asl9zmz9vsnf0sv6ynnhcnz6f1aw56giilwsw8vy12driilnj")))) + (base32 "0nw9mr4p5ri3bk43xd871g3ni9irf6rrk8rz4d8ra9wd7bz2d855")))) (build-system cmake-build-system) (arguments (list #:tests? #f)) ;no tests @@ -364,14 +364,14 @@ LXQt Panel, Configuration Center and PCManFM-Qt/libfm-qt.") (define-public lxqt-config (package (name "lxqt-config") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "03bq440npq3l4ssx7l1a15962q1jylfzdldfr66dm5nkjgvvv0gs")))) + (base32 "07ik1ycldpin21v4b29a95zb14q1s4bfbmlvyvw50r0mx0whnysj")))) (build-system cmake-build-system) (inputs (list eudev @@ -409,7 +409,7 @@ configuration of both LXQt and the underlying operating system.") (define-public lxqt-globalkeys (package (name "lxqt-globalkeys") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) @@ -417,7 +417,7 @@ configuration of both LXQt and the underlying operating system.") "releases/download/" version "/" "lxqt-globalkeys-" version ".tar.xz")) (sha256 - (base32 "0x18jkis3avl7928584sgl6c3fk1xm2qgpksxcy2qsk2ab25dk3h")))) + (base32 "16lpz4wm6iz065drmgfgfjxkd0gc5g1wqisqcgs6iff0skpdzkv6")))) (build-system cmake-build-system) (inputs (list liblxqt)) @@ -434,14 +434,14 @@ as a whole and are not limited to distinct applications.") (define-public lxqt-notificationd (package (name "lxqt-notificationd") - (version "2.1.1") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0n7hbvqx8csd9pprwqrh3nfbdqfj6i5hznjyxfn1ll5h3szaq5vy")))) + (base32 "1i3rly1jk3kgzl0gscsygfqr8g6147r7031j41qgdrf2w5nby8s2")))) (build-system cmake-build-system) (inputs (list kwindowsystem layer-shell-qt liblxqt libqtxdg)) @@ -457,14 +457,14 @@ according to the Desktop Notifications Specification.") (define-public lxqt-openssh-askpass (package (name "lxqt-openssh-askpass") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1inkicq0p5pxqpw9k13vx421fvpgmkn2lsskvlzqy1nnab3ilaf5")))) + (base32 "0g3gkfgyk7jgghslabmhlqwzafsd9i8c0sppb5hb4qllg916cadv")))) (build-system cmake-build-system) (inputs (list liblxqt)) @@ -480,14 +480,14 @@ of other programs.") (define-public libdbusmenu-lxqt (package (name "libdbusmenu-lxqt") - (version "0.2.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0knq04si5dzcml35hj29fkp806rrr7gnviqci1diw1k9gxyaf8lc")))) + (base32 "1y9z4iwpl5kqdn36y2d1dligsv84a79piw2b6jxb17sd796x385d")))) (build-system cmake-build-system) (arguments (list @@ -505,14 +505,14 @@ possible for applications to export and import their menus over DBus.") (define-public lxqt-panel (package (name "lxqt-panel") - (version "2.1.4") + (version "2.2.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1rhm57nnwr0mhii2r40gmawllj4cza9qb25qykkn236jfgpbilgz")))) + (base32 "0s8rva0prz1mkccp5yanrm0gg63cn95pzv2fixdp26489rx0w5ax")))) (build-system cmake-build-system) (inputs (list alsa-lib @@ -562,14 +562,14 @@ possible for applications to export and import their menus over DBus.") (define-public lxqt-policykit (package (name "lxqt-policykit") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0h0hi7aimjhc6rn4w8wz3kmvpkx7g6bf9i1fclan7j7ic80cf160")))) + (base32 "07lsfnpix9lr4nqlwipld2d02030921ssk6w77iqa81zy1c2v1yr")))) (build-system cmake-build-system) (inputs (list liblxqt polkit polkit-qt6)) @@ -585,14 +585,14 @@ LXQt.") (define-public lxqt-powermanagement (package (name "lxqt-powermanagement") - (version "2.1.0") + (version "2.2.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0pyzd7pw3mpp0f5193a8fg1bvixwabrapnpqy2q2a707j664mqhj")))) + (base32 "1pds86s72ckkvk886ncajnl7q11814w94dfmbblmml2dmfxyhkbx")))) (build-system cmake-build-system) (inputs (list kidletime @@ -612,14 +612,14 @@ when laptop batteries are low on power.") (define-public lxqt-qtplugin (package (name "lxqt-qtplugin") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0giql40mnl100zhqcyxi1vxsfyvx5hvi9zibjh5krr6nwrwwflhb")))) + (base32 "1w05710c9f3vzi9rsnyqiivxg1skirgrqk1dwxcw1gd4w01hyfp0")))) (build-system cmake-build-system) (inputs (list libdbusmenu-lxqt @@ -646,14 +646,14 @@ Qt with LXQt.") (define-public lxqt-runner (package (name "lxqt-runner") - (version "2.1.1") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0pmviizv7cxiqn2868bmbwgqrakmp4fv6a1wzbal0gndgc14yxmw")))) + (base32 "1478hsi662s6cw83im710slm6mfq9vn10lq98yqrakmwr6salp71")))) (build-system cmake-build-system) (inputs (list kwindowsystem @@ -674,14 +674,14 @@ allows for launching applications or shutting down the system.") (define-public lxqt-session (package (name "lxqt-session") - (version "2.1.1") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "06f8kfy859ri2wbjpz7yx69jw0gfxm80f46729lcl2vd23a0qari")))) + (base32 "12l9sch1lsxpj14ibrjsyv40nrgrdqhkhpzi24sm1bqnnl9jdg17")))) (build-system cmake-build-system) (inputs (list bash-minimal @@ -731,14 +731,14 @@ for the LXQt desktop environment.") (define-public lxqt-sudo (package (name "lxqt-sudo") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "17bk4bcvm919q7h63q2sdnzwwbqjpk98kb5ij14rqs9v2psbqfks")))) + (base32 "14fg8mxbkdi8sp8rdxy2zqwfgmzxrmj1xnq3h25pqnc61qf12y4f")))) (build-system cmake-build-system) (inputs (list liblxqt sudo)) @@ -755,14 +755,14 @@ permissions of other users including root.") (define-public lxqt-themes (package (name "lxqt-themes") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1b0gpmw6capkccysnvjj20j8l2p7hjkkpby72n9y982kb8f11l6d")))) + (base32 "1wplp817pacq18x67vrqjdnaa1hn4fx2zn1clc85bjh8mpcaiicj")))) (build-system cmake-build-system) (native-inputs (list lxqt-build-tools)) @@ -781,14 +781,14 @@ for LXQt.") (define-public libfm-qt (package (name "libfm-qt") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1mr93by010scy06kmpgmsvkabg7zn1f0mm9i7grm17mfv3hkx85z")))) + (base32 "1a8k8df38mf9bcdr6a44vjz15p84v3l33af485zlyhngrxpsi2jd")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no tests @@ -809,14 +809,14 @@ components to build desktop file managers which belongs to LXDE.") (define-public pcmanfm-qt (package (name "pcmanfm-qt") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0kvbw1slbcism42rqn09h1q3dirq44g8h3azg1vc86zs3mbqcd76")))) + (base32 "13xyl7xvv8qy35gfmjbq6ahqzq7xjn7j6336njhsvj82ipxfmvm5")))) (build-system cmake-build-system) (arguments (list @@ -846,14 +846,14 @@ LXDE.") (define-public lximage-qt (package (name "lximage-qt") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1z7nyx5w9hvrz9zfil6sbpm61h47iap85p1bvwjvg863bqq01xpv")))) + (base32 "1slriyvf0zz6mn5ldcd2v3i2yf0skmdf3hki9q8h2aby7bpvybnc")))) (build-system cmake-build-system) (inputs (list libexif libfm-qt qtsvg)) @@ -926,14 +926,14 @@ window manager OpenBox.") (define-public pavucontrol-qt (package (name "pavucontrol-qt") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1gvb73xxyv7avqx9wk8lvcfisbfdxcr6rc8ncnv35cn09f5gqg3c")))) + (base32 "1sdf221hq6z0haairwb4n29v7pjzgzf355r3m0iks0y1d9117lpi")))) (build-system cmake-build-system) (inputs (list glib qtbase pulseaudio)) @@ -950,14 +950,14 @@ window manager OpenBox.") (define-public qps (package (name "qps") - (version "2.10.0") + (version "2.11.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "05ncgfiqqs53k4wx62845krd7qi26im5pa2xq1kxh8wlng44gjjf")))) + (base32 "0dk4rs2i5qxl1plnis9y2bjm148vlzb43ny29kaa5rkrv3lnq354")))) (build-system cmake-build-system) (inputs (list liblxqt)) @@ -974,14 +974,14 @@ processes currently in existence, much like code{top} or code{ps}.") (define-public qtermwidget (package (name "qtermwidget") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0jwfpv9dwifkjgzy2fiffkvj0dd3aw4rf95fnnrhvqcdlg1v5v16")))) + (base32 "1s8w4s7wi7sv6vx8njlcvzmywyrkz4v4jmj3cbvsymfgg6xgnkxs")))) (build-system cmake-build-system) (inputs (list qtbase utf8proc)) @@ -997,14 +997,14 @@ processes currently in existence, much like code{top} or code{ps}.") (define-public qterminal (package (name "qterminal") - (version "2.1.0") + (version "2.2.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0g11n43msp0dwl68nf5wdh6kwi48xqc43pl9bpg4wsdw8n37hpm6")))) + (base32 "1lpm1065wj61x6w1w7zgy0b7g62c9gbg6v17l0vlgbxv10s8rlqc")))) (build-system cmake-build-system) (inputs (list layer-shell-qt qtbase qtermwidget)) @@ -1021,19 +1021,24 @@ QTermWidget.") (define-public screengrab (package (name "screengrab") - (version "2.9.0") + (version "3.0.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/screengrab/releases/download/" version "/screengrab-" version ".tar.xz")) (sha256 - (base32 "1c7nyz1sjk30qpm00jzz9vq54jm6dyqfajjiwsqlp5hvx9gfgg17")))) + (base32 "1ryfdh7rkdrf9lf7j0p3zapw80hvpg0k6hb8r84yp5c5d0l09b9h")))) (build-system cmake-build-system) (inputs - (list kwindowsystem libqtxdg qtbase)) + (list kwindowsystem + layer-shell-qt + libpng + libqtxdg + qtwayland + wayland)) (native-inputs - (list pkg-config perl qttools)) + (list lxqt-build-tools)) (arguments '(#:tests? #f)) ; no tests (home-page "https://lxqt-project.org") @@ -1046,14 +1051,14 @@ easily publishing them on internet image hosting services.") (define-public lxqt-archiver (package (name "lxqt-archiver") - (version "1.1.0") + (version "1.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "1ir6dc45qp4g6iv57nyn9z1bh06ih9cm8gmgw646370m1jvh06k9")))) + (base32 "1iisk5mb4xxdjimlh8inr182a1vpy8zk5qis9v3p5p73d49i5r2k")))) (build-system cmake-build-system) (inputs (list glib json-glib libfm-qt qtbase)) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 8df3178bd8..d4b8903009 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1194,23 +1194,24 @@ cardinality matching from a bipartite graph.") (define-public python-persim (package (name "python-persim") - (version "0.3.2") + (version "0.3.8") (source (origin (method url-fetch) (uri (pypi-uri "persim" version)) (sha256 - (base32 "0q8wfakx8q4h3ryvw8cba0v6z7xn9139qkrzs3mi1ggyzacnx9d7")))) + (base32 "03d4kgakpgj54c3pl9dkqrkbmj6w13gmczkds5jagf3n85c1hgg1")))) (build-system pyproject-build-system) - (propagated-inputs (list python-deprecated - python-hopcroftkarp - python-joblib - python-matplotlib - python-numpy - python-scikit-learn - python-scipy)) - (native-inputs (list python-pytest python-pytest-cov python-setuptools - python-wheel)) + (native-inputs + (list python-pytest python-setuptools-next)) + (propagated-inputs + (list python-deprecated + python-hopcroftkarp + python-joblib + python-matplotlib + python-numpy + python-scikit-learn + python-scipy)) (home-page "https://persim.scikit-tda.org") (synopsis "Tools for analyzing persistence diagrams in Python") (description @@ -3892,7 +3893,6 @@ advanced research.") (build-system cmake-build-system) (arguments (list - #:tests? #false ;tests are not building now #:build-type "Release" #:modules '((ice-9 match) (guix build utils) @@ -3908,6 +3908,7 @@ advanced research.") "-DTFLITE_ENABLE_GPU=ON" "-DTFLITE_ENABLE_RUY=ON" + "-DTFLITE_ENABLE_XNNPACK=ON" ;; TODO: turn on Farmhash ;;"-DSYSTEM_FARMHASH=ON" @@ -3925,11 +3926,6 @@ advanced research.") (string-append "-Druy_DIR=" #$(this-package-input "ruy") "/lib/cmake/ruy") - ;; TODO: The build system attempts to build xnnpack from source. We - ;; would like to use our xnnpack package here, but this requires more - ;; work. - "-DTFLITE_ENABLE_XNNPACK=OFF" - ;; Don't fetch the sources. We have these already "-Dgemmlowp_POPULATED=TRUE" "-Degl_headers_POPULATED=TRUE" @@ -3941,6 +3937,7 @@ advanced research.") "-Dgoogle_benchmark_POPULATED=TRUE" "-Dnsync_POPULATED=TRUE" "-Dre2_POPULATED=TRUE" + "-Dxnnpack_POPULATED=TRUE" "-DFFT2D_SOURCE_DIR=/tmp/fft2d" "-DFARMHASH_SOURCE_DIR=/tmp/farmhash" @@ -3975,6 +3972,21 @@ advanced research.") (with-directory-excursion "/tmp/fft2d" (invoke "tar" "--strip-components=1" "-xf" (assoc-ref inputs "fft2d-src"))))) + (add-after 'copy-sources 'opencl-fix + (lambda _ (substitute* "delegates/gpu/cl/opencl_wrapper.h" + (("cl_ndrange_kernel_command_properties_khr") + "cl_command_properties_khr")))) + (add-after 'opencl-fix 'absl-fix + (lambda _ (substitute* '( + "delegates/gpu/cl/cl_operation.h" + "delegates/gpu/common/task/qcom_thin_filter_desc.cc" + "delegates/gpu/common/tasks/special/thin_pointwise_fuser.cc") + (("#include <vector>") + "#include <vector>\n\n#include \"absl/strings/str_cat.h\"\n")))) + (add-after 'opencl-fix 'stdint-fix + (lambda _ (substitute* "kernels/internal/spectrogram.cc" + (("#include <math.h>") + "#include <math.h>\n#include <cstdint>\n")))) (add-after 'build 'build-shared-library (lambda* (#:key configure-flags #:allow-other-keys) (mkdir-p "c") @@ -3999,7 +4011,7 @@ advanced research.") (when tests? (invoke "ctest" "-L" "plain"))))))) (inputs - `(("abseil-cpp" ,abseil-cpp-20200923.3) + `(("abseil-cpp" ,abseil-cpp) ("cpuinfo" ,cpuinfo) ("eigen" ,eigen) ("fp16" ,fp16) @@ -4015,7 +4027,7 @@ advanced research.") ("python" ,python) ("ruy" ,ruy) ("re2" ,re2) - ;;("xnnpack" ,xnnpack) ; TODO: use Guix's copy of xnnpack + ("xnnpack" ,xnnpack) ("vulkan-headers" ,vulkan-headers))) (native-inputs `(("pkg-config" ,pkg-config) @@ -5596,24 +5608,23 @@ as torchvision, torchtext, and others.") (define-public python-readchar (package (name "python-readchar") - (version "4.0.5") - (source (origin - (method url-fetch) - (uri (pypi-uri "readchar" version)) - (sha256 - (base32 - "09n8vl2jjbnbnrzfvkynijrnwrqvc91bb2267zg8r261sz15d908")))) + (version "4.2.1") + (source + (origin + ;; There is no tests data in PyPI archive. + (method git-fetch) + (uri (git-reference + (url "https://github.com/magmax/python-readchar/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16ypci664l54ka6ickwkpaa2id14h9h00y7z24z0bv0szld4mrxg")))) (build-system pyproject-build-system) - (arguments - (list - #:phases - '(modify-phases %standard-phases - ;; This one file requires the msvcrt module, which we don't have. - (add-after 'unpack 'delete-windows-file - (lambda _ - (delete-file "readchar/_win_read.py")))))) - (propagated-inputs (list python-setuptools)) - (native-inputs (list python-wheel)) + (native-inputs + (list python-pytest + python-pytest-cov + python-setuptools-next)) (home-page "https://github.com/magmax/python-readchar") (synopsis "Library to easily read single chars and key strokes") (description "This package provides a Python library to easily read single diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index 119fc5988a..f9b0c3b2f4 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -1555,6 +1555,18 @@ MATE Desktop to monitor your system resources and usage.") (base32 "1s2ac2p5smiwr7lf4snciyb9waclychjmzrw32f2qspdm381s2im")))) (build-system glib-or-gtk-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'enable-autostart-for-xfce + (lambda _ + ;; We also use mate-polkit in Xfce. + (substitute* (string-append + #$output + "/etc/xdg/autostart/" + "polkit-mate-authentication-agent-1.desktop") + (("OnlyShowIn=MATE;") "OnlyShowIn=MATE;XFCE;"))))))) (native-inputs (list gettext-minimal gtk-doc/stable intltool libtool pkg-config)) (inputs @@ -1571,24 +1583,6 @@ MATE Desktop to monitor your system resources and usage.") used to bring up authentication dialogs.") (license license:lgpl2.1))) -(define-public mate-polkit-for-xfce - (package/inherit mate-polkit - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'install 'patch-desktop - (lambda* (#:key outputs #:allow-other-keys) - (let* ((common (string-append - (assoc-ref outputs "out") "/etc/xdg/autostart/" - "polkit-mate-authentication-agent-")) - (old (string-append common "1.desktop")) - (new (string-append common "for-xfce-1.desktop"))) - (substitute* old (("MATE;") "XFCE;")) - ;; To avoid a conflict if both MATE and XFCE are installed. - (rename-file old new))))))) - (properties `((hidden? . #t))))) - - (define-public mozo (package (name "mozo") @@ -1638,19 +1632,8 @@ menu specification.") (version (package-version mate-desktop)) (source #f) (build-system trivial-build-system) - (arguments - `(#:modules ((guix build union)) - #:builder - (begin - (use-modules (ice-9 match) - (guix build union)) - (match %build-inputs - (((names . directories) ...) - (union-build (assoc-ref %outputs "out") - directories) - #t))))) - (native-inputs (list desktop-file-utils)) - (inputs + (arguments '(#:builder (mkdir %output))) + (propagated-inputs ;; TODO: Add more packages (append (if (or (%current-target-system) (supported-package? gnome-keyring)) @@ -1662,9 +1645,11 @@ menu specification.") dbus dconf dconf-editor + desktop-file-utils engrampa eom font-abattis-cantarell + font-dejavu ;default font glib-networking gvfs hicolor-icon-theme @@ -1698,9 +1683,6 @@ menu specification.") shared-mime-info yelp zenity))) - (propagated-inputs - ;; Default font that applications such as IceCat require. - (list font-dejavu)) (synopsis "The MATE desktop environment") (home-page "https://mate-desktop.org/") (description diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 813c019c58..f9f268c8be 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -8506,7 +8506,7 @@ operations.") (define-public bitwuzla (package (name "bitwuzla") - (version "0.7.0") + (version "0.8.2") (source (origin (method git-fetch) @@ -8515,7 +8515,7 @@ operations.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1fpd1kgb5xdbcjiqbbc6j0b8g2ly9bp9m3la78fiayl4qlmsvh2b")))) + (base32 "0nakqz29cfkn91yvx1xzsk50rlqbiihslflbjanv4lflcl2zx6mz")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Dtesting=enabled" "-Ddefault_library=shared" diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm index b11e6ec19c..43897862ef 100644 --- a/gnu/packages/mes.scm +++ b/gnu/packages/mes.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2025 Felix Lechner <felix.lechner@lease-up.com> +;;; Copyright © 2025 Andreas Enge <andreas@enge.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,61 +41,9 @@ #:use-module (guix packages) #:use-module (guix utils)) -(define-public nyacc-0.86 - ;; Nyacc used for bootstrap. - (package - (name "nyacc") - (version "0.86.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/nyacc/" - name "-" version ".tar.gz")) - (patches (search-patches "nyacc-binary-literals.patch")) - (sha256 - (base32 - "0lkd9lyspvhxlfs0496gsllwinh62jk9wij6gpadvx9gwz6yavd9")))) - (build-system gnu-build-system) - (native-inputs (list guile-2.2)) - (synopsis "LALR(1) Parser Generator in Guile") - (description - "NYACC is an LALR(1) parser generator implemented in Guile. -The syntax and nomenclature should be considered not stable. It comes with -extensive examples, including parsers for the Javascript and C99 languages.") - (home-page "https://savannah.nongnu.org/projects/nyacc") - (license (list gpl3+ lgpl3+)))) - -(define-public nyacc-0.99 - (package - (inherit nyacc-0.86) - (version "0.99.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/nyacc/nyacc-" - version ".tar.gz")) - (sha256 - (base32 - "0hl5qxx19i4x1r0839sxm19ziqq65g4hy97yik81cc2yb9yvgyv3")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* (find-files "." "^Makefile\\.in$") - (("^SITE_SCM_DIR =.*") - "SITE_SCM_DIR = \ -@prefix@/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n") - (("^SITE_SCM_GO_DIR =.*") - "SITE_SCM_GO_DIR = \ -@prefix@/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n") - (("^INFODIR =.*") - "INFODIR = @prefix@/share/info\n") - (("^DOCDIR =.*") - "DOCDIR = @prefix@/share/doc/$(PACKAGE_TARNAME)\n")) - #t)))) - (native-inputs (list pkg-config)) - (inputs (list guile-2.2)))) - (define-public nyacc-1.08.1 (package - (inherit nyacc-0.99) + (name "nyacc") (version "1.08.1") (source (origin (method url-fetch) @@ -109,17 +58,24 @@ extensive examples, including parsers for the Javascript and C99 languages.") (("GUILE_GLOBAL_SITE=\\$prefix.*") "GUILE_GLOBAL_SITE=\ $prefix/share/guile/site/$GUILE_EFFECTIVE_VERSION\n"))))) + (build-system gnu-build-system) + (native-inputs (list pkg-config)) (inputs (list guile-3.0)) (propagated-inputs (list guile-bytestructures)) + (home-page "https://savannah.nongnu.org/projects/nyacc") + (synopsis "LALR(1) Parser Generator in Guile") (description "@acronym{NYACC, Not Yet Another Compiler Compiler} is set of Guile modules for generating parsers and lexical analyzers. It provides sample parsers, pretty-printers using SXML trees as an intermediate representation, a decent C parser and an `FFI Helper' tool to help create Guile Scheme bindings for C-based libraries. It also provides (partially implemented) compilers based on these -parsers to allow execution with Guile as extension languages."))) +parsers to allow execution with Guile as extension languages.") + (license (list gpl3+ lgpl3+)))) (define-public nyacc-1.00.2 + ;; The source of this package is used for bootstrapping in + ;; commencement.scm. Otherwise it could be removed. (package (inherit nyacc-1.08.1) (version "1.00.2") diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 299ee0d55c..9c09350c21 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -3539,71 +3539,6 @@ a persistent connection to an IRC server, acting as a proxy and buffer for a number of clients.") (license license:gpl3+))) -(define-public weechat-matrix - (package - (name "weechat-matrix") - (version "0.3.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/poljar/weechat-matrix") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1iv55n4k05139f7jzkhczgw4qp6qwilrvfsy3c6v2m1kxffj12d3")))) - (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'build) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((weechat-python (string-append (assoc-ref outputs "out") - "/share/weechat/python"))) - ;; Avoid circular import by renaming the matrix module to - ;; weechat_matrix. - (substitute* (cons "main.py" - (append (find-files "matrix") - (find-files "tests"))) - (("from matrix") "from weechat_matrix") - (("import matrix") "import weechat_matrix")) - ;; Install python modules. - (invoke "make" "install-lib" - (string-append "INSTALLDIR=" - (site-packages inputs outputs) - "/weechat_matrix")) - ;; Extend PYTHONPATH to find installed python modules. - (add-installed-pythonpath inputs outputs) - ;; Augment sys.path so that dependencies are found. - (substitute* "main.py" - (("import os\n" all) - (apply string-append - all - "import sys\n" - (map (lambda (path) - (string-append "sys.path.append('" path "')\n")) - (string-split (getenv "GUIX_PYTHONPATH") #\:))))) - ;; Install script. - (mkdir-p weechat-python) - (copy-file "main.py" - (string-append weechat-python "/matrix.py"))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest"))))))) - (inputs - (list python-matrix-nio python-pygments python-pyopenssl - python-webcolors)) - (native-inputs - (list python-pytest)) - (home-page "https://github.com/poljar/weechat-matrix") - (synopsis "Weechat Matrix protocol script") - (description "@code{weechat-matrix} is a Python plugin for Weechat that lets -Weechat communicate over the Matrix protocol.") - (license license:isc))) - (define-public weechat-wee-slack (package (name "weechat-wee-slack") diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index 631a276282..30d0eac330 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -158,7 +158,7 @@ bind processes, and much more.") (define-public hwloc-2 (package (inherit hwloc-1) - (version "2.12.1") + (version "2.12.2") (source (origin (method url-fetch) (uri (string-append "https://download.open-mpi.org/release/hwloc/v" @@ -166,7 +166,7 @@ bind processes, and much more.") "/hwloc-" version ".tar.bz2")) (sha256 (base32 - "0sy63p99bz9xyaz1501mwv8i3qa1v1zwa7gynadry9c6pcl07a9q")))) + "182v0n2mpnbvdsw0gjnbmaj027k2jxmw7yphi89i9dgb1zbn2gjn")))) (native-inputs (modify-inputs (package-native-inputs hwloc-1) (append bash))) ;for completion tests @@ -356,18 +356,11 @@ software vendors, application developers and computer science researchers.") '(begin ;; XXX: 'delete-all-but' is copied from the turbovnc package. (define (delete-all-but directory . preserve) - (define (directory? x) - (and=> (stat x #f) - (compose (cut eq? 'directory <>) stat:type))) (with-directory-excursion directory - (let* ((pred - (negate (cut member <> (append '("." "..") preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) ;; Delete as many bundled libraries as permitted by the build ;; system. (delete-all-but "3rd-party" "treematch" "Makefile.in" "Makefile.am") @@ -381,8 +374,8 @@ software vendors, application developers and computer science researchers.") ;; As of Open MPI 5.0.X, PMIx is used to communicate ;; with SLURM, so SLURM'S PMI is no longer needed. (delete "slurm") - (append openpmix) ;for PMI support (launching via "srun") - (append prrte))) ;for PMI support (launching via "srun") + (append openpmix) ;for PMI support (launching via "srun") + (append prrte))) ;for PMI support (launching via "srun") (native-inputs (modify-inputs (package-native-inputs openmpi) (append python))) @@ -392,7 +385,7 @@ software vendors, application developers and computer science researchers.") #~(list #$(string-append "CFLAGS=-g -O2" " -Wno-error=incompatible-pointer-types") - "--enable-mpi-ext=affinity" ;cr doesn't work + "--enable-mpi-ext=affinity" ;cr doesn't work "--with-sge" "--disable-static" @@ -738,57 +731,66 @@ programmable API.") (define (make-scorep mpi) (package (name (string-append "scorep-" (package-name mpi))) - (version "3.1") + (version "9.0") (source (origin - (method url-fetch) - (uri (string-append - "http://www.vi-hps.org/upload/packages/scorep/scorep-" - version ".tar.gz")) - (sha256 - (base32 - "0h45357djna4dn9jyxx0n36fhhms3jrf22988m9agz1aw2jfivs9")) - (modules '((guix build utils))) - (snippet - ;; Remove bundled software. - '(begin - (for-each delete-file-recursively - '("vendor/opari2" "vendor/cube")) - #t)))) + (method url-fetch) + (uri (string-append + "https://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/" + "scorep-" version "/scorep-" version ".tar.gz")) + (sha256 + (base32 + "15q93rc8wblbzqgh99rqzyq6fdp88mi6yziww05c6cbgrjs5s2jx")) + (modules '((guix build utils))) + (snippet + ;; Remove bundled software. + '(begin + (for-each delete-file-recursively + '("vendor/otf2" "vendor/opari2" + "vendor/cubelib" "vendor/cubew")))))) (build-system gnu-build-system) (inputs - `(("mpi" ,mpi) - ("papi" ,papi) - ("opari2" ,opari2) - ("libunwind" ,libunwind) - ("otf2" ,otf2) - ("cubelib" ,cube "lib") ;for lib, include - ("openmpi" ,openmpi) - ("zlib" ,zlib))) + (list mpi + papi + opari2 + libunwind + otf2 + cubelib + cubew + gotcha + libbfd + libiberty + openmpi + zlib)) (native-inputs - (list gfortran - flex - cube ;for cube-config - bison - python - doxygen - which)) + (list gfortran + flex + bison + python + doxygen + which)) (arguments - `(#:configure-flags - (list "--enable-shared" "--disable-static" - (string-append "--with-opari2=" - (assoc-ref %build-inputs "opari2")) - (string-append "--with-cube=" - (assoc-ref %build-inputs "cube"))) - #:parallel-tests? #f - #:make-flags '("V=1") - #:phases - (modify-phases %standard-phases - (add-after 'install 'licence - (lambda* (#:key outputs #:allow-other-keys) - (let ((doc (string-append (assoc-ref outputs "out") - "/share/doc/scorep"))) - (install-file "COPYING" doc) - #t)))))) + (list + #:configure-flags + #~(list "--enable-shared" "--disable-static" + "MPI_LIBS=-lmpi" "SHMEM_LIBS=-loshmem" + (string-append "--with-cubelib=" + #$(this-package-input "cubelib")) + (string-append "--with-cubew=" + #$(this-package-input "cubew")) + (string-append "--with-libbfd=" + #$(this-package-input "libbfd")) + (string-append "--with-otf2=" + #$(this-package-input "otf2")) + (string-append "--with-opari2=" + #$(this-package-input "opari2"))) + #:parallel-tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'licence + (lambda* (#:key outputs #:allow-other-keys) + (let ((doc (string-append (assoc-ref outputs "out") + "/share/doc/scorep"))) + (install-file "COPYING" doc))))))) (home-page "https://www.vi-hps.org/projects/score-p/") (synopsis "Performance measurement infrastructure for parallel code") (description diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 7190dfcd57..86187dc3c0 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -903,18 +903,34 @@ many input formats and provides a customisable Vi-style user interface.") (define-public denemo (package (name "denemo") - (version "2.6.0") + (version "2.6.44") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/denemo/denemo-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "git://git.git.savannah.gnu.org/denemo") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0pdmjij2635jbw2a24ivk1y4w0z58jbmq9vnz3qrfzw4d469grab")))) + (base32 + "1vpaiw34f0h0z01r40ln00494l4dwmyc4cy00hz2xggp6pa4abqy")))) (build-system gnu-build-system) (arguments (list + #:configure-flags + #~(list (string-append + "CFLAGS=" + (string-join (list "-Wno-error=incompatible-pointer-types" + "-Wno-error=implicit-function-declaration") + " "))) #:phases #~(modify-phases %standard-phases + (add-before 'bootstrap 'patch-autogen + (lambda _ + (substitute* "autogen.sh" + (("/usr/share/aclocal") + (string-append #$(this-package-native-input "automake") + "/share/aclocal"))))) (replace 'check (lambda* (#:key inputs tests? #:allow-other-keys) ;; Tests require to write $HOME. @@ -938,8 +954,10 @@ many input formats and provides a customisable Vi-style user interface.") lilypond "\");"))))))))) (native-inputs - (list diffutils - `(,glib "bin") ; for gtester + (list autoconf + automake + diffutils + `(,glib "bin") ; for gtester gtk-doc/stable intltool libtool @@ -953,7 +971,7 @@ many input formats and provides a customisable Vi-style user interface.") glib gtk+ gtksourceview-3 - guile-2.0 + guile-3.0 (librsvg-for-system) libsndfile libxml2 @@ -7005,16 +7023,16 @@ ZaMultiComp, ZaMultiCompX2 and ZamSynth.") (define-public geonkick (package (name "geonkick") - (version "2.7.0") + (version "3.6.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://gitlab.com/iurie-sw/geonkick") + (url "https://codeberg.org/Geonkick-Synthesizer/geonkick") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0w1mvqm46qdwldcl81svaykwii4wvx7mcr57kwvnj0iv2qrc891i")))) + (base32 "0817hsfvgri315aw0y06rzjcw96lhgxjc37rbxqagk3ciw0naj6n")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no tests included @@ -7036,7 +7054,7 @@ ZaMultiComp, ZaMultiCompX2 and ZamSynth.") (description "Geonkick is a synthesizer that can synthesize elements of percussion such as kicks, snares, hit-hats, shakers, claps and sticks. It can also play and mix samples.") - (home-page "https://gitlab.com/iurie-sw/geonkick") + (home-page "https://geonkick.org") (license license:gpl3+))) (define-public mamba diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 82b67d3e4b..7eaffc8e06 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -5247,3 +5247,39 @@ recording packets that are dropped by the kernel. It provides the commands Protocol. RDAP is modern a replacement for WHOIS, which provides domain name and IP address registration information in JSON format over HTTP.") (license license:expat))) + +(define-public wireproxy + (package + (name "wireproxy") + (version "1.0.10") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/whyvl/wireproxy") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ypk9migx1l7xwcxr542pcdy8q2bm33wp03bqzgav0hp1fsrmi8p")))) + (build-system go-build-system) + (arguments + (list + #:install-source? #f + #:import-path "github.com/pufferffish/wireproxy/cmd/wireproxy" + #:unpack-path "github.com/pufferffish/wireproxy" + #:test-subdirs #~(list "../../..."))) ;to test the whole module + (native-inputs + (list go-github-com-akamensky-argparse + go-github-com-go-ini-ini + go-github-com-landlock-lsm-go-landlock + go-github-com-makenowjust-heredoc-v2 + go-github-com-things-go-go-socks5 + go-golang-org-x-net + go-golang-zx2c4-com-wireguard + go-suah-dev-protect)) + (home-page "https://github.com/whyvl/wireproxy") + (synopsis "Wireguard client that exposes itself as a socks5 proxy") + (description + "wireproxy is a completely userspace application that connects to a +wireguard peer, and exposes a socks5/http proxy or tunnels on the machine.") + (license license:isc))) diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm index 707c439055..847d663360 100644 --- a/gnu/packages/nss.scm +++ b/gnu/packages/nss.scm @@ -291,63 +291,24 @@ This package tracks the Extended Support Release (ESR) channel.") (package (inherit nss) (name "nss-rapid") - (version "3.113") - (source (origin - (inherit (package-source nss)) - (uri (let ((version-with-underscores - (string-join (string-split version #\.) "_"))) - (string-append - "https://ftp.mozilla.org/pub/mozilla.org/security/nss/" - "releases/NSS_" version-with-underscores "_RTM/src/" - "nss-" version ".tar.gz"))) - (sha256 - (base32 - "03qwl3ps3xgc9pkc07qrsa4vd2r57mjwicv3gb483gfk2ashdvxc")) - (patches - (remove (cut string-suffix? "nss-disable-broken-tests.patch" <>) - (origin-patches (package-source nss)))))) - (arguments - (substitute-keyword-arguments (package-arguments nss) - ((#:phases phases) - #~(modify-phases #$phases - (add-after 'unpack 'neutralize-network-test - ;; Test tries to resolve `wrong.host.badssl.com' which fails due - ;; to no networking in the build environment. - ;; Behavior changed as of 3.110. - (lambda _ - (substitute* "nss/tests/ssl/ssl.sh" - ((" ssl_policy_pkix_ocsp" all) - (string-append "#" all))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (begin - ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for - ;; testing. The latter requires a working DNS or /etc/hosts. - (setenv "DOMSUF" "localdomain") - (setenv "USE_IP" "TRUE") - (setenv "IP_ADDRESS" "127.0.0.1") + (version "3.115") + (source + (origin + (inherit (package-source nss)) + (uri (let ((version-with-underscores + (string-join (string-split version #\.) "_"))) + (string-append + "https://ftp.mozilla.org/pub/mozilla.org/security/nss/" + "releases/NSS_" version-with-underscores "_RTM/src/" + "nss-" version ".tar.gz"))) + (sha256 + (base32 "1av1g18dkx86zxvpr34j5mx976mgsk002khlb40k4ydx6gxlfamc")) + (patches + (search-patches "nss-3.56-pkgconfig.patch" + "nss-getcwd-nonnull.patch" + "nss-increase-test-timeout.patch" + "nss-3.115-disable-pkix-ocsp-tests.patch")))) - ;; This specific test is looking at performance "now - ;; verify that we can quickly dump a database", and - ;; we're not testing performance here (especially - ;; since we're using faketime), so raise the - ;; threshold - (substitute* "nss/tests/dbtests/dbtests.sh" - ((" -lt 5") " -lt 50")) - - ;; Since the test suite is very lengthy, run the test - ;; suite once, not thrice as done by default, by - ;; selecting only the 'standard' cycle. - (setenv "NSS_CYCLES" "standard") - - ;; The "PayPalEE.cert" certificate expires every six months, - ;; leading to test failures: - ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>. To - ;; work around that, set the time to roughly the release date. - (invoke #$(if (target-64bit?) "faketime" "datefudge") - "2025-06-19" "./nss/tests/all.sh")) - (format #t "test suite not run~%")))))))) (synopsis "Network Security Services (Rapid Release)") (description "Network Security Services (@dfn{NSS}) is a set of libraries designed to diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index d032002464..46f42807b4 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -183,8 +183,8 @@ ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "1.4.0") - (commit "826e305fde3687573a7e1449ce91e82836696ce6") - (revision 41)) + (commit "9202921e812708b23788b2209cdb576d456f56db") + (revision 43)) (package (name "guix") @@ -200,7 +200,7 @@ (commit commit))) (sha256 (base32 - "17j1gq50pni96vxs45swf3awxgfscfyapfra0szjwji56cyfmhf5")) + "02cvf6rndj9fwp13gqrqw2r9icpls8p2pq8cxpqs6j7ayj0pj1hy")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/patches/gimp-fix-metadata-editor.patch b/gnu/packages/patches/gimp-fix-metadata-editor.patch new file mode 100644 index 0000000000..848227ff4b --- /dev/null +++ b/gnu/packages/patches/gimp-fix-metadata-editor.patch @@ -0,0 +1,25 @@ +From 51311f913d9f417d121f59b83d560c7b4b853d1c Mon Sep 17 00:00:00 2001 +From: Simon Budig <simon@budig.de> +Date: Sat, 20 May 2023 22:25:40 +0200 +Subject: [PATCH] metadata: shut up a weird warning + +--- + plug-ins/metadata/metadata-editor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plug-ins/metadata/metadata-editor.c b/plug-ins/metadata/metadata-editor.c +index a3992e40ddc..5bf6ef709f1 100644 +--- a/plug-ins/metadata/metadata-editor.c ++++ b/plug-ins/metadata/metadata-editor.c +@@ -2846,7 +2846,7 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, + } + else + { +- if (! g_strv_contains (values, equiv_values[evi])) ++ if (! g_strv_contains ((const gchar * const *) values, equiv_values[evi])) + { + gchar *tmpvalue; + +-- +GitLab + diff --git a/gnu/packages/patches/gimp-fix-tiff-load.patch b/gnu/packages/patches/gimp-fix-tiff-load.patch new file mode 100644 index 0000000000..ba12d0892f --- /dev/null +++ b/gnu/packages/patches/gimp-fix-tiff-load.patch @@ -0,0 +1,25 @@ +From a2458f1528e5733574bb26ff5452b1329116e6db Mon Sep 17 00:00:00 2001 +From: Simon Budig <simon@budig.de> +Date: Sat, 20 May 2023 18:40:41 +0200 +Subject: [PATCH] file-tiff-load: fix mismatching variable type + +--- + plug-ins/file-tiff/file-tiff-load.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/plug-ins/file-tiff/file-tiff-load.c b/plug-ins/file-tiff/file-tiff-load.c +index 0aafbaec5fd..a26e7af2752 100644 +--- a/plug-ins/file-tiff/file-tiff-load.c ++++ b/plug-ins/file-tiff/file-tiff-load.c +@@ -1297,8 +1297,8 @@ load_image (GFile *file, + + /* any resolution info in the file? */ + { +- gfloat xres = 72.0; +- gfloat yres = 72.0; ++ gdouble xres = 72.0; ++ gdouble yres = 72.0; + gushort read_unit; + GimpUnit unit = GIMP_UNIT_PIXEL; /* invalid unit */ + + diff --git a/gnu/packages/patches/ispell-for-linphone-cmake.patch b/gnu/packages/patches/ispell-for-linphone-cmake.patch new file mode 100644 index 0000000000..6785ca4b7e --- /dev/null +++ b/gnu/packages/patches/ispell-for-linphone-cmake.patch @@ -0,0 +1,43 @@ +Retrieved from: https://git.pld-linux.org/?p=packages/bc-ispell.git;a=blob_plain;f=ispell-cmake.patch;hb=HEAD + +--- ispell-05574fe160222c3d0b6283c1433c9b087271fad1/CMakeLists.txt.orig 2023-11-07 11:53:37.000000000 +0100 ++++ ispell-05574fe160222c3d0b6283c1433c9b087271fad1/CMakeLists.txt 2024-03-28 20:53:45.068632010 +0100 +@@ -49,6 +49,26 @@ set(ISPELL_SOURCES + + add_library(${ISPELL_TARGET_NAME} SHARED ${ISPELL_SOURCES}) + ++set(CMAKE_MODULES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/cmake/${ISPELL_TARGET_NAME}") ++configure_package_config_file("${ISPELL_TARGET_NAME}Config.cmake.in" "${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}Config.cmake" ++ INSTALL_DESTINATION "${CMAKE_MODULES_INSTALL_DIR}" ++ NO_SET_AND_CHECK_MACRO ++) ++write_basic_package_version_file("${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}ConfigVersion.cmake" ++ VERSION ${PROJECT_VERSION} ++ COMPATIBILITY AnyNewerVersion ++) ++install(FILES ++ "${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}Config.cmake" ++ "${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}ConfigVersion.cmake" ++ DESTINATION ${CMAKE_MODULES_INSTALL_DIR} ++) ++ ++install(EXPORT ${ISPELL_TARGET_NAME}LibraryDepends ++ FILE "${ISPELL_TARGET_NAME}LibraryDepends.cmake" ++ DESTINATION ${CMAKE_MODULES_INSTALL_DIR} ++) ++ + install(TARGETS ${ISPELL_TARGET_NAME} + EXPORT ${ISPELL_TARGET_NAME}LibraryDepends + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +--- ispell-05574fe160222c3d0b6283c1433c9b087271fad1/ISpellConfig.cmake.in.orig 2023-11-07 11:53:37.000000000 +0100 ++++ ispell-05574fe160222c3d0b6283c1433c9b087271fad1/ISpellConfig.cmake.in 2024-03-28 21:54:40.692161132 +0100 +@@ -12,7 +12,7 @@ set(ISPELL_LIBRARIES "@ISPELL_TARGET_NAM + get_target_property(ISPELL_INCLUDE_DIRS "@ISPELL_TARGET_NAME@" INTERFACE_INCLUDE_DIRECTORIES) + + if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.18.0) +- add_library(@ISpell_TARGET_NAME@::@ISpell_TARGET_NAME@ ALIAS @ISpell_TARGET_NAME@) ++ add_library(@ISPELL_TARGET_NAME@::@ISPELL_TARGET_NAME@ ALIAS @ISPELL_TARGET_NAME@) + endif() + +-check_required_components(@ISpell_TARGET_NAME@) ++check_required_components(@ISPELL_TARGET_NAME@) diff --git a/gnu/packages/patches/liblinphone-jsoncpp.patch b/gnu/packages/patches/liblinphone-jsoncpp.patch new file mode 100644 index 0000000000..d012b07870 --- /dev/null +++ b/gnu/packages/patches/liblinphone-jsoncpp.patch @@ -0,0 +1,82 @@ +diff --git a/cmake/FindJsonCPP.cmake b/cmake/FindJsonCPP.cmake +index 59e971a58..18260fde8 100644 +--- a/cmake/FindJsonCPP.cmake ++++ b/cmake/FindJsonCPP.cmake +@@ -39,10 +39,11 @@ + # JsonCPP_FOUND - The jsoncpp library has been found + # JsonCPP_TARGET - The name of the CMake target for the jsoncpp library + ++if(TARGET jsoncpp_lib OR TARGET jsoncpp_static OR TARGET PkgConfig::jsoncpp) + +-if(TARGET jsoncpp_lib OR TARGET jsoncpp_static) +- +- if(TARGET jsoncpp_lib) ++ if(TARGET PkgConfig::jsoncpp) ++ set(JsonCPP_TARGET PkgConfig::jsoncpp) ++ elseif(TARGET jsoncpp_lib) + set(JsonCPP_TARGET jsoncpp_lib) + else() + set(JsonCPP_TARGET jsoncpp_static) +@@ -57,24 +58,50 @@ if(TARGET jsoncpp_lib OR TARGET jsoncpp_static) + mark_as_advanced(JsonCPP_TARGET) + + else() +- +- set(_OPTIONS "CONFIG") ++ find_package(PkgConfig QUIET) ++ ++ set(_OPTIONS1 "CONFIG") ++ set(_OPTIONS2 "IMPORTED_TARGET") # for pkg_check_modules fallback ++ + if(JsonCPP_FIND_REQUIRED) +- list(APPEND _OPTIONS "REQUIRED") +- endif() +- if(JsonCPP_FIND_QUIETLY) +- list(APPEND _OPTIONS "QUIET") ++ if(PKG_CONFIG_FOUND) ++ list(APPEND _OPTIONS2 "REQUIRED") ++ else() ++ list(APPEND _OPTIONS1 "REQUIRED") ++ endif() + endif() +- if(JsonCPP_FIND_VERSION) +- list(PREPEND _OPTIONS "${jsoncpp_FIND_VERSION}") ++ if(JsonCPP_FIND_QUIETLY) ++ list(APPEND _OPTIONS1 "QUIET") ++ list(APPEND _OPTIONS2 "QUIET") + endif() +- if(JsonCPP_FIND_EXACT) +- list(APPEND _OPTIONS "EXACT") ++ if(PKG_CONFIG_FOUND) ++ if(JsonCPP_FIND_VERSION) ++ if(JsonCPP_FIND_EXACT) ++ list(APPEND _OPTIONS2 "jsoncpp=${JsonCPP_FIND_VERSION}") ++ else() ++ list(APPEND _OPTIONS2 "jsoncpp>=${JsonCPP_FIND_VERSION}") ++ endif() ++ else() ++ list(APPEND _OPTIONS2 "jsoncpp") ++ endif() ++ else() ++ if(JsonCPP_FIND_VERSION) ++ list(PREPEND _OPTIONS1 "${jsoncpp_FIND_VERSION}") ++ endif() ++ if(JsonCPP_FIND_EXACT) ++ list(APPEND _OPTIONS1 "EXACT") ++ endif() + endif() + +- find_package(jsoncpp ${_OPTIONS}) ++ find_package(jsoncpp ${_OPTIONS1}) ++ ++ if(NOT JsonCPP_FOUND) ++ pkg_check_modules(jsoncpp ${_OPTIONS2}) ++ endif() + +- if(TARGET jsoncpp_lib) ++ if(TARGET PkgConfig::jsoncpp) ++ set(JsonCPP_TARGET jsoncpp) ++ elseif(TARGET jsoncpp_lib) + set(JsonCPP_TARGET jsoncpp_lib) + else() + set(JsonCPP_TARGET jsoncpp_static) diff --git a/gnu/packages/patches/linphone-desktop-cmake-belcard.patch b/gnu/packages/patches/linphone-desktop-cmake-belcard.patch new file mode 100644 index 0000000000..3cc573b938 --- /dev/null +++ b/gnu/packages/patches/linphone-desktop-cmake-belcard.patch @@ -0,0 +1,39 @@ +From 0216b81c46f2612b8acf33b1a7c5886db25f45ff Mon Sep 17 00:00:00 2001 +From: Maxim Cournoyer <maxim.cournoyer@gmail.com> +Date: Thu, 13 Jun 2024 16:04:29 -0400 +Subject: [PATCH] cmake: Fix BelCard cmake module name. + +* linphone-app/CMakeLists.txt: cmake: Fix BelCard cmake module name. + +Fixes: <https://gitlab.linphone.org/BC/public/linphone-desktop/-/issues/32> +--- + linphone-app/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/linphone-app/CMakeLists.txt b/linphone-app/CMakeLists.txt +index d40842fa..f1c225a5 100644 +--- a/linphone-app/CMakeLists.txt ++++ b/linphone-app/CMakeLists.txt +@@ -24,7 +24,7 @@ cmake_minimum_required(VERSION 3.22) + + + #Linphone targets +-set(LINPHONE_PACKAGES LinphoneCxx Mediastreamer2 Belcard LibLinphone) ++set(LINPHONE_PACKAGES LinphoneCxx Mediastreamer2 BelCard LibLinphone) + + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +@@ -115,7 +115,7 @@ set(PLUGIN_TARGETS ${LinphoneCxx_TARGET}) + set(APP_TARGETS ${LinphoneCxx_TARGET} + ${BCToolbox_TARGET}#Logger/App + ${Mediastreamer2_TARGET}#MediastreamerUtils +- ${Belcard_TARGET}#VCard Model ++ ${BelCard_TARGET}#VCard Model + ${LibLinphone_TARGET})#MediastreamerUtils + + #################################### + +base-commit: e34beffe06802efcc5904d5059006ac0d2f7ef32 +-- +2.45.1 + diff --git a/gnu/packages/patches/linphone-desktop-cmake-find-modules.patch b/gnu/packages/patches/linphone-desktop-cmake-find-modules.patch new file mode 100644 index 0000000000..96353eef28 --- /dev/null +++ b/gnu/packages/patches/linphone-desktop-cmake-find-modules.patch @@ -0,0 +1,422 @@ +From 25bdfe9ad3a33e1db6e5db8290b3a5112f4d621e Mon Sep 17 00:00:00 2001 +From: Maxim Cournoyer <maxim.cournoyer@gmail.com> +Date: Fri, 14 Jun 2024 22:33:58 -0400 +Subject: [PATCH] cmake: Delete most CMake find modules. + +They do not appear to bring any value compared to the config files +installed by each project, and cause issues like the following, at +least when using system libraries: + + -- Trying to find LibLinphone + CMake Error at linphone-app/cmake/FindLibLinphone.cmake:31 (include): + include could not find requested file: + + LibLinphoneTargets + Call Stack (most recent call first): + linphone-app/CMakeLists.txt:108 (find_package) + +Fixes: <https://gitlab.linphone.org/BC/public/linphone-desktop/-/issues/30> +--- + linphone-app/cmake/FindBCToolbox.cmake | 60 --------------------- + linphone-app/cmake/FindBelcard.cmake | 44 --------------- + linphone-app/cmake/FindISpell.cmake | 47 ---------------- + linphone-app/cmake/FindLibLinphone.cmake | 46 ---------------- + linphone-app/cmake/FindLinphoneCxx.cmake | 45 ---------------- + linphone-app/cmake/FindMediastreamer2.cmake | 49 ----------------- + linphone-app/cmake/FindQtKeychain.cmake | 48 ----------------- + 7 files changed, 339 deletions(-) + delete mode 100644 linphone-app/cmake/FindBCToolbox.cmake + delete mode 100644 linphone-app/cmake/FindBelcard.cmake + delete mode 100644 linphone-app/cmake/FindISpell.cmake + delete mode 100644 linphone-app/cmake/FindLibLinphone.cmake + delete mode 100644 linphone-app/cmake/FindLinphoneCxx.cmake + delete mode 100644 linphone-app/cmake/FindMediastreamer2.cmake + delete mode 100644 linphone-app/cmake/FindQtKeychain.cmake + +diff --git a/linphone-app/cmake/FindBCToolbox.cmake b/linphone-app/cmake/FindBCToolbox.cmake +deleted file mode 100644 +index 707cc147..00000000 +--- a/linphone-app/cmake/FindBCToolbox.cmake ++++ /dev/null +@@ -1,60 +0,0 @@ +-############################################################################ +-# FindBctoolbox.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +- +-# This module will set the following variables in your project: +-# +-# BCToolbox_FOUND - The bctoolbox library has been found +-# BCToolbox_TARGET - The name of the CMake target for the bctoolbox library +-# BCToolbox_CMAKE_DIR - The bctoolbox CMake directory +-# BCToolbox_CMAKE_UTILS - The path to the bctoolbox CMake utils script +-# BCToolbox_tester_FOUND - The bctoolbox-tester library has been found +-# BCToolbox_tester_TARGET - The name of the CMake target for the bctoolbox-tester library +- +- +-if(NOT TARGET bctoolbox) +- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR}) +- include(GNUInstallDirs) +- set(BCToolbox_CMAKE_DIR ${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/bctoolbox/cmake) +- include(${BCToolbox_CMAKE_DIR}/bctoolboxTargets.cmake) +-endif() +- +-set(_BCToolbox_REQUIRED_VARS BCToolbox_TARGET BCToolbox_CMAKE_DIR BCToolbox_CMAKE_UTILS) +-set(_BCToolbox_CACHE_VARS ${_BCToolbox_REQUIRED_VARS}) +- +-if(TARGET bctoolbox) +- set(BCToolbox_TARGET bctoolbox) +- get_target_property(_BCToolbox_SOURCE_DIR ${BCToolbox_TARGET} SOURCE_DIR) +- set(BCToolbox_CMAKE_DIR "${_BCToolbox_SOURCE_DIR}/../cmake") +- set(BCToolbox_CMAKE_UTILS "${BCToolbox_CMAKE_DIR}/BCToolboxCMakeUtils.cmake") +- if(TARGET bctoolbox-tester) +- set(BCToolbox_tester_FOUND TRUE) +- set(BCToolbox_tester_TARGET bctoolbox-tester) +- list(APPEND _BCToolbox_CACHE_VARS BCToolbox_tester_TARGET) +- endif() +-endif() +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(BCToolbox +- REQUIRED_VARS ${_BCToolbox_REQUIRED_VARS} +- HANDLE_COMPONENTS +-) +-mark_as_advanced(${_BCToolbox_CACHE_VARS}) +diff --git a/linphone-app/cmake/FindBelcard.cmake b/linphone-app/cmake/FindBelcard.cmake +deleted file mode 100644 +index ce89497c..00000000 +--- a/linphone-app/cmake/FindBelcard.cmake ++++ /dev/null +@@ -1,44 +0,0 @@ +-############################################################################ +-# FindBelcard.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# Belcard_FOUND - The liblinphone library has been found +-# Belcard_TARGET - The name of the CMake target +- +-if(NOT TARGET belcard) +- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR}) +- include(GNUInstallDirs) +- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Belcard/cmake/BelcardTargets.cmake) +-endif() +- +-set(_Belcard_REQUIRED_VARS Belcard_TARGET) +-set(_Belcard_CACHE_VARS ${_Belcard_REQUIRED_VARS}) +- +-if(TARGET belcard) +- set(Belcard_TARGET belcard) +-endif() +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(Belcard +- REQUIRED_VARS ${_Belcard_REQUIRED_VARS} +- HANDLE_COMPONENTS +-) +-mark_as_advanced(${_Belcard_CACHE_VARS}) +diff --git a/linphone-app/cmake/FindISpell.cmake b/linphone-app/cmake/FindISpell.cmake +deleted file mode 100644 +index 7a9269fa..00000000 +--- a/linphone-app/cmake/FindISpell.cmake ++++ /dev/null +@@ -1,47 +0,0 @@ +-############################################################################ +-# FindISpell.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# - Find the ispell include files and library +-# +-# ISpell_FOUND - system has lib ispell +-# ISpell_SOURCE_DIR - the ispell include directory +-# ISpell_BINARY_DIR - the ispell library directory +- +-if(NOT TARGET ${ISPELL_TARGET_NAME}) +- set(EXPORT_PATH ${ISPELL_OUTPUT_DIR}) +- include(GNUInstallDirs) +- include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/${ISPELL_TARGET_NAME}/${ISPELL_TARGET_NAME}Config.cmake) +-endif() +- +-set(_ISpell_REQUIRED_VARS ISpell_TARGET) +-set(_ISpell_CACHE_VARS ${_ISpell_REQUIRED_VARS}) +- +-if(TARGET ${ISPELL_TARGET_NAME}) +- set(ISpell_TARGET ${ISPELL_TARGET_NAME}) +-endif() +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(ISpell +- REQUIRED_VARS ${_ISpell_REQUIRED_VARS} +- HANDLE_COMPONENTS +-) +-mark_as_advanced(${_ISpell_CACHE_VARS}) +diff --git a/linphone-app/cmake/FindLibLinphone.cmake b/linphone-app/cmake/FindLibLinphone.cmake +deleted file mode 100644 +index 826bb0d8..00000000 +--- a/linphone-app/cmake/FindLibLinphone.cmake ++++ /dev/null +@@ -1,46 +0,0 @@ +-############################################################################ +-# FindLinphone.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# LibLinphone_FOUND - The liblinphone library has been found +-# LibLinphone_TARGET - The name of the CMake target for the liblinphone library +-# LibLinphone_PLUGINS_DIR - The directory where to install liblinphone plugins +- +-if(NOT TARGET liblinphone) +- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR}) +- include(GNUInstallDirs) +- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/linphone/cmake/linphoneTargets.cmake) +-endif() +- +-set(_LibLinphone_REQUIRED_VARS LibLinphone_TARGET LibLinphone_PLUGINS_DIR) +-set(_LibLinphone_CACHE_VARS ${_LibLinphone_REQUIRED_VARS}) +- +-if(TARGET liblinphone) +- set(LibLinphone_TARGET liblinphone) +- get_target_property(LibLinphone_PLUGINS_DIR ${LibLinphone_TARGET} LIBLINPHONE_PLUGINS_DIR) +-endif() +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(LibLinphone +- REQUIRED_VARS ${_LibLinphone_REQUIRED_VARS} +- HANDLE_COMPONENTS +-) +-mark_as_advanced(${_LibLinphone_CACHE_VARS}) +diff --git a/linphone-app/cmake/FindLinphoneCxx.cmake b/linphone-app/cmake/FindLinphoneCxx.cmake +deleted file mode 100644 +index 0f81fe20..00000000 +--- a/linphone-app/cmake/FindLinphoneCxx.cmake ++++ /dev/null +@@ -1,45 +0,0 @@ +-############################################################################ +-# FindLinphoneCxx.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# LinphoneCxx_FOUND - The liblinphone library has been found +-# LinphoneCxx_TARGET - The name of the CMake target for the liblinphone library +- +-if(NOT TARGET liblinphone++) +- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR}) +- include(GNUInstallDirs) +- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/LinphoneCxx/cmake/LinphoneCxxTargets.cmake) +-endif() +- +-set(_LinphoneCxx_REQUIRED_VARS LinphoneCxx_TARGET) +-set(_LinphoneCxx_CACHE_VARS ${_LinphoneCxx_REQUIRED_VARS}) +- +-if(TARGET liblinphone++) +- set(LinphoneCxx_TARGET liblinphone++) +-endif() +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(LinphoneCxx +- REQUIRED_VARS ${_LinphoneCxx_REQUIRED_VARS} +- HANDLE_COMPONENTS +-) +-mark_as_advanced(${_LinphoneCxx_CACHE_VARS}) +- +diff --git a/linphone-app/cmake/FindMediastreamer2.cmake b/linphone-app/cmake/FindMediastreamer2.cmake +deleted file mode 100644 +index dc41f187..00000000 +--- a/linphone-app/cmake/FindMediastreamer2.cmake ++++ /dev/null +@@ -1,49 +0,0 @@ +-############################################################################ +-# FindMediastreamer2.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# This module will set the following variables in your project: +-# +-# Mediastreamer2_FOUND - The mediastreamer2 library has been found +-# Mediastreamer2_TARGET - The name of the CMake target for the mediastreamer2 library +-# Mediastreamer2_PLUGINS_DIR - The directory where to install mediastreamer2 plugins +- +-if(NOT TARGET mediastreamer2) +- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR}) +- include(GNUInstallDirs) +- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Mediastreamer2/cmake/Mediastreamer2Targets.cmake) +-endif() +- +-set(_Mediastreamer2_REQUIRED_VARS Mediastreamer2_TARGET Mediastreamer2_PLUGINS_DIR) +-set(_Mediastreamer2_CACHE_VARS ${_Mediastreamer2_REQUIRED_VARS}) +- +-if(TARGET mediastreamer2) +- set(Mediastreamer2_TARGET mediastreamer2) +- get_target_property(Mediastreamer2_PLUGINS_DIR ${Mediastreamer2_TARGET} MS2_PLUGINS_DIR) +-endif() +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(Mediastreamer2 +- REQUIRED_VARS ${_Mediastreamer2_REQUIRED_VARS} +- HANDLE_COMPONENTS +-) +-mark_as_advanced(${_Mediastreamer2_CACHE_VARS}) +- +diff --git a/linphone-app/cmake/FindQtKeychain.cmake b/linphone-app/cmake/FindQtKeychain.cmake +deleted file mode 100644 +index 9b7911aa..00000000 +--- a/linphone-app/cmake/FindQtKeychain.cmake ++++ /dev/null +@@ -1,48 +0,0 @@ +-############################################################################ +-# FindQtKeychain.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# - Find the linphonecxx include files and library +-# +-# QtKeychain_FOUND - system has lib linphonecxx +-# QtKeychain_INCLUDE_DIRS - the linphonecxx include directory +-# QtKeychain_LIBRARIES - The library needed to use linphonecxx +-if(NOT TARGET ${QTKEYCHAIN_TARGET_NAME}) +- set(EXPORT_PATH ${QTKEYCHAIN_OUTPUT_DIR}) +- include(GNUInstallDirs) +- include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/${QTKEYCHAIN_TARGET_NAME}/${QTKEYCHAIN_TARGET_NAME}Config.cmake) +-endif() +- +-set(_QtKeychain_REQUIRED_VARS QtKeychain_TARGET) +-set(_QtKeychain_CACHE_VARS ${_QtKeychain_REQUIRED_VARS}) +- +-if(TARGET ${QTKEYCHAIN_TARGET_NAME}) +- set(QtKeychain_TARGET ${QTKEYCHAIN_TARGET_NAME}) +- set(QtKeychain_USE_BUILD_INTERFACE TRUE) +-endif() +- +-include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(QtKeychain +- REQUIRED_VARS ${_QtKeychain_REQUIRED_VARS} +- HANDLE_COMPONENTS +-) +-mark_as_advanced(${_QtKeychain_CACHE_VARS}) +- + +base-commit: d69e033508265f756fb47b39b76b7d589be159c0 +prerequisite-patch-id: 1df5d6e9367036cd8ce918e1f3e3d7b3661f73c2 +-- +2.45.1 + diff --git a/gnu/packages/patches/linphone-desktop-ispell.patch b/gnu/packages/patches/linphone-desktop-ispell.patch new file mode 100644 index 0000000000..679703ec02 --- /dev/null +++ b/gnu/packages/patches/linphone-desktop-ispell.patch @@ -0,0 +1,24 @@ +Retrieved from: https://git.pld-linux.org/?p=packages/linphone.git;a=blob_plain;f=linphone-ispell.patch;h=67bbae61835c7fa813edcc006b5b67901ca42abe;hb=HEAD + +--- linphone-desktop-5.2.2/linphone-app/src/components/other/spell-checker/SpellCheckerLinux.cpp.orig 2024-03-11 18:30:37.000000000 +0100 ++++ linphone-desktop-5.2.2/linphone-app/src/components/other/spell-checker/SpellCheckerLinux.cpp 2024-03-31 18:17:09.041543370 +0200 +@@ -20,7 +20,7 @@ + + + #include "SpellChecker.hpp" +-#include <libispell.h> ++#include <ISpell/libispell.h> + #include "app/paths/Paths.hpp" + #include <unistd.h> + #include <cstdio> +--- linphone-desktop-5.2.2/linphone-app/cmake_builder/linphone_package/CMakeLists.txt.orig 2024-04-01 08:06:42.275231951 +0200 ++++ linphone-desktop-5.2.2/linphone-app/cmake_builder/linphone_package/CMakeLists.txt 2024-04-01 17:44:16.670826307 +0200 +@@ -338,8 +338,6 @@ else()# Not Windows and Apple + if(ENABLE_APP_WEBVIEW) + install(FILES "${QT_PATH}/plugins/webview/libqtwebview_webengine.so" DESTINATION "plugins/webview") #Workaround : linuxdeploy doesn't deploy it + endif() +-# ISPELL +- install(DIRECTORY "${ISpell_SOURCE_DIR}/ispell_dictionaries" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}" USE_SOURCE_PERMISSIONS) + endif () + + diff --git a/gnu/packages/patches/linphone-desktop-qtkeychain.patch b/gnu/packages/patches/linphone-desktop-qtkeychain.patch new file mode 100644 index 0000000000..b19761672a --- /dev/null +++ b/gnu/packages/patches/linphone-desktop-qtkeychain.patch @@ -0,0 +1,36 @@ +Retrieved from https://git.pld-linux.org/?p=packages/linphone.git;a=blob_plain;f=linphone-qtkeychain.patch;hb=HEAD + +--- linphone-desktop-5.2.2/CMakeLists.txt.orig 2024-03-11 18:30:37.000000000 +0100 ++++ linphone-desktop-5.2.2/CMakeLists.txt 2024-03-31 17:21:32.069621299 +0200 +@@ -168,7 +168,7 @@ add_option(OPTION_LIST LIBSECRET_SUPPORT + if(WIN32) + add_cache(OPTION_LIST QTKEYCHAIN_TARGET_NAME "Override Qt5Keychain library name for a workaround with windeployqt" "EQt5Keychain") + else() +- add_cache(OPTION_LIST QTKEYCHAIN_TARGET_NAME "Override Qt5Keychain library name" "Qt5Keychain") ++ add_cache(OPTION_LIST QTKEYCHAIN_TARGET_NAME "Override Qt5Keychain library name" "qt5keychain") + endif() + if(WIN32) + add_option(OPTION_LIST ENABLE_OPENSSL_EXPORT "Enable OpenSSL deployment" YES) +--- linphone-desktop-5.2.2/linphone-app/CMakeLists.txt.orig 2024-03-31 16:15:24.501115462 +0200 ++++ linphone-desktop-5.2.2/linphone-app/CMakeLists.txt 2024-03-31 16:27:54.837050544 +0200 +@@ -118,10 +118,7 @@ set(APP_TARGETS ${LinphoneCxx_TARGET} + #################################### + + if(ENABLE_QT_KEYCHAIN) +- find_package(QtKeychain) +- if(NOT QtKeychain_FOUND) +- find_package(${QTKEYCHAIN_TARGET_NAME} CONFIG REQUIRED) +- endif() ++ find_package(Qt5Keychain) + + add_compile_definitions("ENABLE_QT_KEYCHAIN") + if(QtKeychain_USE_BUILD_INTERFACE) +@@ -197,7 +194,7 @@ if(ENABLE_VIDEO) + endif() + if( ENABLE_QT_KEYCHAIN) + if(NOT QTKEYCHAIN_TARGET_NAME) +- set(QTKEYCHAIN_TARGET_NAME "Qt5Keychain") ++ set(QTKEYCHAIN_TARGET_NAME "qt5keychain") + endif() + list(APPEND APP_TARGETS ${QTKEYCHAIN_TARGET_NAME}) + endif() diff --git a/gnu/packages/patches/linphone-desktop-without-sdk.patch b/gnu/packages/patches/linphone-desktop-without-sdk.patch deleted file mode 100644 index ef61b86707..0000000000 --- a/gnu/packages/patches/linphone-desktop-without-sdk.patch +++ /dev/null @@ -1,214 +0,0 @@ -From cfdf6d1c2051d6a20d0cbb94d81fe398f70dea4d Mon Sep 17 00:00:00 2001 -From: Raghav Gururajan <rg@raghavgururajan.name> -Date: Sun, 21 Mar 2021 21:13:53 -0400 -Subject: [PATCH] [PATCH]: Fix building from git. - ---- - CMakeLists.txt | 73 +------------------ - linphone-app/CMakeLists.txt | 12 +-- - .../cmake_builder/additional_steps.cmake | 2 +- - .../linphone_package/CMakeLists.txt | 38 ---------- - linphone-app/linphoneqt_version.cmake | 1 + - linphone-app/src/config.h.cmake | 1 + - 6 files changed, 6 insertions(+), 121 deletions(-) - create mode 100644 linphone-app/linphoneqt_version.cmake - -diff -ru a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100 -+++ b/CMakeLists.txt 2023-04-08 16:00:45.487927870 +0200 -@@ -51,23 +51,6 @@ - - set(CMAKE_CXX_STANDARD 11) - --# Prepare gobal CMAKE configuration specific to the current project --set(SDK_BUILD_DIR "${CMAKE_BINARY_DIR}/WORK") # SDK build in WORK. Keep all in it. --set(LINPHONE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/linphone-sdk/desktop") -- --set(APPLICATION_OUTPUT_DIR "${CMAKE_BINARY_DIR}/OUTPUT") -- --set(CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}/include${PREFIX_PATH}") --if(WIN32) -- set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}") --elseif(APPLE) -- set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_NAME}.app/Contents/Frameworks") --else() -- set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}") --endif() --string(REPLACE ";" "|" PREFIX_PATH "${CMAKE_PREFIX_PATH}") --#set(PREFIX_PATH "${LINPHONE_OUTPUT_DIR}|${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}") -- - # Avoid cmake warning if CMP0071 is not set. - if (POLICY CMP0071) - cmake_policy(SET CMP0071 NEW) -@@ -177,10 +160,8 @@ - endif() - list(APPEND APP_OPTIONS "-DENABLE_RELATIVE_PREFIX=${ENABLE_RELATIVE_PREFIX}") - --list(APPEND APP_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}") - list(APPEND APP_OPTIONS "-DENABLE_QT_GL=${ENABLE_VIDEO}")#Activate on video - --include(ExternalProject) - set(PROJECT_BUILD_COMMAND "") - if(CMAKE_BUILD_PARALLEL_LEVEL) - list(APPEND APP_OPTIONS "-DCMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}") -@@ -195,7 +176,6 @@ - endif() - endif() - if(UNIX AND NOT APPLE) -- set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/lib64:$ORIGIN/../lib64:$ORIGIN/lib:$ORIGIN/../lib:${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}") - list(APPEND APP_OPTIONS "-DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH}") - elseif(APPLE) - list(APPEND APP_OPTIONS "-DENABLE_FAT_BINARY=ON") #Disable XCFrameworks as it is not supported. -@@ -222,28 +202,9 @@ - - - if(NOT LINPHONE_QT_ONLY) --ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk" -- SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-sdk" -- INSTALL_DIR "${LINPHONE_OUTPUT_DIR}" -- STAMP_DIR "${SDK_BUILD_DIR}/stamp" -- BINARY_DIR "${SDK_BUILD_DIR}" -- STEP_TARGETS build -- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND} -- INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time." -- LIST_SEPARATOR | # Use the alternate list separator -- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH} -- BUILD_ALWAYS NO #${DO_BUILD} --) --ExternalProject_Add_Step(sdk force_build -- COMMENT "Forcing build for 'desktop'" -- DEPENDEES configure -- DEPENDERS build -- ALWAYS 1 --) - endif() - include(FindPkgConfig) - --set(APP_DEPENDS sdk) - find_package(Qt5 5.10 COMPONENTS Core REQUIRED) - - if ( NOT Qt5_FOUND ) -@@ -257,62 +218,5 @@ - find_package(Mediastreamer2 CONFIG QUIET) - find_package(ortp CONFIG QUIET) - --if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR NOT (belcard_FOUND) OR NOT (Mediastreamer2_FOUND) OR NOT (ortp_FOUND) OR FORCE_APP_EXTERNAL_PROJECTS) -- message("Projects are set as External projects. You can start building them by using for example : cmake --build . --target install") -- ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphone-app" -- SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app" -- INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" -- BINARY_DIR "${CMAKE_BINARY_DIR}/linphone-app" -- DEPENDS ${APP_DEPENDS} -- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND} -- INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time." -- LIST_SEPARATOR | # Use the alternate list separator -- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH} -- # ${APP_OPTIONS} -- BUILD_ALWAYS ON -- ) -- if( ENABLE_BUILD_APP_PLUGINS) -- ExternalProject_Add(app-plugins PREFIX "${CMAKE_BINARY_DIR}/plugins-app" -- SOURCE_DIR "${CMAKE_SOURCE_DIR}/plugins" -- INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" -- BINARY_DIR "${CMAKE_BINARY_DIR}/plugins-app" -- DEPENDS linphone-qt -- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND} -- INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time." -- LIST_SEPARATOR | # Use the alternate list separator -- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH} -- ) -- endif() -- install(CODE "message(STATUS Running install)") -- set(AUTO_REGENERATION auto_regeneration) -- if( ENABLE_BUILD_APP_PLUGINS) -- add_custom_target(${AUTO_REGENERATION} ALL -- COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR} -- DEPENDS app-plugins) -- else() -- add_custom_target(${AUTO_REGENERATION} ALL -- COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR} -- DEPENDS linphone-qt) -- endif() --else() -- message("Adding Linphone Desktop in an IDE-friendly state") -- set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}") -- add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app) -- if(NOT LINPHONE_QT_ONLY) -- add_dependencies(app-library ${APP_DEPENDS}) -- endif() -- if( ENABLE_BUILD_APP_PLUGINS) -- add_subdirectory(${CMAKE_SOURCE_DIR}/plugins "plugins-app") -- endif() --endif() --ExternalProject_Add(linphone-qt-only PREFIX "${CMAKE_BINARY_DIR}/linphone-app" -- SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app" -- INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" -- BINARY_DIR "${CMAKE_BINARY_DIR}/linphone-app" -- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND} --# INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time." -- LIST_SEPARATOR | # Use the alternate list separator -- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH} -- EXCLUDE_FROM_ALL ON -- #BUILD_ALWAYS ON --) -+message("Adding Linphone Desktop in an IDE-friendly state") -+add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app) -diff -ru a/linphone-app/cmake_builder/additional_steps.cmake ./linphone-app/cmake_builder/additional_steps.cmake ---- a/linphone-app/cmake_builder/additional_steps.cmake 1970-01-01 01:00:01.000000000 +0100 -+++ ./linphone-app/cmake_builder/additional_steps.cmake 2023-04-08 16:02:33.005843116 +0200 -@@ -61,7 +61,7 @@ - SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/linphone_package" - DOWNLOAD_COMMAND "" - CMAKE_GENERATOR ${CMAKE_GENERATOR} -- CMAKE_ARGS ${LINPHONE_BUILDER_EP_ARGS} -DCMAKE_INSTALL_PREFIX=${LINPHONE_BUILDER_WORK_DIR}/PACKAGE -DTOOLS_DIR=${CMAKE_BINARY_DIR}/programs -DLINPHONE_OUTPUT_DIR=${CMAKE_INSTALL_PREFIX} -DLINPHONE_DESKTOP_DIR=${CMAKE_CURRENT_LIST_DIR}/.. -DLINPHONE_SOURCE_DIR=${EP_linphone_SOURCE_DIR} ${ENABLE_VARIABLES} -DLINPHONE_BUILDER_SIGNING_IDENTITY=${LINPHONE_BUILDER_SIGNING_IDENTITY} -+ CMAKE_ARGS ${LINPHONE_BUILDER_EP_ARGS} -DCMAKE_INSTALL_PREFIX=${LINPHONE_BUILDER_WORK_DIR}/PACKAGE -DTOOLS_DIR=${CMAKE_BINARY_DIR}/programs -DLINPHONE_DESKTOP_DIR=${CMAKE_CURRENT_LIST_DIR}/.. -DLINPHONE_SOURCE_DIR=${EP_linphone_SOURCE_DIR} ${ENABLE_VARIABLES} -DLINPHONE_BUILDER_SIGNING_IDENTITY=${LINPHONE_BUILDER_SIGNING_IDENTITY} - ) - endif () - endif () -diff -ru a/linphone-app/CMakeLists.txt ./linphone-app/CMakeLists.txt ---- a/linphone-app/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100 -+++ ./linphone-app/CMakeLists.txt 2023-04-08 16:01:32.699012115 +0200 -@@ -21,17 +21,8 @@ - ################################################################################ - cmake_minimum_required(VERSION 3.1) - -+include(linphoneqt_version.cmake) - find_package(bctoolbox CONFIG) --set(FULL_VERSION ) --bc_compute_full_version(FULL_VERSION) --set(version_major ) --set(version_minor ) --set(version_patch ) --set(identifiers ) --set(metadata ) --bc_parse_full_version("${FULL_VERSION}" version_major version_minor version_patch identifiers metadata) -- --project(linphoneqt VERSION "${version_major}.${version_minor}.${version_patch}") - - - if(ENABLE_BUILD_VERBOSE) -@@ -51,7 +42,6 @@ - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) - endif() - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake") --list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/cmake") - - set(APP_LIBRARY app-library) - set(APP_PLUGIN app-plugin) -diff --git a/linphone-app/linphoneqt_version.cmake b/linphone-app/linphoneqt_version.cmake -new file mode 100644 -index 00000000..a85d3455 ---- /dev/null -+++ b/linphone-app/linphoneqt_version.cmake -@@ -0,0 +1,1 @@ -+project(linphoneqt VERSION ${GUIX-SET-VERSION}) -\ No newline at end of file -diff -ru a/linphone-app/src/config.h.cmake b/linphone-app/src/config.h.cmake ---- a/linphone-app/src/config.h.cmake 1970-01-01 01:00:01.000000000 +0100 -+++ b/linphone-app/src/config.h.cmake 2023-04-08 16:05:33.458349986 +0200 -@@ -32,3 +32,4 @@ - #cmakedefine EXECUTABLE_NAME "${EXECUTABLE_NAME}" - #cmakedefine MSPLUGINS_DIR "${MSPLUGINS_DIR}" - #cmakedefine ENABLE_APP_WEBVIEW "${ENABLE_APP_WEBVIEW}" -+#define LINPHONE_QT_GIT_VERSION "${PROJECT_VERSION}" -\ No newline at end of file diff --git a/gnu/packages/patches/linuxdcpp-openssl-1.1.patch b/gnu/packages/patches/linuxdcpp-openssl-1.1.patch deleted file mode 100644 index 6f9912afd8..0000000000 --- a/gnu/packages/patches/linuxdcpp-openssl-1.1.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- a/dcpp/CryptoManager.cpp.orig 2011-04-17 17:57:09 UTC -+++ b/dcpp/CryptoManager.cpp -@@ -107,12 +107,20 @@ CryptoManager::CryptoManager() - }; - - if(dh) { -- dh->p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), 0); -- dh->g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), 0); -+ BIGNUM *p, *g; - -- if (!dh->p || !dh->g) { -+ p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), 0); -+ g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), 0); -+ -+ if (!p || !g) { - dh.reset(); - } else { -+#if OPENSSL_VERSION_NUMBER < 0x10100005L -+ dh->p = p; -+ dh->g = g; -+#else -+ DH_set0_pqg(dh, p, NULL, g); -+#endif - SSL_CTX_set_options(serverContext, SSL_OP_SINGLE_DH_USE); - SSL_CTX_set_options(serverVerContext, SSL_OP_SINGLE_DH_USE); - SSL_CTX_set_tmp_dh(serverContext, (DH*)dh); diff --git a/gnu/packages/patches/lxsession-potfiles-ignore.patch b/gnu/packages/patches/lxsession-potfiles-ignore.patch new file mode 100644 index 0000000000..ddf45cf506 --- /dev/null +++ b/gnu/packages/patches/lxsession-potfiles-ignore.patch @@ -0,0 +1,15 @@ +diff --git a/po/POTFILES.skip b/po/POTFILES.skip +index 353b0ec..adbe1d6 100644 +--- a/po/POTFILES.skip ++++ b/po/POTFILES.skip +@@ -1,7 +1,10 @@ + # Autogenerated files with translatable strings. + lxsession-default-apps/main.c + lxsession-default-apps/combobox.c ++lxpolkit/main.c ++lxsession/app.c + # This is a source file for configure, output will be translated instead. + data/lxpolkit.desktop.in.in + # bug of intltool with automake 1.15 + sub/data/lxpolkit.desktop.in ++data/lxpolkit.desktop.in diff --git a/gnu/packages/patches/mediastreamer2-cmake-findgsm.patch b/gnu/packages/patches/mediastreamer2-cmake-findgsm.patch new file mode 100644 index 0000000000..7b48e310b5 --- /dev/null +++ b/gnu/packages/patches/mediastreamer2-cmake-findgsm.patch @@ -0,0 +1,63 @@ +Retrieved from: https://git.pld-linux.org/?p=packages/mediastreamer.git;a=blob_plain;f=mediastreamer-cmake-find.patch;h=4f1e3577f43bf791ed5cdb180ca455f919b80c8d;hb=HEAD + +--- mediastreamer2-5.3.29/cmake/FindGSM.cmake.orig 2024-02-21 12:02:03.000000000 +0100 ++++ mediastreamer2-5.3.29/cmake/FindGSM.cmake 2024-03-09 20:16:25.064077414 +0100 +@@ -58,7 +58,7 @@ else() + set(_GSM_ROOT_PATHS ${CMAKE_INSTALL_PREFIX}) + + find_path(_GSM_INCLUDE_DIRS +- NAMES gsm/gsm.h ++ NAMES gsm.h gsm/gsm.h + HINTS ${_GSM_ROOT_PATHS} + PATH_SUFFIXES include + ) +--- mediastreamer2-5.3.29/cmake/FindDav1d.cmake.orig 2024-02-21 12:02:03.000000000 +0100 ++++ mediastreamer2-5.3.29/cmake/FindDav1d.cmake 2024-03-09 20:44:17.671682787 +0100 +@@ -65,17 +65,17 @@ else() + PATH_SUFFIXES bin lib lib/Win32 + ) + +- if(_Dav1d_INCLUDE_DIRS AND _Dav1d_LIBRARY) ++ if(Dav1d_INCLUDE_DIRS AND Dav1d_LIBRARY) + add_library(libdav1d UNKNOWN IMPORTED) + if(WIN32) + set_target_properties(libdav1d PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_Dav1d_INCLUDE_DIRS}" +- IMPORTED_IMPLIB "${_Dav1d_LIBRARY}" ++ INTERFACE_INCLUDE_DIRECTORIES "${Dav1d_INCLUDE_DIRS}" ++ IMPORTED_IMPLIB "${Dav1d_LIBRARY}" + ) + else() + set_target_properties(libdav1d PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_Dav1d_INCLUDE_DIRS}" +- IMPORTED_LOCATION "${_Dav1d_LIBRARY}" ++ INTERFACE_INCLUDE_DIRECTORIES "${Dav1d_INCLUDE_DIRS}" ++ IMPORTED_LOCATION "${Dav1d_LIBRARY}" + ) + endif() + +--- mediastreamer2-5.3.29/cmake/FindAom.cmake.orig 2024-02-21 12:02:03.000000000 +0100 ++++ mediastreamer2-5.3.29/cmake/FindAom.cmake 2024-03-09 20:45:16.931361750 +0100 +@@ -65,17 +65,17 @@ else() + PATH_SUFFIXES bin lib lib/Win32 + ) + +- if(_Aom_INCLUDE_DIRS AND _Aom_LIBRARY) ++ if(Aom_INCLUDE_DIRS AND Aom_LIBRARY) + add_library(aom UNKNOWN IMPORTED) + if(WIN32) + set_target_properties(aom PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_Aom_INCLUDE_DIRS}" +- IMPORTED_IMPLIB "${_Aom_LIBRARY}" ++ INTERFACE_INCLUDE_DIRECTORIES "${Aom_INCLUDE_DIRS}" ++ IMPORTED_IMPLIB "${Aom_LIBRARY}" + ) + else() + set_target_properties(aom PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_Aom_INCLUDE_DIRS}" +- IMPORTED_LOCATION "${_Aom_LIBRARY}" ++ INTERFACE_INCLUDE_DIRECTORIES "${Aom_INCLUDE_DIRS}" ++ IMPORTED_LOCATION "${Aom_LIBRARY}" + ) + endif() + diff --git a/gnu/packages/patches/mswebrtc-b64-refactor.patch b/gnu/packages/patches/mswebrtc-b64-refactor.patch new file mode 100644 index 0000000000..af4a1e1682 --- /dev/null +++ b/gnu/packages/patches/mswebrtc-b64-refactor.patch @@ -0,0 +1,949 @@ +From 17e72f00831a36da387ceafe7f3076ffa8f66aba Mon Sep 17 00:00:00 2001 +From: Clemence Him <clemence.him@belledonne-communications.com> +Date: Fri, 22 Sep 2023 14:28:02 +0200 +Subject: [PATCH] Base64 functions refactoring + +--- + aec.c | 781 +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 394 insertions(+), 387 deletions(-) + +diff --git a/aec.c b/aec.c +index 271f370..995f655 100644 +--- a/aec.c ++++ b/aec.c +@@ -24,19 +24,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + #include "mediastreamer2/msfilter.h" + #include "mediastreamer2/msticker.h" + #ifdef BUILD_AEC +-#include "echo_cancellation.h" + #include "aec_splitting_filter.h" ++#include "echo_cancellation.h" + #endif + #ifdef BUILD_AECM + #include "echo_control_mobile.h" + #endif +-#include "ortp/b64.h" + + #ifdef _WIN32 + #include <malloc.h> /* for alloca */ + #endif + +-//#define EC_DUMP 1 ++// #define EC_DUMP 1 + #ifdef ANDROID + #define EC_DUMP_PREFIX "/sdcard" + #else +@@ -48,466 +47,485 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + static const float smooth_factor = 0.05f; + static const int framesize = 80; + +- + typedef enum _WebRTCAECType { +- WebRTCAECTypeNormal, +- WebRTCAECTypeMobile ++ WebRTCAECTypeNormal, ++ WebRTCAECTypeMobile + } WebRTCAECType; + + typedef struct WebRTCAECState { +- void *aecInst; +- MSBufferizer delayed_ref; +- MSFlowControlledBufferizer ref; +- MSBufferizer echo; +- int framesize; +- int samplerate; +- int delay_ms; +- int nominal_ref_samples; +- char *state_str; ++ void *aecInst; ++ MSBufferizer delayed_ref; ++ MSFlowControlledBufferizer ref; ++ MSBufferizer echo; ++ int framesize; ++ int samplerate; ++ int delay_ms; ++ int nominal_ref_samples; ++ char *state_str; + #ifdef EC_DUMP +- FILE *echofile; +- FILE *reffile; +- FILE *cleanfile; ++ FILE *echofile; ++ FILE *reffile; ++ FILE *cleanfile; + #endif +- bool_t echostarted; +- bool_t bypass_mode; +- bool_t using_zeroes; +- WebRTCAECType aec_type; ++ bool_t echostarted; ++ bool_t bypass_mode; ++ bool_t using_zeroes; ++ WebRTCAECType aec_type; + #ifdef BUILD_AEC +- MSWebRtcAecSplittingFilter *splitting_filter; ++ MSWebRtcAecSplittingFilter *splitting_filter; + #endif + } WebRTCAECState; + + static void webrtc_aecgeneric_init(MSFilter *f, WebRTCAECType aec_type) { +- WebRTCAECState *s = (WebRTCAECState *) ms_new0(WebRTCAECState, 1); +- +- s->samplerate = 8000; +- ms_bufferizer_init(&s->delayed_ref); +- ms_bufferizer_init(&s->echo); +- ms_flow_controlled_bufferizer_init(&s->ref, f, s->samplerate, 1); +- s->delay_ms = 0; +- s->aecInst = NULL; +- s->framesize = framesize; +- s->state_str = NULL; +- s->using_zeroes = FALSE; +- s->echostarted = FALSE; +- s->bypass_mode = FALSE; +- s->aec_type = aec_type; ++ WebRTCAECState *s = (WebRTCAECState *)ms_new0(WebRTCAECState, 1); ++ ++ s->samplerate = 8000; ++ ms_bufferizer_init(&s->delayed_ref); ++ ms_bufferizer_init(&s->echo); ++ ms_flow_controlled_bufferizer_init(&s->ref, f, s->samplerate, 1); ++ s->delay_ms = 0; ++ s->aecInst = NULL; ++ s->framesize = framesize; ++ s->state_str = NULL; ++ s->using_zeroes = FALSE; ++ s->echostarted = FALSE; ++ s->bypass_mode = FALSE; ++ s->aec_type = aec_type; + + #ifdef EC_DUMP +- { +- char *fname = ms_strdup_printf("%s/mswebrtcaec-%p-echo.raw", EC_DUMP_PREFIX, f); +- s->echofile = fopen(fname, "w"); +- ms_free(fname); +- fname = ms_strdup_printf("%s/mswebrtcaec-%p-ref.raw", EC_DUMP_PREFIX, f); +- s->reffile = fopen(fname, "w"); +- ms_free(fname); +- fname = ms_strdup_printf("%s/mswebrtcaec-%p-clean.raw", EC_DUMP_PREFIX, f); +- s->cleanfile = fopen(fname, "w"); +- ms_free(fname); +- } ++ { ++ char *fname = ++ ms_strdup_printf("%s/mswebrtcaec-%p-echo.raw", EC_DUMP_PREFIX, f); ++ s->echofile = fopen(fname, "w"); ++ ms_free(fname); ++ fname = ms_strdup_printf("%s/mswebrtcaec-%p-ref.raw", EC_DUMP_PREFIX, f); ++ s->reffile = fopen(fname, "w"); ++ ms_free(fname); ++ fname = ms_strdup_printf("%s/mswebrtcaec-%p-clean.raw", EC_DUMP_PREFIX, f); ++ s->cleanfile = fopen(fname, "w"); ++ ms_free(fname); ++ } + #endif + +- f->data = s; ++ f->data = s; + } + + #ifdef BUILD_AEC + static void webrtc_aec_init(MSFilter *f) { +- webrtc_aecgeneric_init(f, WebRTCAECTypeNormal); ++ webrtc_aecgeneric_init(f, WebRTCAECTypeNormal); + } + #endif + + #ifdef BUILD_AECM + static void webrtc_aecm_init(MSFilter *f) { +- webrtc_aecgeneric_init(f, WebRTCAECTypeMobile); ++ webrtc_aecgeneric_init(f, WebRTCAECTypeMobile); + } + #endif + + static void webrtc_aec_uninit(MSFilter *f) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- if (s->state_str) ms_free(s->state_str); +- ms_bufferizer_uninit(&s->delayed_ref); ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ if (s->state_str) ++ ms_free(s->state_str); ++ ms_bufferizer_uninit(&s->delayed_ref); + #ifdef EC_DUMP +- if (s->echofile) +- fclose(s->echofile); +- if (s->reffile) +- fclose(s->reffile); ++ if (s->echofile) ++ fclose(s->echofile); ++ if (s->reffile) ++ fclose(s->reffile); + #endif +- ms_free(s); ++ ms_free(s); + } + + static void configure_flow_controlled_bufferizer(WebRTCAECState *s) { +- ms_flow_controlled_bufferizer_set_samplerate(&s->ref, s->samplerate); +- ms_flow_controlled_bufferizer_set_max_size_ms(&s->ref, s->delay_ms); +- ms_flow_controlled_bufferizer_set_granularity_ms(&s->ref, (s->framesize * 1000) / s->samplerate); ++ ms_flow_controlled_bufferizer_set_samplerate(&s->ref, s->samplerate); ++ ms_flow_controlled_bufferizer_set_max_size_ms(&s->ref, s->delay_ms); ++ ms_flow_controlled_bufferizer_set_granularity_ms( ++ &s->ref, (s->framesize * 1000) / s->samplerate); + } + + static void webrtc_aec_preprocess(MSFilter *f) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; + #ifdef BUILD_AEC +- AecConfig aec_config; ++ AecConfig aec_config; + #endif + #ifdef BUILD_AECM +- AecmConfig aecm_config; +- int error_code; ++ AecmConfig aecm_config; ++ int error_code; + #endif +- int delay_samples = 0; +- mblk_t *m; ++ int delay_samples = 0; ++ mblk_t *m; + +- s->echostarted = FALSE; +- delay_samples = s->delay_ms * s->samplerate / 1000; +- s->framesize=(framesize*s->samplerate)/8000; +- ms_message("Initializing WebRTC echo canceler with framesize=%i, delay_ms=%i, delay_samples=%i", s->framesize, s->delay_ms, delay_samples); +- configure_flow_controlled_bufferizer(s); ++ s->echostarted = FALSE; ++ delay_samples = s->delay_ms * s->samplerate / 1000; ++ s->framesize = (framesize * s->samplerate) / 8000; ++ ms_message("Initializing WebRTC echo canceler with framesize=%i, " ++ "delay_ms=%i, delay_samples=%i", ++ s->framesize, s->delay_ms, delay_samples); ++ configure_flow_controlled_bufferizer(s); + + #ifdef BUILD_AEC +- if (s->aec_type == WebRTCAECTypeNormal) { +- if ((s->aecInst = WebRtcAec_Create()) == NULL) { +- s->bypass_mode = TRUE; +- ms_error("WebRtcAec_Create(): error, entering bypass mode"); +- return; +- } +- if ((WebRtcAec_Init(s->aecInst, MIN(48000, s->samplerate), s->samplerate)) < 0) { +- ms_error("WebRtcAec_Init(): WebRTC echo canceller does not support %d samplerate", s->samplerate); +- s->bypass_mode = TRUE; +- ms_error("Entering bypass mode"); +- return; +- } +- aec_config.nlpMode = kAecNlpAggressive; +- aec_config.skewMode = kAecFalse; +- aec_config.metricsMode = kAecFalse; +- aec_config.delay_logging = kAecFalse; +- if (WebRtcAec_set_config(s->aecInst, aec_config) != 0) { +- ms_error("WebRtcAec_set_config(): failed."); +- } +- } ++ if (s->aec_type == WebRTCAECTypeNormal) { ++ if ((s->aecInst = WebRtcAec_Create()) == NULL) { ++ s->bypass_mode = TRUE; ++ ms_error("WebRtcAec_Create(): error, entering bypass mode"); ++ return; ++ } ++ if ((WebRtcAec_Init(s->aecInst, MIN(48000, s->samplerate), s->samplerate)) < ++ 0) { ++ ms_error("WebRtcAec_Init(): WebRTC echo canceller does not support %d " ++ "samplerate", ++ s->samplerate); ++ s->bypass_mode = TRUE; ++ ms_error("Entering bypass mode"); ++ return; ++ } ++ aec_config.nlpMode = kAecNlpAggressive; ++ aec_config.skewMode = kAecFalse; ++ aec_config.metricsMode = kAecFalse; ++ aec_config.delay_logging = kAecFalse; ++ if (WebRtcAec_set_config(s->aecInst, aec_config) != 0) { ++ ms_error("WebRtcAec_set_config(): failed."); ++ } ++ } + #endif + #ifdef BUILD_AECM +- if (s->aec_type == WebRTCAECTypeMobile) { +- if ((s->aecInst = WebRtcAecm_Create()) == NULL) { +- s->bypass_mode = TRUE; +- ms_error("WebRtcAecm_Create(): error, entering bypass mode"); +- return; +- } +- if ((error_code = WebRtcAecm_Init(s->aecInst, s->samplerate)) < 0) { +- if (error_code == AECM_BAD_PARAMETER_ERROR) { +- ms_error("WebRtcAecm_Init(): WebRTC echo canceller does not support %d samplerate", s->samplerate); +- } +- s->bypass_mode = TRUE; +- ms_error("Entering bypass mode"); +- return; +- } +- aecm_config.cngMode = TRUE; +- aecm_config.echoMode = 3; +- if (WebRtcAecm_set_config(s->aecInst, aecm_config)!=0){ +- ms_error("WebRtcAecm_set_config(): failed."); +- } +- } ++ if (s->aec_type == WebRTCAECTypeMobile) { ++ if ((s->aecInst = WebRtcAecm_Create()) == NULL) { ++ s->bypass_mode = TRUE; ++ ms_error("WebRtcAecm_Create(): error, entering bypass mode"); ++ return; ++ } ++ if ((error_code = WebRtcAecm_Init(s->aecInst, s->samplerate)) < 0) { ++ if (error_code == AECM_BAD_PARAMETER_ERROR) { ++ ms_error("WebRtcAecm_Init(): WebRTC echo canceller does not support %d " ++ "samplerate", ++ s->samplerate); ++ } ++ s->bypass_mode = TRUE; ++ ms_error("Entering bypass mode"); ++ return; ++ } ++ aecm_config.cngMode = TRUE; ++ aecm_config.echoMode = 3; ++ if (WebRtcAecm_set_config(s->aecInst, aecm_config) != 0) { ++ ms_error("WebRtcAecm_set_config(): failed."); ++ } ++ } + #endif + +- /* fill with zeroes for the time of the delay*/ +- m = allocb(delay_samples * 2, 0); +- m->b_wptr += delay_samples * 2; +- ms_bufferizer_put(&s->delayed_ref, m); +- s->nominal_ref_samples = delay_samples; ++ /* fill with zeroes for the time of the delay*/ ++ m = allocb(delay_samples * 2, 0); ++ m->b_wptr += delay_samples * 2; ++ ms_bufferizer_put(&s->delayed_ref, m); ++ s->nominal_ref_samples = delay_samples; + } + + /* inputs[0]= reference signal from far end (sent to soundcard) + * inputs[1]= near speech & echo signal (read from soundcard) + * outputs[0]= is a copy of inputs[0] to be sent to soundcard + * outputs[1]= near end speech, echo removed - towards far end +-*/ ++ */ + static void webrtc_aec_process(MSFilter *f) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- int nbytes = s->framesize * sizeof(int16_t); +- mblk_t *refm; +- int16_t *ref, *echo; +- int nbands = 1; +- int bandsize = s->framesize; +- +- if (s->bypass_mode) { +- while ((refm = ms_queue_get(f->inputs[0])) != NULL) { +- ms_queue_put(f->outputs[0], refm); +- } +- while ((refm = ms_queue_get(f->inputs[1])) != NULL) { +- ms_queue_put(f->outputs[1], refm); +- } +- return; +- } +- +- if (f->inputs[0] != NULL) { +- if (s->echostarted) { +- while ((refm = ms_queue_get(f->inputs[0])) != NULL) { +- mblk_t *cp=dupmsg(refm); +- ms_bufferizer_put(&s->delayed_ref,cp); +- ms_flow_controlled_bufferizer_put(&s->ref,refm); +- } +- } else { +- ms_warning("Getting reference signal but no echo to synchronize on."); +- ms_queue_flush(f->inputs[0]); +- } +- } +- +- ms_bufferizer_put_from_queue(&s->echo, f->inputs[1]); +- +- ref = (int16_t *) alloca(nbytes); +- echo = (int16_t *) alloca(nbytes); ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ int nbytes = s->framesize * sizeof(int16_t); ++ mblk_t *refm; ++ int16_t *ref, *echo; ++ int nbands = 1; ++ int bandsize = s->framesize; ++ ++ if (s->bypass_mode) { ++ while ((refm = ms_queue_get(f->inputs[0])) != NULL) { ++ ms_queue_put(f->outputs[0], refm); ++ } ++ while ((refm = ms_queue_get(f->inputs[1])) != NULL) { ++ ms_queue_put(f->outputs[1], refm); ++ } ++ return; ++ } ++ ++ if (f->inputs[0] != NULL) { ++ if (s->echostarted) { ++ while ((refm = ms_queue_get(f->inputs[0])) != NULL) { ++ mblk_t *cp = dupmsg(refm); ++ ms_bufferizer_put(&s->delayed_ref, cp); ++ ms_flow_controlled_bufferizer_put(&s->ref, refm); ++ } ++ } else { ++ ms_warning("Getting reference signal but no echo to synchronize on."); ++ ms_queue_flush(f->inputs[0]); ++ } ++ } ++ ++ ms_bufferizer_put_from_queue(&s->echo, f->inputs[1]); ++ ++ ref = (int16_t *)alloca(nbytes); ++ echo = (int16_t *)alloca(nbytes); + #ifdef BUILD_AEC +- if (s->aec_type == WebRTCAECTypeNormal) { +- if (s->samplerate > 16000) { +- nbands = s->samplerate / 16000; +- bandsize = 160; +- } +- if (!s->splitting_filter) { +- s->splitting_filter = mswebrtc_aec_splitting_filter_create(nbands, bandsize); +- } +- } ++ if (s->aec_type == WebRTCAECTypeNormal) { ++ if (s->samplerate > 16000) { ++ nbands = s->samplerate / 16000; ++ bandsize = 160; ++ } ++ if (!s->splitting_filter) { ++ s->splitting_filter = ++ mswebrtc_aec_splitting_filter_create(nbands, bandsize); ++ } ++ } + #endif +- while (ms_bufferizer_read(&s->echo, (uint8_t *)echo, (size_t)nbytes) >= (size_t)nbytes) { +- mblk_t *oecho = allocb(nbytes, 0); +- int avail; +- int avail_samples; +- +- if (!s->echostarted) s->echostarted = TRUE; +- if ((avail = ms_bufferizer_get_avail(&s->delayed_ref)) < ((s->nominal_ref_samples * 2) + nbytes)) { +- /*we don't have enough to read in a reference signal buffer, inject silence instead*/ +- refm = allocb(nbytes, 0); +- memset(refm->b_wptr, 0, nbytes); +- refm->b_wptr += nbytes; +- ms_bufferizer_put(&s->delayed_ref, refm); +- /* +- * However, we don't inject this silence buffer to the sound card, in order to break the following bad loop: +- * - the sound playback filter detects it has too many pending samples, then triggers an event to request samples to be dropped upstream. +- * - the upstream MSFlowControl filter is requested to drop samples, which it starts to do. +- * - necessarily shortly after the AEC goes into a situation where it has not enough reference samples while processing an audio buffer from mic. +- * - if the AEC injects a silence buffer as output, then it will RECREATE a situation where the sound playback filter has too many pending samples. +- * That's why we should not do this. +- * By not doing this, we will create a discrepancy between what we really injected to the soundcard, and what we told to the +- * echo canceller about the samples we injected. This shifts the echo. The echo canceller will re-converge quickly to take into +- * account the situation. +- * +- */ +- //ms_queue_put(f->outputs[0], dupmsg(refm)); +- if (!s->using_zeroes) { +- ms_warning("Not enough ref samples, using zeroes"); +- s->using_zeroes = TRUE; +- } +- } else { +- if (s->using_zeroes) { +- ms_message("Samples are back."); +- s->using_zeroes = FALSE; +- } +- /* read from our no-delay buffer and output */ +- refm = allocb(nbytes, 0); +- if (ms_flow_controlled_bufferizer_read(&s->ref, refm->b_wptr, nbytes) == 0) { +- ms_fatal("Should never happen"); +- } +- refm->b_wptr += nbytes; +- ms_queue_put(f->outputs[0], refm); +- } +- +- /*now read a valid buffer of delayed ref samples*/ +- if (ms_bufferizer_read(&s->delayed_ref, (uint8_t *)ref, nbytes) == 0) { +- ms_fatal("Should never happen"); +- } +- avail -= nbytes; +- avail_samples = avail / 2; ++ while (ms_bufferizer_read(&s->echo, (uint8_t *)echo, (size_t)nbytes) >= ++ (size_t)nbytes) { ++ mblk_t *oecho = allocb(nbytes, 0); ++ int avail; ++ int avail_samples; ++ ++ if (!s->echostarted) ++ s->echostarted = TRUE; ++ if ((avail = ms_bufferizer_get_avail(&s->delayed_ref)) < ++ ((s->nominal_ref_samples * 2) + nbytes)) { ++ /*we don't have enough to read in a reference signal buffer, inject ++ * silence instead*/ ++ refm = allocb(nbytes, 0); ++ memset(refm->b_wptr, 0, nbytes); ++ refm->b_wptr += nbytes; ++ ms_bufferizer_put(&s->delayed_ref, refm); ++ /* ++ * However, we don't inject this silence buffer to the sound card, in ++ * order to break the following bad loop: ++ * - the sound playback filter detects it has too many pending samples, ++ * then triggers an event to request samples to be dropped upstream. ++ * - the upstream MSFlowControl filter is requested to drop samples, which ++ * it starts to do. ++ * - necessarily shortly after the AEC goes into a situation where it has ++ * not enough reference samples while processing an audio buffer from mic. ++ * - if the AEC injects a silence buffer as output, then it will RECREATE ++ * a situation where the sound playback filter has too many pending ++ * samples. That's why we should not do this. By not doing this, we will ++ * create a discrepancy between what we really injected to the soundcard, ++ * and what we told to the echo canceller about the samples we injected. ++ * This shifts the echo. The echo canceller will re-converge quickly to ++ * take into account the situation. ++ * ++ */ ++ // ms_queue_put(f->outputs[0], dupmsg(refm)); ++ if (!s->using_zeroes) { ++ ms_warning("Not enough ref samples, using zeroes"); ++ s->using_zeroes = TRUE; ++ } ++ } else { ++ if (s->using_zeroes) { ++ ms_message("Samples are back."); ++ s->using_zeroes = FALSE; ++ } ++ /* read from our no-delay buffer and output */ ++ refm = allocb(nbytes, 0); ++ if (ms_flow_controlled_bufferizer_read(&s->ref, refm->b_wptr, nbytes) == ++ 0) { ++ ms_fatal("Should never happen"); ++ } ++ refm->b_wptr += nbytes; ++ ms_queue_put(f->outputs[0], refm); ++ } ++ ++ /*now read a valid buffer of delayed ref samples*/ ++ if (ms_bufferizer_read(&s->delayed_ref, (uint8_t *)ref, nbytes) == 0) { ++ ms_fatal("Should never happen"); ++ } ++ avail -= nbytes; ++ avail_samples = avail / 2; + + #ifdef EC_DUMP +- if (s->reffile) +- fwrite(ref, nbytes, 1, s->reffile); +- if (s->echofile) +- fwrite(echo, nbytes, 1, s->echofile); ++ if (s->reffile) ++ fwrite(ref, nbytes, 1, s->reffile); ++ if (s->echofile) ++ fwrite(echo, nbytes, 1, s->echofile); + #endif + #ifdef BUILD_AEC +- if (s->aec_type == WebRTCAECTypeNormal) { +- mswebrtc_aec_splitting_filter_analysis(s->splitting_filter, ref, echo); +- if (WebRtcAec_BufferFarend(s->aecInst, +- mswebrtc_aec_splitting_filter_get_ref(s->splitting_filter), +- (size_t)mswebrtc_aec_splitting_filter_get_bandsize(s->splitting_filter)) != 0) +- ms_error("WebRtcAec_BufferFarend() failed."); +- if (WebRtcAec_Process(s->aecInst, +- mswebrtc_aec_splitting_filter_get_echo_bands(s->splitting_filter), +- mswebrtc_aec_splitting_filter_get_number_of_bands(s->splitting_filter), +- mswebrtc_aec_splitting_filter_get_output_bands(s->splitting_filter), +- (size_t)mswebrtc_aec_splitting_filter_get_bandsize(s->splitting_filter), 0, 0) != 0) +- ms_error("WebRtcAec_Process() failed."); +- mswebrtc_aec_splitting_filter_synthesis(s->splitting_filter, (int16_t *)oecho->b_wptr); +- } ++ if (s->aec_type == WebRTCAECTypeNormal) { ++ mswebrtc_aec_splitting_filter_analysis(s->splitting_filter, ref, echo); ++ if (WebRtcAec_BufferFarend( ++ s->aecInst, ++ mswebrtc_aec_splitting_filter_get_ref(s->splitting_filter), ++ (size_t)mswebrtc_aec_splitting_filter_get_bandsize( ++ s->splitting_filter)) != 0) ++ ms_error("WebRtcAec_BufferFarend() failed."); ++ if (WebRtcAec_Process( ++ s->aecInst, ++ mswebrtc_aec_splitting_filter_get_echo_bands(s->splitting_filter), ++ mswebrtc_aec_splitting_filter_get_number_of_bands( ++ s->splitting_filter), ++ mswebrtc_aec_splitting_filter_get_output_bands( ++ s->splitting_filter), ++ (size_t)mswebrtc_aec_splitting_filter_get_bandsize( ++ s->splitting_filter), ++ 0, 0) != 0) ++ ms_error("WebRtcAec_Process() failed."); ++ mswebrtc_aec_splitting_filter_synthesis(s->splitting_filter, ++ (int16_t *)oecho->b_wptr); ++ } + #endif + #ifdef BUILD_AECM +- if (s->aec_type == WebRTCAECTypeMobile) { +- if (WebRtcAecm_BufferFarend(s->aecInst, ref, (size_t)s->framesize) != 0) +- ms_error("WebRtcAecm_BufferFarend() failed."); +- if (WebRtcAecm_Process(s->aecInst, echo, NULL, (int16_t *)oecho->b_wptr, (size_t)s->framesize, 0) != 0) +- ms_error("WebRtcAecm_Process() failed."); +- } ++ if (s->aec_type == WebRTCAECTypeMobile) { ++ if (WebRtcAecm_BufferFarend(s->aecInst, ref, (size_t)s->framesize) != 0) ++ ms_error("WebRtcAecm_BufferFarend() failed."); ++ if (WebRtcAecm_Process(s->aecInst, echo, NULL, (int16_t *)oecho->b_wptr, ++ (size_t)s->framesize, 0) != 0) ++ ms_error("WebRtcAecm_Process() failed."); ++ } + #endif + #ifdef EC_DUMP +- if (s->cleanfile) +- fwrite(oecho->b_wptr, nbytes, 1, s->cleanfile); ++ if (s->cleanfile) ++ fwrite(oecho->b_wptr, nbytes, 1, s->cleanfile); + #endif +- oecho->b_wptr += nbytes; +- ms_queue_put(f->outputs[1], oecho); +- } ++ oecho->b_wptr += nbytes; ++ ms_queue_put(f->outputs[1], oecho); ++ } + } + + static void webrtc_aec_postprocess(MSFilter *f) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; + +- ms_bufferizer_flush(&s->delayed_ref); +- ms_bufferizer_flush(&s->echo); +- ms_flow_controlled_bufferizer_flush(&s->ref); ++ ms_bufferizer_flush(&s->delayed_ref); ++ ms_bufferizer_flush(&s->echo); ++ ms_flow_controlled_bufferizer_flush(&s->ref); + #ifdef BUILD_AEC +- if (s->splitting_filter) { +- mswebrtc_aec_splitting_filter_destroy(s->splitting_filter); +- s->splitting_filter = NULL; +- } ++ if (s->splitting_filter) { ++ mswebrtc_aec_splitting_filter_destroy(s->splitting_filter); ++ s->splitting_filter = NULL; ++ } + #endif +- if (s->aecInst != NULL) { ++ if (s->aecInst != NULL) { + #ifdef BUILD_AEC +- if (s->aec_type == WebRTCAECTypeNormal) { +- WebRtcAec_Free(s->aecInst); +- } ++ if (s->aec_type == WebRTCAECTypeNormal) { ++ WebRtcAec_Free(s->aecInst); ++ } + #endif + #ifdef BUILD_AECM +- if (s->aec_type == WebRTCAECTypeMobile) { +- WebRtcAecm_Free(s->aecInst); +- } ++ if (s->aec_type == WebRTCAECTypeMobile) { ++ WebRtcAecm_Free(s->aecInst); ++ } + #endif +- s->aecInst = NULL; +- } ++ s->aecInst = NULL; ++ } + } + + static int webrtc_aec_set_sr(MSFilter *f, void *arg) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- int requested_sr = *(int *) arg; +- int sr = requested_sr; +- +- if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 48000)) { +- sr = 48000; +- } else if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 32000)) { +- sr = 32000; +- } else if (requested_sr >= 16000) { +- sr = 16000; +- } else { +- sr = 8000; +- } +- if (sr != requested_sr) +- ms_message("Webrtc %s does not support sampling rate %i, using %i instead", ((s->aec_type == WebRTCAECTypeNormal)?"aec":"aecm"),requested_sr, sr); +- +- s->samplerate = sr; +- configure_flow_controlled_bufferizer(s); +- return 0; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ int requested_sr = *(int *)arg; ++ int sr = requested_sr; ++ ++ if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 48000)) { ++ sr = 48000; ++ } else if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 32000)) { ++ sr = 32000; ++ } else if (requested_sr >= 16000) { ++ sr = 16000; ++ } else { ++ sr = 8000; ++ } ++ if (sr != requested_sr) ++ ms_message("Webrtc %s does not support sampling rate %i, using %i instead", ++ ((s->aec_type == WebRTCAECTypeNormal) ? "aec" : "aecm"), ++ requested_sr, sr); ++ ++ s->samplerate = sr; ++ configure_flow_controlled_bufferizer(s); ++ return 0; + } + + static int webrtc_aec_get_sr(MSFilter *f, void *arg) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- *(int *) arg=s->samplerate; +- return 0; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ *(int *)arg = s->samplerate; ++ return 0; + } + + static int webrtc_aec_set_framesize(MSFilter *f, void *arg) { +- /* Do nothing because the WebRTC echo canceller only accept specific values: 80 and 160. We use 80 at 8khz, and 160 at 16khz */ +- return 0; ++ /* Do nothing because the WebRTC echo canceller only accept specific values: ++ * 80 and 160. We use 80 at 8khz, and 160 at 16khz */ ++ return 0; + } + + static int webrtc_aec_set_delay(MSFilter *f, void *arg) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- s->delay_ms = *(int *) arg; +- configure_flow_controlled_bufferizer(s); +- return 0; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ s->delay_ms = *(int *)arg; ++ configure_flow_controlled_bufferizer(s); ++ return 0; + } + + static int webrtc_aec_set_tail_length(MSFilter *f, void *arg) { +- /* Do nothing because this is not needed by the WebRTC echo canceller. */ +- return 0; ++ /* Do nothing because this is not needed by the WebRTC echo canceller. */ ++ return 0; + } + static int webrtc_aec_set_bypass_mode(MSFilter *f, void *arg) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- s->bypass_mode = *(bool_t *) arg; +- ms_message("set EC bypass mode to [%i]", s->bypass_mode); +- return 0; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ s->bypass_mode = *(bool_t *)arg; ++ ms_message("set EC bypass mode to [%i]", s->bypass_mode); ++ return 0; + } + static int webrtc_aec_get_bypass_mode(MSFilter *f, void *arg) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- *(bool_t *) arg = s->bypass_mode; +- return 0; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ *(bool_t *)arg = s->bypass_mode; ++ return 0; + } + + static int webrtc_aec_set_state(MSFilter *f, void *arg) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- s->state_str = ms_strdup((const char *) arg); +- return 0; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ s->state_str = ms_strdup((const char *)arg); ++ return 0; + } + + static int webrtc_aec_get_state(MSFilter *f, void *arg) { +- WebRTCAECState *s = (WebRTCAECState *) f->data; +- *(char **) arg = s->state_str; +- return 0; ++ WebRTCAECState *s = (WebRTCAECState *)f->data; ++ *(char **)arg = s->state_str; ++ return 0; + } + + static MSFilterMethod webrtc_aec_methods[] = { +- { MS_FILTER_SET_SAMPLE_RATE , webrtc_aec_set_sr }, +- { MS_FILTER_GET_SAMPLE_RATE , webrtc_aec_get_sr }, +- { MS_ECHO_CANCELLER_SET_TAIL_LENGTH , webrtc_aec_set_tail_length }, +- { MS_ECHO_CANCELLER_SET_DELAY , webrtc_aec_set_delay }, +- { MS_ECHO_CANCELLER_SET_FRAMESIZE , webrtc_aec_set_framesize }, +- { MS_ECHO_CANCELLER_SET_BYPASS_MODE , webrtc_aec_set_bypass_mode }, +- { MS_ECHO_CANCELLER_GET_BYPASS_MODE , webrtc_aec_get_bypass_mode }, +- { MS_ECHO_CANCELLER_GET_STATE_STRING , webrtc_aec_get_state }, +- { MS_ECHO_CANCELLER_SET_STATE_STRING , webrtc_aec_set_state }, +- { 0, NULL } +-}; +- ++ {MS_FILTER_SET_SAMPLE_RATE, webrtc_aec_set_sr}, ++ {MS_FILTER_GET_SAMPLE_RATE, webrtc_aec_get_sr}, ++ {MS_ECHO_CANCELLER_SET_TAIL_LENGTH, webrtc_aec_set_tail_length}, ++ {MS_ECHO_CANCELLER_SET_DELAY, webrtc_aec_set_delay}, ++ {MS_ECHO_CANCELLER_SET_FRAMESIZE, webrtc_aec_set_framesize}, ++ {MS_ECHO_CANCELLER_SET_BYPASS_MODE, webrtc_aec_set_bypass_mode}, ++ {MS_ECHO_CANCELLER_GET_BYPASS_MODE, webrtc_aec_get_bypass_mode}, ++ {MS_ECHO_CANCELLER_GET_STATE_STRING, webrtc_aec_get_state}, ++ {MS_ECHO_CANCELLER_SET_STATE_STRING, webrtc_aec_set_state}, ++ {0, NULL}}; + + #ifdef BUILD_AEC + +-#define MS_WEBRTC_AEC_NAME "MSWebRTCAEC" ++#define MS_WEBRTC_AEC_NAME "MSWebRTCAEC" + #define MS_WEBRTC_AEC_DESCRIPTION "Echo canceller using WebRTC library." +-#define MS_WEBRTC_AEC_CATEGORY MS_FILTER_OTHER +-#define MS_WEBRTC_AEC_ENC_FMT NULL +-#define MS_WEBRTC_AEC_NINPUTS 2 +-#define MS_WEBRTC_AEC_NOUTPUTS 2 +-#define MS_WEBRTC_AEC_FLAGS 0 ++#define MS_WEBRTC_AEC_CATEGORY MS_FILTER_OTHER ++#define MS_WEBRTC_AEC_ENC_FMT NULL ++#define MS_WEBRTC_AEC_NINPUTS 2 ++#define MS_WEBRTC_AEC_NOUTPUTS 2 ++#define MS_WEBRTC_AEC_FLAGS 0 + + #ifdef _MSC_VER + + MSFilterDesc ms_webrtc_aec_desc = { +- MS_FILTER_PLUGIN_ID, +- MS_WEBRTC_AEC_NAME, +- MS_WEBRTC_AEC_DESCRIPTION, +- MS_WEBRTC_AEC_CATEGORY, +- MS_WEBRTC_AEC_ENC_FMT, +- MS_WEBRTC_AEC_NINPUTS, +- MS_WEBRTC_AEC_NOUTPUTS, +- webrtc_aec_init, +- webrtc_aec_preprocess, +- webrtc_aec_process, +- webrtc_aec_postprocess, +- webrtc_aec_uninit, +- webrtc_aec_methods, +- MS_WEBRTC_AEC_FLAGS +-}; ++ MS_FILTER_PLUGIN_ID, MS_WEBRTC_AEC_NAME, MS_WEBRTC_AEC_DESCRIPTION, ++ MS_WEBRTC_AEC_CATEGORY, MS_WEBRTC_AEC_ENC_FMT, MS_WEBRTC_AEC_NINPUTS, ++ MS_WEBRTC_AEC_NOUTPUTS, webrtc_aec_init, webrtc_aec_preprocess, ++ webrtc_aec_process, webrtc_aec_postprocess, webrtc_aec_uninit, ++ webrtc_aec_methods, MS_WEBRTC_AEC_FLAGS}; + + #else + +-MSFilterDesc ms_webrtc_aec_desc = { +- .id = MS_FILTER_PLUGIN_ID, +- .name = MS_WEBRTC_AEC_NAME, +- .text = MS_WEBRTC_AEC_DESCRIPTION, +- .category = MS_WEBRTC_AEC_CATEGORY, +- .enc_fmt = MS_WEBRTC_AEC_ENC_FMT, +- .ninputs = MS_WEBRTC_AEC_NINPUTS, +- .noutputs = MS_WEBRTC_AEC_NOUTPUTS, +- .init = webrtc_aec_init, +- .preprocess = webrtc_aec_preprocess, +- .process = webrtc_aec_process, +- .postprocess = webrtc_aec_postprocess, +- .uninit = webrtc_aec_uninit, +- .methods = webrtc_aec_methods, +- .flags = MS_WEBRTC_AEC_FLAGS +-}; ++MSFilterDesc ms_webrtc_aec_desc = {.id = MS_FILTER_PLUGIN_ID, ++ .name = MS_WEBRTC_AEC_NAME, ++ .text = MS_WEBRTC_AEC_DESCRIPTION, ++ .category = MS_WEBRTC_AEC_CATEGORY, ++ .enc_fmt = MS_WEBRTC_AEC_ENC_FMT, ++ .ninputs = MS_WEBRTC_AEC_NINPUTS, ++ .noutputs = MS_WEBRTC_AEC_NOUTPUTS, ++ .init = webrtc_aec_init, ++ .preprocess = webrtc_aec_preprocess, ++ .process = webrtc_aec_process, ++ .postprocess = webrtc_aec_postprocess, ++ .uninit = webrtc_aec_uninit, ++ .methods = webrtc_aec_methods, ++ .flags = MS_WEBRTC_AEC_FLAGS}; + + #endif + +@@ -517,51 +535,40 @@ MS_FILTER_DESC_EXPORT(ms_webrtc_aec_desc) + + #ifdef BUILD_AECM + +-#define MS_WEBRTC_AECM_NAME "MSWebRTCAECM" +-#define MS_WEBRTC_AECM_DESCRIPTION "Echo canceller for mobile using WebRTC library." +-#define MS_WEBRTC_AECM_CATEGORY MS_FILTER_OTHER +-#define MS_WEBRTC_AECM_ENC_FMT NULL +-#define MS_WEBRTC_AECM_NINPUTS 2 +-#define MS_WEBRTC_AECM_NOUTPUTS 2 +-#define MS_WEBRTC_AECM_FLAGS 0 ++#define MS_WEBRTC_AECM_NAME "MSWebRTCAECM" ++#define MS_WEBRTC_AECM_DESCRIPTION \ ++ "Echo canceller for mobile using WebRTC library." ++#define MS_WEBRTC_AECM_CATEGORY MS_FILTER_OTHER ++#define MS_WEBRTC_AECM_ENC_FMT NULL ++#define MS_WEBRTC_AECM_NINPUTS 2 ++#define MS_WEBRTC_AECM_NOUTPUTS 2 ++#define MS_WEBRTC_AECM_FLAGS 0 + + #ifdef _MSC_VER + + MSFilterDesc ms_webrtc_aecm_desc = { +- MS_FILTER_PLUGIN_ID, +- MS_WEBRTC_AECM_NAME, +- MS_WEBRTC_AECM_DESCRIPTION, +- MS_WEBRTC_AECM_CATEGORY, +- MS_WEBRTC_AECM_ENC_FMT, +- MS_WEBRTC_AECM_NINPUTS, +- MS_WEBRTC_AECM_NOUTPUTS, +- webrtc_aecm_init, +- webrtc_aec_preprocess, +- webrtc_aec_process, +- webrtc_aec_postprocess, +- webrtc_aec_uninit, +- webrtc_aec_methods, +- MS_WEBRTC_AECM_FLAGS +-}; ++ MS_FILTER_PLUGIN_ID, MS_WEBRTC_AECM_NAME, MS_WEBRTC_AECM_DESCRIPTION, ++ MS_WEBRTC_AECM_CATEGORY, MS_WEBRTC_AECM_ENC_FMT, MS_WEBRTC_AECM_NINPUTS, ++ MS_WEBRTC_AECM_NOUTPUTS, webrtc_aecm_init, webrtc_aec_preprocess, ++ webrtc_aec_process, webrtc_aec_postprocess, webrtc_aec_uninit, ++ webrtc_aec_methods, MS_WEBRTC_AECM_FLAGS}; + + #else + +-MSFilterDesc ms_webrtc_aecm_desc = { +- .id = MS_FILTER_PLUGIN_ID, +- .name = MS_WEBRTC_AECM_NAME, +- .text = MS_WEBRTC_AECM_DESCRIPTION, +- .category = MS_WEBRTC_AECM_CATEGORY, +- .enc_fmt = MS_WEBRTC_AECM_ENC_FMT, +- .ninputs = MS_WEBRTC_AECM_NINPUTS, +- .noutputs = MS_WEBRTC_AECM_NOUTPUTS, +- .init = webrtc_aecm_init, +- .preprocess = webrtc_aec_preprocess, +- .process = webrtc_aec_process, +- .postprocess = webrtc_aec_postprocess, +- .uninit = webrtc_aec_uninit, +- .methods = webrtc_aec_methods, +- .flags = MS_WEBRTC_AECM_FLAGS +-}; ++MSFilterDesc ms_webrtc_aecm_desc = {.id = MS_FILTER_PLUGIN_ID, ++ .name = MS_WEBRTC_AECM_NAME, ++ .text = MS_WEBRTC_AECM_DESCRIPTION, ++ .category = MS_WEBRTC_AECM_CATEGORY, ++ .enc_fmt = MS_WEBRTC_AECM_ENC_FMT, ++ .ninputs = MS_WEBRTC_AECM_NINPUTS, ++ .noutputs = MS_WEBRTC_AECM_NOUTPUTS, ++ .init = webrtc_aecm_init, ++ .preprocess = webrtc_aec_preprocess, ++ .process = webrtc_aec_process, ++ .postprocess = webrtc_aec_postprocess, ++ .uninit = webrtc_aec_uninit, ++ .methods = webrtc_aec_methods, ++ .flags = MS_WEBRTC_AECM_FLAGS}; + + #endif + +-- +GitLab + diff --git a/gnu/packages/patches/mswebrtc-cmake.patch b/gnu/packages/patches/mswebrtc-cmake.patch new file mode 100644 index 0000000000..19d0c31b10 --- /dev/null +++ b/gnu/packages/patches/mswebrtc-cmake.patch @@ -0,0 +1,626 @@ +From e52911c291e5ebe16da764e53cb740b7deb77e75 Mon Sep 17 00:00:00 2001 +From: Ghislain MARY <ghislain.mary@belledonne-communications.com> +Date: Mon, 13 Mar 2023 19:05:30 +0100 +Subject: [PATCH] Update CMakeLists.txt so that the project can be added as a + subdirectory of linphone-sdk. + +Rename CMake targets for uniform naming. +--- + CMakeLists.txt | 68 ++++++++++++++++++---------------- + cmake/FindBcToolbox.cmake | 67 +++++++++++++++++++++++++++++++++ + cmake/FindMediastreamer2.cmake | 46 +++++++++++++++++++++++ + cmake/FindOrtp.cmake | 43 +++++++++++++++++++++ + 4 files changed, 193 insertions(+), 31 deletions(-) + create mode 100644 cmake/FindBcToolbox.cmake + create mode 100644 cmake/FindMediastreamer2.cmake + create mode 100644 cmake/FindOrtp.cmake + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0f26f4f..fd5b52e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,6 @@ + ############################################################################ + # CMakeLists.txt +-# Copyright (C) 2014 Belledonne Communications, Grenoble France ++# Copyright (C) 2014-2023 Belledonne Communications, Grenoble France + # + ############################################################################ + # +@@ -20,7 +20,8 @@ + # + ############################################################################ + +-cmake_minimum_required(VERSION 3.1) ++cmake_minimum_required(VERSION 3.22) ++ + project(mswebrtc VERSION 1.1.1 LANGUAGES C CXX) + + +@@ -34,8 +35,6 @@ set(PACKAGE_URL "") + set(VERSION "${PACKAGE_VERSION}") + + +-option(ENABLE_SHARED "Build shared library." YES) +-option(ENABLE_STATIC "Build static library." YES) + option(ENABLE_AEC "Enable the WebRTC echo canceller support." YES) + option(ENABLE_AECM "Enable the WebRTC echo canceller for mobile support." YES) + option(ENABLE_ISAC "Enable the ISAC audio codec support." YES) +@@ -60,9 +59,20 @@ if(NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX) + message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}") + endif() + +-find_package(Mediastreamer2 REQUIRED CONFIG) +-find_package(ortp REQUIRED CONFIG) +-find_package(bctoolbox REQUIRED CONFIG) ++list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") ++ ++find_package(BcToolbox) ++if(NOT BCTOOLBOX_FOUND) ++ find_package(bctoolbox REQUIRED CONFIG) ++endif() ++find_package(Ortp) ++if(NOT ORTP_FOUND) ++ find_package(ortp REQUIRED CONFIG) ++endif() ++find_package(Mediastreamer2) ++if(NOT MEDIASTREAMER2_FOUND) ++ find_package(Mediastreamer2 REQUIRED CONFIG) ++endif() + + find_library(LIBM NAMES m) + +@@ -410,24 +420,18 @@ endif() + + set(MS2_PLUGINS_DIR "${MEDIASTREAMER2_PLUGINS_LOCATION}") + +-if(ENABLE_STATIC) +- add_library(mswebrtc-static STATIC ${SOURCE_FILES}) +- set_target_properties(mswebrtc-static PROPERTIES OUTPUT_NAME mswebrtc) +- set_target_properties(mswebrtc-static PROPERTIES LINKER_LANGUAGE CXX) +- target_link_libraries(mswebrtc-static ${LIBS}) +- install(TARGETS mswebrtc-static +- ARCHIVE DESTINATION "${MS2_PLUGINS_DIR}" +- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +- ) +-endif() +-if(ENABLE_SHARED) +- if(NOT IOS) +- add_library(mswebrtc MODULE ${SOURCE_FILES}) +- else() ++if(BUILD_SHARED_LIBS) ++ if(IOS) + add_library(mswebrtc SHARED ${SOURCE_FILES}) ++ else() ++ add_library(mswebrtc MODULE ${SOURCE_FILES}) + endif() +- target_link_libraries(mswebrtc PRIVATE mediastreamer ortp bctoolbox ${LIBS}) +- set_target_properties(mswebrtc PROPERTIES LINKER_LANGUAGE CXX) ++else() ++ add_library(mswebrtc STATIC ${SOURCE_FILES}) ++endif() ++target_link_libraries(mswebrtc PRIVATE mediastreamer2 ortp bctoolbox ${LIBS}) ++set_target_properties(mswebrtc PROPERTIES LINKER_LANGUAGE CXX) ++if(BUILD_SHARED_LIBS) + if(APPLE) + if(IOS) + set(MIN_OS ${LINPHONE_IOS_DEPLOYMENT_TARGET}) +@@ -441,7 +445,7 @@ if(ENABLE_SHARED) + set(MIN_OS ${CMAKE_OSX_DEPLOYMENT_TARGET}) + endif() + +- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/build/osx/") ++ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/build/osx/") + endif() + if(MSVC) + if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") +@@ -454,14 +458,16 @@ if(ENABLE_SHARED) + set_target_properties(mswebrtc PROPERTIES PREFIX "lib") + endif() + endif() +- install(TARGETS mswebrtc +- RUNTIME DESTINATION ${MS2_PLUGINS_DIR} +- LIBRARY DESTINATION ${MS2_PLUGINS_DIR} +- ARCHIVE DESTINATION ${MS2_PLUGINS_DIR} +- FRAMEWORK DESTINATION Frameworks +- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +- ) + endif() + ++install(TARGETS mswebrtc ++ RUNTIME DESTINATION ${MS2_PLUGINS_DIR} ++ LIBRARY DESTINATION ${MS2_PLUGINS_DIR} ++ ARCHIVE DESTINATION ${MS2_PLUGINS_DIR} ++ FRAMEWORK DESTINATION Frameworks ++ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ++) ++ ++ + add_subdirectory(build) + +diff --git a/cmake/FindBcToolbox.cmake b/cmake/FindBcToolbox.cmake +new file mode 100644 +index 0000000..5766478 +--- /dev/null ++++ b/cmake/FindBcToolbox.cmake +@@ -0,0 +1,67 @@ ++############################################################################ ++# FindBctoolbox.cmake ++# Copyright (C) 2023 Belledonne Communications, Grenoble France ++# ++############################################################################ ++# ++# This program is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License ++# as published by the Free Software Foundation; either version 2 ++# of the License, or (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++############################################################################ ++# ++# - Find the bctoolbox include files and library ++# ++# BCTOOLBOX_FOUND - System has lib bctoolbox ++# BCTOOLBOX_INCLUDE_DIRS - The bctoolbox include directories ++# BCTOOLBOX_LIBRARIES - The libraries needed to use bctoolbox ++# BCTOOLBOX_CMAKE_DIR - The bctoolbox cmake directory ++# BCTOOLBOX_CORE_FOUND - System has core bctoolbox ++# BCTOOLBOX_CORE_INCLUDE_DIRS - The core bctoolbox include directories ++# BCTOOLBOX_CORE_LIBRARIES - The core bctoolbox libraries ++# BCTOOLBOX_TESTER_FOUND - System has bctoolbox tester ++# BCTOOLBOX_TESTER_INCLUDE_DIRS - The bctoolbox tester include directories ++# BCTOOLBOX_TESTER_LIBRARIES - The bctoolbox tester libraries ++ ++if(TARGET bctoolbox) ++ ++ set(BCTOOLBOX_CORE_LIBRARIES bctoolbox) ++ get_target_property(BCTOOLBOX_CORE_INCLUDE_DIRS bctoolbox INTERFACE_INCLUDE_DIRECTORIES) ++ set(BCTOOLBOX_CORE_FOUND TRUE) ++ get_target_property(BCTOOLBOX_SOURCE_DIR bctoolbox SOURCE_DIR) ++ set(BCTOOLBOX_CMAKE_DIR "${BCTOOLBOX_SOURCE_DIR}/../cmake") ++ if(TARGET bctoolbox-tester) ++ set(BCTOOLBOX_TESTER_LIBRARIES bctoolbox-tester) ++ get_target_property(BCTOOLBOX_TESTER_INCLUDE_DIRS bctoolbox-tester INTERFACE_INCLUDE_DIRECTORIES) ++ set(BCTOOLBOX_TESTER_FOUND TRUE) ++ set(BCTOOLBOX_TESTER_COMPONENT_VARIABLES BCTOOLBOX_TESTER_FOUND BCTOOLBOX_TESTER_INCLUDE_DIRS BCTOOLBOX_TESTER_LIBRARIES) ++ endif() ++ set(BCTOOLBOX_LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BCTOOLBOX_TESTER_LIBRARIES}) ++ set(BCTOOLBOX_INCLUDE_DIRS ${BCTOOLBOX_CORE_INCLUDE_DIRS} ${BCTOOLBOX_TESTER_INCLUDE_DIRS}) ++ ++ ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(BcToolbox ++ DEFAULT_MSG ++ BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR ++ BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES ++ ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES} ++ ) ++ ++ mark_as_advanced( ++ BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR ++ BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES ++ ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES} ++ ) ++ ++endif() +diff --git a/cmake/FindMediastreamer2.cmake b/cmake/FindMediastreamer2.cmake +new file mode 100644 +index 0000000..64ac8f2 +--- /dev/null ++++ b/cmake/FindMediastreamer2.cmake +@@ -0,0 +1,46 @@ ++############################################################################ ++# FindMediastreamer2.cmake ++# Copyright (C) 2023 Belledonne Communications, Grenoble France ++# ++############################################################################ ++# ++# This program is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License ++# as published by the Free Software Foundation; either version 2 ++# of the License, or (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++############################################################################ ++# ++# - Find the mediastreamer2 include files and library ++# ++# MEDIASTREAMER2_FOUND - system has lib mediastreamer2 ++# MEDIASTREAMER2_INCLUDE_DIRS - the mediasteamer2 include directory ++# MEDIASTREAMER2_LIBRARIES - The library needed to use mediasteamer2 ++# MEDIASTREAMER2_PLUGINS_LOCATION - The location of the mediastreamer2 plugins ++ ++if(TARGET mediastreamer2) ++ ++ set(MEDIASTREAMER2_LIBRARIES mediastreamer2) ++ get_target_property(MEDIASTREAMER2_INCLUDE_DIRS mediastreamer2 INTERFACE_INCLUDE_DIRECTORIES) ++ define_property(TARGET PROPERTY "MS2_PLUGINS" BRIEF_DOCS "Stores the location of mediastreamer2 plugins" FULL_DOCS "Stores the location of mediastreamer2 plugins") ++ get_target_property(MEDIASTREAMER2_PLUGINS_LOCATION mediastreamer2 MS2_PLUGINS) ++ ++ ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(Mediastreamer2 ++ DEFAULT_MSG ++ MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES ++ ) ++ ++ mark_as_advanced(MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES) ++ ++endif() +diff --git a/cmake/FindOrtp.cmake b/cmake/FindOrtp.cmake +new file mode 100644 +index 0000000..13121fb +--- /dev/null ++++ b/cmake/FindOrtp.cmake +@@ -0,0 +1,43 @@ ++############################################################################ ++# FindOrtp.cmake ++# Copyright (C) 2023 Belledonne Communications, Grenoble France ++# ++############################################################################ ++# ++# This program is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License ++# as published by the Free Software Foundation; either version 2 ++# of the License, or (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++############################################################################ ++# ++# - Find the ortp include files and library ++# ++# ORTP_FOUND - system has lib ortp ++# ORTP_INCLUDE_DIRS - the ortp include directory ++# ORTP_LIBRARIES - The library needed to use ortp ++ ++if(TARGET ortp) ++ ++ set(ORTP_LIBRARIES ortp) ++ get_target_property(ORTP_INCLUDE_DIRS ortp INTERFACE_INCLUDE_DIRECTORIES) ++ ++ ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(Ortp ++ DEFAULT_MSG ++ ORTP_INCLUDE_DIRS ORTP_LIBRARIES ++ ) ++ ++ mark_as_advanced(ORTP_INCLUDE_DIRS ORTP_LIBRARIES) ++ ++endif() +-- +GitLab + +From b5aea9bdaeecd99f6fc5601bfb88541d4e55841b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micka=C3=ABl=20Turnel?= + <mickael.turnel@belledonne-communications.com> +Date: Fri, 23 Jun 2023 11:05:24 +0200 +Subject: [PATCH] Change the library path in the binary dir so it can be + retrieved easily by testers + +--- + CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fd5b52e..ab3e651 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -24,6 +24,7 @@ cmake_minimum_required(VERSION 3.22) + + project(mswebrtc VERSION 1.1.1 LANGUAGES C CXX) + ++set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/mediastreamer2/plugins") + + set(PACKAGE "${PROJECT_NAME}") + set(PACKAGE_NAME "${PROJECT_NAME}") +-- +GitLab + +From 1809337d6191ec40f88191b5ce07cfb01ed07b20 Mon Sep 17 00:00:00 2001 +From: Ghislain MARY <ghislain.mary@belledonne-communications.com> +Date: Tue, 20 Jun 2023 11:47:00 +0200 +Subject: [PATCH] Improve CMake find_package functionality. + +--- + CMakeLists.txt | 30 ++++----------- + build/CMakeLists.txt | 3 +- + cmake/FindBcToolbox.cmake | 67 ---------------------------------- + cmake/FindMediastreamer2.cmake | 46 ----------------------- + cmake/FindOrtp.cmake | 43 ---------------------- + 5 files changed, 10 insertions(+), 179 deletions(-) + delete mode 100644 cmake/FindBcToolbox.cmake + delete mode 100644 cmake/FindMediastreamer2.cmake + delete mode 100644 cmake/FindOrtp.cmake + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ab3e651..a869908 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -22,7 +22,7 @@ + + cmake_minimum_required(VERSION 3.22) + +-project(mswebrtc VERSION 1.1.1 LANGUAGES C CXX) ++project(MSWebRTC VERSION 1.1.1 LANGUAGES C CXX) + + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/mediastreamer2/plugins") + +@@ -60,20 +60,8 @@ if(NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX) + message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}") + endif() + +-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +- +-find_package(BcToolbox) +-if(NOT BCTOOLBOX_FOUND) +- find_package(bctoolbox REQUIRED CONFIG) +-endif() +-find_package(Ortp) +-if(NOT ORTP_FOUND) +- find_package(ortp REQUIRED CONFIG) +-endif() +-find_package(Mediastreamer2) +-if(NOT MEDIASTREAMER2_FOUND) +- find_package(Mediastreamer2 REQUIRED CONFIG) +-endif() ++find_package(BCToolbox 5.3.0 REQUIRED) ++find_package(Mediastreamer2 5.3.0 REQUIRED) + + find_library(LIBM NAMES m) + +@@ -92,7 +80,7 @@ endif() + if(ENABLE_VAD) + set(BUILD_VAD 1) + endif() +-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) ++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h") + + set(WEBRTC_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/webrtc") + set(WEBRTC_SRC_DIR "${WEBRTC_ROOT_DIR}/webrtc") +@@ -419,8 +407,6 @@ if(LIBM) + list(APPEND LIBS ${LIBM}) + endif() + +-set(MS2_PLUGINS_DIR "${MEDIASTREAMER2_PLUGINS_LOCATION}") +- + if(BUILD_SHARED_LIBS) + if(IOS) + add_library(mswebrtc SHARED ${SOURCE_FILES}) +@@ -430,7 +416,7 @@ if(BUILD_SHARED_LIBS) + else() + add_library(mswebrtc STATIC ${SOURCE_FILES}) + endif() +-target_link_libraries(mswebrtc PRIVATE mediastreamer2 ortp bctoolbox ${LIBS}) ++target_link_libraries(mswebrtc PRIVATE ${Mediastreamer2_TARGET} ${LIBS}) + set_target_properties(mswebrtc PROPERTIES LINKER_LANGUAGE CXX) + if(BUILD_SHARED_LIBS) + if(APPLE) +@@ -462,9 +448,9 @@ if(BUILD_SHARED_LIBS) + endif() + + install(TARGETS mswebrtc +- RUNTIME DESTINATION ${MS2_PLUGINS_DIR} +- LIBRARY DESTINATION ${MS2_PLUGINS_DIR} +- ARCHIVE DESTINATION ${MS2_PLUGINS_DIR} ++ RUNTIME DESTINATION ${Mediastreamer2_PLUGINS_DIR} ++ LIBRARY DESTINATION ${Mediastreamer2_PLUGINS_DIR} ++ ARCHIVE DESTINATION ${Mediastreamer2_PLUGINS_DIR} + FRAMEWORK DESTINATION Frameworks + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + ) +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index 82694c6..8f9108b 100755 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -21,7 +21,8 @@ + ############################################################################ + + if(NOT CPACK_PACKAGE_NAME) +- set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") ++ string(TOLOWER "${PROJECT_NAME}" LOWERCASE_PROJECT_NAME) ++ set(CPACK_PACKAGE_NAME "${LOWERCASE_PROJECT_NAME}") + endif() + + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../COPYING") +diff --git a/cmake/FindBcToolbox.cmake b/cmake/FindBcToolbox.cmake +deleted file mode 100644 +index 5766478..0000000 +--- a/cmake/FindBcToolbox.cmake ++++ /dev/null +@@ -1,67 +0,0 @@ +-############################################################################ +-# FindBctoolbox.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# - Find the bctoolbox include files and library +-# +-# BCTOOLBOX_FOUND - System has lib bctoolbox +-# BCTOOLBOX_INCLUDE_DIRS - The bctoolbox include directories +-# BCTOOLBOX_LIBRARIES - The libraries needed to use bctoolbox +-# BCTOOLBOX_CMAKE_DIR - The bctoolbox cmake directory +-# BCTOOLBOX_CORE_FOUND - System has core bctoolbox +-# BCTOOLBOX_CORE_INCLUDE_DIRS - The core bctoolbox include directories +-# BCTOOLBOX_CORE_LIBRARIES - The core bctoolbox libraries +-# BCTOOLBOX_TESTER_FOUND - System has bctoolbox tester +-# BCTOOLBOX_TESTER_INCLUDE_DIRS - The bctoolbox tester include directories +-# BCTOOLBOX_TESTER_LIBRARIES - The bctoolbox tester libraries +- +-if(TARGET bctoolbox) +- +- set(BCTOOLBOX_CORE_LIBRARIES bctoolbox) +- get_target_property(BCTOOLBOX_CORE_INCLUDE_DIRS bctoolbox INTERFACE_INCLUDE_DIRECTORIES) +- set(BCTOOLBOX_CORE_FOUND TRUE) +- get_target_property(BCTOOLBOX_SOURCE_DIR bctoolbox SOURCE_DIR) +- set(BCTOOLBOX_CMAKE_DIR "${BCTOOLBOX_SOURCE_DIR}/../cmake") +- if(TARGET bctoolbox-tester) +- set(BCTOOLBOX_TESTER_LIBRARIES bctoolbox-tester) +- get_target_property(BCTOOLBOX_TESTER_INCLUDE_DIRS bctoolbox-tester INTERFACE_INCLUDE_DIRECTORIES) +- set(BCTOOLBOX_TESTER_FOUND TRUE) +- set(BCTOOLBOX_TESTER_COMPONENT_VARIABLES BCTOOLBOX_TESTER_FOUND BCTOOLBOX_TESTER_INCLUDE_DIRS BCTOOLBOX_TESTER_LIBRARIES) +- endif() +- set(BCTOOLBOX_LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BCTOOLBOX_TESTER_LIBRARIES}) +- set(BCTOOLBOX_INCLUDE_DIRS ${BCTOOLBOX_CORE_INCLUDE_DIRS} ${BCTOOLBOX_TESTER_INCLUDE_DIRS}) +- +- +- include(FindPackageHandleStandardArgs) +- find_package_handle_standard_args(BcToolbox +- DEFAULT_MSG +- BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR +- BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES +- ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES} +- ) +- +- mark_as_advanced( +- BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR +- BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES +- ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES} +- ) +- +-endif() +diff --git a/cmake/FindMediastreamer2.cmake b/cmake/FindMediastreamer2.cmake +deleted file mode 100644 +index 64ac8f2..0000000 +--- a/cmake/FindMediastreamer2.cmake ++++ /dev/null +@@ -1,46 +0,0 @@ +-############################################################################ +-# FindMediastreamer2.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# - Find the mediastreamer2 include files and library +-# +-# MEDIASTREAMER2_FOUND - system has lib mediastreamer2 +-# MEDIASTREAMER2_INCLUDE_DIRS - the mediasteamer2 include directory +-# MEDIASTREAMER2_LIBRARIES - The library needed to use mediasteamer2 +-# MEDIASTREAMER2_PLUGINS_LOCATION - The location of the mediastreamer2 plugins +- +-if(TARGET mediastreamer2) +- +- set(MEDIASTREAMER2_LIBRARIES mediastreamer2) +- get_target_property(MEDIASTREAMER2_INCLUDE_DIRS mediastreamer2 INTERFACE_INCLUDE_DIRECTORIES) +- define_property(TARGET PROPERTY "MS2_PLUGINS" BRIEF_DOCS "Stores the location of mediastreamer2 plugins" FULL_DOCS "Stores the location of mediastreamer2 plugins") +- get_target_property(MEDIASTREAMER2_PLUGINS_LOCATION mediastreamer2 MS2_PLUGINS) +- +- +- include(FindPackageHandleStandardArgs) +- find_package_handle_standard_args(Mediastreamer2 +- DEFAULT_MSG +- MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES +- ) +- +- mark_as_advanced(MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES) +- +-endif() +diff --git a/cmake/FindOrtp.cmake b/cmake/FindOrtp.cmake +deleted file mode 100644 +index 13121fb..0000000 +--- a/cmake/FindOrtp.cmake ++++ /dev/null +@@ -1,43 +0,0 @@ +-############################################################################ +-# FindOrtp.cmake +-# Copyright (C) 2023 Belledonne Communications, Grenoble France +-# +-############################################################################ +-# +-# This program is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License +-# as published by the Free Software Foundation; either version 2 +-# of the License, or (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-############################################################################ +-# +-# - Find the ortp include files and library +-# +-# ORTP_FOUND - system has lib ortp +-# ORTP_INCLUDE_DIRS - the ortp include directory +-# ORTP_LIBRARIES - The library needed to use ortp +- +-if(TARGET ortp) +- +- set(ORTP_LIBRARIES ortp) +- get_target_property(ORTP_INCLUDE_DIRS ortp INTERFACE_INCLUDE_DIRECTORIES) +- +- +- include(FindPackageHandleStandardArgs) +- find_package_handle_standard_args(Ortp +- DEFAULT_MSG +- ORTP_INCLUDE_DIRS ORTP_LIBRARIES +- ) +- +- mark_as_advanced(ORTP_INCLUDE_DIRS ORTP_LIBRARIES) +- +-endif() +-- +GitLab + diff --git a/gnu/packages/patches/nss-3.115-disable-broken-tests.patch b/gnu/packages/patches/nss-3.115-disable-broken-tests.patch new file mode 100644 index 0000000000..2cb3a6be7b --- /dev/null +++ b/gnu/packages/patches/nss-3.115-disable-broken-tests.patch @@ -0,0 +1,34 @@ +These tests are broken in 3.101.3. + +See https://bugzilla.mozilla.org/show_bug.cgi?id=1964304 + +--- nss-3.113.orig/nss/tests/tools/tools.sh 2025-08-25 16:49:02.402086648 -0700 ++++ nss-3.113/nss/tests/tools/tools.sh 2025-08-25 16:49:23.677993887 -0700 +@@ -550,27 +550,6 @@ + html_msg $ret 0 "Importing private key pbmac1 hmac-sha-512 from PKCS#12 file" + check_tmpfile + +- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I" +- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I 2>&1 +- ret=$? +- html_msg $ret 19 "Fail to list private key with bad iterator" +- check_tmpfile +- +- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I" +- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I 2>&1 +- ret=$? +- echo "Fail to list private key with bad salt val=$ret" +- html_msg $ret 19 "Fail to import private key with bad salt" +- check_tmpfile +- +- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I " +- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I 2>&1 +- ret=$? +- echo "Fail to import private key with no length val=$ret" +- html_msg $ret 19 "Fail to import private key with no length" +- check_tmpfile +-} +- + ############################## tools_p12 ############################### + # local shell function to test basic functionality of pk12util + ######################################################################## diff --git a/gnu/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch b/gnu/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch new file mode 100644 index 0000000000..d8e489883c --- /dev/null +++ b/gnu/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch @@ -0,0 +1,13 @@ +These tests require network. + +diff -x .svn -x .git -urN nss-3.113.orig/nss/tests/ssl/ssl.sh nss-3.113/nss/tests/ssl/ssl.sh +--- nss-3.113.orig/nss/tests/ssl/ssl.sh 2025-08-25 16:49:02.398086665 -0700 ++++ nss-3.113/nss/tests/ssl/ssl.sh 2025-08-26 15:46:11.718401605 -0700 +@@ -1600,7 +1600,6 @@ + if using_sql ; then + ssl_policy_listsuites + ssl_policy_selfserv +- ssl_policy_pkix_ocsp + ssl_policy + fi + ;;
\ No newline at end of file diff --git a/gnu/packages/patches/nyacc-binary-literals.patch b/gnu/packages/patches/nyacc-binary-literals.patch deleted file mode 100644 index 8159d74032..0000000000 --- a/gnu/packages/patches/nyacc-binary-literals.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 6a08014b77bf435f025ecdac08396580b85f159a Mon Sep 17 00:00:00 2001 -From: Jan Nieuwenhuizen <janneke@gnu.org> -Date: Sat, 8 Sep 2018 20:22:45 +0200 -Subject: [PATCH] fix binary literals. - ---- - module/nyacc/lex.scm | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/module/nyacc/lex.scm b/module/nyacc/lex.scm -index 2ec9895..b205212 100644 ---- a/module/nyacc/lex.scm -+++ b/module/nyacc/lex.scm -@@ -345,10 +345,11 @@ - ((char-numeric? ch) (iter chl '$fixed ba 1 ch)) - ((char=? #\. ch) (iter (cons ch chl) #f ba 15 (read-char))) - (else #f))) -- ((10) ;; allow x after 0 -+ ((10) ;; allow x, b after 0 - (cond - ((eof-object? ch) (iter chl ty ba 5 ch)) - ((char=? #\x ch) (iter (cons ch chl) ty 16 1 (read-char))) -+ ((char=? #\b ch) (iter (cons ch chl) ty 2 1 (read-char))) - (else (iter chl ty ba 1 ch)))) - ((15) ;; got `.' only - (cond --- -2.18.0 - diff --git a/gnu/packages/patches/qemu-disable-bios-tables-test.patch b/gnu/packages/patches/qemu-disable-bios-tables-test.patch index ba89b91099..fc5dc71da9 100644 --- a/gnu/packages/patches/qemu-disable-bios-tables-test.patch +++ b/gnu/packages/patches/qemu-disable-bios-tables-test.patch @@ -1,17 +1,16 @@ -The bios-tables-test may fail; disable it (see: https://gitlab.com/qemu-project/qemu/-/issues/1098) - diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build -index 2f0d3ef080..e3c33a86b5 100644 +index 669d07c06b..3399c1043a 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build -@@ -1,6 +1,5 @@ +@@ -1,7 +1,6 @@ slow_qtests = { + 'ahci-test': 150, 'aspeed_smc-test': 360, - 'bios-tables-test' : 910, 'cdrom-test' : 610, 'device-introspect-test' : 720, - 'migration-test' : 480, -@@ -86,9 +85,6 @@ qtests_i386 = \ + 'ide-test' : 120, +@@ -102,9 +101,6 @@ qtests_i386 = \ config_all_devices.has_key('CONFIG_Q35') and \ config_all_devices.has_key('CONFIG_VIRTIO_PCI') and \ slirp.found() ? ['virtio-net-failover'] : []) + \ @@ -20,8 +19,16 @@ index 2f0d3ef080..e3c33a86b5 100644 - config_all_devices.has_key('CONFIG_PARALLEL') ? ['bios-tables-test'] : []) + \ qtests_pci + \ qtests_cxl + \ - ['fdc-test', -@@ -235,7 +231,6 @@ qtests_arm = \ + [ +@@ -148,7 +144,6 @@ qtests_hppa = \ + + qtests_loongarch64 = qtests_filter + \ + (config_all_devices.has_key('CONFIG_LOONGARCH_VIRT') ? ['numa-test'] : []) + \ +- (unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ + ['boot-serial-test', + 'cpu-plug-test'] + +@@ -253,7 +248,6 @@ qtests_arm = \ # TODO: once aarch64 TCG is fixed on ARM 32 bit host, make bios-tables-test unconditional qtests_aarch64 = \ @@ -29,21 +36,21 @@ index 2f0d3ef080..e3c33a86b5 100644 (config_all_accel.has_key('CONFIG_TCG') and config_all_devices.has_key('CONFIG_TPM_TIS_SYSBUS') ? \ ['tpm-tis-device-test', 'tpm-tis-device-swtpm-test'] : []) + \ (config_all_devices.has_key('CONFIG_XLNX_ZYNQMP_ARM') ? ['xlnx-can-test', 'fuzz-xlnx-dp-test'] : []) + \ -@@ -260,9 +255,6 @@ qtests_s390x = \ +@@ -281,8 +275,7 @@ qtests_s390x = \ qtests_riscv32 = \ (config_all_devices.has_key('CONFIG_SIFIVE_E_AON') ? ['sifive-e-aon-watchdog-test'] : []) --qtests_riscv64 = \ +-qtests_riscv64 = ['riscv-csr-test'] + \ - (unpack_edk2_blobs ? ['bios-tables-test'] : []) -- ++qtests_riscv64 = ['riscv-csr-test'] + qos_test_ss = ss.source_set() qos_test_ss.add( - 'ac97-test.c', -@@ -328,7 +320,6 @@ if gnutls.found() - endif - - qtests = { +@@ -371,7 +364,6 @@ qtests = { + 'aspeed_smc-test': files('aspeed-smc-utils.c', 'aspeed_smc-test.c'), + 'ast2700-hace-test': files('aspeed-hace-utils.c', 'ast2700-hace-test.c'), + 'ast2700-smc-test': files('aspeed-smc-utils.c', 'ast2700-smc-test.c'), - 'bios-tables-test': [io, 'boot-sector.c', 'acpi-utils.c', 'tpm-emu.c'], 'cdrom-test': files('boot-sector.c'), - 'dbus-vmstate-test': files('migration-helpers.c') + dbus_vmstate1, - 'erst-test': files('erst-test.c'), + 'dbus-vmstate-test': files('migration/migration-qmp.c', + 'migration/migration-util.c') + dbus_vmstate1, diff --git a/gnu/packages/patches/qemu-disable-migration-test.patch b/gnu/packages/patches/qemu-disable-migration-test.patch deleted file mode 100644 index 2a30d26f55..0000000000 --- a/gnu/packages/patches/qemu-disable-migration-test.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build -index e3c33a86b5..a3bbf9c841 100644 ---- a/tests/qtest/meson.build -+++ b/tests/qtest/meson.build -@@ -2,7 +2,6 @@ slow_qtests = { - 'aspeed_smc-test': 360, - 'cdrom-test' : 610, - 'device-introspect-test' : 720, -- 'migration-test' : 480, - 'npcm7xx_pwm-test': 300, - 'npcm7xx_watchdog_timer-test': 120, - 'qom-test' : 900, -@@ -100,7 +99,6 @@ qtests_i386 = \ - 'cpu-plug-test', - 'q35-test', - 'vmgenid-test', -- 'migration-test', - 'test-x86-cpuid-compat', - 'numa-test' - ] -@@ -173,7 +171,7 @@ qtests_ppc64 = \ - (slirp.found() ? ['pxe-test'] : []) + \ - (config_all_devices.has_key('CONFIG_USB_UHCI') ? ['usb-hcd-uhci-test'] : []) + \ - (config_all_devices.has_key('CONFIG_USB_XHCI_NEC') ? ['usb-hcd-xhci-test'] : []) + \ -- qtests_pci + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test'] -+ qtests_pci + ['numa-test', 'cpu-plug-test', 'drive_del-test'] - - qtests_sh4 = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) - qtests_sh4eb = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) -@@ -240,8 +238,7 @@ qtests_aarch64 = \ - config_all_devices.has_key('CONFIG_TPM_TIS_I2C') ? ['tpm-tis-i2c-test'] : []) + \ - ['arm-cpu-features', - 'numa-test', -- 'boot-serial-test', -- 'migration-test'] -+ 'boot-serial-test'] - - qtests_s390x = \ - qtests_filter + \ -@@ -249,8 +246,7 @@ qtests_s390x = \ - 'drive_del-test', - 'device-plug-test', - 'virtio-ccw-test', -- 'cpu-plug-test', -- 'migration-test'] -+ 'cpu-plug-test'] - - qtests_riscv32 = \ - (config_all_devices.has_key('CONFIG_SIFIVE_E_AON') ? ['sifive-e-aon-watchdog-test'] : []) -@@ -324,7 +320,6 @@ qtests = { - 'dbus-vmstate-test': files('migration-helpers.c') + dbus_vmstate1, - 'erst-test': files('erst-test.c'), - 'ivshmem-test': [rt, '../../contrib/ivshmem-server/ivshmem-server.c'], -- 'migration-test': migration_files, - 'pxe-test': files('boot-sector.c'), - 'qos-test': [chardev, io, qos_test_ss.apply({}).sources()], - 'tpm-crb-swtpm-test': [io, tpmemu_files], diff --git a/gnu/packages/patches/qemu-fix-test-virtio-version.patch b/gnu/packages/patches/qemu-fix-test-virtio-version.patch new file mode 100644 index 0000000000..8e466324e7 --- /dev/null +++ b/gnu/packages/patches/qemu-fix-test-virtio-version.patch @@ -0,0 +1,29 @@ +Upstream-status: Sent to qemu-devel@nongnu.org +Message-ID: <20250831125255.7066-1-maxim@guixotic.coop> + +There were some discussion in <https://gitlab.com/qemu-project/qemu/-/issues/1626>. + +diff --git a/tests/functional/test_virtio_version.py b/tests/functional/test_virtio_version.py +index a5ea73237f..501545f655 100755 +--- a/tests/functional/test_virtio_version.py ++++ b/tests/functional/test_virtio_version.py +@@ -10,6 +10,8 @@ + # This work is licensed under the terms of the GNU GPL, version 2 or + # later. See the COPYING file in the top-level directory. + ++import os ++ + from qemu.machine import QEMUMachine + from qemu_test import QemuSystemTest + +@@ -68,7 +70,9 @@ def run_device(self, devtype, opts=None, machine='pc'): + """ + Run QEMU with `-device DEVTYPE`, return device info from `query-pci` + """ +- with QEMUMachine(self.qemu_bin) as vm: ++ with QEMUMachine( ++ self.qemu_bin, ++ base_temp_dir=os.environ.get('TMPDIR', '/var/tmp')) as vm: + vm.set_machine(machine) + if opts: + devtype += ',' + opts diff --git a/gnu/packages/patches/qemu-glibc-2.41.patch b/gnu/packages/patches/qemu-glibc-2.41.patch deleted file mode 100644 index 56beab690e..0000000000 --- a/gnu/packages/patches/qemu-glibc-2.41.patch +++ /dev/null @@ -1,52 +0,0 @@ -from https://gitlab.com/qemu-project/qemu/-/commit/27a8d899c7a100fd5aa040a8b993bb257687c393 - -From 27a8d899c7a100fd5aa040a8b993bb257687c393 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 7 Feb 2025 16:09:20 +0000 -Subject: [PATCH] linux-user: Do not define struct sched_attr if libc headers - do - -glibc 2.41+ has added [1] definitions for sched_setattr and -sched_getattr functions and struct sched_attr. Therefore, it needs -to be checked for here as well before defining sched_attr, to avoid -a compilation failure. - -Define sched_attr conditionally only when SCHED_ATTR_SIZE_VER0 is -not defined. - -[1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2799 -Cc: qemu-stable@nongnu.org -Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -Signed-off-by: Peter Maydell <peter.maydell@linaro.org> ---- - linux-user/syscall.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/linux-user/syscall.c b/linux-user/syscall.c -index 6ee02383daf..df5ed18062c 100644 ---- a/linux-user/syscall.c -+++ b/linux-user/syscall.c -@@ -360,7 +360,8 @@ _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len, - #define __NR_sys_sched_setaffinity __NR_sched_setaffinity - _syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len, - unsigned long *, user_mask_ptr); --/* sched_attr is not defined in glibc */ -+/* sched_attr is not defined in glibc < 2.41 */ -+#ifndef SCHED_ATTR_SIZE_VER0 - struct sched_attr { - uint32_t size; - uint32_t sched_policy; -@@ -373,6 +374,7 @@ struct sched_attr { - uint32_t sched_util_min; - uint32_t sched_util_max; - }; -+#endif - #define __NR_sys_sched_getattr __NR_sched_getattr - _syscall4(int, sys_sched_getattr, pid_t, pid, struct sched_attr *, attr, - unsigned int, size, unsigned int, flags); --- -GitLab - diff --git a/gnu/packages/patches/soci-mysql-ddl-types.patch b/gnu/packages/patches/soci-mysql-ddl-types.patch new file mode 100644 index 0000000000..e92fb117d1 --- /dev/null +++ b/gnu/packages/patches/soci-mysql-ddl-types.patch @@ -0,0 +1,15 @@ +Description: Add two unusual column type entries to make liblinphone work +Author: Dennis Filder <d.filder@web.de> +Bug-Debian: https://bugs.debian.org/984534 +Last-Update: 2021-03-10 +--- a/src/backends/sqlite3/statement.cpp ++++ b/src/backends/sqlite3/statement.cpp +@@ -440,6 +440,8 @@ + m["mediumint"] = dt_integer; + m["smallint"] = dt_integer; + m["tinyint"] = dt_integer; ++ m["tinyintunsigned"] = dt_integer; ++ m["intunsigned"] = dt_integer; + + // dt_long_long + m["bigint"] = dt_long_long; diff --git a/gnu/packages/patches/zig-0.15-fix-runpath.patch b/gnu/packages/patches/zig-0.15-fix-runpath.patch new file mode 100644 index 0000000000..7216c97b57 --- /dev/null +++ b/gnu/packages/patches/zig-0.15-fix-runpath.patch @@ -0,0 +1,122 @@ +From d35c341322f6e84607350058007bd5be3d1d294a Mon Sep 17 00:00:00 2001 +From: Hilton Chain <hako@ultrarare.space> +Date: Fri, 29 Nov 2024 14:13:46 +0800 +Subject: [PATCH] Fix RUNPATH issue. + +Add needed libraries and libc to RUNPATH when CROSS_LIBRARY_PATH or LIBRARY_PATH +is set. +--- + lib/std/Build/Step/Compile.zig | 2 ++ + src/link/Elf.zig | 7 +++++++ + src/link/Lld.zig | 7 +++++++ + src/main.zig | 34 +++++++++++++++++++++++++++++++++- + 4 files changed, 49 insertions(+), 1 deletion(-) + +diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig +index 79d3694c02..7f6bddbea6 100644 +--- a/lib/std/Build/Step/Compile.zig ++++ b/lib/std/Build/Step/Compile.zig +@@ -794,6 +794,8 @@ fn runPkgConfig(compile: *Compile, lib_name: []const u8) !PkgConfigResult { + try zig_cflags.append(arg); + } else if (mem.startsWith(u8, arg, wl_rpath_prefix)) { + try zig_cflags.appendSlice(&[_][]const u8{ "-rpath", arg[wl_rpath_prefix.len..] }); ++ } else if (mem.startsWith(u8, arg, "-Wl,-rpath=")) { ++ try zig_libs.appendSlice(&[_][]const u8{ "-L", arg["-Wl,-rpath=".len..] }); + } else if (b.debug_pkg_config) { + return compile.step.fail("unknown pkg-config flag '{s}'", .{arg}); + } +diff --git a/src/link/Elf.zig b/src/link/Elf.zig +index 99d0ad71b0..8017f4c088 100644 +--- a/src/link/Elf.zig ++++ b/src/link/Elf.zig +@@ -988,6 +988,13 @@ fn dumpArgvInit(self: *Elf, arena: Allocator) !void { + try argv.appendSlice(gpa, &.{ "-rpath", rpath }); + } + ++ if (std.zig.system.NativePaths.isGuix(arena) and comp.config.link_libc and comp.config.link_mode == .dynamic) { ++ if (self.base.comp.libc_installation) |libc_installation| { ++ try argv.append(gpa, "-rpath"); ++ try argv.append(gpa, libc_installation.crt_dir.?); ++ } ++ } ++ + try argv.appendSlice(gpa, &.{ + "-z", + try std.fmt.allocPrint(arena, "stack-size={d}", .{self.base.stack_size}), +diff --git a/src/link/Lld.zig b/src/link/Lld.zig +index 48872f7077..814f661692 100644 +--- a/src/link/Lld.zig ++++ b/src/link/Lld.zig +@@ -1071,6 +1071,13 @@ fn elfLink(lld: *Lld, arena: Allocator) !void { + } + } + ++ if (std.zig.system.NativePaths.isGuix(arena) and comp.config.link_libc and link_mode == .dynamic) { ++ if (comp.libc_installation) |libc_installation| { ++ try argv.append("-rpath"); ++ try argv.append(libc_installation.crt_dir.?); ++ } ++ } ++ + if (have_dynamic_linker and + (comp.config.link_libc or comp.root_mod.resolved_target.is_explicit_dynamic_linker)) + { +diff --git a/src/main.zig b/src/main.zig +index 02b1b8f84b..ddc4ae8014 100644 +--- a/src/main.zig ++++ b/src/main.zig +@@ -3910,7 +3910,7 @@ fn createModule( + create_module.want_native_include_dirs = true; + } + +- if (create_module.each_lib_rpath orelse resolved_target.is_native_os) { ++ if (create_module.each_lib_rpath orelse false) { + try create_module.rpath_list.ensureUnusedCapacity(arena, create_module.lib_directories.items.len); + for (create_module.lib_directories.items) |lib_directory| { + create_module.rpath_list.appendAssumeCapacity(lib_directory.path.?); +@@ -3982,6 +3982,28 @@ fn createModule( + else => {}, + }; + ++ if (std.zig.system.NativePaths.isGuix(arena)) { ++ for (create_module.link_inputs.items) |link_input| { ++ if (link_input.path()) |lib| { ++ const lib_name = lib.sub_path; ++ if (Compilation.classifyFileExt(lib_name) == .shared_library) { ++ if (fs.path.isAbsolute(lib_name)) { ++ const lib_dir_path = fs.path.dirname(lib_name).?; ++ try create_module.rpath_list.append(arena, lib_dir_path); ++ continue; ++ } ++ for (create_module.lib_directories.items) |lib_dir| { ++ const lib_dir_path = lib_dir.path.?; ++ if (try libPathExists(arena, lib_dir_path, lib_name)) { ++ try create_module.rpath_list.append(arena, lib_dir_path); ++ break; ++ } ++ } ++ } ++ } ++ } ++ } ++ + create_module.resolved_options = Compilation.Config.resolve(create_module.opts) catch |err| switch (err) { + error.WasiExecModelRequiresWasi => fatal("only WASI OS targets support execution model", .{}), + error.SharedMemoryIsWasmOnly => fatal("only WebAssembly CPU targets support shared memory", .{}), +@@ -7633,3 +7655,13 @@ fn addLibDirectoryWarn2( + .path = path, + }); + } ++ ++fn libPathExists(arena: Allocator, lib_dir_path: []const u8, lib_name: []const u8) !bool { ++ const lib_path = try std.fmt.allocPrint(arena, "{s}{s}{s}", .{ ++ lib_dir_path, ++ fs.path.sep_str, ++ lib_name, ++ }); ++ fs.cwd().access(lib_path, .{}) catch return false; ++ return true; ++} +-- +2.50.1 + diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 4c18dad6ed..b590e3a624 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -324,19 +324,19 @@ information.") (define-public flyer-composer (package (name "flyer-composer") - (version "1.0rc2") + (version "1.0") (source (origin (method url-fetch) - (uri (pypi-uri "flyer-composer" version)) + (uri (pypi-uri "flyer_composer" version)) (sha256 - (base32 "17igqb5dlcgcq4nimjw6cf9qgz6a728zdx1d0rr90r2z0llcchsv")))) - (build-system python-build-system) + (base32 "1874vmz606155w9xm3r4q9xziva1mai1kyqhjg5hnndpwl09xgv5")))) + (build-system pyproject-build-system) (arguments `(#:tests? #f ;; TODO #:phases (modify-phases %standard-phases - (add-after 'install 'wrap-executable + (add-after 'wrap 'wrap-gui (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (qtbase (assoc-ref inputs "qtbase")) @@ -346,12 +346,9 @@ information.") (,(string-append qtbase "/lib/qt5/plugins"))) `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" = (,(string-append qtbase "/lib/qt5/plugins/platforms")))))))))) - (inputs - (list bash-minimal - python-poppler-qt5 - python-pypdf2 - python-pyqt - qtbase-5)) + (native-inputs (list python-setuptools python-wheel)) + (propagated-inputs (list python-pypdf)) + (inputs (list bash-minimal python-poppler-qt5 python-pyqt qtbase-5)) (home-page "http://crazy-compilers.com/flyer-composer") (synopsis "Rearrange PDF pages to print as flyers on one sheet") (description "@command{flyer-composer} can be used to prepare one- or @@ -379,8 +376,7 @@ This package contains both the command line tool and the gui too.") (substitute* "setup.cfg" (("^\\s+flyer-composer-gui\\s*=.*") "")) #t))))) - (inputs - `(("python-pypdf2" ,python-pypdf2))) + (inputs (list)) ; clear the gui inputs (description "@command{flyer-composer} can be used to prepare one- or two-sided flyers for printing on one sheet of paper. @@ -1466,7 +1462,7 @@ converter using the Poppler and Cairo libraries.") (define-public python-pypdf (package (name "python-pypdf") - (version "5.1.0") + (version "6.0.0") (source (origin (method git-fetch) @@ -1475,7 +1471,7 @@ converter using the Poppler and Cairo libraries.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0dl3nmvsk43s2v6a5cwwvfwpyvhsl9wcrdnqbzjsp50zqibi23pz")))) + (base32 "0p0650ya5f84d7khf34an9qpyww6yxnsdhgbppxfy3bg3qkx3s7g")))) (build-system pyproject-build-system) (arguments (list @@ -1491,6 +1487,7 @@ converter using the Poppler and Cairo libraries.") " and not ")))) (native-inputs (list python-flit + python-flit-core-next python-pytest python-pytest-socket python-pytest-timeout @@ -1606,18 +1603,18 @@ PDF Arranger was formerly known as PDF-Shuffler.") (define-public pdfposter (package (name "pdfposter") - (version "0.7.post1") - (source (origin - (method url-fetch) - (uri (pypi-uri "pdftools.pdfposter" version)) - (sha256 - (base32 - "0c1avpbr9q53yzq5ar2x485rmp9d0l3z27aham32bg7gplzd7w0j")))) - (build-system python-build-system) + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pdfposter" version)) + (sha256 + (base32 "0vhg43svzxr6ppcy888xg1hzjqfxbx5cc4qi77n4pvrqfan19633")))) + (build-system pyproject-build-system) (arguments - `(#:tests? #f)) ; test-suite not included in source archive - (inputs - (list python-pypdf2)) + `(#:tests? #f)) ;test-suite not included in source archive + (native-inputs (list python-setuptools python-wheel)) + (inputs (list python-pypdf)) (home-page "https://pythonhosted.org/pdftools.pdfposter/") (synopsis "Scale and tile PDF images/pages to print on multiple pages") (description "@command{pdfposter} can be used to create a large poster by diff --git a/gnu/packages/pep.scm b/gnu/packages/pep.scm deleted file mode 100644 index 2385d74e0d..0000000000 --- a/gnu/packages/pep.scm +++ /dev/null @@ -1,342 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2020, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages pep) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (guix git-download) - #:use-module (guix build-system gnu) - #:use-module (guix build-system python) - #:use-module (guix build-system pyproject) - #:use-module (gnu packages) - #:use-module (gnu packages base) - #:use-module (gnu packages boost) - #:use-module (gnu packages check) - #:use-module (gnu packages documentation) - #:use-module (gnu packages graphviz) - #:use-module (gnu packages java) - #:use-module (gnu packages linux) - #:use-module (gnu packages mail) ; for libetpan - #:use-module (gnu packages nettle) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages python-build) - #:use-module (gnu packages python-xyz) - #:use-module (gnu packages sequoia) - #:use-module (gnu packages sqlite) - #:use-module (gnu packages tls) - #:use-module (gnu packages xml)) - -(define-public yml2 - (package - (name "yml2") - (version "2.7.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitea.pep.foundation/fdik/yml2") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0fm1x1fv4lwcpbn59s55idzf7x173n59xpz8rlrxalmi6gvsjijr")))) - (build-system pyproject-build-system) - (arguments - (list - ;; XXX: There is no testing framework, only a samples directory. - #:tests? #f)) - (native-inputs (list python-setuptools python-wheel)) - (propagated-inputs (list python-lxml)) - (home-page "https://fdik.org/yml/") - (synopsis "Use a Domain Specific Language for XML without defining -a grammar") - (description - "The YML compiler is a small Python script. It provides the command line -front end yml2c. As default, it compiles your script and outputs to stdout, -that usually is the terminal. Your shell provides options to redirect the -output into a pipe or a file.") - (license license:gpl2))) - -(define fdik-libetpan - ;; pEp Engine requires libetpan with a set of patches that have not been - ;; upstreamed yet. - (let ((commit "0b80c39dd1504462ba3a39dc53db7c960c3a63f3") ; 2020-11-27 - (checksum "0gv3ivaziadybjlf6rfpv1j5z5418243v5cvl4swlxd2njsh7gjk") - (revision "6")) - (package - (inherit libetpan) - (name "fdik-libetpan") - (version (string-append "1.6-" revision "." (string-take commit 8))) - (source - (origin - (inherit (package-source libetpan)) - (method git-fetch) - (uri (git-reference - (url "https://gitea.pep.foundation/pEp.foundation/libetpan") - (commit commit))) - (file-name (string-append name "-" version)) - (sha256 (base32 checksum))))))) - -(define-public pep-engine - (package - (name "pep-engine") - (version "2.1.34") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitea.pep.foundation/pEp.foundation/pEpEngine") - (commit (string-append "Release_" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "00q96y9j985qfa382acsz02i0zf6ayq2gmg8z70jzl04isg1h3cn")))) - (build-system gnu-build-system) - (arguments - '(#:parallel-build? #f - #:make-flags '("NDEBUG=1") ; release build - #:phases - (modify-phases %standard-phases - (replace 'configure - ;; pEpEngine does not use autotools and configure, - ;; but a local.conf. We need to tweak the values there. - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (yml2 (assoc-ref inputs "yml2"))) - (with-output-to-file "local.conf" - (lambda () - (format #t " -PREFIX=~a -PER_MACHINE_DIRECTORY=${PREFIX}/share/pEp -SYSTEM_DB=~a/share/pEp/system.db -ASN1C=~a -YML2_PATH=~a -OPENPGP=SEQUOIA -" - out out (which "asn1c") - (string-append yml2 "/bin")))) - #t))) - (delete 'check) - (add-after 'install 'install-db - (lambda _ - (invoke "make" "-C" "db" "install")))))) - (native-inputs - (list asn1c ; >= 0.9.27 - pkg-config yml2)) - (inputs - (list fdik-libetpan - nettle - openssl - sequoia - sqlite - `(,util-linux "lib"))) ;; uuid.h - (home-page "https://pep.foundation/") - (synopsis "Library for automatic key management and encryption of -messages") - (description "The p≡p engine is the core part of p≡p (pretty Easy -privacy).") - (license ;; code: GPL 3, docs: CC-BY-SA - (list license:gpl3 license:cc-by-sa3.0)))) - -(define-public libpepadapter - (package - (name "libpepadapter") - (version "2.1.21") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitea.pep.foundation/pEp.foundation/libpEpAdapter") - (commit (string-append "Release_" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "09ljj3x09y99wc47n063hpn62zi8cdvdha82rnaypvirrlga6a5w")))) - (build-system gnu-build-system) - (arguments - '(#:test-target "test" - #:tests? #f ;; building the tests fails - #:make-flags '("NDEBUG=1") ; release build - #:phases - (modify-phases %standard-phases - (replace 'configure - ;; libpEpAdapter does not use autotools and configure, - ;; but a local.conf. We need to tweak the values there. - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (engine (assoc-ref inputs "pep-engine"))) - (with-output-to-file "local.conf" - (lambda _ - (format #t " -PREFIX=~a -ENGINE_LIB_PATH=~a/lib -ENGINE_INC_PATH=~a/include -" out engine engine)))) - #t))))) - (inputs - (list pep-engine)) - (home-page "https://pep.foundation/") - (synopsis "Library for building p≡p adapters") - (description "This C++ library provides common structures used in p≡p -(pretty Easy privacy) adapters.") - (license license:bsd-3))) - -(define-public python-pep-adapter - (package - (name "python-pep-adapter") - (version "2.1.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitea.pep.foundation/pEp.foundation/pEpPythonAdapter") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0ssz21p1k7xx3snmd4g3ggzq565rlzdmp90l2mph6yfp1y65p39s")))) - (build-system python-build-system) - (arguments - `(;; Adding configure-flags does not work, running `build_ext` - ;; with these flags, neither does adding the options to - ;; `setup.cfg`: Either `build` or `install` fails (since - ;; flags are given or missing), or "command 'BuildExtCommand' - ;; has no such option 'pep_engine" - ;; '(#:configure-flags - ;; (list (string-append "--with-pEp-engine=" - ;; (assoc-ref inputs "pEpEngine")) - ;; (string-append "--with-pEp-libadapter=" - ;; (assoc-ref inputs "libpEpAdapter")) - ;; ;;(string-append "--boost=" - ;; (assoc-ref inputs "boost")) not supported - ;; (string-append "--with-asn1c-share=" - ;; (assoc-ref inputs "asn1c") "/share")) - #:phases - (modify-phases %standard-phases - (add-before 'build 'fix-setup.py - (lambda _ - (substitute* "setup.py" - (("^(\\s+SYS_INCLUDES = )\\['/usr.*" _ a) - (string-append a "os.getenv('CPATH', '').split(os.pathsep)\n")) - (("^(\\s+SYS_LIB_PREFIXES = )\\['/usr.*" _ a) - (string-append a "os.getenv('LIBRARY_PATH', '').split(os.pathsep)\n")) - (("^(\\s+SYS_SHARES = )\\['/usr.*" _ a) - (string-append a "['" (assoc-ref %build-inputs "asn1c") "/share']\n"))) - #t)) - (add-before 'build 'remove-wheel-requirement - ;; we dont't build a wheel - (lambda _ - (substitute* "setup.cfg" - ((" wheel *>= [0-9.]*") "")) - (substitute* "pyproject.toml" - (("\"wheel *>=.*\"") "")) - #t))))) - (native-inputs - (list python-pytest python-pytest-forked)) - (inputs - (list boost libpepadapter pep-engine python-setuptools-scm - `(,util-linux "lib"))) ;; uuid.h - (home-page "https://pep.foundation/") - (synopsis "Python adapter for p≡p (pretty Easy Privacy)") - (description "The p≡p Python adapter is an adaptor interface to the p≡p -(pretty Easy privacy) engine.") - (license license:gpl3))) - -(define-public java-pep-adapter - (package - (name "java-pep-adapter") - (version "2.1.23") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitea.pep.foundation/pEp.foundation/pEpJNIAdapter") - (commit (string-append "Release_" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1sw3a5ggxcrkghvpp0a6h2lz461x55ldgfw5y4pw7c3gk5wynvjk")))) - (build-system gnu-build-system) - (outputs '("out" "doc")) - (arguments - `(#:test-target "test" - #:make-flags '("NDEBUG=1" "all" "doc") ; release build - #:phases - (modify-phases %standard-phases - (add-before 'configure 'pin-shared-lib-path - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "src/java/foundation/pEp/jniadapter/AbstractEngine.java" - (("System.loadLibrary\\(\"pEpJNI\"\\);") - (string-append "System.load(\"" - (assoc-ref outputs "out") - "/lib/libpEpJNI.so" "\");"))) - #t)) - (replace 'configure - ;; pEpJNIAdapter does not use autotools and configure, - ;; but a local.conf. We need to tweak the values there. - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (engine (assoc-ref inputs "pep-engine")) - (libadapter (assoc-ref inputs "libpepadapter")) - (openjdk (assoc-ref inputs "openjdk"))) - (with-output-to-file "local.conf" - (lambda _ - (format #t " -PREFIX=~a -ENGINE_LIB_PATH=~a/lib -ENGINE_INC_PATH=~a/include -AD_LIB_PATH=~a/lib -AD_INC_PATH=~a/include -YML2_PROC=~a -JAVA_HOME=~a -" - out engine engine libadapter libadapter - (which "yml2proc") openjdk))) - (substitute* "src/Makefile" ;; suppress some warnings - (("^\\s+OLD_JAVA=") " xxx_OLD_JAVA=")) - #t))) - (add-before 'build 'build-codegen - ;; run codegen first to allow parallel build of other parts - (lambda _ - (invoke "make" "-C" "src" "create-dirs" "codegen"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (libout (string-append out "/lib/")) - (javaout (string-append out "/share/java/"))) - (install-file "dist/libpEpJNI.a" libout) - (install-file "dist/libpEpJNI.so" libout) - (install-file "dist/pEp.jar" javaout) - #t))) - (add-after 'install 'install-docs - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "doc")) - (docout (string-append out "/share/doc/pEp-JNI-adapter")) - (cxxout (string-append docout "/cxx")) - (javaout (string-append docout "/java"))) - (mkdir-p cxxout) - (mkdir-p javaout) - (copy-recursively "doc/doxygen/cxx/html" cxxout) - (copy-recursively "doc/doxygen/java/html" javaout) - #t)))))) - (native-inputs - (list doxygen graphviz - `(,openjdk9 "jdk") which yml2)) - (inputs - (list libpepadapter pep-engine - `(,util-linux "lib"))) ;; uuid.h - (home-page "https://pep.foundation/") - (synopsis "Java adapter for p≡p (pretty Easy Privacy)") - (description "The p≡p JNI adapter is a Java adapter interface to the p≡p -(pretty Easy privacy) engine.") - (license license:gpl3))) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 33990bc2eb..c91e92fca2 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -36,6 +36,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system meson) #:use-module (guix build-system perl) + #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix gexp) #:use-module (guix download) @@ -514,17 +515,41 @@ scene to produce an image that looks much like a tone-mapped image.") (base32 "1lwf3cwldvh9qfmh3w7nqqildfmxx2i5f5bn0vr8y6qc5kh7a1s9")))) (build-system cmake-build-system) (arguments - `(,@(if (any (cute string-prefix? <> (or (%current-system) - (%current-target-system))) - '("x86_64" "i686")) - ;; SSE and SSE2 are supported only on Intel processors. - '() - '(#:configure-flags '("-DBUILD_FOR_SSE=OFF" "-DBUILD_FOR_SSE2=OFF"))) - #:tests? #f)) ; There are no tests to run. + (list + #:imported-modules `(,@%cmake-build-system-modules + ,@%pyproject-build-system-modules) + #:modules '((guix build cmake-build-system) + ((guix build pyproject-build-system) #:prefix py:) + (guix build utils)) + #:configure-flags + (if (any (cute string-prefix? <> (or (%current-system) + (%current-target-system))) + '("x86_64" "i686")) + ;; SSE and SSE2 are supported only on Intel processors. + #~'() + #~'("-DBUILD_FOR_SSE=OFF" "-DBUILD_FOR_SSE2=OFF")) + #:tests? #f ; There are no tests to run. + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-egg + (lambda _ + (substitute* "apps/CMakeLists.txt" + ;; Prevent creation of Python egg. + (("\\$\\{SETUP_PY\\} install") + "${SETUP_PY} install --single-version-externally-managed --root=/")))) + (add-after 'install 'python-wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (for-each (lambda (program) + (wrap-program (search-input-file outputs program) + `("GUIX_PYTHONPATH" ":" prefix + (,(getenv "GUIX_PYTHONPATH") + ,(py:site-packages inputs outputs))))) + (list "bin/lensfun-update-data" + "bin/lensfun-add-adapter"))))))) (native-inputs (list pkg-config)) (inputs - (list glib)) + (list bash-minimal glib python)) (home-page "https://lensfun.github.io/") (synopsis "Library to correct optical lens defects with a lens database") (description "Digital photographs are not ideal. Of course, the better is @@ -545,7 +570,7 @@ photographic equipment.") (define-public darktable (package (name "darktable") - (version "5.2.0") + (version "5.2.1") (source (origin (method url-fetch) @@ -553,7 +578,7 @@ photographic equipment.") "https://github.com/darktable-org/darktable/releases/" "download/release-" version "/darktable-" version ".tar.xz")) (sha256 - (base32 "1imyk611wz0zxp03w91lhsxkj5hqgi0apx5bqj2q84gpdva6r92k")))) + (base32 "04gfcislcq2wymfqcir5bpwqfarcz5gynkn3ajyffj9rx6damw82")))) (build-system cmake-build-system) (arguments (list @@ -678,9 +703,19 @@ and enhance them.") (list #:tests? #f ;Tests are only examples #:configure-flags - #~(list "-DUSE_BUNDLED_LIBRAW=OFF" - "-DBINARY_PACKAGE_BUILD=ON") - #:build-type "Release")) ;Rawspeed fails on default 'RelWithDebInfo' + #~(list "-DUSE_BUNDLED_LIBRAW=OFF" + "-DBINARY_PACKAGE_BUILD=ON") + #:build-type "Release" ;Rawspeed fails on default 'RelWithDebInfo' + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'libOpenCL-path + (lambda* (#:key inputs #:allow-other-keys) + ;; Statically link to libOpenCL. + (substitute* "./src/common/dlopencl.c" + (("\"libOpenCL\"") + (string-append "\"" + (search-input-file inputs "/lib/libOpenCL.so") + "\"")))))))) (native-inputs (list cmocka desktop-file-utils diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm index fedfafbbad..4ef7656a04 100644 --- a/gnu/packages/prolog.scm +++ b/gnu/packages/prolog.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2021, 2024 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> -;;; Copyright © 2024 jgart <jgart@dismail.de> +;;; Copyright © 2024-2025 jgart <jgart@dismail.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -185,7 +185,7 @@ it.") (define-public trealla (package (name "trealla") - (version "2.82.16") + (version "2.82.25") (source (origin (method git-fetch) @@ -194,7 +194,7 @@ it.") (url "https://github.com/trealla-prolog/trealla") (commit (string-append "v" version)))) (sha256 - (base32 "0i1qm6jnvb93m29nd7wnjr0fkdr75087llc8khqpgmdz3j55x1g7")) + (base32 "0mq1yf5sxzvi9rkw1vwmyh0a9yv8rhqy8z0wd5k748ymvjfhi6g2")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (native-inputs diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm index b5ad5e7519..d3b31b05c7 100644 --- a/gnu/packages/python-build.scm +++ b/gnu/packages/python-build.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2020, 2023 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> -;;; Copyright © 2018, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2018, 2021-2023, 2025 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org> ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net> @@ -252,6 +252,20 @@ Included are implementations of: @end enumerate\n") (license license:psfl))) +(define-public python-typing-extensions-next + (package + (inherit python-typing-extensions) + (version "4.15.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "typing_extensions" version)) + (sha256 + (base32 "0rhlhs28jndgp9fghdhidn6g7xiwx8vvihxbxhlgl4ncfg8lishc")))) + (native-inputs + (modify-inputs (package-native-inputs python-typing-extensions) + (replace "python-flit-core" python-flit-core-next))))) + ;;; ;;; Python builder packages. diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index bfe187d3c0..77ed0d3ba2 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -753,6 +753,28 @@ install: libbitshuffle.so (inputs '()) (native-inputs '()))) +(define-public python-uncompresspy + (package + (name "python-uncompresspy") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "uncompresspy" version)) + (sha256 + (base32 "1110dipshnijhq6dk5dxzxx3zpynm6dx5kcc430fw24b8xwlc9in")))) + (build-system pyproject-build-system) + (arguments + (list #:tests? #f)) ;no tests + (native-inputs + (list python-setuptools-next)) + (home-page "https://github.com/kYwzor/uncompresspy") + (synopsis "Uncompressing LZW files in Python") + (description + "This package implement a pure Python module for uncompressing LZW +files (.Z), such as the ones created by Unix's shell tool compress.") + (license license:bsd-3))) + (define-public python-unix-ar (package (name "python-unix-ar") diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 96cbe0b958..32bf443722 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -2701,24 +2701,27 @@ Java objects.") (define-public python-pymdown-extensions (package (name "python-pymdown-extensions") - (version "8.1.1") + (version "10.16.1") (source (origin - (method url-fetch) - (uri - (pypi-uri "pymdown-extensions" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/facelessuser/pymdown-extensions") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 "0d8pdndrl1kj105lq7r6kw2dnhcvll6h2qs07w71mcpi7gx728v3")))) - (build-system python-build-system) - ;; FIXME: "AssertionError: False is not true" + (base32 "0r36nk1ppq1wrgb1lcy9asp9872xr0gbhxrjw7dpa8lp6m7nqb9k")))) + (build-system pyproject-build-system) + ;; XXX: A lot of HTML tests fail with negligible discrepancies. (arguments - `(#:tests? #f)) - (propagated-inputs - (list python-markdown)) + (list #:tests? #f)) + (native-inputs (list python-hatchling python-pytest python-pyyaml)) + (propagated-inputs (list python-markdown)) (home-page "https://github.com/facelessuser/pymdown-extensions") (synopsis "Extension pack for Python Markdown") - (description "PyMdown Extensions is a collection of extensions for Python -Markdown. All extensions are found under the module namespace of pymdownx.") + (description + "PyMdown Extensions is a collection of extensions for Python Markdown. +All extensions are found under the module namespace of pymdownx.") (license license:expat))) (define-public python-plotext @@ -3367,7 +3370,7 @@ point types: (define-public python-glymur (package (name "python-glymur") - (version "0.13.6") + (version "0.14.3") (source (origin (method git-fetch) ; no tests data in PyPi package @@ -3376,7 +3379,7 @@ point types: (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "06v6g0fwzmy2imhrvy0q4zrhrlrp24yhs098vi13r92ga63c72xl")))) + (base32 "0266gj8a2p8jkbgb34lgk8dwin7ib2g38vdh04b2p6yhqx8w3xg8")))) (build-system pyproject-build-system) (arguments (list @@ -3407,15 +3410,14 @@ point types: (list python-pytest python-pytest-xdist python-scikit-image - python-setuptools - python-wheel)) + python-setuptools-next)) (inputs (list openjpeg ; glymur/lib/openjp2.py libtiff)) ; glymur/lib/tiff.py (propagated-inputs (list python-lxml python-numpy - python-packaging)) + python-pillow )) (home-page "https://github.com/quintusdias/glymur") (synopsis "Python interface to OpenJPEG and LibTIFF") (description @@ -6519,44 +6521,41 @@ defined.") (define-public python-extension-helpers (package (name "python-extension-helpers") - (version "1.2.0") + (version "1.4.0") (source (origin (method git-fetch) ; no tests in the PyPI tarball (uri (git-reference - (url "https://github.com/astropy/extension-helpers") - (commit (string-append "v" version)))) + (url "https://github.com/astropy/extension-helpers") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1cfzh3ijjp18as2qnmm1nnw6a3daqd7a2q17i0c6h1wq2jbawxxa")))) + (base32 "0ljvfv9p7jay4j31awx1h714xhyn5hbfgyhn4nm71xrkz9la113j")))) (build-system pyproject-build-system) (arguments (list - ;; It tries to install it via pip: E ModuleNotFoundError: No module named - ;; 'helpers_test_package_fd9cc3a9_11fa_4a1a_b80e_c5b043949604' - #:test-flags #~(list "-k" "not test_only_pyproject and not test_no_setup_py") + #:test-flags + #~(list "--pyargs" "extension_helpers" + "-k" (string-join + ;; XXX: Tests try to check various compilation options and + ;; fail with some incomparability or trying to download + ;; missing modules. + (list "not test_only_pyproject" + "test_no_setup_py" + "test_limited_api") + " and not ")) #:phases #~(modify-phases %standard-phases ;; LookupError: setuptools-scm was unable to detect version for ;; /tmp/guix-build-python-extension-helpers-1.2.0.drv-0/source. (add-before 'build 'set-version (lambda _ - (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))) - (replace 'check - (lambda* (#:key tests? test-flags #:allow-other-keys) - (when tests? - (setenv "HOME" "/tmp") - (with-directory-excursion "/tmp" - (apply invoke "pytest" "-v" test-flags)))))))) + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) (native-inputs (list python-pytest - python-pytest-astropy - python-pytest-cov - python-setuptools-scm - python-tomli - python-setuptools - python-wheel - python-pip)) + python-setuptools-scm)) + (propagated-inputs + (list python-setuptools-next)) (home-page "https://extension-helpers.readthedocs.io") (synopsis "Astropy ecosystem utilities for building and installing packages") (description @@ -6787,7 +6786,7 @@ palettes.") (propagated-inputs ;; Youtube-dl is a python package which is imported in the file ;; "backend_youtube_dl.py", therefore it needs to be propagated. - (list youtube-dl)) + (list yt-dlp)) (home-page "https://np1.github.io/pafy/") (synopsis "Retrieve YouTube content and metadata") (description @@ -7635,29 +7634,30 @@ memory usage and transliteration quality.") (license license:expat))) (define-public python-pymsgbox - (package - (name "python-pymsgbox") - (version "1.0.6") - (source - (origin - (method git-fetch) - (uri (git-reference - ;; LICENSE.txt is not present on pypi - (url "https://github.com/asweigart/PyMsgBox") - (commit "55926b55f46caa969c5ddb87990ebea2737bd66f"))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0zy7rjfpwlrd8b64j7jk2lb8m2npc21rnpwakpfvwgl4nxdy80rg")))) - (arguments - ;; Circular dependency to run tests: - ;; Tests need pyautogui, which depends on pymsgbox. - '(#:tests? #f)) - (build-system python-build-system) - (home-page "https://github.com/asweigart/PyMsgBox") - (synopsis "Python module for JavaScript-like message boxes") - (description - "PyMsgBox is a simple, cross-platform, pure Python module for + (let ((commit "944b7cdc67058d005ce5fd011c66f2d87d25aba0") + (revision "1")) + (package + (name "python-pymsgbox") + (version (git-version "1.0.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/asweigart/PyMsgBox") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1bhipfvnc06l8hiadk302v74yin38nwz1r47njliwk8kz103yl3g")))) + (build-system pyproject-build-system) + (arguments + ;; Circular dependency to run tests: + ;; Tests need pyautogui, which depends on pymsgbox. + '(#:tests? #f)) + (native-inputs (list python-setuptools python-wheel)) + (home-page "https://github.com/asweigart/PyMsgBox") + (synopsis "Python module for JavaScript-like message boxes") + (description + "PyMsgBox is a simple, cross-platform, pure Python module for JavaScript-like message boxes. Types of dialog boxes include: @enumerate @item alert @@ -7666,7 +7666,7 @@ JavaScript-like message boxes. Types of dialog boxes include: @item password @end enumerate ") - (license license:bsd-3))) + (license license:bsd-3)))) (define-public python-pympler (package @@ -8960,7 +8960,7 @@ ecosystem, but can naturally be used also by other projects.") (define-public python-robotframework (package (name "python-robotframework") - (version "7.2.2") + (version "7.3.2") (source (origin (method git-fetch) ; no tests in the PyPI archive @@ -8969,7 +8969,7 @@ ecosystem, but can naturally be used also by other projects.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1a34dv5gpaiqbddblfnirp1ja2a1069n9nifasn4g26kcj69fpra")))) + (base32 "0azis3dj7lfiwrr5gr1gr78z5m05vvl8n20rw3bz93s05z94h5i7")))) (outputs '("out" "doc")) (build-system pyproject-build-system) (arguments @@ -9009,6 +9009,7 @@ ecosystem, but can naturally be used also by other projects.") python-jsonschema python-pygments python-rellu + python-typing-extensions-next python-setuptools `(,python "tk") ;used when building the HTML doc python-wheel)) @@ -9621,22 +9622,9 @@ errors when data is invalid.") (list #:test-flags #~(list "--ignore=tests/test_docs.py" ; no pytest_examples - ;; These tests include hashes that keep changing depending on - ;; package versions. - "--ignore=tests/benchmarks/test_north_star.py" + "--ignore-glob=tests/benchmarks/*" ;; Unimportant difference in one test's error message. - "--ignore=tests/test_networks.py") - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'pre-check - (lambda _ - ;; Remove the addopts from pyproject.toml, it breaks the 'check - ;; phase. - (substitute* "pyproject.toml" - (("'--benchmark") "#'--benchmark") - ;; Do not fail on deprecation warnings. - (("ignore:path is deprecated.*:DeprecationWarning:") - "ignore::DeprecationWarning"))))))) + "--ignore=tests/test_networks.py"))) (native-inputs (list tzdata-for-tests python-dirty-equals @@ -13038,7 +13026,6 @@ data, and scientific formats.") (build-system pyproject-build-system) (native-inputs (list pkg-config - python-pyperf python-pytest python-setuptools python-wheel)) @@ -17577,38 +17564,35 @@ reading and writing MessagePack data.") #t)))))))) (define-public python-openstep-plist - (package - (name "python-openstep-plist") - (version "0.3.0") - (home-page "https://github.com/fonttools/openstep-plist") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1rxjgzh0p069ncsr2986rn32vhdqyq35irbqg2559jh18456mkca")))) - (build-system python-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'pretend-version - (lambda _ - (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" - #$(package-version this-package)))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "pytest" "-vv"))))))) - (native-inputs - (list python-cython python-pytest python-setuptools-scm)) - (synopsis "OpenStep plist parser and writer") - (description - "This package provides a parser for the \"old style\" OpenStep property + (package + (name "python-openstep-plist") + (version "0.3.0") + (home-page "https://github.com/fonttools/openstep-plist") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rxjgzh0p069ncsr2986rn32vhdqyq35irbqg2559jh18456mkca")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'pretend-version + (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" + #$(package-version this-package))))))) + (native-inputs (list python-cython python-pytest python-setuptools-scm + python-setuptools python-wheel)) + (synopsis "OpenStep plist parser and writer") + (description + "This package provides a parser for the \"old style\" OpenStep property list format (also known as ASCII plist), written in Cython.") - (license license:expat))) + (license license:expat))) (define-public python-wrapt (package @@ -17720,25 +17704,15 @@ Unicode-aware. It is not intended as an end-user tool.") (uri (pypi-uri "xlwt" version)) (sha256 (base32 "123c2pdamshkq75wwvck8fq0cjq1843xd3x9qaiz2a4vg9qi56f5")))) - (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "GUIX_PYTHONPATH" - (string-append (getcwd) "/build/lib:" - (getenv "GUIX_PYTHONPATH"))) - (invoke "nosetests" "-v"))))))) - (native-inputs - `(("nose" ,python-nose))) + (build-system pyproject-build-system) + (native-inputs (list python-pytest python-setuptools python-wheel)) (home-page "https://www.python-excel.org/") (synopsis "Library for creating spreadsheet Excel files") - (description "@code{xlwt} is a library for writing data and formatting -information to older Excel files (i.e. .xls). The package itself is pure -Python with no dependencies on modules or packages outside the standard Python -distribution. It is not intended as an end-user tool.") + (description + "@code{xlwt} is a library for writing data and formatting information to +older Excel files (i.e. .xls). The package itself is pure Python with no +dependencies on modules or packages outside the standard Python distribution. +It is not intended as an end-user tool.") (license license:bsd-3))) (define-public python-immutables @@ -20712,17 +20686,39 @@ library as well as on the command line.") (version "1.7.0") (source (origin - (method url-fetch) - (uri (pypi-uri "plumbum" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/tomerfiliba/plumbum") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "1kidj821k79dw064rlxh84xamb9h79ychg3pgj81jlvm5hs48xri")))) - (build-system python-build-system) + (base32 "1vlaiz4bwgrcay51knj6a20lh3lwihjqxhxhdk6nqkn9ijg0hc81")))) + (build-system pyproject-build-system) (arguments - `(#:tests? #f)) ;no tests + (list + #:test-flags + #~(list "--ignore=tests/test_remote.py" + "--ignore=tests/test_putty.py" + "--ignore=tests/test_sudo.py" + "-k" + (string-join (list "not test_home" + "test_iter_lines_error" + "test_quoting" + "test_copy_move_delete") + " and not ")) + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'set-version + (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) (native-inputs - ;; XXX: Not actually used since there are no tests but required for - ;; build. - (list python-pytest)) + (list procps + python-psutil + python-pytest + python-pytest-cov + python-setuptools + python-setuptools-scm + python-wheel)) (home-page "https://plumbum.readthedocs.io") (synopsis "Python shell combinators library") (description @@ -38126,12 +38122,13 @@ collection.") (uri (pypi-uri "types-toml" version)) (sha256 (base32 "10400bd3yv6rjfnq8galskkbpqz1sfx9sfgr5qwvw04270x4cjgr")))) - (build-system python-build-system) + (build-system pyproject-build-system) + (native-inputs (list python-setuptools python-wheel)) (home-page "https://github.com/python/typeshed") (synopsis "Typing stubs for TOML") - (description "This package contains typing stubs for TOML, a very small -subset the Python stubs contained in the complete @code{typeshed} -collection.") + (description + "This package contains typing stubs for TOML, a very small subset the +Python stubs contained in the complete @code{typeshed} collection.") (license license:asl2.0))) (define-public python-types-ujson @@ -38382,32 +38379,18 @@ easy to write code that's correct across platforms and Pythons.") (uri (pypi-uri "pyperf" version)) (sha256 (base32 "189qf9wdbig0fk4n3bavx8acgdbay5lllfvw48jvbfaafb7y5hja")))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - ;; Some of these tests fail with: - ;; - ;; ModuleNotFoundError: No module named 'pyperf' - ;; - ;; even when calling ‘add-installed-pythonpath’ in the ‘check’ - ;; phase. - (delete-file "pyperf/tests/test_examples.py"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; From tox.ini's ‘testenv.commands’. - (invoke "python" "-bb" "-Wd" - "-m" "unittest" "discover" - "-s" "pyperf/tests/" "-v"))))))) - (native-inputs - (list python-psutil)) + (list + #:test-flags + #~(list "--ignore=pyperf/tests/test_examples.py"))) + (native-inputs (list python-psutil python-pytest python-setuptools + python-wheel)) (home-page "https://github.com/psf/pyperf") (synopsis "Toolkit for running Python benchmarks") - (description "The Python @code{pyperf} module is a toolkit for writing, -running and analyzing benchmarks. It features a simple API that can: + (description + "The Python @code{pyperf} module is a toolkit for writing, running and +analyzing benchmarks. It features a simple API that can: @itemize @item automatically calibrate a benchmark for a time budget; @@ -38850,68 +38833,86 @@ nested data structures in Python like lists and dictionaries.") (license license:expat))) (define-public python-murmurhash3 - (package - (name "python-murmurhash3") - (version "2.3.5") - (source (origin - (method url-fetch) - (uri (pypi-uri "murmurhash3" version)) - (sha256 - (base32 - "1gdzys1212dx70byz07ipknbw1awbqskh6aznlkm85js8b8qfczm")))) - (build-system python-build-system) - (native-inputs (list python-cython python-pytest)) - (inputs (list python)) - (arguments - (list #:modules - '((ice-9 ftw) (ice-9 match) - (guix build utils) - (guix build python-build-system)) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'set-source-file-times-to-1980 - (lambda _ - (let ((circa-1980 (* 10 366 24 60 60))) - (ftw "." - (lambda (file stat flag) - (utime file circa-1980 circa-1980) #t)))))))) - (home-page "https://github.com/veegee/mmh3") - (synopsis "Python wrapper for MurmurHash (MurmurHash3)") - (description - "@code{murmurhash3} is a Python library for MurmurHash (MurmurHash3), a set + (let ((commit "01f1128a2c5ea08e6dc33515e140bedd68393a2d") + (revision "0")) + (package + (name "python-murmurhash3") + (version (git-version "2.3.5" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/veegee/mmh3") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zpk51ms1bvzg52zc9s9az71bgw2kgxidjcc1xib7y9r7dl7vczz")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-package + (lambda _ + (substitute* "mmh3module.cpp" + (("#include <stdio\\.h>") + "#define PY_SSIZE_T_CLEAN\n#include <stdio.h>"))))))) + (native-inputs + (list python-cython python-pytest python-setuptools python-wheel)) + (home-page "https://github.com/veegee/mmh3") + (synopsis "Python wrapper for MurmurHash (MurmurHash3)") + (description + "@code{murmurhash3} is a Python library for MurmurHash (MurmurHash3), a set of fast and robust hash functions. This library is a Python extension module written in C.") - (license license:public-domain))) + (license license:public-domain)))) (define-public python-murmurhash (package (name "python-murmurhash") (version "1.0.7") - (source (origin - (method url-fetch) - (uri (pypi-uri "murmurhash" version)) - (sha256 - (base32 - "0vwkn98c703nvsigl2nz99rax2pafkx3djjfkgc49jiipmp3j2k3")))) - (build-system python-build-system) - (native-inputs (list python-cython python-pytest)) - (inputs (list python python-murmurhash3)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/explosion/murmurhash") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0p8afy51nfvswl2fcimy5vc584zv89349rq12ymbcpp06yidzdfh")))) + (build-system pyproject-build-system) (arguments - (list #:modules - '((ice-9 ftw) (ice-9 match) - (guix build utils) - (guix build python-build-system)) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'set-source-file-times-to-1980 - (lambda _ - (let ((circa-1980 (* 10 366 24 60 60))) - (ftw "." - (lambda (file stat flag) - (utime file circa-1980 circa-1980) #t)))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'fix-installation + (lambda* (#:key inputs outputs #:allow-other-keys) + (with-directory-excursion + (string-append (site-packages inputs outputs) "/murmurhash") + (delete-file-recursively "tests") + (delete-file "mrmr.pyx") + (for-each + (lambda (file) + (chmod file #o555)) + (find-files "." "\\.so$"))))) + ;; XXX: Otherwise ModuleNotFoundError, and --pyargs doesn't seem + ;; to fix the issue. + (replace 'check + (lambda args + (copy-recursively "murmurhash/tests" "tests") + (delete-file-recursively "murmurhash") + (with-directory-excursion "tests" + (apply (assoc-ref %standard-phases 'check) args))))))) + (native-inputs + (list python-cython + python-murmurhash3 + python-pytest + python-setuptools + python-wheel)) (home-page "https://github.com/explosion/murmurhash") (synopsis "Cython bindings for MurmurHash2") - (description "This package provides Cython bindings for MurmurHash2.") + (description + "This package provides Cython bindings for MurmurHash2.") (license license:expat))) ;; Scooby requires for its test suite a ‘pyvips’ package that is missing its diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index b55488b1f5..97da50e5cd 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1476,20 +1476,9 @@ data types.") ;; Current major version. (define-public python python-3) -;; Minimal variants of Python, mostly used to break the cycle between Tk and +;; Minimal variant of Python, mostly used to break the cycle between Tk and ;; Python (Tk -> libxcb -> Python.) -(define-public python2-minimal - (package/inherit python-2 - (name "python2-minimal") - (outputs '("out")) - - ;; Keep zlib, which is used by 'pip' (via the 'zipimport' module), which - ;; is invoked upon 'make install'. 'pip' also expects 'ctypes' and thus - ;; libffi. Expat is needed for XML support which is expected by a lot - ;; of libraries out there. - (inputs (list expat libffi zlib)))) - (define-public python-minimal (package/inherit python (name "python-minimal") diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 34265cac0e..6632902b16 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -779,6 +779,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (patches (search-patches "qtbase-moc-ignore-gcc-macro.patch" "qtbase-absolute-runpath.patch" + "qtbase-fix-thread-test.patch" "qtbase-qmake-use-libname.patch" "qtbase-qmlimportscanner-qml-import-path.patch" "qtbase-qmake-fix-includedir.patch")))) @@ -899,16 +900,6 @@ tst_qt_cmake_create.cpp" "dirs.append(\"" #$(this-package-input "shared-mime-info") "/share/mime" "\");\n" all))))) - #$@(if (target-aarch64?) - ;; backport of 2bce75a6b53cccbf9c813581b64eea87f3ab55fc, - ;; which makes flaky tst_qthread less flaky. - #~((add-after 'patch-more-paths 'patch-aarch64-tests - (lambda _ - (invoke - "patch" "-p1" "-i" - #$(local-file - (search-patch "qtbase-fix-thread-test.patch")))))) - #~()) (delete 'do-not-capture-python) ;move after patch-source-shebangs (add-after 'patch-source-shebangs 'do-not-capture-python (lambda _ diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 3a1cb48412..7dc4f65db7 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -973,7 +973,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") qwt sdl soapysdr - spdlog + spdlog-1.15 volk zeromq)) (arguments diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm index c567d3283a..73ce62b6cc 100644 --- a/gnu/packages/simulation.scm +++ b/gnu/packages/simulation.scm @@ -160,11 +160,10 @@ eigen expat ffmpeg - fmt + fmt-11 freetype gdal gl2ps - glew gmsh hdf5 jsoncpp @@ -607,32 +606,26 @@ the complexity of that interface. Parallel support depends on the (define-public python-fenics-ufl (package (name "python-fenics-ufl") - (version "2019.1.0") + (version "2025.1.0") (source - (origin - (method url-fetch) - (uri (pypi-uri "fenics-ufl" version)) - (sha256 - (base32 - "10dz8x3lm68x2w3kkqcjask38h0zkhhak26jdbkppr8g9y8wny7p")))) - (build-system python-build-system) - (inputs - (list python-numpy)) - (native-inputs - (list python-pytest)) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "py.test" "test")))))) - (home-page "https://bitbucket.org/fenics-project/ufl/") + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fenics/ufl") + (commit version))) + (file-name (git-file-name name version)) + (sha256 (base32 "1ybf6l2nn4ni4a77ad1f36nhd7ddcbbvyc5frdggsmcjdmds9bf3")))) + (build-system pyproject-build-system) + (inputs (list python-numpy)) + (native-inputs (list python-pytest python-setuptools python-wheel)) + (home-page "https://github.com/fenics/ufl") (synopsis "Unified language for form-compilers") - (description "The Unified Form Language (UFL) is a domain specific -language for declaration of finite element discretizations of -variational forms. More precisely, it defines a flexible interface -for choosing finite element spaces and defining expressions for weak -forms in a notation close to mathematical notation. + (description + "The Unified Form Language (UFL) is a domain specific language for +declaration of finite element discretizations of variational forms. More +precisely, it defines a flexible interface for choosing finite element spaces +and defining expressions for weak forms in a notation close to mathematical +notation. UFL is part of the FEniCS Project.") (license license:lgpl3+))) diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index acbffe3bf9..f2f667ff5d 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -62,6 +62,7 @@ #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix scripts) #:use-module (guix utils) #:use-module (guix packages)) @@ -78,14 +79,15 @@ (base32 "1mpfrvn122lnaqid1pi99ckpxd6x679b0w91pl003xmdwsfdbcly")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no check target - #:make-flags - (list - (string-append "CC=" ,(cc-for-target)) - (string-append "PREFIX=" %output)) - #:phases - (modify-phases %standard-phases - (delete 'configure)))) ; no configure script + (list + #:tests? #f ; no check target + #:make-flags + #~(list + (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (delete 'configure)))) ; no configure script (home-page "https://tools.suckless.org/scroll/") (synopsis "Scroll-back buffer program for st") (description "Scroll is a program that provides a scroll back buffer for @@ -95,37 +97,36 @@ terminal like @code{st}.") (define-public tabbed (package (name "tabbed") - (version "0.6") + (version "0.9") (source (origin (method url-fetch) (uri (string-append "https://dl.suckless.org/tools/tabbed-" version ".tar.gz")) (sha256 - (base32 "0hhwckyzvsj9aim2l6m69wmvl2n7gzd6b1ly8qjnlpgcrcxfllbn")))) + (base32 "1a0842lw666cnx5mx2xqqrad4ipvbz4wxad3pxpyc6blgd2qgkqa")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no check target - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "config.mk" - (("/usr/local") - (assoc-ref outputs "out")) - (("/usr/X11R6") - (assoc-ref inputs "libx11")) - (("/usr/include/freetype2") - (string-append (assoc-ref inputs "freetype") - "/include/freetype2")) - (("CC = cc") - (string-append "CC = " ,(cc-for-target)))))) - (delete 'configure)))) ; no configure script + (list + #:tests? #f ; no check target + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "Makefile" + (("/usr/local") #$output) + (("/usr/X11R6") #$(this-package-input "libx11")) + (("/usr/include/freetype2") + (string-append #$(this-package-input "freetype") + "/include/freetype2")) + (("\\$\\{CC\\}") + (string-append #$(cc-for-target)))))) + (delete 'configure)))) ; no configure script (inputs - `(("fontconfig" ,fontconfig) - ("freetype" ,freetype) - ("libx11" ,libx11) - ("libxft" ,libxft))) + (list fontconfig + freetype + libx11 + libxft)) (home-page "https://tools.suckless.org/tabbed/") (synopsis "Tab interface for application supporting Xembed") (description "Tabbed is a generic tabbed frontend to xembed-aware @@ -212,12 +213,14 @@ It provides the following features: "0nncvzyipvkkd7zlgzwbjygp82frzs2hvbnk71gxf671np607y94")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no check target - #:make-flags (list (string-append "CC=" ,(cc-for-target)) - (string-append "PREFIX=" %output)) - #:phases - (modify-phases %standard-phases - (delete 'configure)))) ; no configure script + (list + #:tests? #f ; no check target + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (delete 'configure)))) ; no configure script (synopsis "Command line video editing utilities") (home-page "https://tools.suckless.org/blind/") (description @@ -228,53 +231,49 @@ a custom raw video format with a simple container.") (define-public dwm (package (name "dwm") - (version "6.5") + (version "6.6") + (synopsis "Dynamic Window Manager") (source (origin - (method url-fetch) - (uri (string-append "https://dl.suckless.org/dwm/dwm-" - version ".tar.gz")) - (sha256 - (base32 "0acpl05rg6rg6nrg3rv4kp388iqzp1n6dhin30a97yzjm6zrxmr1")))) + (method url-fetch) + (uri (string-append "https://dl.suckless.org/dwm/dwm-" + version ".tar.gz")) + (sha256 + (base32 + "18q0zjvzsvpm76p2x1xlw163d8wbq44z41n9w94prh46jdnjrz3w")))) (build-system gnu-build-system) (arguments - `(#:tests? #f - #:make-flags (list (string-append "FREETYPEINC=" - (assoc-ref %build-inputs "freetype") - "/include/freetype2")) - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda _ - (substitute* "Makefile" (("\\$\\{CC\\}") "gcc")) - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) + (list + #:tests? #f + #:make-flags + #~(list + (string-append "FREETYPEINC=" + #$(this-package-input "freetype") + "/include/freetype2")) + #:phases + #~(modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "Makefile" (("\\$\\{CC\\}") #$(cc-for-target))))) + (replace 'install + (lambda _ (invoke "make" "install" - (string-append "DESTDIR=" out) "PREFIX=")))) - (add-after 'build 'install-xsession - (lambda* (#:key outputs #:allow-other-keys) - ;; Add a .desktop file to xsessions. - (let* ((output (assoc-ref outputs "out")) - (xsessions (string-append output "/share/xsessions"))) - (mkdir-p xsessions) - (with-output-to-file - (string-append xsessions "/dwm.desktop") - (lambda _ - (format #t - "[Desktop Entry]~@ - Name=dwm~@ - Comment=Dynamic Window Manager~@ - Exec=~a/bin/dwm~@ - TryExec=~@*~a/bin/dwm~@ - Icon=~@ - Type=Application~%" - output))) - #t)))))) + (string-append "DESTDIR=" #$output) "PREFIX="))) + (add-after 'build 'install-xsession + (lambda _ + ;; Add a .desktop file to xsessions. + (let ((apps (string-append #$output "/share/xsessions"))) + (mkdir-p apps) + (make-desktop-entry-file + (string-append apps "/dwm.desktop") + #:name "dwm" + #:generic-name #$synopsis + #:exec (string-append #$output "/bin/dwm %U") + #:comment + `(("en" ,#$synopsis) + (#f ,#$synopsis))))))))) (inputs (list freetype libx11 libxft libxinerama)) (home-page "https://dwm.suckless.org/") - (synopsis "Dynamic window manager") (description "dwm is a dynamic window manager for X. It manages windows in tiled, monocle and floating layouts. All of the layouts can be applied dynamically, @@ -284,25 +283,27 @@ optimising the environment for the application in use and the task performed.") (define-public dmenu (package (name "dmenu") - (version "5.3") + (version "5.4") (source (origin (method url-fetch) (uri (string-append "https://dl.suckless.org/tools/dmenu-" version ".tar.gz")) (sha256 (base32 - "0pvr6da1v7hmbnacpgxcxv1sakg1nckmw347xhwrhx1dzpk573qs")))) + "0lyldkxshbgh7alz7a50l167pk1d4lcb2rhhhvz81aj710mcxflg")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no tests - #:make-flags - (list (string-append "CC=" ,(cc-for-target)) - (string-append "PREFIX=" %output) - (string-append "FREETYPEINC=" - (assoc-ref %build-inputs "freetype") - "/include/freetype2")) - #:phases - (modify-phases %standard-phases (delete 'configure)))) + (list + #:tests? #f ; no tests + #:make-flags + #~(list + (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output) + (string-append "FREETYPEINC=" + #$(this-package-input "freetype") + "/include/freetype2")) + #:phases + #~(modify-phases %standard-phases (delete 'configure)))) (inputs (list freetype libxft libx11 libxinerama)) (home-page "https://tools.suckless.org/dmenu/") @@ -368,31 +369,31 @@ numbers of user-defined menu items efficiently.") (define-public st (package (name "st") - (version "0.9.2") + (version "0.9.3") (source (origin (method url-fetch) (uri (string-append "https://dl.suckless.org/st/st-" version ".tar.gz")) (sha256 - (base32 "0js9z5kn8hmpxzfmb2g6zsy28zkpg88j3wih5wixc89b8x7ms8bb")))) + (base32 "16v4dsjrsh5jwah38ygg8808zc536szwxj1qxm6kswgdrnmzxncy")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no tests - #:make-flags - (list (string-append "CC=" ,(cc-for-target)) - (string-append "TERMINFO=" - (assoc-ref %outputs "out") - "/share/terminfo") - (string-append "PREFIX=" %output)) - #:phases - (modify-phases %standard-phases - (delete 'configure)))) + (list + #:tests? #f ;no tests + #:make-flags + #~(list + (string-append "CC=" #$(cc-for-target)) + (string-append "TERMINFO=" #$output "/share/terminfo") + (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (delete 'configure)))) (inputs - `(("libx11" ,libx11) - ("libxft" ,libxft) - ("fontconfig" ,fontconfig) - ("freetype" ,freetype))) + (list libx11 + libxft + fontconfig + freetype)) (native-inputs (list ncurses ;provides tic program pkg-config)) @@ -504,27 +505,27 @@ Vim bindings and Xresource compatibility.") (base32 "0mrj0kp01bwrgrn4v298g81h6zyq64ijsg790di68nm21f985rbj")))) (build-system glib-or-gtk-build-system) (arguments - `(#:tests? #f ; no tests - #:make-flags - (list (string-append "CC=" ,(cc-for-target)) - (string-append "PREFIX=" %output)) - #:phases - (modify-phases %standard-phases - (delete 'configure) - ;; Use the right file name for dmenu and xprop. - (add-before 'build 'set-dmenu-and-xprop-file-name - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "config.def.h" - (("dmenu") (search-input-file inputs "/bin/dmenu")) - (("xprop") (search-input-file inputs "/bin/xprop"))) - #t))))) + (list + #:tests? #f ; no tests + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + ;; Use the right file name for dmenu and xprop. + (add-before 'build 'set-dmenu-and-xprop-file-name + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "config.def.h" + (("dmenu") (search-input-file inputs "/bin/dmenu")) + (("xprop") (search-input-file inputs "/bin/xprop")))))))) (inputs - `(("dmenu" ,dmenu) - ("gcr" ,gcr-3) - ("glib-networking" ,glib-networking) - ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("webkitgtk" ,webkitgtk-with-libsoup2) - ("xprop" ,xprop))) + (list dmenu + gcr-3 + glib-networking + gsettings-desktop-schemas + webkitgtk-with-libsoup2 + xprop)) (native-inputs (list pkg-config)) (home-page "https://surf.suckless.org/") @@ -550,30 +551,31 @@ point surf to another URI by setting its XProperties.") "0cxysz5lp25mgww73jl0mgip68x7iyvialyzdbriyaff269xxwvv")))) (build-system gnu-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (delete 'configure) ;no configuration - (add-before 'build 'patch-farbfeld - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "config.def.h" - (("2ff") (search-input-file inputs "/bin/2ff"))))) - (add-after 'install 'install-doc - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (doc (string-append out "/share/doc/" ,name "-" - ,(package-version this-package)))) - (install-file "README.md" doc))))) - #:tests? #f ;no test suite - #:make-flags - (let ((pkg-config (lambda (flag) - (string-append "$(shell pkg-config " flag " " - "xft fontconfig x11 libpng)")))) - (list (string-append "CC=" - ,(cc-for-target)) - (string-append "PREFIX=" %output) - (string-append "INCS=-I. " - (pkg-config "--cflags")) - (string-append "LIBS=" - (pkg-config "--libs") " -lm"))))) + (list + #:phases + #~(modify-phases %standard-phases + (delete 'configure) ;no configuration + (add-before 'build 'patch-farbfeld + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "config.def.h" + (("2ff") (search-input-file inputs "/bin/2ff"))))) + (add-after 'install 'install-doc + (lambda _ + (install-file "README.md" + (string-append + #$output "/share/doc/" + #$name + "-" + #$(package-version this-package)))))) + #:tests? #f ;no test suite + #:make-flags + #~(let ((pkg-config (lambda (flag) + (string-append "$(shell pkg-config " flag " " + "xft fontconfig x11 libpng)")))) + (list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output) + (string-append "INCS=-I. " (pkg-config "--cflags")) + (string-append "LIBS=" (pkg-config "--libs") " -lm"))))) (native-inputs (list pkg-config)) (inputs (list farbfeld libpng libx11 libxft fontconfig)) (synopsis "Plain-text presentation tool") diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm index c2cdbd8a03..1b6a38928a 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -486,29 +486,3 @@ additional options for controlling the SSL session.") . "https://core.tcl-lang.org/tcltls/wiki/Download") (upstream-name . "tcltls"))) (license license:public-domain))) - -(define-public go-github.com-nsf-gothic - (let ((commit "97dfcc195b9de36c911a69a6ec2b5b2659c05652") - (revision "0")) - (package - (name "go-github.com-nsf-gothic") - (version (git-version "0.0.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/nsf/gothic") - (commit commit))) - (sha256 - (base32 - "1lrhbml6r4sh22rrn3m9bck70pv0g0c1diprg7cil90x0jidxczr")) - (file-name (git-file-name name version)))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/nsf/gothic")) - (propagated-inputs - (list tk tcl)) - (home-page "https://github.com/nsf/gothic") - (synopsis "Tcl/Tk Go bindings") - (description "Gothic contains Go bindings for Tcl/Tk. The package contains -only one type and one function that can be used to create a Tk interpreter.") - (license license:expat)))) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 2fa8013485..be5823af20 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -452,34 +452,34 @@ internet.") (define-public libsrtp (package (name "libsrtp") - (version "2.4.2") + (version "2.6.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/cisco/libsrtp") - (commit (string-append "v" version)))) + (url "https://github.com/cisco/libsrtp") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "1gswpjm4jacfxmgglbf8hxi3yzsag4drk4q943p0wkmv21zj8l78")))) + "1vjdkss076ihbshc83v11c6qxq8mfqi4c26rl1a96kqa9dpgjqmx")))) (native-inputs - (list psmisc ;some tests require 'killall' + (list psmisc ;some tests require 'killall' procps)) (build-system gnu-build-system) (arguments - '(#:test-target "runtest" - #:phases (modify-phases %standard-phases - (add-after 'build 'build-shared - (lambda* (#:key (make-flags '()) #:allow-other-keys) - ;; Build the shared library separately because - ;; the test runner requires a static build. - (apply invoke "make" "shared_library" make-flags) - #t)) - (add-after 'install 'remove-static-library - (lambda* (#:key outputs #:allow-other-keys) - (delete-file (string-append (assoc-ref outputs "out") - "/lib/libsrtp2.a")) - #t))))) + (list + #:test-target "runtest" + #:phases + #~(modify-phases %standard-phases + (add-after 'build 'build-shared + (lambda* (#:key make-flags #:allow-other-keys) + ;; Build the shared library separately because + ;; the test runner requires a static build. + (apply invoke "make" "shared_library" make-flags))) + (add-after 'install 'remove-static-library + (lambda _ + (delete-file (string-append #$output + "/lib/libsrtp2.a"))))))) (synopsis "Secure RTP (SRTP) Reference Implementation") (description "This package provides an implementation of the Secure Real-time Transport diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index d3e4be0894..ed26e63315 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -333,11 +333,11 @@ required structures.") ;; url-fetch is used here to avoid a circular dependency with ;; git-download, see https://issues.guix.gnu.org/63331 (method url-fetch) - (uri (string-append "mirror://gnu/gnutls/guile-gnutls-" - version ".tar.gz")) + (uri (string-append "mirror://gnu/gnutls/guile-gnutls-v" + version "-src.tar.gz")) (sha256 (base32 - "0azgp79a4hgmbg2p2ghd1x2zav8894m9ch3i4hbvq8dlxvrnf06c")))) + "0kqngyx4520gjk49l6whjd2ss994kaj9rm78lli6p3q6xry0945i")))) (build-system gnu-build-system) (outputs '("out" "debug")) (arguments @@ -354,6 +354,7 @@ required structures.") "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/extensions")))) (native-inputs (list libtool + autoconf automake pkg-config texinfo gnutls @@ -1132,30 +1133,6 @@ ACME server (such as Let's Encrypt) implemented as a relatively simple Bash script.") (license license:expat))) -(define-public go-github-com-certifi-gocertifi - (let ((commit "a5e0173ced670013bfb649c7e806bc9529c986ec") - (revision "1")) - (package - (name "go-github-com-certifi-gocertifi") - (version (git-version "2018.01.18" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/certifi/gocertifi") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1n9drccl3q1rr8wg3nf60slkf1lgsmz5ahifrglbdrc6har3rryj")))) - (build-system go-build-system) - (arguments - '(#:import-path "github.com/certifi/gocertifi")) - (synopsis "X.509 TLS root certificate bundle for Go") - (description "This package is a Go language X.509 TLS root certificate bundle, -derived from Mozilla's collection.") - (home-page "https://certifi.io") - (license license:mpl2.0)))) - (define-public s2n (package (name "s2n") diff --git a/gnu/packages/tor-browsers.scm b/gnu/packages/tor-browsers.scm index 116d25875a..12763a99ca 100644 --- a/gnu/packages/tor-browsers.scm +++ b/gnu/packages/tor-browsers.scm @@ -72,7 +72,6 @@ #:use-module (gnu packages python) #:use-module (gnu packages rust) #:use-module (gnu packages rust-apps) - #:use-module (gnu packages sqlite) #:use-module (gnu packages tor) #:use-module (gnu packages video) #:use-module (gnu packages xdisorg) @@ -116,16 +115,16 @@ Firefox locales.") ;; We copy the official build id, which is defined at ;; tor-browser-build/rbm.conf (browser_release_date). -(define %torbrowser-build-date "20250722101758") +(define %torbrowser-build-date "20250818110000") ;; To find the last version, look at https://www.torproject.org/download/. -(define %torbrowser-version "14.5.5") +(define %torbrowser-version "14.5.6") ;; To find the last Firefox version, browse ;; https://archive.torproject.org/tor-package-archive/torbrowser/<%torbrowser-version> ;; There should be only one archive that starts with ;; "src-firefox-tor-browser-". -(define %torbrowser-firefox-version "128.13.0esr-14.5-1-build2") +(define %torbrowser-firefox-version "128.14.0esr-14.5-1-build2") ;; See tor-browser-build/rbm.conf for the list. (define %torbrowser-locales (list "ar" "be" "bg" "ca" "cs" "da" "de" "el" "es-ES" "fa" @@ -140,11 +139,11 @@ Firefox locales.") (method git-fetch) (uri (git-reference (url "https://gitlab.torproject.org/tpo/translation.git") - (commit "8600afeb12fdae895c37618e1386c1a1ac2f5308"))) + (commit "9896e5765c90c763b97135fdda00a08cf08dbddd"))) (file-name "translation-base-browser") (sha256 (base32 - "1l190sqpbldnsrwqv8y3fbf7l3bf54b17bajswkaqpsgyci2wicy")))) + "06638lii8yx8smb192629i5zjp3aly80zvyd3hix12iivcvndqg4")))) ;; See tor-browser-build/projects/translation/config. (define torbrowser-translation-specific @@ -152,11 +151,11 @@ Firefox locales.") (method git-fetch) (uri (git-reference (url "https://gitlab.torproject.org/tpo/translation.git") - (commit "9fe8a13ee4c69f91cd545dc3c575ca8f4851d58e"))) + (commit "a58fb6a60d4d1328b7cffcc1e6ded5673f5e4360"))) (file-name "translation-tor-browser") (sha256 (base32 - "0n3wa1snadhr574rf01kqg18vh66hzv1h7lhwkdps7q9qj7mpgim")))) + "0qb0fjxinsd34pfgjzgpf6ry2wssc191yzxncvwrhi1bjlgjw73r")))) (define torbrowser-assets ;; This is a prebuilt Torbrowser from which we take the assets we need. @@ -172,7 +171,7 @@ Firefox locales.") version "/tor-browser-linux-x86_64-" version ".tar.xz")) (sha256 (base32 - "0gdzd3gm0qs7ypzdrcdqz6byp5lc9byvb3m4xj3sgdd44j0s34dc")))) + "1hk4hbs7hc5j6f6fiqgik0087b0yvwl54f6rm4jig2wg41cc44hr")))) (arguments (list #:install-plan @@ -213,7 +212,7 @@ Browser.") ".tar.xz")) (sha256 (base32 - "1pm0fi816hzafgv0z52h3n3x355hwjlxgzz89lpzncz9idf9lsqy")))) + "16hkibrlzgp430m045w13yl5ixxccyxlqk9qmzsgg0c5wkys6si4")))) (build-system mozilla-build-system) (inputs (list lyrebird @@ -226,11 +225,9 @@ Browser.") gdk-pixbuf glib gtk+ - ;; UNBUNDLE-ME! graphite2 cairo pango freetype - ;; UNBUNDLE-ME! harfbuzz libcanberra libgnome libjpeg-turbo @@ -254,9 +251,8 @@ Browser.") hunspell libnotify nspr - nss-rapid ; requires v. 3.101, so nss won't cut it for now. + nss shared-mime-info - sqlite eudev unzip zip @@ -352,12 +348,9 @@ Browser.") "--with-system-icu" "--with-system-nspr" "--with-system-nss" + "--with-system-ffi" - ;; UNBUNDLE-ME! "--with-system-harfbuzz" - ;; UNBUNDLE-ME! "--with-system-graphite2" "--enable-system-pixman" - "--enable-system-ffi" - ;; UNBUNDLE-ME! "--enable-system-sqlite" ) #:imported-modules %cargo-utils-modules ;for `generate-all-checksums' @@ -411,10 +404,7 @@ Browser.") "media/libvpx" ;; UNBUNDLE-ME! "media/libtremor" "media/libwebp" - ;; UNBUNDLE-ME! "gfx/harfbuzz" - ;; UNBUNDLE-ME! "gfx/graphite2" "js/src/ctypes/libffi" - ;; UNBUNDLE-ME! "db/sqlite3" ;; 800Mo of unused tests. "testing/web-platform" )))) @@ -800,17 +790,17 @@ attacks on the privacy of Tor users.") ;; We copy the official build id, which can be found there: ;; https://cdn.mullvad.net/browser/update_responses/update_1/release. -(define %mullvadbrowser-build-date "20250722101758") +(define %mullvadbrowser-build-date "20250818110000") ;; To find the last version, look at ;; https://mullvad.net/en/download/browser/linux. -(define %mullvadbrowser-version "14.5.5") +(define %mullvadbrowser-version "14.5.6") ;; To find the last Firefox version, browse ;; https://archive.torproject.org/tor-package-archive/mullvadbrowser/<%mullvadbrowser-version> ;; There should be only one archive that starts with ;; "src-firefox-mullvad-browser-". -(define %mullvadbrowser-firefox-version "128.13.0esr-14.5-1-build1") +(define %mullvadbrowser-firefox-version "128.14.0esr-14.5-1-build2") ;; See tor-browser-build/projects/translation/config. (define mullvadbrowser-translation-base @@ -818,11 +808,11 @@ attacks on the privacy of Tor users.") (method git-fetch) (uri (git-reference (url "https://gitlab.torproject.org/tpo/translation.git") - (commit "8600afeb12fdae895c37618e1386c1a1ac2f5308"))) + (commit "9896e5765c90c763b97135fdda00a08cf08dbddd"))) (file-name "translation-base-browser") (sha256 (base32 - "1l190sqpbldnsrwqv8y3fbf7l3bf54b17bajswkaqpsgyci2wicy")))) + "06638lii8yx8smb192629i5zjp3aly80zvyd3hix12iivcvndqg4")))) ;; See tor-browser-build/projects/translation/config. (define mullvadbrowser-translation-specific @@ -850,7 +840,7 @@ attacks on the privacy of Tor users.") version "/mullvad-browser-linux-x86_64-" version ".tar.xz")) (sha256 (base32 - "1z5g5l3bikpl2vlps641fpm2lps672ci0vx002blvssn55iv22iz")))) + "08wkx9f5l03la6ny1f0igxcmffrw80pl7i7c8lrh5095wnsxwim1")))) (arguments (list #:install-plan @@ -893,7 +883,7 @@ Mullvad Browser.") %mullvadbrowser-firefox-version ".tar.xz")) (sha256 (base32 - "1d8zs5mziig1vs385rqr8xmxyklf9aqbsk3lmqxc0p2ldgq6ygll")))) + "0djqmq1hw6mf8ww2yb3yga7hyqz9ims083sh5m0xi0yc9l4clmfg")))) (arguments (substitute-keyword-arguments (package-arguments mullvadbrowser-base) ((#:phases phases) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index ad556f5072..47fde9ec16 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -2725,101 +2725,126 @@ execution of any hook written in any language before every commit.") (define-public python-pre-commit (deprecated-package "python-pre-commit" pre-commit)) -(define-public mercurial - (package - (name "mercurial") - (version "6.9.5") - (source (origin - (method url-fetch) - (uri (string-append "https://www.mercurial-scm.org/" - "release/mercurial-" version ".tar.gz")) - (patches (search-patches "mercurial-hg-extension-path.patch")) - (sha256 - (base32 - "1zb5rjqs5z0y900hml0v4wsmv59cdhi50a8kcbjxdp79z7p2mwnk")))) - (build-system gnu-build-system) - (arguments - `(#:make-flags - (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (delete 'configure) - (add-after 'unpack 'patch-tests - (lambda _ - (substitute* (find-files "tests" "\\.(t|py)$") - (("/bin/sh") - (which "sh")) - (("/usr/bin/env") - (which "env"))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (with-directory-excursion "tests" - ;; The following tests are known to fail. - (for-each delete-file - '(;; XXX: This test calls 'run-tests.py --with-hg= - ;; `which hg`' and fails because there is no hg on - ;; PATH from before (that's why we are building it!)? - "test-hghave.t" +;; XXX: This is a temporary helper to avoid recompiling mercurial/pinned. +;; If you update mercurial, don't touch it but work around it. +;; If you update mercurial/pinned, include that in mercurial, and use inheritance +;; for mercurial/pinned. +(define mercurial-check-phase + #~(lambda* (#:key tests? #:allow-other-keys) + (with-directory-excursion "tests" + ;; The following tests are known to fail. + (for-each delete-file + '(;; XXX: This test calls 'run-tests.py --with-hg= + ;; `which hg`' and fails because there is no hg on + ;; PATH from before (that's why we are building it!)? + "test-hghave.t" + + ;; This test is missing a debug line + ;; mmapping $TESTTMP/a/.hg/store/00changelog.i (no-pure !) + ;; but the relevant output is correct. + "test-revlog-mmapindex.t" - ;; This test is missing a debug line - ;; mmapping $TESTTMP/a/.hg/store/00changelog.i (no-pure !) - ;; but the relevant output is correct. - "test-revlog-mmapindex.t" + ;; This test creates a shebang spanning multiple + ;; lines which is difficult to substitute. It + ;; only tests the test runner itself, which gets + ;; thoroughly tested during the check phase anyway. + "test-run-tests.t" - ;; This test creates a shebang spanning multiple - ;; lines which is difficult to substitute. It - ;; only tests the test runner itself, which gets - ;; thoroughly tested during the check phase anyway. - "test-run-tests.t" + ;; These tests fail because the program is not + ;; connected to a TTY in the build container. + "test-nointerrupt.t" + "test-transaction-rollback-on-sigpipe.t" - ;; These tests fail because the program is not - ;; connected to a TTY in the build container. - "test-nointerrupt.t" - "test-transaction-rollback-on-sigpipe.t" + ;; FIXME: This gets killed but does not receive an interrupt. + "test-commandserver.t" - ;; FIXME: This gets killed but does not receive an interrupt. - "test-commandserver.t" + ;; These tests get unexpected warnings about using + ;; deprecated functionality in Python, but otherwise + ;; succeed; try enabling for later Mercurial versions. + "test-demandimport.py" + "test-patchbomb-tls.t" + ;; Similarly, this gets a more informative error + ;; message from Python 3.10 than it expects. + "test-http-bad-server.t" - ;; These tests get unexpected warnings about using - ;; deprecated functionality in Python, but otherwise - ;; succeed; try enabling for later Mercurial versions. - "test-demandimport.py" - "test-patchbomb-tls.t" - ;; Similarly, this gets a more informative error - ;; message from Python 3.10 than it expects. - "test-http-bad-server.t" + ;; Only works when run in a hg-repo, not in an + ;; extracted tarball + "test-doctest.py" - ;; Only works when run in a hg-repo, not in an - ;; extracted tarball - "test-doctest.py" + ;; TODO: the fqaddr() call fails in the build + ;; container, causing these server tests to fail. + "test-hgwebdir.t" + "test-http-branchmap.t" + "test-pull-bundle.t" + "test-push-http.t" + "test-serve.t" + "test-subrepo-deep-nested-change.t" + "test-subrepo-recursion.t" + ;; FIXME: Investigate why it failed. + "test-convert-darcs.t")) + (when tests? + (invoke "./run-tests.py" + ;; ‘make check’ does not respect ‘-j’. + (string-append "-j" (number->string + (parallel-job-count))) + ;; The default time-outs are too low for many systems. + ;; Raise them generously: Guix enforces its own. + "--timeout" "86400" + "--slowtimeout" "86400" + ;; The test suite takes a long time and produces little + ;; output by default. Prevent timeouts due to silence. + "-v"))))) - ;; TODO: the fqaddr() call fails in the build - ;; container, causing these server tests to fail. - "test-hgwebdir.t" - "test-http-branchmap.t" - "test-pull-bundle.t" - "test-push-http.t" - "test-serve.t" - "test-subrepo-deep-nested-change.t" - "test-subrepo-recursion.t" - ;; FIXME: Investigate why it failed. - "test-convert-darcs.t")) - (when tests? - (invoke "./run-tests.py" - ;; ‘make check’ does not respect ‘-j’. - (string-append "-j" (number->string - (parallel-job-count))) - ;; The default time-outs are too low for many systems. - ;; Raise them generously: Guix enforces its own. - "--timeout" "86400" - "--slowtimeout" "86400" - ;; The test suite takes a long time and produces little - ;; output by default. Prevent timeouts due to silence. - "-v")))))))) +(define-public mercurial + (package + (name "mercurial") + (version "7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.mercurial-scm.org/" + "release/mercurial-" version ".tar.gz")) + (patches (search-patches "mercurial-hg-extension-path.patch")) + (sha256 + (base32 "1jz54akdnsp5frlbsr2xg71kbp2919v61gkkx7c7bi1q7k421ng8")))) + (build-system gnu-build-system) + (arguments + (list + #:imported-modules `((guix build python-build-system) + ,@%default-gnu-imported-modules) + #:modules '((guix build gnu-build-system) + ((guix build python-build-system) #:prefix py:) + (guix build utils)) + #:make-flags + #~(list (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (substitute* (find-files "tests" "\\.(t|py)$") + (("/bin/sh") + (search-input-file inputs "bin/sh")) + (("/usr/bin/env") + (search-input-file inputs "bin/env"))))) + (add-before 'check 'configure-check + (lambda* (#:key tests? #:allow-other-keys) + (with-directory-excursion "tests" + (substitute* "run-tests.py" + ;; XXX: Adapt pip call to build daemon chroot. + (("b\"install\", b\"\\.\"") + "b\"install\", b\"--no-build-isolation\", b\".\"") + ;; XXX: Log the actual PYTHONPATH. + (("\"PYTHONPATH\"") + "\"GUIX_PYTHONPATH\""))))) + (add-before 'configure-check 'add-install-to-pythonpath + (assoc-ref py:%standard-phases 'add-install-to-pythonpath)) + (delete 'check) + (add-after 'install 'check #$mercurial-check-phase)))) (native-inputs (list python-docutils ;; The following inputs are only needed to run the tests. - python-nose unzip which)) + python-setuptools-next python-setuptools-scm-next python-wheel unzip which)) (inputs (list python-wrapper)) ;; Find third-party extensions. @@ -2835,6 +2860,38 @@ efficiently handles projects of any size and offers an easy and intuitive interface.") (license license:gpl2+))) +(define-public mercurial/pinned + (package + (inherit mercurial) + (version "6.9.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.mercurial-scm.org/" + "release/mercurial-" version ".tar.gz")) + (patches (search-patches "mercurial-hg-extension-path.patch")) + (sha256 + (base32 "1zb5rjqs5z0y900hml0v4wsmv59cdhi50a8kcbjxdp79z7p2mwnk")))) + (arguments + (list + #:make-flags + #~(list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'patch-tests + (lambda _ + (substitute* (find-files "tests" "\\.(t|py)$") + (("/bin/sh") + (which "sh")) + (("/usr/bin/env") + (which "env"))))) + (replace 'check #$mercurial-check-phase)))) + (native-inputs + (list python-docutils + ;; The following inputs are only needed to run the tests. + python-nose unzip which)))) + (define-public python-hg-evolve (package (name "python-hg-evolve") @@ -2992,14 +3049,14 @@ following features: (define-public subversion (package (name "subversion") - (version "1.14.3") + (version "1.14.5") (source (origin (method url-fetch) (uri (string-append "mirror://apache/subversion/" "subversion-" version ".tar.bz2")) (sha256 (base32 - "0h54l4p2dlk1rm4zm428hi6ij6xpqxqlqmvkhmz5yhq9392zv7ll")))) + "18a4avism0a7b1siikkm6v2snhanlmqqzl4p8hspp2vbfvkjk2p7")))) (build-system gnu-build-system) (arguments (list @@ -3068,6 +3125,20 @@ usage; and its ability to support the needs of a wide variety of users and projects, from individuals to large-scale enterprise operations.") (license license:asl2.0))) +(define-public subversion/pinned + (hidden-package + (package + (inherit subversion) + (name "subversion") + (version "1.14.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://apache/subversion/" + "subversion-" version ".tar.bz2")) + (sha256 + (base32 "0h54l4p2dlk1rm4zm428hi6ij6xpqxqlqmvkhmz5yhq9392zv7ll"))))))) + (define-public rcs (package (name "rcs") diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 3b0f7f63ea..ed3f39b0ad 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -3144,7 +3144,7 @@ video streaming services of the Finnish national broadcasting company Yle.") (define-public yt-dlp (package (name "yt-dlp") - (version "2025.08.20") + (version "2025.08.22") (source (origin (method git-fetch) @@ -3156,7 +3156,7 @@ video streaming services of the Finnish national broadcasting company Yle.") (snippet #~(substitute* "pyproject.toml" (("^.*Programming Language :: Python :: 3\\.13.*$") ""))) (sha256 - (base32 "17g32lgax04yrhlvgaphdkkhv0xkxdimw57m6a1d3yhsnrbjiqhm")))) + (base32 "19phlzms38r6v6g2za8w0pj6cb4sbv2vi04sbah4263q3gw27i77")))) (build-system pyproject-build-system) (arguments (list diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index dcd70b430b..6a09858560 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org> -;;; Copyright © 2020-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020-2025 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> ;;; Copyright © 2021, 2022 Pierre Langlois <pierre.langlois@gmx.com> @@ -196,19 +196,18 @@ (define-public qemu (package (name "qemu") - (version "9.1.3") + (version "10.1.0") (source (origin (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) (sha256 - (base32 "12dc3fpv6c6qvw89amjjbb6dgc2f1c1alfgn2nab7a8kxnh7f2j8")) + (base32 "0ldyh3qia7zwv0xq6f67cp567i6ma1hb11gsqaz3x9qcnm4p6lg0")) (patches (search-patches "qemu-build-info-manual.patch" "qemu-disable-bios-tables-test.patch" - "qemu-disable-migration-test.patch" "qemu-fix-agent-paths.patch" - "qemu-glibc-2.41.patch")) + "qemu-fix-test-virtio-version.patch")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm index e260a17437..7c88282276 100644 --- a/gnu/packages/vnc.scm +++ b/gnu/packages/vnc.scm @@ -192,19 +192,12 @@ RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.") ;; bundled under java/org. These are used by the 'vncviewer' ;; program. The jsch copy is modified and integrates changes from ;; https://github.com/mwiede/jsch, so cannot easily be un-bundled. - (define (directory? x) - (and=> (stat x #f) (compose (cut eq? 'directory <>) stat:type))) - (define (delete-all-but directory . preserve) (with-directory-excursion directory - (let* ((pred (negate (cut member <> (append '("." "..") - preserve)))) + (let* ((pred (negate (cut member <> + (cons* "." ".." preserve)))) (items (scandir "." pred))) - (for-each (lambda (item) - (if (directory? item) - (delete-file-recursively item) - (delete-file item))) - items)))) + (for-each (cut delete-file-recursively <>) items)))) ;; d3des, rfb (headers) and turbojpeg-jni are small and not ;; packaged in Guix, so preserve them. diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 59bacf61be..4b89c2cd4f 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de> -;;; Copyright © 2014-2024 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014-2025 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015-2024 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com> @@ -15,7 +15,7 @@ ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016, 2023 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> -;;; Copyright © 2016–2024 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2016–2025 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> @@ -1495,6 +1495,68 @@ project) @end itemize") (license license:bsd-2))) +(define-public webhook + (package + (name "webhook") + (version "2.8.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/adnanh/webhook") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15cihbf49kbhgwavjsvl4qfcf3lyqa39vyqdxglmnkn603c3nk6w")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; Remove bundled dependencies. + (delete-file-recursively "vendor"))))) + (build-system go-build-system) + (arguments + (list #:go go-1.23 + #:import-path "github.com/adnanh/webhook" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/github.com/adnanh/webhook/webhook_test.go" + (("/bin/echo") + (search-input-file inputs "bin/echo")) + (("/bin/sh") + (search-input-file inputs "bin/sh")))))))) + (native-inputs + (list go-github-com-clbanning-mxj-v2 + go-github-com-coreos-go-systemd-v22 + go-github-com-dustin-go-humanize + go-github-com-fsnotify-fsnotify + go-github-com-ghodss-yaml + go-github-com-go-chi-chi-v5 + go-github-com-gofrs-uuid-v5 + go-github-com-gorilla-mux + go-golang-org-x-sys)) + (home-page "https://github.com/adnanh/webhook") + (synopsis "Lightweight incoming webhook server") + (description "webhook is a lightweight configurable tool to create HTTP +endpoints (hooks) which can execute configured commands. Data from the HTTP +request (such as headers, payload or query variables) can be passed on to the +configured commands. Hooks may also be configured to trigger only when +certain rules are satisfied. + +webhook aims to be minimal and do nothing more than it should do. And, that +is: + +@itemize +@item receive the request +@item parse the headers, payload and query variables +@item check if the specified rules for the hook are satisfied +@item and finally, pass the specified arguments to the specified command via +command line arguments or via environment variables. +@end itemize") + (license (list license:expat ;; main license + license:asl2.0)))) ;; internal/pidfile + (define-public qjson (package (name "qjson") @@ -5522,11 +5584,9 @@ Cloud.") (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) - (guile (assoc-ref inputs "guile")) (guile-effective-version (read-line - (open-pipe* OPEN_READ - (string-append guile "/bin/guile") + (open-pipe* OPEN_READ (which "guile") "-c" "(display (effective-version))"))) (scm (string-append out "/share/guile/site/" guile-effective-version)) @@ -5542,13 +5602,11 @@ Cloud.") `("PATH" ":" prefix ,(cons* bin - (map (lambda (input) - (string-append - (assoc-ref inputs input) - "/bin")) - '("ephemeralpg" - "util-linux" - "postgresql")))) + (map (lambda (file) + (search-input-file inputs file)) + '("/bin/pg_tmp" ;ephemeralpg + "/bin/ionice" ;util-linux + "/bin/psql")))) ;postgresql `("GUILE_LOAD_PATH" ":" prefix (,scm ,(getenv "GUILE_LOAD_PATH"))) `("GUILE_LOAD_COMPILED_PATH" ":" prefix @@ -5575,7 +5633,9 @@ Cloud.") guile-squee guile-lzlib)) (native-inputs - (list (lookup-package-native-input guix "guile") + ;; Use the highest Guile version found among dependencies to ensure .go + ;; files can be loaded. + (list (lookup-package-native-input guile-fibers-next "guile") autoconf automake emacs-minimal @@ -8923,7 +8983,7 @@ It does not support server push.") (define-public hpcguix-web (package (name "hpcguix-web") - (version "0.4.2") + (version "0.4.3") (source (origin (method git-fetch) (uri (git-reference @@ -8932,7 +8992,7 @@ It does not support server push.") (file-name (git-file-name name version)) (sha256 (base32 - "09xfyyz3004qcfjjlg903gnsb9wsrrdk7gw7xawsvw58l6vrialb")))) + "1mcy4p5pw623gmwcx5jpry27njqyq1fp74wpq1c34s06gkhdarji")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -9694,6 +9754,21 @@ for ZIM files.") It contains the code shared by all Kiwix ports.") (license license:gpl3))) +(define-public kiwix-lib-13 + (package + (inherit kiwix-lib) + (name "kiwix-lib") + (version "13.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kiwix/kiwix-lib/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0mgzmqar70rj83x27a4zh7qr6yl5pi95g6i3fvvxysdjy76v18qc")))))) + (define-public kiwix-desktop (package (name "kiwix-desktop") @@ -9764,7 +9839,7 @@ offline (such as Wikipedia), without any access to Internet.") (inputs (list curl icu4c - kiwix-lib + kiwix-lib-13 libmicrohttpd libzim pugixml diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm index 94e9a4e77f..8e36fea6de 100644 --- a/gnu/packages/wget.scm +++ b/gnu/packages/wget.scm @@ -46,6 +46,7 @@ (define-public wget (package + (replacement wget/fixed) (name "wget") (version "1.21.4") (source @@ -75,6 +76,17 @@ 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/xfce.scm b/gnu/packages/xfce.scm index c5fd41269e..bc361dbe53 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -1360,7 +1360,7 @@ for and start applications.") font-dejavu ;default font greybird-gtk-theme hicolor-icon-theme - mate-polkit-for-xfce + mate-polkit mousepad ristretto shared-mime-info diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 08703b370c..6ba3c5b8ca 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -2644,7 +2644,7 @@ It is used to control the pointer with a joystick device.") "0mvwxrnkq0lzhjr894p420zxffdn34nc2scinmp7qd1hikr51kkp")))) (build-system gnu-build-system) ;; Linux is no longer supported since 2.0.0, use libinput or evdev instead. - (supported-systems '("i586-gnu" "x86_64-gnu")) + (supported-systems %hurd-systems) (inputs (list xorg-server)) (native-inputs (list pkg-config)) (home-page "https://www.x.org/wiki/") diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm index 6b3f66095c..82484d652d 100644 --- a/gnu/packages/zig.scm +++ b/gnu/packages/zig.scm @@ -1890,4 +1890,186 @@ toolchain. Among other features it provides (properties `((max-silent-time . 9600) ,@(clang-compiler-cpu-architectures "19"))))) + +;;; +;;; Bootstrap path for Zig 0.15. +;;; + +(define zig-0.14.0-687 + (let ((commit "cc047fdd959edb260f7a6e305ccad53f185ece66") + (revision "687") + (base zig-0.14)) + (package + (inherit base) + (name "zig") + (version (git-version "0.14.0" revision commit)) + (source (zig-source + version commit + "0wjswx1cvql8pxpdrglr3h24v5rffnq3llr0f08hj8g959f6ffvs")) + ;; zig2 + (arguments (package-arguments zig-0.10.0-851)) + (inputs + (modify-inputs (package-inputs base) + (replace "clang" clang-20) + (replace "lld" lld-20))) + (native-inputs + (modify-inputs (package-native-inputs base) + (replace "llvm" llvm-20) + (replace "zig" `(,base "zig1")))) + (properties `((max-silent-time . 9600) + ,@(clang-compiler-cpu-architectures "20")))))) + +(define zig-0.14.0-877 + (let ((commit "0adcfd60f4fcfd01c74a6477cbcef187ce06f533") + (revision "877") + (base zig-0.14.0-687)) + (package + (inherit base) + (name "zig") + (version (git-version "0.14.0" revision commit)) + (source (zig-source + version commit + "1yyar3cms02kzf4z20sbw09awqvz0kbm9fx8g0kgb8hp1f4blf3d")) + ;; zig1 + (arguments (package-arguments zig-0.10.0-747)) + (native-inputs + (modify-inputs (package-native-inputs base) + (replace "zig" `(,base "out"))))))) + +(define zig-0.14.0-930 + (let ((commit "40d11cc25a469dc6bb0f9fbba4d05e7210a23b3f") + (revision "930") + (base zig-0.14.0-877)) + (package + (inherit base) + (name "zig") + (version (git-version "0.14.0" revision commit)) + (source (zig-source + version commit + "06x6zi8hcl04gmql96vyms0zch94xi1all5s1kjsnbifixd99bgy")) + ;; zig2 + (arguments (package-arguments zig-0.10.0-851)) + (native-inputs + (modify-inputs (package-native-inputs base) + (replace "zig" `(,base "zig1"))))))) + +(define zig-0.14.0-934 + (let ((commit "4ba0e7d424a7c0af55c8085c659e9205560d3095") + (revision "934") + (base zig-0.14.0-930)) + (package + (inherit base) + (name "zig") + (version (git-version "0.14.0" revision commit)) + (source (zig-source + version commit + "17zaw7bk6wli6wpsr5zlpn1b39818h034l5bpnsxfslqqg09rsd8")) + ;; zig1 + (arguments (package-arguments zig-0.10.0-747)) + (native-inputs + (modify-inputs (package-native-inputs base) + (replace "zig" `(,base "out"))))))) + +(define zig-0.14.0-1091 + (let ((commit "87ce83d5a5854b63b7cef5c6209742ee1a524107") + (revision "1091") + (base zig-0.14.0-934)) + (package + (inherit base) + (name "zig") + (version (git-version "0.14.0" revision commit)) + (source (zig-source + version commit + "18irwcr63l1hf2g7vv9qajgllsp7qwzsv5ijm9x8l51agm6harf4")) + ;; zig2 + (arguments (package-arguments zig-0.10.0-851)) + (native-inputs + (modify-inputs (package-native-inputs base) + (replace "zig" `(,base "zig1"))))))) + +(define zig-0.14.0-1197 + (let ((commit "a023b9b22b6593ebd5a86736a4a9955840d1bfa1") + (revision "1197") + (base zig-0.14.0-1091)) + (package + (inherit base) + (name "zig") + (version (git-version "0.14.0" revision commit)) + (source (zig-source + version commit + "08c1m6kwq7cqg5s6j0ypp8ygvxj21da5is0w7y17sw27fjqrlhgr")) + ;; zig1 + (arguments (package-arguments zig-0.10.0-747)) + (native-inputs + (modify-inputs (package-native-inputs base) + (replace "zig" `(,base "out"))))))) + +(define zig-0.15-libc-abi-tools + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ziglang/libc-abi-tools") + (commit "21993a6036cc165485b20229589340dff9d4fc3c"))) + (file-name "libc-abi-tools") + (sha256 + (base32 "0miwb0zfgfmm4bh2bs7982wpk0wp5vj2mz10x9c3m8fw7zzcyvbh")) + (modules '((guix build utils))) + (snippet + #~(substitute* "netbsd/consolidate.zig" + ((".write_buffer = buffer") ".write_buffer = &buffer"))))) + +(define-public zig-0.15 + (package + (inherit zig-0.14) + (name "zig") + (version "0.15.1") + (source + (origin + (inherit (zig-source + version version + "1cp18plf0x5wip4rnxiqavaqnqxnqzhipb34in6zd3y7wihwjmj4")) + (patches + (search-patches + "zig-0.14-use-baseline-cpu-by-default.patch" + "zig-0.14-use-system-paths.patch" + "zig-0.15-fix-runpath.patch")))) + (arguments + (substitute-keyword-arguments (package-arguments zig-0.14) + ((#:phases phases '%standard-phases) + #~(modify-phases #$phases + (delete 'install-glibc-abilists) + ;; TODO: Remove newly-added abilists files in zig-source. + (add-before 'check 'install-abilists + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (mkdir-p "/tmp/libc-abi-tools") + (with-directory-excursion "/tmp/libc-abi-tools" + (copy-recursively + (dirname (search-input-file + (or native-inputs inputs) "list.zig")) + ".") + (for-each make-file-writable (find-files ".")) + (for-each + (lambda (libc) + (with-directory-excursion libc + (invoke (string-append #$output "/bin/zig") + "run" "consolidate.zig") + (install-file + "abilists" + (string-append #$output "/lib/zig/libc/" libc)))) + '("freebsd" + "glibc" + "netbsd"))))))))) + (inputs + (modify-inputs (package-inputs zig-0.14) + (replace "clang" clang-20) + (replace "lld" lld-20))) + (native-inputs + (modify-inputs (package-native-inputs zig-0.14) + (delete "glibc-abi-tool") + (prepend zig-0.15-libc-abi-tools) + (replace "llvm" llvm-20) + (replace "zig" `(,zig-0.14.0-1197 "zig1")))) + (properties `((max-silent-time . 9600) + ,@(clang-compiler-cpu-architectures "20"))))) + (define-public zig zig-0.13) diff --git a/gnu/services/containers.scm b/gnu/services/containers.scm index 24f31c756b..c9eadea9b4 100644 --- a/gnu/services/containers.scm +++ b/gnu/services/containers.scm @@ -35,12 +35,15 @@ #:use-module (guix diagnostics) #:use-module (guix gexp) #:use-module (guix i18n) + #:use-module (guix modules) #:use-module (guix monads) #:use-module (guix packages) #:use-module (guix profiles) #:use-module ((guix scripts pack) #:prefix pack:) + #:use-module (guix records) #:use-module (guix store) #:use-module (srfi srfi-1) + #:use-module (ice-9 format) #:use-module (ice-9 match) #:export (rootless-podman-configuration rootless-podman-configuration? @@ -96,8 +99,82 @@ oci-container-configuration-workdir oci-container-configuration-extra-arguments + list-of-oci-containers? + list-of-oci-networks? + list-of-oci-volumes? + + %oci-supported-runtimes + oci-runtime? + oci-runtime-system-environment + oci-runtime-system-extra-arguments + oci-runtime-system-requirement + oci-runtime-cli + oci-runtime-system-cli + oci-runtime-home-cli + oci-runtime-name + oci-runtime-group + + oci-network-configuration + oci-network-configuration? + oci-network-configuration-fields + oci-network-configuration-name + oci-network-configuration-driver + oci-network-configuration-gateway + oci-network-configuration-internal? + oci-network-configuration-ip-range + oci-network-configuration-ipam-driver + oci-network-configuration-ipv6? + oci-network-configuration-subnet + oci-network-configuration-labels + oci-network-configuration-extra-arguments + + oci-volume-configuration + oci-volume-configuration? + oci-volume-configuration-fields + oci-volume-configuration-name + oci-volume-configuration-labels + oci-volume-configuration-extra-arguments + + oci-configuration + oci-configuration? + oci-configuration-fields + oci-configuration-runtime + oci-configuration-runtime-cli + oci-configuration-runtime-extra-arguments + oci-configuration-user + oci-configuration-group + oci-configuration-containers + oci-configuration-networks + oci-configuration-volumes + oci-configuration-verbose? + oci-configuration-valid? + + oci-extension + oci-extension? + oci-extension-fields + oci-extension-containers + oci-extension-networks + oci-extension-volumes + + oci-container-shepherd-name + oci-networks-shepherd-name + oci-networks-home-shepherd-name + oci-volumes-shepherd-name + oci-volumes-home-shepherd-name + + oci-container-configuration->options + oci-network-configuration->options + oci-volume-configuration->options + oci-container-shepherd-service - %oci-container-accounts)) + oci-objects-merge-lst + oci-extension-merge + oci-service-type + oci-service-accounts + oci-service-profile + oci-service-subids + oci-configuration->shepherd-services + oci-configuration-extend)) (define (gexp-or-string? value) (or (gexp? value) @@ -296,9 +373,42 @@ to be shared. This service sets it so.") ;;; -;;; OCI container. +;;; OCI provisioning service. ;;; +(define %oci-supported-runtimes + '(docker podman)) + +(define (oci-runtime-system-requirement runtime) + "Return a list of Shepherd service names required by a given OCI runtime, +before it is able to run containers." + (if (eq? 'podman runtime) + '(cgroups2-fs-owner cgroups2-limits + rootless-podman-shared-root-fs user-processes) + '(dockerd user-processes))) + +(define (oci-runtime-name runtime) + "Return a human readable name for a given OCI runtime." + (if (eq? 'podman runtime) + "Podman" "Docker")) + +(define (oci-runtime-group runtime maybe-group) + "Implement the logic behind selection of the group that is to be used by +Shepherd to execute OCI commands." + (if (maybe-value-set? maybe-group) + maybe-group + (if (eq? 'podman runtime) + "cgroup" + "docker"))) + +(define (oci-runtime? value) + (unless (member value %oci-supported-runtimes) + (raise + (formatted-message + (G_ "OCI runtime must be a symbol and one of ~a, +but ~a was found") %oci-supported-runtimes value))) + (symbol? value)) + (define (oci-sanitize-pair pair delimiter) (define (valid? member) (or (string? member) @@ -332,21 +442,41 @@ found!") ;; '(("HOME" . "/home/nobody") "JAVA_HOME=/java") (oci-sanitize-mixed-list "host-environment" value "=")) +(define (oci-container-host-environment? value) + (list? (oci-sanitize-host-environment value))) + (define (oci-sanitize-environment value) ;; Expected spec format: ;; '(("HOME" . "/home/nobody") "JAVA_HOME=/java") (oci-sanitize-mixed-list "environment" value "=")) +(define (oci-container-environment? value) + (list? (oci-sanitize-environment value))) + (define (oci-sanitize-ports value) ;; Expected spec format: ;; '(("8088" . "80") "2022:22") (oci-sanitize-mixed-list "ports" value ":")) +(define (oci-container-ports? value) + (list? (oci-sanitize-ports value))) + (define (oci-sanitize-volumes value) ;; Expected spec format: ;; '(("/mnt/dir" . "/dir") "/run/current-system/profile:/java") (oci-sanitize-mixed-list "volumes" value ":")) +(define (oci-container-volumes? value) + (list? (oci-sanitize-volumes value))) + +(define (oci-sanitize-labels value) + ;; Expected spec format: + ;; '(("foo" . "bar") "foo=bar") + (oci-sanitize-mixed-list "labels" value "=")) + +(define (oci-object-labels? value) + (list? (oci-sanitize-labels value))) + (define (oci-sanitize-shepherd-actions value) (map (lambda (el) @@ -358,6 +488,9 @@ found!") but ~a was found") el)))) value)) +(define (oci-container-shepherd-actions? value) + (list? (oci-sanitize-shepherd-actions value))) + (define (oci-sanitize-extra-arguments value) (define (valid? member) (or (string? member) @@ -373,11 +506,19 @@ but ~a was found") el)))) but ~a was found") el)))) value)) +(define (oci-object-extra-arguments? value) + (list? (oci-sanitize-extra-arguments value))) + (define (oci-image-reference image) - (if (string? image) - image - (string-append (oci-image-repository image) - ":" (oci-image-tag image)))) + "Return a string OCI image reference representing IMAGE." + (define reference + (if (string? image) + image + (string-append (oci-image-repository image) + ":" (oci-image-tag image)))) + (if (> (length (string-split reference #\/)) 1) + reference + (string-append "localhost/" reference))) (define (oci-lowerable-image? image) (or (manifest? image) @@ -392,7 +533,19 @@ but ~a was found") el)))) (define list-of-symbols? (list-of symbol?)) +(define (list-of-oci-records? name predicate value) + (map + (lambda (el) + (if (predicate el) + el + (raise + (formatted-message + (G_ "~a contains an illegal value: ~a") name el)))) + value)) + (define-maybe/no-serialization string) +(define-maybe/no-serialization package) +(define-maybe/no-serialization subid-range) (define-configuration/no-serialization oci-image (repository @@ -437,11 +590,15 @@ value will be ignored.") (define-configuration/no-serialization oci-container-configuration (user - (string "oci-container") - "The user under whose authority docker commands will be run.") + (maybe-string) + "The user name under whose authority OCI commands will be run. This field will +override the @code{user} field of @code{oci-configuration}.") (group - (string "docker") - "The group under whose authority docker commands will be run.") + (maybe-string) + "The group name under whose authority OCI commands will be run. When +using the @code{'podman} OCI runtime, this field will be ignored and the +default group of the user configured in the @code{user} field will be used. +This field will override the @code{group} field of @code{oci-configuration}.") (command (list-of-strings '()) "Overwrite the default command (@code{CMD}) of the image.") @@ -449,11 +606,11 @@ value will be ignored.") (maybe-string) "Overwrite the default entrypoint (@code{ENTRYPOINT}) of the image.") (host-environment - (list '()) + (oci-container-host-environment '()) "Set environment variables in the host environment where @command{docker run} -is invoked. This is especially useful to pass secrets from the host to the -container without having them on the @command{docker run}'s command line: by -setting the @code{MYSQL_PASSWORD} on the host and by passing +or @command{podman run} are invoked. This is especially useful to pass secrets +from the host to the container without having them on the OCI runtime command line, +for example: by setting the @code{MYSQL_PASSWORD} on the host and by passing @code{--env MYSQL_PASSWORD} through the @code{extra-arguments} field, it is possible to securely set values in the container environment. This field's value can be a list of pairs or strings, even mixed: @@ -467,7 +624,7 @@ Pair members can be strings, gexps or file-like objects. Strings are passed directly to @code{make-forkexec-constructor}." (sanitizer oci-sanitize-host-environment)) (environment - (list '()) + (oci-container-environment '()) "Set environment variables inside the container. This can be a list of pairs or strings, even mixed: @@ -477,15 +634,16 @@ or strings, even mixed: @end lisp Pair members can be strings, gexps or file-like objects. Strings are passed -directly to the Docker CLI. You can refer to the -@url{https://docs.docker.com/engine/reference/commandline/run/#env,upstream} -documentation for semantics." +directly to the OCI runtime CLI. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/run/#env,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#env-e-env,Podman} +upstream documentation for semantics." (sanitizer oci-sanitize-environment)) (image (string-or-oci-image) "The image used to build the container. It can be a string or an -@code{oci-image} record. Strings are resolved by the Docker -Engine, and follow the usual format +@code{oci-image} record. Strings are resolved by the OCI runtime, +and follow the usual format @code{myregistry.local:5000/testing/test-image:tag}.") (provision (maybe-string) @@ -508,15 +666,15 @@ is @code{#f} the service has to be started manually with @command{herd start}.") "Whether to restart the service when it stops, for instance when the underlying process dies.") (shepherd-actions - (list '()) + (oci-container-shepherd-actions '()) "This is a list of @code{shepherd-action} records defining actions supported by the service." (sanitizer oci-sanitize-shepherd-actions)) (network (maybe-string) - "Set a Docker network for the spawned container.") + "Set an OCI network for the spawned container.") (ports - (list '()) + (oci-container-ports '()) "Set the port or port ranges to expose from the spawned container. This can be a list of pairs or strings, even mixed: @@ -526,12 +684,13 @@ be a list of pairs or strings, even mixed: @end lisp Pair members can be strings, gexps or file-like objects. Strings are passed -directly to the Docker CLI. You can refer to the -@url{https://docs.docker.com/engine/reference/commandline/run/#publish,upstream} -documentation for semantics." +directly to the OCI runtime CLI. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/run/#publish,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#publish-p-ip-hostport-containerport-protocol,Podman} +upstream documentation for semantics." (sanitizer oci-sanitize-ports)) (volumes - (list '()) + (oci-container-volumes '()) "Set volume mappings for the spawned container. This can be a list of pairs or strings, even mixed: @@ -541,71 +700,342 @@ list of pairs or strings, even mixed: @end lisp Pair members can be strings, gexps or file-like objects. Strings are passed -directly to the Docker CLI. You can refer to the -@url{https://docs.docker.com/engine/reference/commandline/run/#volume,upstream} -documentation for semantics." +directly to the OCI runtime CLI. You can refer to the +@url{https://docs.docker.com/engine/reference/commandline/run/#volume,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#volume-v-source-volume-host-dir-container-dir-options,Podman} +upstream documentation for semantics." (sanitizer oci-sanitize-volumes)) (container-user (maybe-string) "Set the current user inside the spawned container. You can refer to the -@url{https://docs.docker.com/engine/reference/run/#user,upstream} -documentation for semantics.") +@url{https://docs.docker.com/engine/reference/run/#user,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#user-u-user-group,Podman} +upstream documentation for semantics.") (workdir (maybe-string) - "Set the current working for the spawned Shepherd service. + "Set the current working directory for the spawned Shepherd service. You can refer to the -@url{https://docs.docker.com/engine/reference/run/#workdir,upstream} -documentation for semantics.") +@url{https://docs.docker.com/engine/reference/run/#workdir,Docker} +or @url{https://docs.podman.io/en/stable/markdown/podman-run.1.html#workdir-w-dir,Podman} +upstream documentation for semantics.") (extra-arguments - (list '()) + (oci-object-extra-arguments '()) "A list of strings, gexps or file-like objects that will be directly passed -to the @command{docker run} invokation." +to the @command{docker run} or @command{podman run} invocation." (sanitizer oci-sanitize-extra-arguments))) -(define oci-container-configuration->options - (lambda (config) - (let ((entrypoint - (oci-container-configuration-entrypoint config)) - (network - (oci-container-configuration-network config)) - (user - (oci-container-configuration-container-user config)) - (workdir - (oci-container-configuration-workdir config))) - (apply append - (filter (compose not unspecified?) - `(,(if (maybe-value-set? entrypoint) - `("--entrypoint" ,entrypoint) - '()) - ,(append-map - (lambda (spec) - (list "--env" spec)) - (oci-container-configuration-environment config)) - ,(if (maybe-value-set? network) - `("--network" ,network) - '()) - ,(if (maybe-value-set? user) - `("--user" ,user) - '()) - ,(if (maybe-value-set? workdir) - `("--workdir" ,workdir) - '()) - ,(append-map - (lambda (spec) - (list "-p" spec)) - (oci-container-configuration-ports config)) - ,(append-map - (lambda (spec) - (list "-v" spec)) - (oci-container-configuration-volumes config)))))))) +(define (list-of-oci-containers? value) + (list-of-oci-records? "containers" oci-container-configuration? value)) + +(define-configuration/no-serialization oci-volume-configuration + (name + (string) + "The name of the OCI volume to provision.") + (labels + (oci-object-labels '()) + "The list of labels that will be used to tag the current volume." + (sanitizer oci-sanitize-labels)) + (extra-arguments + (oci-object-extra-arguments '()) + "A list of strings, gexps or file-like objects that will be directly passed +to the @command{docker volume create} or @command{podman volume create} +invocation." + (sanitizer oci-sanitize-extra-arguments))) + +(define (list-of-oci-volumes? value) + (list-of-oci-records? "volumes" oci-volume-configuration? value)) + +(define-configuration/no-serialization oci-network-configuration + (name + (string) + "The name of the OCI network to provision.") + (driver + (maybe-string) + "The driver to manage the network.") + (gateway + (maybe-string) + "IPv4 or IPv6 gateway for the subnet.") + (internal? + (boolean #f) + "Restrict external access to the network") + (ip-range + (maybe-string) + "Allocate container ip from a sub-range in CIDR format.") + (ipam-driver + (maybe-string) + "IP Address Management Driver.") + (ipv6? + (boolean #f) + "Enable IPv6 networking.") + (subnet + (maybe-string) + "Subnet in CIDR format that represents a network segment.") + (labels + (oci-object-labels '()) + "The list of labels that will be used to tag the current volume." + (sanitizer oci-sanitize-labels)) + (extra-arguments + (oci-object-extra-arguments '()) + "A list of strings, gexps or file-like objects that will be directly passed +to the @command{docker network create} or @command{podman network create} +invocation." + (sanitizer oci-sanitize-extra-arguments))) + +(define (list-of-oci-networks? value) + (list-of-oci-records? "networks" oci-network-configuration? value)) + +(define (package-or-string? value) + (or (package? value) (string? value))) + +(define-maybe/no-serialization package-or-string) + +(define-configuration/no-serialization oci-configuration + (runtime + (oci-runtime 'docker) + "The OCI runtime to use to run commands. It can be either @code{'docker} or +@code{'podman}.") + (runtime-cli + (maybe-package-or-string) + "The OCI runtime command line to be installed in the system profile and used +to provision OCI resources, it can be either a package or a string representing +an absolute file name to the runtime binary entrypoint. When unset it will default +to @code{docker-cli} package for the @code{'docker} runtime or to @code{podman} +package for the @code{'podman} runtime.") + (runtime-extra-arguments + (list '()) + "A list of strings, gexps or file-like objects that will be placed +after each @command{docker} or @command{podman} invokation.") + (user + (string "oci-container") + "The user name under whose authority OCI runtime commands will be run.") + (group + (maybe-string) + "The group name under whose authority OCI commands will be run. When +using the @code{'podman} OCI runtime, this field will be ignored and the +default group of the user configured in the @code{user} field will be used.") + (subuids-range + (maybe-subid-range) + "An optional @code{subid-range} record allocating subuids for the user from +the @code{user} field. When unset, with the rootless Podman OCI runtime, it +defaults to @code{(subid-range (name \"oci-container\"))}.") + (subgids-range + (maybe-subid-range) + "An optional @code{subid-range} record allocating subgids for the user from +the @code{user} field. When unset, with the rootless Podman OCI runtime, it +defaults to @code{(subid-range (name \"oci-container\"))}.") + (containers + (list-of-oci-containers '()) + "The list of @code{oci-container-configuration} records representing the +containers to provision. The use of the @code{oci-extension} record should +be preferred for most cases.") + (networks + (list-of-oci-networks '()) + "The list of @code{oci-network-configuration} records representing the +networks to provision. The use of the @code{oci-extension} record should +be preferred for most cases.") + (volumes + (list-of-oci-volumes '()) + "The list of @code{oci-volume-configuration} records representing the +volumes to provision. The use of the @code{oci-extension} record should +be preferred for most cases.") + (verbose? + (boolean #f) + "When true, additional output will be printed, allowing to better follow the +flow of execution.") + (home-service? + (boolean for-home?) + "This is an internal field denoting whether this configuration is used in a +Guix Home context, as opposed to the default Guix System context.")) -(define* (get-keyword-value args keyword #:key (default #f)) - (let ((kv (memq keyword args))) - (if (and kv (>= (length kv) 2)) - (cadr kv) - default))) +(define (oci-runtime-system-environment runtime user) + (if (eq? runtime 'podman) + (list + #~(string-append + "HOME=" (passwd:dir (getpwnam #$user)))) + #~())) + +(define (oci-runtime-cli runtime runtime-cli profile-directory) + "Return a gexp that, when lowered, evaluates to the of the OCI +runtime command requested by the user." + (if (string? runtime-cli) + ;; It is a user defined absolute file name. + runtime-cli + #~(string-append + #$(if (maybe-value-set? runtime-cli) + runtime-cli + profile-directory) + #$(if (eq? 'podman runtime) + "/bin/podman" + "/bin/docker")))) + +(define* (oci-runtime-system-cli config #:key (profile-directory "/run/current-system/profile")) + (let ((runtime-cli + (oci-configuration-runtime-cli config)) + (runtime + (oci-configuration-runtime config))) + (oci-runtime-cli runtime runtime-cli profile-directory))) + +(define (oci-runtime-home-cli config) + (let ((runtime-cli + (oci-configuration-runtime-cli config)) + (runtime + (oci-configuration-runtime config))) + (oci-runtime-cli runtime runtime-cli + (string-append (getenv "HOME") + "/.guix-home/profile")))) + +(define-configuration/no-serialization oci-extension + (containers + (list-of-oci-containers '()) + "The list of @code{oci-container-configuration} records representing the +containers to add.") + (networks + (list-of-oci-networks '()) + "The list of @code{oci-network-configuration} records representing the +networks to add.") + (volumes + (list-of-oci-volumes '()) + "The list of @code{oci-volume-configuration} records representing the +volumes to add.")) + +(define (oci-image->container-name image) + "Infer the name of an OCI backed Shepherd service from its OCI image." + (basename + (if (string? image) + (first (string-split image #\:)) + (oci-image-repository image)))) + +(define (oci-command-line-shepherd-action object-name invocation entrypoint) + "Return a Shepherd action printing a given INVOCATION of an OCI command for the +given OBJECT-NAME." + (shepherd-action + (name 'command-line) + (documentation + (format #f "Prints ~a's OCI runtime command line invocation." + object-name)) + (procedure + #~(lambda _ + (format #t "Entrypoint:~%~a~%" #$entrypoint) + (format #t "Invocation:~%~a~%" #$invocation))))) + +(define (oci-container-shepherd-name runtime config) + "Return the name of an OCI backed Shepherd service based on CONFIG. +The name configured in the configuration record is returned when +CONFIG's name field has a value, otherwise a name is inferred from CONFIG's +image field." + (define name (oci-container-configuration-provision config)) + (define image (oci-container-configuration-image config)) + + (if (maybe-value-set? name) + name + (string-append (symbol->string runtime) "-" + (oci-image->container-name image)))) + +(define (oci-networks-shepherd-name runtime) + "Return the name of the OCI networks provisioning Shepherd service based on +RUNTIME." + (string-append (symbol->string runtime) "-networks")) + +(define (oci-volumes-shepherd-name runtime) + "Return the name of the OCI volumes provisioning Shepherd service based on +RUNTIME." + (string-append (symbol->string runtime) "-volumes")) + +(define (oci-networks-home-shepherd-name runtime) + "Return the name of the OCI volumes provisioning Home Shepherd service based on +RUNTIME." + (string-append "home-" (oci-networks-shepherd-name runtime))) + +(define (oci-volumes-home-shepherd-name runtime) + "Return the name of the OCI volumes provisioning Home Shepherd service based on +RUNTIME." + (string-append "home-" (oci-volumes-shepherd-name runtime))) + +(define (oci-container-configuration->options config) + "Map CONFIG, an oci-container-configuration record, to a gexp that, upon +lowering, will be evaluated to a list of strings containing command line options +for the OCI runtime run command." + (let ((entrypoint (oci-container-configuration-entrypoint config)) + (network (oci-container-configuration-network config)) + (user (oci-container-configuration-container-user config)) + (workdir (oci-container-configuration-workdir config))) + (apply append + (filter (compose not unspecified?) + (list (if (maybe-value-set? entrypoint) + `("--entrypoint" ,entrypoint) + '()) + (append-map + (lambda (spec) + (list "--env" spec)) + (oci-container-configuration-environment config)) + (if (maybe-value-set? network) + `("--network" ,network) + '()) + (if (maybe-value-set? user) + `("--user" ,user) + '()) + (if (maybe-value-set? workdir) + `("--workdir" ,workdir) + '()) + (append-map + (lambda (spec) + (list "-p" spec)) + (oci-container-configuration-ports config)) + (append-map + (lambda (spec) + (list "-v" spec)) + (oci-container-configuration-volumes config))))))) + +(define (oci-network-configuration->options config) + "Map CONFIG, an oci-network-configuration record, to a gexp that, upon +lowering, will be evaluated to a list of strings containing command line options +for the OCI runtime network create command." + (let ((driver (oci-network-configuration-driver config)) + (gateway (oci-network-configuration-gateway config)) + (internal? (oci-network-configuration-internal? config)) + (ip-range (oci-network-configuration-ip-range config)) + (ipam-driver (oci-network-configuration-ipam-driver config)) + (ipv6? (oci-network-configuration-ipv6? config)) + (subnet (oci-network-configuration-subnet config))) + (apply append + (filter (compose not unspecified?) + (list (if (maybe-value-set? driver) + `("--driver" ,driver) + '()) + (if (maybe-value-set? gateway) + `("--gateway" ,gateway) + '()) + (if internal? + `("--internal") + '()) + (if (maybe-value-set? ip-range) + `("--ip-range" ,ip-range) + '()) + (if (maybe-value-set? ipam-driver) + `("--ipam-driver" ,ipam-driver) + '()) + (if ipv6? + `("--ipv6") + '()) + (if (maybe-value-set? subnet) + `("--subnet" ,subnet) + '()) + (append-map + (lambda (spec) + (list "--label" spec)) + (oci-network-configuration-labels config))))))) + +(define (oci-volume-configuration->options config) + "Map CONFIG, an oci-volume-configuration record, to a gexp that, upon +lowering, will be evaluated to a list of strings containing command line options +for the OCI runtime volume create command." + (append-map + (lambda (spec) + (list "--label" spec)) + (oci-volume-configuration-labels config))) (define (lower-operating-system os target system) + "Lower OS, an operating-system record, into a tarball containing an OCI image." (mlet* %store-monad ((tarball (lower-object @@ -614,24 +1044,11 @@ to the @command{docker run} invokation." #:target target))) (return tarball))) -(define (lower-manifest name image target system) - (define value (oci-image-value image)) - (define options (oci-image-pack-options image)) - (define image-reference - (oci-image-reference image)) - (define image-tag - (let* ((extra-options - (get-keyword-value options #:extra-options)) - (image-tag-option - (and extra-options - (get-keyword-value extra-options #:image-tag)))) - (if image-tag-option - '() - `(#:extra-options (#:image-tag ,image-reference))))) - +(define (lower-manifest name value options image-reference + target system grafts?) + "Lower VALUE, a manifest record, into a tarball containing an OCI image." (mlet* %store-monad - ((_ (set-grafting - (oci-image-grafts? image))) + ((_ (set-grafting grafts?)) (guile (set-guile-for-build (default-guile))) (profile (profile-derivation value @@ -642,14 +1059,11 @@ to the @command{docker run} invokation." (tarball (apply pack:docker-image `(,name ,profile ,@options - ,@image-tag #:localstatedir? #t)))) (return tarball))) -(define (lower-oci-image name image) - (define value (oci-image-value image)) - (define image-target (oci-image-target image)) - (define image-system (oci-image-system image)) +(define (lower-oci-image-state name value options reference + image-target image-system grafts?) (define target (if (maybe-value-set? image-target) image-target @@ -662,7 +1076,8 @@ to the @command{docker run} invokation." (run-with-store store (match value ((? manifest? value) - (lower-manifest name image target system)) + (lower-manifest name value options reference + target system grafts?)) ((? operating-system? value) (lower-operating-system value target system)) ((or (? gexp? value) @@ -677,113 +1092,661 @@ operating-system, gexp or file-like records but ~a was found") #:target target #:system system))) -(define (%oci-image-loader name image tag) - (let ((docker (file-append docker-cli "/bin/docker")) - (tarball (lower-oci-image name image))) - (with-imported-modules '((guix build utils)) - (program-file (format #f "~a-image-loader" name) - #~(begin - (use-modules (guix build utils) - (ice-9 popen) - (ice-9 rdelim)) +(define (lower-oci-image name image) + "Lower IMAGE, a oci-image record, into a tarball containing an OCI image." + (lower-oci-image-state + name + (oci-image-value image) + (oci-image-pack-options image) + (oci-image-reference image) + (oci-image-target image) + (oci-image-system image) + (oci-image-grafts? image))) + +(define-record-type* <oci-runtime-state> + oci-runtime-state + make-oci-runtime-state + oci-runtime-state? + this-oci-runtime-state - (format #t "Loading image for ~a from ~a...~%" #$name #$tarball) - (define line - (read-line - (open-input-pipe - (string-append #$docker " load -i " #$tarball)))) + (runtime oci-runtime-state-runtime + (default 'docker)) + (runtime-cli oci-runtime-state-runtime-cli) + (user oci-runtime-state-user) + (group oci-runtime-state-group) + (runtime-environment oci-runtime-state-runtime-environment + (default #~())) + (runtime-requirement oci-runtime-state-runtime-requirement + (default '())) + (runtime-extra-arguments oci-runtime-state-runtime-extra-arguments + (default '()))) - (unless (or (eof-object? line) - (string-null? line)) - (format #t "~a~%" line) - (let ((repository&tag - (string-drop line - (string-length - "Loaded image: ")))) +(define-record-type* <oci-state> + oci-state + make-oci-state + oci-state? + this-oci-state - (invoke #$docker "tag" repository&tag #$tag) - (format #t "Tagged ~a with ~a...~%" #$tarball #$tag)))))))) + (networks oci-state-networks) + (volumes oci-state-volumes) + (containers oci-state-containers) + (networks-name oci-state-networks-name + (default #f)) + (volumes-name oci-state-volumes-name + (default #f)) + (networks-requirement oci-state-networks-requirement + (default '())) + (volumes-requirement oci-state-volumes-requirement + (default '())) + (containers-requirement oci-state-containers-requirement + (default '()))) -(define (oci-container-shepherd-service config) - (define (guess-name name image) - (if (maybe-value-set? name) - name - (string-append "docker-" - (basename - (if (string? image) - (first (string-split image #\:)) - (oci-image-repository image)))))) +(define-record-type* <oci-container-invocation> + oci-container-invocation + make-oci-container-invocation + oci-container-invocation? + this-oci-container-invocation + + (runtime oci-container-invocation-runtime + (default 'docker)) + (runtime-cli oci-container-invocation-runtime-cli) + (name oci-container-invocation-name) + (command oci-container-invocation-command + (default '())) + (image-reference oci-container-invocation-image-reference) + (options oci-container-invocation-options + (default '())) + (run-extra-arguments oci-container-invocation-run-extra-arguments + (default '())) + (runtime-extra-arguments oci-container-invocation-runtime-extra-arguments + (default '()))) + +(define (oci-container-configuration->oci-container-invocation runtime-state + config) + (oci-container-invocation + (runtime (oci-runtime-state-runtime runtime-state)) + (runtime-cli (oci-runtime-state-runtime-cli runtime-state)) + (name + (oci-container-shepherd-name runtime config)) + (command + (oci-container-configuration-command config)) + (image-reference + (oci-image-reference (oci-container-configuration-image config))) + (options + (oci-container-configuration->options config)) + (run-extra-arguments + (oci-container-configuration-extra-arguments config)) + (runtime-extra-arguments + (oci-runtime-state-runtime-extra-arguments runtime-state)))) + +(define* (oci-image-loader runtime-state name image tag #:key verbose?) + "Return a file-like object that, once lowered, will evaluate to a program able +to load IMAGE through RUNTIME-CLI and to tag it with TAG afterwards." + (let ((tarball (lower-oci-image name image))) + (with-imported-modules (source-module-closure '((gnu build oci-containers))) + (program-file + (format #f "~a-image-loader" name) + #~(begin + (use-modules (gnu build oci-containers)) + (oci-image-load '#$(oci-runtime-state-runtime runtime-state) + #$(oci-runtime-state-runtime-cli runtime-state) + #$tarball #$name #$tag + #:verbose? #$verbose?)))))) - (let* ((docker (file-append docker-cli "/bin/docker")) - (actions (oci-container-configuration-shepherd-actions config)) - (auto-start? - (oci-container-configuration-auto-start? config)) - (user (oci-container-configuration-user config)) - (group (oci-container-configuration-group config)) - (host-environment - (oci-container-configuration-host-environment config)) - (command (oci-container-configuration-command config)) - (log-file (oci-container-configuration-log-file config)) - (provision (oci-container-configuration-provision config)) - (requirement (oci-container-configuration-requirement config)) - (respawn? - (oci-container-configuration-respawn? config)) - (image (oci-container-configuration-image config)) - (image-reference (oci-image-reference image)) - (options (oci-container-configuration->options config)) - (name (guess-name provision image)) - (extra-arguments - (oci-container-configuration-extra-arguments config))) +(define (oci-container-run-invocation container-invocation) + "Return a list representing the OCI runtime +invocation for running containers." + ;; run [OPTIONS] IMAGE [COMMAND] [ARG...] + `(,(oci-container-invocation-runtime-cli container-invocation) + ,@(oci-container-invocation-runtime-extra-arguments container-invocation) + "run" "--rm" + ,@(if (eq? (oci-container-invocation-runtime container-invocation) + 'podman) + ;; This is because podman takes some time to + ;; release container names. --replace seems + ;; to be required to be able to restart services. + '("--replace") + '()) + "--name" ,(oci-container-invocation-name container-invocation) + ,@(oci-container-invocation-options container-invocation) + ,@(oci-container-invocation-run-extra-arguments container-invocation) + ,(oci-container-invocation-image-reference container-invocation) + ,@(oci-container-invocation-command container-invocation))) - (shepherd-service (provision `(,(string->symbol name))) - (requirement `(dockerd user-processes ,@requirement)) +(define* (oci-container-entrypoint name invocation + #:key verbose? + (pre-script #~())) + "Return a file-like object that, once lowered, will evaluate to the entrypoint +for the Shepherd service that will run INVOCATION." + (program-file + (string-append "oci-entrypoint-" name) + (with-imported-modules (source-module-closure + '((gnu build oci-containers))) + #~(begin + (use-modules (gnu build oci-containers) + (srfi srfi-1)) + (oci-container-execlp + (list #$@invocation) + #:verbose? #$verbose? + #:pre-script + (lambda _ + (when (and #$verbose? + (zero? (length '(#$@pre-script)))) + (format #t "No pre script to run...")) + #$@pre-script)))))) + +(define* (oci-container-shepherd-service state runtime-state config + #:key verbose? + networks? + volumes?) + "Return a Shepherd service object that will run the OCI container represented +by CONFIG through RUNTIME-CLI." + (match-record config <oci-container-configuration> + (shepherd-actions auto-start? user group host-environment + log-file requirement respawn? image) + (define runtime (oci-runtime-state-runtime runtime-state)) + (define runtime-cli (oci-runtime-state-runtime-cli runtime-state)) + (define image-reference (oci-image-reference image)) + (define shepherd-name (oci-container-shepherd-name runtime config)) + (define oci-container-user + (if (maybe-value-set? user) + user + (oci-runtime-state-user runtime-state))) + (define oci-container-group + (if (maybe-value-set? group) + group + (oci-runtime-state-group runtime-state))) + (define networks-service + (if networks? + (list + (string->symbol + (oci-state-networks-name state))) + '())) + (define volumes-service + (if volumes? + (list + (string->symbol + (oci-state-volumes-name state))) + '())) + (define oci-container-requirement + (append requirement + (oci-state-containers-requirement state) + (oci-runtime-state-runtime-requirement runtime-state) + networks-service + volumes-service)) + (define environment-variables + #~(append + (list #$@host-environment) + (list #$@(oci-runtime-state-runtime-environment runtime-state)))) + (define invocation + (oci-container-run-invocation + (oci-container-configuration->oci-container-invocation + runtime-state config))) + (define* (container-action command) + #~(lambda _ + (fork+exec-command + (list #$@command) + #$@(if oci-container-user + (list #:user oci-container-user) + '()) + #$@(if oci-container-group + (list #:group oci-container-group) + '()) + #$@(if (maybe-value-set? log-file) + (list #:log-file log-file) + '()) + #$@(if (and oci-container-user (eq? runtime 'podman)) + (list #:directory + #~(passwd:dir + (getpwnam #$oci-container-user))) + '()) + #:environment-variables + #$environment-variables))) + (define start-entrypoint + (oci-container-entrypoint + shepherd-name invocation + #:verbose? verbose? + #:pre-script + (if (oci-image? image) + #~((system* + #$(oci-image-loader + runtime-state shepherd-name image + image-reference + #:verbose? verbose?))) + #~()))) + + (shepherd-service (provision `(,(string->symbol shepherd-name))) + (requirement oci-container-requirement) (respawn? respawn?) (auto-start? auto-start?) (documentation (string-append - "Docker backed Shepherd service for " - (if (oci-image? image) name image) ".")) + (oci-runtime-name runtime) + " backed Shepherd service for " + (if (oci-image? image) shepherd-name image) ".")) (start - #~(lambda () - #$@(if (oci-image? image) - #~((invoke #$(%oci-image-loader - name image image-reference))) - #~()) - (fork+exec-command - ;; docker run [OPTIONS] IMAGE [COMMAND] [ARG...] - (list #$docker "run" "--rm" "--name" #$name - #$@options #$@extra-arguments - #$image-reference #$@command) - #:user #$user - #:group #$group - #$@(if (maybe-value-set? log-file) - (list #:log-file log-file) - '()) - #:environment-variables - (list #$@host-environment)))) + (container-action + (list start-entrypoint))) (stop - #~(lambda _ - (invoke #$docker "rm" "-f" #$name))) + (container-action + (list + (oci-container-entrypoint + shepherd-name (list runtime-cli "rm" "-f" shepherd-name) + #:verbose? verbose?)))) (actions - (if (oci-image? image) - '() - (append + (append + (list + (oci-command-line-shepherd-action + shepherd-name #~(string-join (list #$@invocation) " ") + start-entrypoint)) + (if (oci-image? image) + '() (list (shepherd-action (name 'pull) (documentation (format #f "Pull ~a's image (~a)." - name image)) + shepherd-name image)) (procedure - #~(lambda _ - (invoke #$docker "pull" #$image))))) - actions)))))) + (container-action + (list + (oci-container-entrypoint + shepherd-name (list runtime-cli "pull" image) + #:verbose? verbose?))))))) + shepherd-actions))))) + +(define (oci-object-create-invocation object runtime-cli name options + runtime-extra-arguments + create-extra-arguments) + "Return a gexp that, upon lowering, will evaluate to the OCI runtime +invocation for creating networks and volumes." + ;; network|volume create [options] [NAME] + #~(list #$runtime-cli #$@runtime-extra-arguments #$object "create" + #$@options #$@create-extra-arguments #$name)) -(define %oci-container-accounts +(define (format-oci-invocations invocations) + "Return a gexp that, upon lowering, will evaluate to a formatted message +containing the INVOCATIONS that the OCI runtime will execute to provision +networks or volumes." + #~(string-join (map (lambda (i) (string-join i " ")) + (list #$@invocations)) + "\n")) + +(define* (oci-object-create-script object runtime runtime-cli invocations + #:key verbose?) + "Return a file-like object that, once lowered, will evaluate to a program able +to create OCI networks and volumes through RUNTIME-CLI." + (define runtime-string (symbol->string runtime)) + (define runtime-name (oci-runtime-name runtime)) + (with-imported-modules (source-module-closure + '((gnu build oci-containers))) + + (program-file + (string-append runtime-string "-" object "s-create.scm") + #~(begin + (use-modules (gnu build oci-containers)) + (oci-object-create '#$runtime #$runtime-cli #$runtime-name + #$object (list #$@invocations) + #:verbose? #$verbose?))))) + +(define* (oci-object-shepherd-service object runtime-state name + oci-state-requirement invocations + #:key verbose?) + "Return a Shepherd service object that will provision the OBJECTs represented +by INVOCATIONS through RUNTIME-STATE." + (match-record runtime-state <oci-runtime-state> + (runtime runtime-cli runtime-requirement user group + runtime-environment) + (define entrypoint + (oci-object-create-script + object runtime runtime-cli invocations #:verbose? verbose?)) + (define requirement + (append runtime-requirement oci-state-requirement)) + + (shepherd-service (provision (list (string->symbol name))) + (requirement requirement) + (one-shot? #t) + (documentation + (string-append + (oci-runtime-name runtime) " " object + " provisioning service")) + (start + #~(lambda _ + (fork+exec-command + (list #$entrypoint) + #$@(if user (list #:user user) '()) + #$@(if group (list #:group group) '()) + #:environment-variables + (list #$@runtime-environment)))) + (actions + (list + (oci-command-line-shepherd-action + name (format-oci-invocations invocations) + entrypoint)))))) + +(define* (oci-networks-shepherd-service state runtime-state + #:key verbose?) + "Return a Shepherd service object that will create the networks represented +in STATE." + (define runtime-cli + (oci-runtime-state-runtime-cli runtime-state)) + (define invocations + (map + (lambda (network) + (oci-object-create-invocation + "network" runtime-cli + (oci-network-configuration-name network) + (oci-network-configuration->options network) + (oci-runtime-state-runtime-extra-arguments runtime-state) + (oci-network-configuration-extra-arguments network))) + (oci-state-networks state))) + + (oci-object-shepherd-service + "network" runtime-state (oci-state-networks-name state) + (oci-state-networks-requirement state) + invocations #:verbose? verbose?)) + +(define* (oci-volumes-shepherd-service state runtime-state + #:key verbose?) + "Return a Shepherd service object that will create the volumes represented +in STATE." + (define runtime-cli + (oci-runtime-state-runtime-cli runtime-state)) + (define invocations + (map + (lambda (volume) + (oci-object-create-invocation + "volume" runtime-cli + (oci-volume-configuration-name volume) + (oci-volume-configuration->options volume) + (oci-runtime-state-runtime-extra-arguments runtime-state) + (oci-volume-configuration-extra-arguments volume))) + (oci-state-volumes state))) + + (oci-object-shepherd-service + "volume" runtime-state (oci-state-volumes-name state) + (oci-state-volumes-requirement state) + invocations #:verbose? verbose?)) + +(define (oci-service-accounts config) + (define user (oci-configuration-user config)) + (define maybe-group (oci-configuration-group config)) + (define runtime (oci-configuration-runtime config)) (list (user-account - (name "oci-container") + (name user) (comment "OCI services account") - (group "docker") - (system? #t) - (home-directory "/var/empty") + (group "users") + (supplementary-groups + (list (oci-runtime-group runtime maybe-group))) + (system? (eq? 'docker runtime)) + (home-directory (if (eq? 'podman runtime) + (string-append "/home/" user) + "/var/empty")) + (create-home-directory? (eq? 'podman runtime)) (shell (file-append shadow "/sbin/nologin"))))) + +(define* (oci-state->shepherd-services state runtime-state #:key verbose?) + "Returns a list of Shepherd services based on the input OCI state." + (define networks? + (> (length (oci-state-networks state)) 0)) + (define volumes? + (> (length (oci-state-volumes state)) 0)) + (append + (map + (lambda (c) + (oci-container-shepherd-service + state runtime-state c + #:verbose? verbose? + #:volumes? volumes? + #:networks? networks?)) + (oci-state-containers state)) + (if networks? + (list + (oci-networks-shepherd-service + state runtime-state + #:verbose? verbose?)) + '()) + (if volumes? + (list + (oci-volumes-shepherd-service + state runtime-state + #:verbose? verbose?)) + '()))) + +(define* (oci-configuration->oci-runtime-state config #:key verbose?) + (define runtime + (oci-configuration-runtime config)) + (define home-service? + (oci-configuration-home-service? config)) + (define runtime-cli + (if home-service? + (oci-runtime-home-cli config) + (oci-runtime-system-cli config))) + (define user + (if home-service? + #f + (oci-configuration-user config))) + (define group + (if home-service? + #f + (if (eq? runtime 'podman) + #~(group:name + (getgrgid + (passwd:gid + (getpwnam #$user)))) + (oci-runtime-group config (oci-configuration-group config))))) + (define runtime-requirement + (if home-service? + '() + (oci-runtime-system-requirement runtime))) + (define runtime-environment + (if home-service? + #~() + (oci-runtime-system-environment runtime user))) + (oci-runtime-state + (runtime runtime) + (runtime-cli runtime-cli) + (user user) + (group group) + (runtime-extra-arguments + (oci-configuration-runtime-extra-arguments config)) + (runtime-environment runtime-environment) + (runtime-requirement runtime-requirement))) + +(define (oci-configuration->oci-state config) + (define runtime + (oci-configuration-runtime config)) + (define home-service? + (oci-configuration-home-service? config)) + (define networks-name + (if home-service? + (oci-networks-home-shepherd-name runtime) + (oci-networks-shepherd-name runtime))) + (define volumes-name + (if home-service? + (oci-volumes-home-shepherd-name runtime) + (oci-volumes-shepherd-name runtime))) + (define networks-requirement + (if home-service? + '() + '(networking))) + (oci-state + (containers (oci-configuration-containers config)) + (networks (oci-configuration-networks config)) + (volumes (oci-configuration-volumes config)) + (networks-name networks-name) + (volumes-name volumes-name) + (networks-requirement networks-requirement))) + +(define (oci-configuration->shepherd-services config) + (let* ((verbose? (oci-configuration-verbose? config)) + (state (oci-configuration->oci-state config)) + (runtime-state + (oci-configuration->oci-runtime-state config #:verbose? verbose?))) + (oci-state->shepherd-services state runtime-state #:verbose? verbose?))) + +(define (oci-service-subids config) + "Return a subids-extension record representing subuids and subgids required by +the rootless Podman backend." + (define (find-duplicates subids) + (let loop ((names '()) + (subids subids)) + (if (null? names) + names + (loop + (let ((name (subid-range-name (car subids)))) + (if (member name names) + (raise + (formatted-message + (G_ "Duplicated subid-range: ~a. subid-ranges names should be +unique, please remove the duplicate.") name)) + (cons name names))) + (cdr subids))))) + + (define runtime + (oci-configuration-runtime config)) + (define user + (oci-configuration-user config)) + + (define subgids (oci-configuration-subgids-range config)) + (find-duplicates subgids) + + (define subuids (oci-configuration-subuids-range config)) + (find-duplicates subgids) + + (define container-users + (filter (lambda (range) + (and (maybe-value-set? + (subid-range-name range)) + (not (string=? (subid-range-name range) user)))) + (map (lambda (container) + (subid-range + (name + (oci-container-configuration-user container)))) + (oci-configuration-containers config)))) + (define subgid-ranges + (cons + (if (maybe-value-set? subgids) + subgids + (subid-range (name user))) + container-users)) + (define subuid-ranges + (cons + (if (maybe-value-set? subuids) + subuids + (subid-range (name user))) + container-users)) + + (if (eq? 'podman runtime) + (subids-extension + (subgids + subgid-ranges) + (subuids + subuid-ranges)) + (subids-extension))) + +(define (oci-objects-merge-lst a b object get-name) + (define (contains? value lst) + (member value (map get-name lst))) + (let loop ((merged '()) + (lst (append a b))) + (if (null? lst) + merged + (loop + (let ((element (car lst))) + (when (contains? element merged) + (raise + (formatted-message + (G_ "Duplicated ~a: ~a. Names of ~a should be unique, please +remove the duplicate.") object (get-name element) object))) + (cons element merged)) + (cdr lst))))) + +(define (oci-extension-merge a b) + (oci-extension + (containers (oci-objects-merge-lst + (oci-extension-containers a) + (oci-extension-containers b) + "container" + (lambda (config) + (define maybe-name + (oci-container-configuration-provision config)) + (if (maybe-value-set? maybe-name) + maybe-name + (oci-image->container-name + (oci-container-configuration-image config)))))) + (networks (oci-objects-merge-lst + (oci-extension-networks a) + (oci-extension-networks b) + "network" + oci-network-configuration-name)) + (volumes (oci-objects-merge-lst + (oci-extension-volumes a) + (oci-extension-volumes b) + "volume" + oci-volume-configuration-name)))) + +(define (oci-service-profile runtime runtime-cli) + `(,bash-minimal + ,@(if (string? runtime-cli) + '() + (list + (cond + ((maybe-value-set? runtime-cli) + runtime-cli) + ((eq? 'podman runtime) + podman) + (else + docker-cli)))))) + +(define (oci-configuration-extend config extension) + (oci-configuration + (inherit config) + (containers + (oci-objects-merge-lst + (oci-configuration-containers config) + (oci-extension-containers extension) + "container" + (lambda (oci-config) + (define runtime + (oci-configuration-runtime config)) + (oci-container-shepherd-name runtime oci-config)))) + (networks (oci-objects-merge-lst + (oci-configuration-networks config) + (oci-extension-networks extension) + "network" + oci-network-configuration-name)) + (volumes (oci-objects-merge-lst + (oci-configuration-volumes config) + (oci-extension-volumes extension) + "volume" + oci-volume-configuration-name)))) + +(define oci-service-type + (service-type + (name 'oci) + (extensions + (list + (service-extension profile-service-type + (lambda (config) + (let ((runtime-cli + (oci-configuration-runtime-cli config)) + (runtime + (oci-configuration-runtime config))) + (oci-service-profile runtime runtime-cli)))) + (service-extension subids-service-type + oci-service-subids) + (service-extension account-service-type + oci-service-accounts) + (service-extension shepherd-root-service-type + oci-configuration->shepherd-services))) + ;; Concatenate OCI object lists. + (compose (lambda (args) + (fold oci-extension-merge + (oci-extension) + args))) + (extend oci-configuration-extend) + (default-value (oci-configuration)) + (description + "This service implements the provisioning of OCI objects such +as containers, networks and volumes."))) diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index 87faf9255b..581166cc49 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -100,7 +100,7 @@ (group cuirass-configuration-group ;string (default "cuirass")) (interval cuirass-configuration-interval ;integer (seconds) - (default 60)) + (default 300)) (ttl cuirass-configuration-ttl ;integer (default 2592000)) (build-expiry cuirass-configuration-build-expiry diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm index fef8915439..c905d35a34 100644 --- a/gnu/services/dict.scm +++ b/gnu/services/dict.scm @@ -29,7 +29,6 @@ #:use-module (gnu services shepherd) #:use-module (gnu system shadow) #:use-module ((gnu packages admin) #:select (shadow)) - #:use-module (gnu packages dico) #:use-module (gnu packages dictionaries) #:autoload (gnu build linux-container) (%namespaces) #:autoload (gnu system file-systems) (file-system-mapping) diff --git a/gnu/services/docker.scm b/gnu/services/docker.scm index 828ceea313..6abfbc49a0 100644 --- a/gnu/services/docker.scm +++ b/gnu/services/docker.scm @@ -31,7 +31,10 @@ #:use-module (gnu system shadow) #:use-module (gnu packages docker) #:use-module (gnu packages linux) ;singularity + #:use-module (guix deprecation) + #:use-module (guix diagnostics) #:use-module (guix gexp) + #:use-module (guix i18n) #:use-module (guix records) #:use-module (srfi srfi-1) #:use-module (ice-9 format) @@ -67,16 +70,18 @@ oci-container-configuration-volumes oci-container-configuration-container-user oci-container-configuration-workdir - oci-container-configuration-extra-arguments - oci-container-shepherd-service - %oci-container-accounts) + oci-container-configuration-extra-arguments) #:export (containerd-configuration containerd-service-type docker-configuration docker-service-type singularity-service-type - oci-container-service-type)) + ;; For backwards compatibility, until the + ;; oci-container-service-type is fully deprecated. + oci-container-shepherd-service + oci-container-service-type + %oci-container-accounts)) (define-maybe file-like) @@ -297,17 +302,26 @@ bundles in Docker containers.") ;;; OCI container. ;;; -(define (configs->shepherd-services configs) - (map oci-container-shepherd-service configs)) +;; For backwards compatibility, until the +;; oci-container-service-type is fully deprecated. +(define-deprecated (oci-container-shepherd-service config) + oci-service-type + ((@ (gnu services containers) oci-container-shepherd-service) + 'docker config)) +(define %oci-container-accounts + (filter user-account? (oci-service-accounts (oci-configuration)))) (define oci-container-service-type (service-type (name 'oci-container) - (extensions (list (service-extension profile-service-type - (lambda _ (list docker-cli))) - (service-extension account-service-type - (const %oci-container-accounts)) - (service-extension shepherd-root-service-type - configs->shepherd-services))) + (extensions + (list (service-extension oci-service-type + (lambda (containers) + (warning + (G_ + "'oci-container-service-type' is\ + deprecated, use 'oci-service-type' instead~%")) + (oci-extension + (containers containers)))))) (default-value '()) (extend append) (compose concatenate) diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm index 14007e740d..3f7218f421 100644 --- a/gnu/services/virtualization.scm +++ b/gnu/services/virtualization.scm @@ -61,6 +61,7 @@ #:use-module (guix packages) #:use-module (guix records) #:use-module (guix store) + #:use-module (guix ui) #:use-module (guix utils) #:autoload (guix self) (make-config.scm) #:autoload (guix platform) (platform-system) @@ -83,6 +84,7 @@ hurd-vm-configuration? hurd-vm-configuration-os hurd-vm-configuration-qemu + hurd-vm-configuration-type hurd-vm-configuration-image hurd-vm-configuration-disk-size hurd-vm-configuration-memory-size @@ -1782,6 +1784,11 @@ preventing password-based authentication as 'root'." (inherit config) (authorize-key? #f)))))))) +(define (sanitize-hurd-vm-configuration-type value) + (unless (memq value '(hurd-qcow2 hurd64-qcow2)) + (leave (G_ "hurd-vm: '~a' is not a valid type~%") value)) + value) + (define-record-type* <hurd-vm-configuration> hurd-vm-configuration make-hurd-vm-configuration hurd-vm-configuration? @@ -1789,6 +1796,9 @@ preventing password-based authentication as 'root'." (default %hurd-vm-operating-system)) (qemu hurd-vm-configuration-qemu ;file-like (default qemu-minimal)) + (type hurd-vm-configuration-type ;symbol + (default 'hurd-qcow2) + (sanitize sanitize-hurd-vm-configuration-type)) (image hurd-vm-configuration-image ;<image> (thunked) (default (hurd-vm-disk-image this-record))) @@ -1825,7 +1835,8 @@ is added to the OS specified in CONFIG." (let* ((os (transform (hurd-vm-configuration-os config))) (disk-size (hurd-vm-configuration-disk-size config)) - (type (lookup-image-type-by-name 'hurd-qcow2)) + (type (lookup-image-type-by-name + (hurd-vm-configuration-type config))) (os->image (image-type-constructor type))) (image (inherit (os->image os)) (size disk-size)))) diff --git a/gnu/system/images/hurd.scm b/gnu/system/images/hurd.scm index 67815aeb9b..0aba57d2f3 100644 --- a/gnu/system/images/hurd.scm +++ b/gnu/system/images/hurd.scm @@ -40,7 +40,7 @@ hurd64-barebones-os hurd64-disk-image - hurd6-image-type + hurd64-image-type hurd64-qcow2-image-type hurd64-barebones-disk-image hurd64-barebones-qcow2-image)) diff --git a/gnu/tests/containers.scm b/gnu/tests/containers.scm index 618da2a92c..1a442cddc6 100644 --- a/gnu/tests/containers.scm +++ b/gnu/tests/containers.scm @@ -27,6 +27,9 @@ #:use-module (gnu services) #:use-module (gnu services containers) #:use-module (gnu services desktop) + #:use-module ((gnu services docker) + #:select (containerd-service-type + docker-service-type)) #:use-module (gnu services dbus) #:use-module (gnu services networking) #:use-module (gnu system) @@ -39,7 +42,9 @@ #:use-module (guix profiles) #:use-module ((guix scripts pack) #:prefix pack:) #:use-module (guix store) - #:export (%test-rootless-podman)) + #:export (%test-rootless-podman + %test-oci-service-rootless-podman + %test-oci-service-docker)) (define %rootless-podman-os @@ -133,7 +138,7 @@ (status (close-pipe port))) output))) (let* ((bash - ,(string-append #$bash "/bin/bash")) + (string-append #$bash "/bin/bash")) (response1 (slurp bash "-c" (string-append "ls -la /sys/fs/cgroup | " @@ -345,3 +350,555 @@ standard output device and then enters a new line.") (name "rootless-podman") (description "Test rootless Podman service.") (value (build-tarball&run-rootless-podman-test)))) + + +(define %oci-network + (oci-network-configuration (name "my-network"))) + +(define %oci-volume + (oci-volume-configuration (name "my-volume"))) + +(define %oci-wait-for-file + #~(define (wait-for-file file) + ;; Wait until FILE shows up. + (let loop ((i 6)) + (cond ((file-exists? file) + #t) + ((zero? i) + (error "file didn't show up" file)) + (else + (pk 'wait-for-file file) + (sleep 1) + (loop (- i 1))))))) + +(define %oci-read-lines + #~(define (read-lines file-or-port) + (define (loop-lines port) + (let loop ((lines '())) + (match (read-line port) + ((? eof-object?) + (reverse lines)) + (line + (loop (cons line lines)))))) + + (if (port? file-or-port) + (loop-lines file-or-port) + (call-with-input-file file-or-port + loop-lines)))) + +(define %oci-slurp + #~(define slurp + (lambda args + (let* ((port + (apply open-pipe* OPEN_READ + (list "sh" "-l" "-c" + (string-join args " ")))) + (output (read-lines port)) + (status (close-pipe port))) + output)))) + +(define (%oci-rootless-podman-run commands) + #~((use-modules (srfi srfi-1) + (ice-9 format) + (ice-9 popen) + (ice-9 match) + (ice-9 rdelim) + (gnu build oci-containers)) + + #$%oci-wait-for-file + #$%oci-read-lines + #$%oci-slurp + + (define responses + (map + (lambda (index) + (format #f "/tmp/response_~a" index)) + (iota (length '#$commands)))) + + (match (primitive-fork) + (0 + (begin + (setgid (passwd:gid (getpwnam "oci-container"))) + (setuid (passwd:uid (getpw "oci-container"))) + + (let* ((outputs + (list #$@commands)) + (outputs-responses + (zip outputs responses))) + (for-each + (match-lambda + ((output response) + (call-with-output-file response + (lambda (port) + (display (string-join output "\n") port))))) + outputs-responses)))) + (pid + (cdr (waitpid pid)))) + + (for-each wait-for-file responses) + (map + (lambda (response) + (sort (slurp "cat" response) string<=?)) + responses))) + +(define %oci-rootless-podman-os + (simple-operating-system + (service dhcpcd-service-type) + (service dbus-root-service-type) + (service polkit-service-type) + (service elogind-service-type) + (service iptables-service-type) + (service rootless-podman-service-type) + (extra-special-file "/shared.txt" + (plain-file "shared.txt" "hello")) + (service oci-service-type + (oci-configuration + (runtime 'podman) + (verbose? #t))) + (simple-service 'oci-provisioning + oci-service-type + (oci-extension + (networks + (list %oci-network)) + (volumes + (list %oci-volume)) + (containers + (list + (oci-container-configuration + (provision "first") + (image + (oci-image + (repository "guile") + (value + (specifications->manifest '("guile"))) + (pack-options + '(#:symlinks (("/bin" -> "bin")))))) + (entrypoint "/bin/guile") + (network "my-network") + (command + '("-c" "(use-modules (web server)) +(define (handler request request-body) + (values '((content-type . (text/plain))) \"out of office\")) +(run-server handler 'http `(#:addr ,(inet-pton AF_INET \"0.0.0.0\")))")) + (host-environment + '(("VARIABLE" . "value"))) + (volumes + '(("my-volume" . "/my-volume"))) + (extra-arguments + '("--env" "VARIABLE"))) + (oci-container-configuration + (provision "second") + (image + (oci-image + (repository "guile") + (value + (specifications->manifest '("guile"))) + (pack-options + '(#:symlinks (("/bin" -> "bin")))))) + (entrypoint "/bin/guile") + (network "my-network") + (command + '("-c" "(let l ((c 300)) +(display c) +(newline) +(sleep 1) +(when (positive? c) + (l (- c 1))))")) + (volumes + '(("my-volume" . "/my-volume") + ("/shared.txt" . "/shared.txt:ro")))))))))) + +(define (run-rootless-podman-oci-service-test) + (define os + (marionette-operating-system + (operating-system-with-gc-roots + %oci-rootless-podman-os + (list)) + #:imported-modules '((gnu build oci-containers) + (gnu build dbus-service) + (gnu services herd) + (guix combinators)))) + + (define vm + (virtual-machine + (operating-system os) + (volatile? #f) + (memory-size 1024) + (disk-image-size (* 5000 (expt 2 20))) + (port-forwardings '()))) + + (define test + (with-imported-modules '((gnu build oci-containers) + (gnu build dbus-service) + (gnu build marionette)) + #~(begin + (use-modules (srfi srfi-1) (srfi srfi-11) (srfi srfi-64) + (gnu build dbus-service) + (gnu build marionette)) + + (define marionette + ;; Relax timeout to accommodate older systems and + ;; allow for pulling the image. + (make-marionette (list #$vm) #:timeout 60)) + + (test-runner-current (system-test-runner #$output)) + (test-begin "rootless-podman-oci-service") + + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (wait-for-service 'user-processes)) + marionette) + + (test-assert "podman-volumes running" + (begin + (define (run-test) + (first + (marionette-eval + `(begin + #$@(%oci-rootless-podman-run + #~((oci-object-service-available? + "/run/current-system/profile/bin/podman" + "volume" + '("my-volume") + #:verbose? #t)))) + marionette))) + ;; Allow services to come up on slower machines. + (with-retries 80 1 (equal? '("my-volume") (run-test))))) + + (test-assert "podman-networks running" + (begin + (define (run-test) + (first + (marionette-eval + `(begin + #$@(%oci-rootless-podman-run + #~((oci-object-service-available? + "/run/current-system/profile/bin/podman" + "network" + '("my-network") + #:verbose? #t)))) + marionette))) + ;; Allow services to come up on slower machines. + (with-retries 80 1 (equal? '("my-network" "podman") (run-test))))) + + (test-assert "image loaded" + (begin + (define (run-test) + (first + (marionette-eval + `(begin + #$@(%oci-rootless-podman-run + #~((oci-object-service-available? + "/run/current-system/profile/bin/podman" + "image" + '("localhost/guile:latest") + #:format-string "{{.Repository}}:{{.Tag}}" + #:verbose? #t)))) + marionette))) + ;; Allow services to come up on slower machines. + (with-retries 80 1 + (equal? + '("localhost/guile:latest") + (run-test))))) + + (test-assert "passing host environment variables" + (begin + (define (run-test) + (first + (marionette-eval + `(begin + #$@(%oci-rootless-podman-run + #~((slurp + "/run/current-system/profile/bin/podman" + "exec" "first" + "/bin/guile" "-c" + "'(display (getenv \"VARIABLE\"))'")))) + marionette))) + ;; Allow services to come up on slower machines. + (with-retries 80 1 (equal? '("value") (run-test))))) + + (test-equal "mounting host files" + '("hello") + (first + (marionette-eval + `(begin + #$@(%oci-rootless-podman-run + #~((slurp + "/run/current-system/profile/bin/podman" + "exec" "second" + "/bin/guile" "-c" "'(begin +(use-modules (ice-9 popen) (ice-9 rdelim)) +(display (call-with-input-file \"/shared.txt\" read-line)))'")))) + marionette))) + + (test-equal "read and write to provisioned volumes" + '("world") + (second + (marionette-eval + `(begin + #$@(%oci-rootless-podman-run + #~((slurp + "/run/current-system/profile/bin/podman" + "exec" "first" + "/bin/guile" "-c" "'(begin +(use-modules (ice-9 popen) (ice-9 rdelim)) +(call-with-output-file \"/my-volume/out.txt\" + (lambda (p) (display \"world\" p))))'") + (slurp + "/run/current-system/profile/bin/podman" + "exec" "second" + "/bin/guile" "-c" "'(begin +(use-modules (ice-9 popen) (ice-9 rdelim)) +(display + (call-with-input-file \"/my-volume/out.txt\" read-line)))'")))) + marionette))) + + (test-equal + "can read and write to ports over provisioned network" + '("out of office") + (first + (marionette-eval + `(begin + #$@(%oci-rootless-podman-run + #~((slurp + "/run/current-system/profile/bin/podman" + "exec" "second" + "/bin/guile" "-c" "'(begin +(use-modules (web client)) +(define-values (response out) (http-get \"http://first:8080\")) +(display out))'")))) + marionette))) + + (test-end)))) + + (gexp->derivation "rootless-podman-oci-service-test" test)) + +(define %test-oci-service-rootless-podman + (system-test + (name "oci-service-rootless-podman") + (description "Test Rootless-Podman backed OCI provisioning service.") + (value (run-rootless-podman-oci-service-test)))) + +(define (%oci-docker-run commands) + #~((use-modules (srfi srfi-1) + (ice-9 format) + (ice-9 popen) + (ice-9 match) + (ice-9 rdelim) + (gnu build oci-containers)) + + #$%oci-read-lines + #$%oci-slurp + + (let ((outputs (list #$@commands))) + (map + (lambda (output) + (sort output string<=?)) + outputs)))) + +(define %oci-docker-os + (simple-operating-system + (service dhcpcd-service-type) + (service dbus-root-service-type) + (service polkit-service-type) + (service elogind-service-type) + (service containerd-service-type) + (service docker-service-type) + (extra-special-file "/shared.txt" + (plain-file "shared.txt" "hello")) + (service oci-service-type + (oci-configuration + (verbose? #t))) + (simple-service 'oci-provisioning + oci-service-type + (oci-extension + (networks + (list %oci-network)) + (volumes + (list %oci-volume)) + (containers + (list + (oci-container-configuration + (provision "first") + (image + (oci-image + (repository "guile") + (value + (specifications->manifest '("guile"))) + (pack-options + '(#:symlinks (("/bin" -> "bin")))))) + (entrypoint "/bin/guile") + (network "my-network") + (command + '("-c" "(use-modules (web server)) +(define (handler request request-body) + (values '((content-type . (text/plain))) \"out of office\")) +(run-server handler 'http `(#:addr ,(inet-pton AF_INET \"0.0.0.0\")))")) + (host-environment + '(("VARIABLE" . "value"))) + (volumes + '(("my-volume" . "/my-volume"))) + (extra-arguments + '("--env" "VARIABLE"))) + (oci-container-configuration + (provision "second") + (image + (oci-image + (repository "guile") + (value + (specifications->manifest '("guile"))) + (pack-options + '(#:symlinks (("/bin" -> "bin")))))) + (entrypoint "/bin/guile") + (network "my-network") + (command + '("-c" "(let l ((c 300)) +(display c) +(newline) +(sleep 1) +(when (positive? c) + (l (- c 1))))")) + (volumes + '(("my-volume" . "/my-volume") + ("/shared.txt" . "/shared.txt:ro")))))))))) + +(define (run-docker-oci-service-test) + (define os + (marionette-operating-system + (operating-system-with-gc-roots + %oci-docker-os + (list)) + #:imported-modules '((gnu build oci-containers) + (gnu build dbus-service) + (gnu services herd) + (guix combinators)))) + + (define vm + (virtual-machine + (operating-system os) + (volatile? #f) + (memory-size 1024) + (disk-image-size (* 5000 (expt 2 20))) + (port-forwardings '()))) + + (define test + (with-imported-modules '((gnu build oci-containers) + (gnu build dbus-service) + (gnu build marionette)) + #~(begin + (use-modules (srfi srfi-1) (srfi srfi-11) (srfi srfi-64) + (gnu build dbus-service) + (gnu build marionette)) + + (define marionette + ;; Relax timeout to accommodate older systems and + ;; allow for pulling the image. + (make-marionette (list #$vm) #:timeout 60)) + + (test-runner-current (system-test-runner #$output)) + (test-begin "docker-oci-service") + + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (wait-for-service 'dockerd)) + marionette) + + (test-assert "docker-volumes running" + (begin + (define (run-test) + (first + (marionette-eval + `(begin + #$@(%oci-docker-run + #~((oci-object-service-available? + "/run/current-system/profile/bin/docker" + "volume" + '("my-volume") + #:verbose? #t)))) + marionette))) + ;; Allow services to come up on slower machines. + (with-retries 80 1 (equal? '("my-volume") (run-test))))) + + (test-assert "docker-networks running" + (begin + (define (run-test) + (first + (marionette-eval + `(begin + #$@(%oci-docker-run + #~((oci-object-service-available? + "/run/current-system/profile/bin/docker" + "network" + '("my-network") + #:verbose? #t)))) + marionette))) + ;; Allow services to come up on slower machines. + (with-retries 80 1 (equal? + '("my-network" "none") + (run-test))))) + + (test-assert "passing host environment variables" + (begin + (define (run-test) + (first + (marionette-eval + `(begin + #$@(%oci-docker-run + #~((slurp + "/run/current-system/profile/bin/docker" + "exec" "first" + "/bin/guile" "-c" + "'(display (getenv \"VARIABLE\"))'")))) + marionette))) + ;; Allow services to come up on slower machines. + (with-retries 80 1 (equal? '("value") (run-test))))) + + (test-equal "read and write to provisioned volumes" + '("world") + (second + (marionette-eval + `(begin + #$@(%oci-docker-run + #~((slurp + "/run/current-system/profile/bin/docker" + "exec" "first" + "/bin/guile" "-c" "'(begin +(use-modules (ice-9 popen) (ice-9 rdelim)) +(call-with-output-file \"/my-volume/out.txt\" + (lambda (p) (display \"world\" p))))'") + (slurp + "/run/current-system/profile/bin/docker" + "exec" "second" + "/bin/guile" "-c" "'(begin +(use-modules (ice-9 popen) (ice-9 rdelim)) +(display + (call-with-input-file \"/my-volume/out.txt\" read-line)))'")))) + marionette))) + + (test-equal + "can read and write to ports over provisioned network" + '("out of office") + (first + (marionette-eval + `(begin + #$@(%oci-docker-run + #~((slurp + "/run/current-system/profile/bin/docker" + "exec" "second" + "/bin/guile" "-c" "'(begin (use-modules (web client)) + (define-values (response out) + (http-get \"http://first:8080\")) + (display out))'")))) + marionette))) + + (test-end)))) + + (gexp->derivation "docker-oci-service-test" test)) + +(define %test-oci-service-docker + (system-test + (name "oci-service-docker") + (description "Test Docker backed OCI provisioning service.") + (value (run-docker-oci-service-test)))) diff --git a/gnu/tests/docker.scm b/gnu/tests/docker.scm index 8952daab2f..9fee3905f0 100644 --- a/gnu/tests/docker.scm +++ b/gnu/tests/docker.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2024 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2024, 2025 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -414,71 +414,54 @@ docker-image} inside Docker.") (test-runner-current (system-test-runner #$output)) (test-begin "oci-container") - (test-assert "containerd service running" - (marionette-eval - '(begin - (use-modules (gnu services herd)) - (match (start-service 'containerd) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) pid))))) - marionette)) - - (test-assert "containerd PID file present" - (wait-for-file "/run/containerd/containerd.pid" marionette)) - - (test-assert "dockerd running" - (marionette-eval - '(begin - (use-modules (gnu services herd)) - (match (start-service 'dockerd) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) pid))))) - marionette)) - - (sleep 10) ; let service start + (wait-for-file "/run/containerd/containerd.pid" marionette) (test-assert "docker-guile running" (marionette-eval '(begin (use-modules (gnu services herd)) - (match (start-service 'docker-guile) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) pid))))) + (wait-for-service 'docker-guile #:timeout 120) + #t) marionette)) - (test-equal "passing host environment variables and volumes" - '("value" "hello") - (marionette-eval - `(begin - (use-modules (ice-9 popen) - (ice-9 rdelim)) + (test-assert "passing host environment variables and volumes" + (begin + (define (run-test) + (marionette-eval + `(begin + (use-modules (ice-9 popen) + (ice-9 rdelim)) - (define slurp - (lambda args - (let* ((port (apply open-pipe* OPEN_READ args)) - (output (let ((line (read-line port))) - (if (eof-object? line) - "" - line))) - (status (close-pipe port))) - output))) - (let* ((response1 (slurp - ,(string-append #$docker-cli "/bin/docker") - "exec" "docker-guile" - "/bin/guile" "-c" "(display (getenv \"VARIABLE\"))")) - (response2 (slurp - ,(string-append #$docker-cli "/bin/docker") - "exec" "docker-guile" - "/bin/guile" "-c" "(begin (use-modules (ice-9 popen) (ice-9 rdelim)) + (define slurp + (lambda args + (let* ((port (apply open-pipe* OPEN_READ args)) + (output (let ((line (read-line port))) + (if (eof-object? line) + "" + line))) + (status (close-pipe port))) + output))) + (let* ((response1 (slurp + ,(string-append #$docker-cli "/bin/docker") + "exec" "docker-guile" + "/bin/guile" "-c" "(display (getenv \"VARIABLE\"))")) + (response2 (slurp + ,(string-append #$docker-cli "/bin/docker") + "exec" "docker-guile" + "/bin/guile" "-c" "(begin (use-modules (ice-9 popen) (ice-9 rdelim)) (display (call-with-input-file \"/shared.txt\" read-line)))"))) - (list response1 response2))) - marionette)) + (list response1 response2))) + marionette)) + ;; Allow services to come up on slower machines + (let loop ((attempts 0)) + (if (= attempts 60) + (error "Service didn't come up after more than 60 seconds") + (if (equal? '("value" "hello") + (run-test)) + #t + (begin + (sleep 1) + (loop (+ 1 attempts)))))))) (test-end)))) diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm index c55a944845..a882d70e14 100644 --- a/gnu/tests/virtualization.scm +++ b/gnu/tests/virtualization.scm @@ -27,6 +27,7 @@ #:use-module (gnu system) #:use-module (gnu system accounts) #:use-module (gnu system file-systems) + #:use-module (gnu system hurd) #:use-module (gnu system image) #:use-module (gnu system images hurd) #:use-module ((gnu system shadow) #:select (%base-user-accounts)) @@ -45,6 +46,7 @@ #:export (%test-libvirt %test-qemu-guest-agent %test-childhurd + %test-childhurd64 %test-build-vm)) @@ -277,6 +279,22 @@ (password "")) ;empty password %base-user-accounts)))))))) +(define %childhurd64-os + (simple-operating-system + (service dhcpcd-service-type) + (service hurd-vm-service-type + (hurd-vm-configuration + (type 'hurd64-qcow2) + (os (operating-system + (inherit %hurd-vm-operating-system) + (kernel %hurd64-default-operating-system-kernel) + (kernel-arguments '("noide")) ;use rumpdisk + (users (cons (user-account + (name "test") + (group "users") + (password "")) ;empty password + %base-user-accounts)))))))) + (define* (run-command-over-ssh command #:key (port 10022) (user "test")) "Return a program that runs COMMAND over SSH and prints the result on standard @@ -307,7 +325,7 @@ output." (program-file "run-command-over-ssh" run)) -(define (run-childhurd-test) +(define (run-childhurd-test childhurd-os) (define (import-module? module) ;; This module is optional and depends on Guile-Gcrypt, do skip it. (and (guix-module-name? module) @@ -315,7 +333,7 @@ output." (define os (marionette-operating-system - %childhurd-os + childhurd-os #:imported-modules (source-module-closure '((gnu services herd) (guix combinators) @@ -454,7 +472,15 @@ output." (description "Connect to the GNU/Hurd virtual machine service, aka. a childhurd, making sure that the childhurd boots and runs its SSH server.") - (value (run-childhurd-test)))) + (value (run-childhurd-test %childhurd-os)))) + +(define %test-childhurd64 + (system-test + (name "childhurd64") + (description + "Connect to the 64-bit GNU/Hurd virtual machine service, aka. a childhurd, + making sure that the childhurd boots and runs its SSH server.") + (value (run-childhurd-test %childhurd64-os)))) ;;; diff --git a/guix/build/download.scm b/guix/build/download.scm index de8922f6e2..509dcc08c7 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -783,7 +783,8 @@ otherwise simply ignore them." (filter-map (match-lambda ((hash-algo . hash) (let ((file (strip-store-file-name file))) - (string->uri (make-url file hash-algo hash))))) + (and=> (make-url file hash-algo hash) + string->uri)))) hashes)) content-addressed-mirrors)) diff --git a/guix/cve.scm b/guix/cve.scm index 6a6d8406bf..8dc293e85d 100644 --- a/guix/cve.scm +++ b/guix/cve.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015-2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,17 +37,11 @@ #:export (json->cve-items cve-item? - cve-item-cve + cve-item-id cve-item-configurations cve-item-published-date cve-item-last-modified-date - cve? - cve-id - cve-data-type - cve-data-format - cve-references - cve-reference? cve-reference-url cve-reference-tags @@ -68,28 +63,17 @@ ;;; Code: (define (string->date* str) - (string->date str "~Y-~m-~dT~H:~M~z")) + (string->date str "~Y-~m-~dT~H:~M:~S")) (define-json-mapping <cve-item> cve-item cve-item? json->cve-item - (cve cve-item-cve "cve" json->cve) ;<cve> - (configurations cve-item-configurations ;list of sexps + (id cve-item-id "id") ;string + (configurations cve-item-configurations ;list of sexps "configurations" configuration-data->cve-configurations) (published-date cve-item-published-date - "publishedDate" string->date*) + "published" string->date*) (last-modified-date cve-item-last-modified-date - "lastModifiedDate" string->date*)) - -(define-json-mapping <cve> cve cve? - json->cve - (id cve-id "CVE_data_meta" ;string - (cut assoc-ref <> "ID")) - (data-type cve-data-type ;'CVE - "data_type" string->symbol) - (data-format cve-data-format ;'MITRE - "data_format" string->symbol) - (references cve-references ;list of <cve-reference> - "references" reference-data->cve-references)) + "lastModified" string->date*)) (define-json-mapping <cve-reference> cve-reference cve-reference? json->cve-reference @@ -97,12 +81,6 @@ (tags cve-reference-tags ;list of strings "tags" vector->list)) -(define (reference-data->cve-references alist) - (map json->cve-reference - ;; Normally "reference_data" is always present but rejected CVEs such - ;; as CVE-2020-10020 can lack it. - (vector->list (or (assoc-ref alist "reference_data") '#())))) - (define %cpe-package-rx ;; For applications: "cpe:2.3:a:VENDOR:PACKAGE:VERSION", or sometimes ;; "cpe:2.3:a:VENDOR:PACKAGE:VERSION:PATCH-LEVEL". @@ -132,15 +110,15 @@ Return three #f values if CPE does not look like an application CPE string." (values #f #f #f)))) (define (cpe-match->cve-configuration alist) - "Convert ALIST, a \"cpe_match\" alist, into an sexp representing the package + "Convert ALIST, a \"cpeMatch\" alist, into an sexp representing the package and versions matched. Return #f if ALIST doesn't correspond to an application package." - (let ((cpe (assoc-ref alist "cpe23Uri")) + (let ((cpe (assoc-ref alist "criteria")) (starti (assoc-ref alist "versionStartIncluding")) (starte (assoc-ref alist "versionStartExcluding")) (endi (assoc-ref alist "versionEndIncluding")) (ende (assoc-ref alist "versionEndExcluding"))) - ;; Normally "cpe23Uri" is here in each "cpe_match" item, but CVE-2020-0534 + ;; Normally "criteria" is here in each "cpeMatch" item, but CVE-2020-0534 ;; has a configuration that lacks it. (and cpe (let ((vendor package version (cpe->package-identifier cpe))) @@ -156,7 +134,7 @@ package." (ende `(< ,ende)) (else version)))))))) -(define (configuration-data->cve-configurations alist) +(define (configuration-data->cve-configurations vector) "Given ALIST, a JSON dictionary for the baroque \"configurations\" element found in CVEs, return an sexp such as (\"binutils\" (< \"2.31\")) that represents matching configurations." @@ -165,10 +143,13 @@ element found in CVEs, return an sexp such as (\"binutils\" (< ("OR" 'or) ("AND" 'and))) + (define (maybe-vector->alist vector) + (vector->list (or (and (unspecified? vector) #()) vector #()))) + (define (node->configuration node) (let ((operator (string->operator (assoc-ref node "operator")))) (cond - ((assoc-ref node "cpe_match") + ((assoc-ref node "cpeMatch") => (lambda (matches) (let ((matches (vector->list matches))) @@ -187,28 +168,31 @@ element found in CVEs, return an sexp such as (\"binutils\" (< (else #f)))) - (let ((nodes (vector->list (assoc-ref alist "nodes")))) + (let* ((alist (maybe-vector->alist vector)) + (nodes (if (null? alist) + '() + (maybe-vector->alist (assoc-ref (car alist) "nodes"))))) (filter-map node->configuration nodes))) (define (json->cve-items json) "Parse JSON, an input port or a string, and return a list of <cve-item> records." - (let* ((alist (json->scm json)) - (type (assoc-ref alist "CVE_data_type")) - (format (assoc-ref alist "CVE_data_format")) - (version (assoc-ref alist "CVE_data_version"))) - (unless (equal? type "CVE") - (raise (condition (&message - (message "invalid CVE feed"))))) - (unless (equal? format "MITRE") - (raise (formatted-message (G_ "unsupported CVE format: '~a'") - format))) - (unless (equal? version "4.0") - (raise (formatted-message (G_ "unsupported CVE data version: '~a'") - version))) + (let ((alist (json->scm json))) + (match (assoc-ref alist "format") + ("NVD_CVE" + #t) + (format + (raise (formatted-message (G_ "unsupported CVE format: '~a'") + format)))) + (match (assoc-ref alist "version") + ("2.0" + #t) + (version + (raise (formatted-message (G_ "unsupported CVE data version: '~a'") + version)))) - (map json->cve-item - (vector->list (assoc-ref alist "CVE_Items"))))) + (map (compose json->cve-item (cut assoc-ref <> "cve")) + (vector->list (assoc-ref alist "vulnerabilities"))))) (define (version-matches? version sexp) "Return true if VERSION, a string, matches SEXP." @@ -269,7 +253,7 @@ HIDDEN-VENDORS." (define (yearly-feed-uri year) "Return the URI for the CVE feed for YEAR." (string->uri - (string-append "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-" + (string-append "https://nvd.nist.gov/feeds/json/cve/2.0/nvdcve-2.0-" (number->string year) ".json.gz"))) (define %current-year-ttl @@ -352,14 +336,13 @@ matching versions." "Return a <vulnerability> corresponding to ITEM, a <cve-item> record; return #f if ITEM does not list any configuration or if it does not list any \"a\" (application) configuration." - (let ((id (cve-id (cve-item-cve item)))) - (match (cve-item-configurations item) - (() ;no configurations - #f) - ((configs ...) - (vulnerability id - (merge-package-lists - (map cve-configuration->package-list configs))))))) + (match (cve-item-configurations item) + (() ;no configurations + #f) + ((configs ...) + (vulnerability (cve-item-id item) + (merge-package-lists + (map cve-configuration->package-list configs)))))) (define (json->vulnerabilities json) "Parse JSON, an input port or a string, and return the list of diff --git a/guix/hg-download.scm b/guix/hg-download.scm index df48ed6eb7..bb02cd1816 100644 --- a/guix/hg-download.scm +++ b/guix/hg-download.scm @@ -57,7 +57,7 @@ (define (hg-package) "Return the default Mercurial package." (let ((distro (resolve-interface '(gnu packages version-control)))) - (module-ref distro 'mercurial))) + (module-ref distro 'mercurial/pinned))) (define (hg-fetch-builder hg hash-algo) (define inputs diff --git a/guix/scripts/perform-download.scm b/guix/scripts/perform-download.scm index 5079d0ea71..f74aa83f0d 100644 --- a/guix/scripts/perform-download.scm +++ b/guix/scripts/perform-download.scm @@ -21,11 +21,16 @@ #:use-module (guix scripts) #:use-module (guix derivations) #:use-module ((guix store) #:select (derivation-path? store-path?)) + #:use-module ((guix build utils) #:select (store-file-name? + strip-store-file-name)) #:autoload (guix build download) (%download-methods url-fetch) #:autoload (guix build git) (git-fetch-with-fallback) #:autoload (guix config) (%git) #:use-module (ice-9 match) - #:export (guix-perform-download)) + #:use-module (ice-9 sandbox) + #:export (guix-perform-download + ;; exported so that eval-in-sandbox can find this + syntax-noop)) ;; This program is a helper for the daemon's 'download' built-in builder. @@ -38,11 +43,68 @@ ((_ drv () body ...) (begin body ...)))) -(define %user-module - ;; Module in which content-address mirror procedures are evaluated. - (let ((module (make-fresh-user-module))) - (module-use! module (resolve-interface '(guix base32))) - module)) +(define-syntax-rule (syntax-noop ...) #t) + +;; Bindings to be made available in the sandbox in which mirror procedures are +;; evaluated. We opt for a somewhat conservative selection. +(define %safe-bindings + `( ;; Historically used, must be available for backwards compatibility + ((guile) + lambda begin define string-append symbol->string list quote + (noop . module-autoload!) + (noop . current-module)) + ((guix base16) bytevector->base16-string base16-string->bytevector) + ((guix base32) + bytevector->base32-string bytevector->nix-base32-string + base32-string->bytevector nix-base32-string->bytevector) + ((guix scripts perform-download) + (syntax-noop . use-modules)) + ;; Potentially useful for custom content-addressed-mirrors and future + ;; changes + ((guile) symbol?) + ((rnrs bytevectors) + bytevector? bytevector=? bytevector-length bytevector-u8-ref + bytevector->u8-list u8-list->bytevector utf8->string) + ,@core-bindings + ,@string-bindings + ,@list-bindings + ,@pair-bindings + ,@alist-bindings + ,@iteration-bindings + ,@number-bindings + ,@predicate-bindings)) + +(define %sandbox-module + (make-sandbox-module %safe-bindings)) + +(define* (read/safe #:optional (port (current-input-port))) + (with-fluids ((read-eval? #f)) + (parameterize ((read-hash-procedures '())) + (read port)))) + +(define (eval-content-addressed-mirrors content-addressed-mirrors file algo hash) + "Evaluate the expression CONTENT-ADDRESSED-MIRRORS in a sandbox, and produce +a list of wrapper procedures for safely calling the list of procedures that +CONTENT-ADDRESSED-MIRRORS evaluates to." + (map const + (eval-in-sandbox `(map (lambda (proc) + (proc ,file ',algo ,hash)) + (let () + ,content-addressed-mirrors)) + #:bindings %safe-bindings + #:module %sandbox-module))) + +(define (assert-store-file file) + "Canonicalize FILE and exit if the result is not in the store. Return the +result of canonicalization." + (let ((canon (canonicalize-path file))) + (unless (store-file-name? canon) + (leave (G_ "~S is not in the store~%") canon)) + canon)) + +(define (call-with-input-file/no-symlinks file proc) + (call-with-port (open file (logior O_NOFOLLOW O_RDONLY)) + proc)) (define* (perform-download drv output #:key print-build-trace?) @@ -60,7 +122,13 @@ Note: OUTPUT may differ from the 'out' value of DRV, notably for 'bmCheck' or (unless url (leave (G_ "~a: missing URL~%") (derivation-file-name drv))) - (let* ((url (call-with-input-string url read)) + (let* ((mirrors + (and=> mirrors assert-store-file)) + (content-addressed-mirrors + (and=> content-addressed-mirrors assert-store-file)) + (disarchive-mirrors + (and=> disarchive-mirrors assert-store-file)) + (url (call-with-input-string url read/safe)) (drv-output (assoc-ref (derivation-outputs drv) "out")) (algo (derivation-output-hash-algo drv-output)) (hash (derivation-output-hash drv-output))) @@ -68,21 +136,30 @@ Note: OUTPUT may differ from the 'out' value of DRV, notably for 'bmCheck' or (when (parameterize ((%download-methods (and download-methods (call-with-input-string download-methods - read)))) + read/safe)))) (url-fetch url output #:print-build-trace? print-build-trace? #:mirrors (if mirrors - (call-with-input-file mirrors read) + (call-with-input-file/no-symlinks + mirrors + read/safe) '()) #:content-addressed-mirrors (if content-addressed-mirrors - (call-with-input-file content-addressed-mirrors + (call-with-input-file/no-symlinks + content-addressed-mirrors (lambda (port) - (eval (read port) %user-module))) + (eval-content-addressed-mirrors + (read/safe port) + (strip-store-file-name output) + algo + hash))) '()) #:disarchive-mirrors (if disarchive-mirrors - (call-with-input-file disarchive-mirrors read) + (call-with-input-file/no-symlinks + disarchive-mirrors + read/safe) '()) #:hashes `((,algo . ,hash)) @@ -108,9 +185,9 @@ Note: OUTPUT may differ from the 'out' value of DRV, notably for 'bmCheck' or (unless commit (leave (G_ "~a: missing Git commit~%") (derivation-file-name drv))) - (let* ((url (call-with-input-string url read)) + (let* ((url (call-with-input-string url read/safe)) (recursive? (and recursive? - (call-with-input-string recursive? read))) + (call-with-input-string recursive? read/safe))) (drv-output (assoc-ref (derivation-outputs drv) "out")) (algo (derivation-output-hash-algo drv-output)) (hash (derivation-output-hash drv-output))) @@ -123,7 +200,7 @@ Note: OUTPUT may differ from the 'out' value of DRV, notably for 'bmCheck' or (parameterize ((%download-methods (and download-methods (call-with-input-string download-methods - read)))) + read/safe)))) ;; Note: When doing a '--check' build, DRV-OUTPUT and OUTPUT are ;; different, hence the #:item argument below. (git-fetch-with-fallback url commit output @@ -153,9 +230,14 @@ Note: OUTPUT may differ from the 'out' value of DRV, notably for 'bmCheck' or (#f #f) (str (string-contains str "print-extended-build-trace=1")))) + ;; We read untrusted input, best to be sure this is #f! + (fluid-set! read-eval? #f) + ;; ... and out of an abundance of caution, remove the ability to use '#.' + ;; constructs entirely + (read-hash-procedures '()) + ;; This program must be invoked by guix-daemon under an unprivileged UID to - ;; prevent things downloading from 'file:///etc/shadow' or arbitrary code - ;; execution via the content-addressed mirror procedures. (That means we + ;; prevent things downloading from 'file:///etc/shadow'. (That means we ;; exclude users who did not pass '--build-users-group'.) (with-error-handling (match args diff --git a/guix/svn-download.scm b/guix/svn-download.scm index b20cdc79d1..a662bad099 100644 --- a/guix/svn-download.scm +++ b/guix/svn-download.scm @@ -72,7 +72,7 @@ (define (subversion-package) "Return the default Subversion package." (let ((distro (resolve-interface '(gnu packages version-control)))) - (module-ref distro 'subversion))) + (module-ref distro 'subversion/pinned))) (define (svn-fetch-builder svn hash-algo) (define guile-json diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in index bb92184d32..12bda0342b 100644 --- a/po/packages/POTFILES.in +++ b/po/packages/POTFILES.in @@ -19,7 +19,6 @@ gnu/packages/antivirus.scm gnu/packages/apl.scm gnu/packages/apparmor.scm gnu/packages/appimage.scm -gnu/packages/apple.scm gnu/packages/apr.scm gnu/packages/arcan.scm gnu/packages/aspell.scm @@ -110,12 +109,10 @@ gnu/packages/decker.scm gnu/packages/dejagnu.scm gnu/packages/dezyne.scm gnu/packages/dhall.scm -gnu/packages/dico.scm gnu/packages/dictd.scm gnu/packages/dictionaries.scm gnu/packages/diffoscope.scm gnu/packages/digest.scm -gnu/packages/direct-connect.scm gnu/packages/disk.scm gnu/packages/display-managers.scm gnu/packages/distributed.scm @@ -299,7 +296,6 @@ gnu/packages/patchutils.scm gnu/packages/patool.scm gnu/packages/pdf.scm gnu/packages/pem.scm -gnu/packages/pep.scm gnu/packages/perl-check.scm gnu/packages/perl-maths.scm gnu/packages/perl-web.scm diff --git a/tests/cve-sample.json b/tests/cve-sample.json index 11b71817bb..bd7963cda5 100644 --- a/tests/cve-sample.json +++ b/tests/cve-sample.json @@ -1,1279 +1,1710 @@ { - "CVE_data_type" : "CVE", - "CVE_data_format" : "MITRE", - "CVE_data_version" : "4.0", - "CVE_data_numberOfCVEs" : "9826", - "CVE_data_timestamp" : "2019-10-17T07:00Z", - "CVE_Items" : [ { - "cve" : { - "data_type" : "CVE", - "data_format" : "MITRE", - "data_version" : "4.0", - "CVE_data_meta" : { - "ID" : "CVE-2019-0001", - "ASSIGNER" : "cve@mitre.org" - }, - "problemtype" : { - "problemtype_data" : [ { - "description" : [ { - "lang" : "en", - "value" : "CWE-400" - } ] - } ] - }, - "references" : { - "reference_data" : [ { - "url" : "http://www.securityfocus.com/bid/106541", - "name" : "106541", - "refsource" : "BID", - "tags" : [ "Third Party Advisory", "VDB Entry" ] - }, { - "url" : "https://kb.juniper.net/JSA10900", - "name" : "https://kb.juniper.net/JSA10900", - "refsource" : "CONFIRM", - "tags" : [ "Vendor Advisory" ] - } ] - }, - "description" : { - "description_data" : [ { - "lang" : "en", - "value" : "Receipt of a malformed packet on MX Series devices with dynamic vlan configuration can trigger an uncontrolled recursion loop in the Broadband Edge subscriber management daemon (bbe-smgd), and lead to high CPU usage and a crash of the bbe-smgd service. Repeated receipt of the same packet can result in an extended denial of service condition for the device. Affected releases are Juniper Networks Junos OS: 16.1 versions prior to 16.1R7-S1; 16.2 versions prior to 16.2R2-S7; 17.1 versions prior to 17.1R2-S10, 17.1R3; 17.2 versions prior to 17.2R3; 17.3 versions prior to 17.3R3-S1; 17.4 versions prior to 17.4R2; 18.1 versions prior to 18.1R3; 18.2 versions prior to 18.2R2." - } ] - } - }, - "configurations" : { - "CVE_data_version" : "4.0", - "nodes" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:*:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.2:*:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.1:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.1:r1:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.1:r2:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:juniper:junos:18.2:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:juniper:junos:18.2:r1-s3:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:juniper:junos:18.2:r1-s4:*:*:*:*:*:*" - } ] - } ] - }, - "impact" : { - "baseMetricV3" : { - "cvssV3" : { - "version" : "3.0", - "vectorString" : "CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H", - "attackVector" : "NETWORK", - "attackComplexity" : "HIGH", - "privilegesRequired" : "NONE", - "userInteraction" : "NONE", - "scope" : "UNCHANGED", - "confidentialityImpact" : "NONE", - "integrityImpact" : "NONE", - "availabilityImpact" : "HIGH", - "baseScore" : 5.9, - "baseSeverity" : "MEDIUM" - }, - "exploitabilityScore" : 2.2, - "impactScore" : 3.6 - }, - "baseMetricV2" : { - "cvssV2" : { - "version" : "2.0", - "vectorString" : "AV:N/AC:M/Au:N/C:N/I:N/A:C", - "accessVector" : "NETWORK", - "accessComplexity" : "MEDIUM", - "authentication" : "NONE", - "confidentialityImpact" : "NONE", - "integrityImpact" : "NONE", - "availabilityImpact" : "COMPLETE", - "baseScore" : 7.1 + "resultsPerPage": 6, + "startIndex": 0, + "totalResults": 6, + "format": "NVD_CVE", + "version": "2.0", + "timestamp": "2025-08-23T03:01:35.4173588", + "vulnerabilities": [ + { + "cve": { + "id": "CVE-2019-0001", + "sourceIdentifier": "sirt@juniper.net", + "published": "2019-01-15T21:29:00.760", + "lastModified": "2024-11-21T04:16:01.113", + "vulnStatus": "Modified", + "cveTags": [], + "descriptions": [ + { + "lang": "en", + "value": "Receipt of a malformed packet on MX Series devices with dynamic vlan configuration can trigger an uncontrolled recursion loop in the Broadband Edge subscriber management daemon (bbe-smgd), and lead to high CPU usage and a crash of the bbe-smgd service. Repeated receipt of the same packet can result in an extended denial of service condition for the device. Affected releases are Juniper Networks Junos OS: 16.1 versions prior to 16.1R7-S1; 16.2 versions prior to 16.2R2-S7; 17.1 versions prior to 17.1R2-S10, 17.1R3; 17.2 versions prior to 17.2R3; 17.3 versions prior to 17.3R3-S1; 17.4 versions prior to 17.4R2; 18.1 versions prior to 18.1R3; 18.2 versions prior to 18.2R2." + }, + { + "lang": "es", + "value": "La recepción de un paquete mal formado en dispositivos MX Series con una configuración vlan dinámica puede desencadenar un bucle de recursión no controlado en el demonio de gestión de suscriptores Broadband Edge (bbe-smgd) y conducir a un alto uso de CPU y el cierre inesperado del servicio bbe-smgd. La recepción repetida del mismo paquete puede resultar en una condición de denegación de servicio (DoS) extendida para los dispositivos. Las versiones afectadas son Juniper Networks Junos OS: 16.1 en versiones anteriores a la 16.1R7-S1; 16.2 en versiones anteriores a la 16.2R2-S7; 17.1 en versiones anteriores a la 17.1R2-S10, 17.1R3; 17.2 en versiones anteriores a la 17.2R3; 17.3 en versiones anteriores a la 17.3R3-S1; 17.4 en versiones anteriores a la 17.4R2; 18.1 en versiones anteriores a la 18.1R3 y 18.2 en versiones anteriores a la 18.2R2." + } + ], + "metrics": { + "cvssMetricV31": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "3.1", + "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", + "baseScore": 7.5, + "baseSeverity": "HIGH", + "attackVector": "NETWORK", + "attackComplexity": "LOW", + "privilegesRequired": "NONE", + "userInteraction": "NONE", + "scope": "UNCHANGED", + "confidentialityImpact": "NONE", + "integrityImpact": "NONE", + "availabilityImpact": "HIGH" + }, + "exploitabilityScore": 3.9, + "impactScore": 3.6 + } + ], + "cvssMetricV30": [ + { + "source": "sirt@juniper.net", + "type": "Secondary", + "cvssData": { + "version": "3.0", + "vectorString": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", + "baseScore": 7.5, + "baseSeverity": "HIGH", + "attackVector": "NETWORK", + "attackComplexity": "LOW", + "privilegesRequired": "NONE", + "userInteraction": "NONE", + "scope": "UNCHANGED", + "confidentialityImpact": "NONE", + "integrityImpact": "NONE", + "availabilityImpact": "HIGH" + }, + "exploitabilityScore": 3.9, + "impactScore": 3.6 + } + ], + "cvssMetricV2": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "2.0", + "vectorString": "AV:N/AC:M/Au:N/C:N/I:N/A:C", + "baseScore": 7.1, + "accessVector": "NETWORK", + "accessComplexity": "MEDIUM", + "authentication": "NONE", + "confidentialityImpact": "NONE", + "integrityImpact": "NONE", + "availabilityImpact": "COMPLETE" + }, + "baseSeverity": "HIGH", + "exploitabilityScore": 8.6, + "impactScore": 6.9, + "acInsufInfo": false, + "obtainAllPrivilege": false, + "obtainUserPrivilege": false, + "obtainOtherPrivilege": false, + "userInteractionRequired": false + } + ] }, - "severity" : "HIGH", - "exploitabilityScore" : 8.6, - "impactScore" : 6.9, - "acInsufInfo" : false, - "obtainAllPrivilege" : false, - "obtainUserPrivilege" : false, - "obtainOtherPrivilege" : false, - "userInteractionRequired" : false + "weaknesses": [ + { + "source": "sirt@juniper.net", + "type": "Secondary", + "description": [ + { + "lang": "en", + "value": "CWE-674" + } + ] + }, + { + "source": "nvd@nist.gov", + "type": "Primary", + "description": [ + { + "lang": "en", + "value": "CWE-674" + } + ] + } + ], + "configurations": [ + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:-:*:*:*:*:*:*", + "matchCriteriaId": "258A380C-1EA0-407D-B7E3-4A2E8820119C" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r1:*:*:*:*:*:*", + "matchCriteriaId": "BBE35BDC-7739-4854-8BB8-E8600603DE9D" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r2:*:*:*:*:*:*", + "matchCriteriaId": "2DC47132-9EEA-4518-8F86-5CD231FBFB61" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r3:*:*:*:*:*:*", + "matchCriteriaId": "CD5A30CE-9498-4007-8E66-FD0CC6CF1836" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r3-s10:*:*:*:*:*:*", + "matchCriteriaId": "07CD1E7C-24EA-46B7-964C-C78FF64AFAE6" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r3-s11:*:*:*:*:*:*", + "matchCriteriaId": "8A457C57-4A36-433D-9473-5ABC091DF316" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r4:*:*:*:*:*:*", + "matchCriteriaId": "6D3E38C1-808C-4BD3-993D-F30855F5390F" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r4-s12:*:*:*:*:*:*", + "matchCriteriaId": "C2AF9C4B-23E6-485D-A115-2B728E929C6A" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r4-s2:*:*:*:*:*:*", + "matchCriteriaId": "1FD11073-DC27-41F8-A6A2-7E22A062D14E" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r4-s3:*:*:*:*:*:*", + "matchCriteriaId": "2A78389E-868C-422D-9AA3-8A672DF6C2AF" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r4-s4:*:*:*:*:*:*", + "matchCriteriaId": "85BFC22F-A6B3-4306-A28B-5D78FFA6402D" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r4-s6:*:*:*:*:*:*", + "matchCriteriaId": "99276E50-825C-4BB4-8496-1F81BDA21655" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r5:*:*:*:*:*:*", + "matchCriteriaId": "72194CB7-FFDC-4897-9D6E-EA3459DDDEB5" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r5-s4:*:*:*:*:*:*", + "matchCriteriaId": "C88635DB-09B1-4DA1-8FC3-2F7A7E42819C" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r6:*:*:*:*:*:*", + "matchCriteriaId": "92F35C19-5AD2-4F98-8313-2E880714DF3B" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r6-s1:*:*:*:*:*:*", + "matchCriteriaId": "DF5A9D31-ED7D-4390-B46D-7E46089DB932" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r6-s6:*:*:*:*:*:*", + "matchCriteriaId": "90B94472-0E32-48AD-A690-AABB2C53CA58" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.1:r7:*:*:*:*:*:*", + "matchCriteriaId": "6B4A4960-0241-4BF4-8857-8B7BE33466B6" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.2:-:*:*:*:*:*:*", + "matchCriteriaId": "9677CE18-B955-432F-BA2B-AAE3D0CA0F16" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.2:r1:*:*:*:*:*:*", + "matchCriteriaId": "3661BC68-6F32-447F-8D20-FD73FBBED9C6" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.2:r2:*:*:*:*:*:*", + "matchCriteriaId": "5B6097D4-3856-4696-9A26-5B6C0FD9AD6C" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.2:r2-s1:*:*:*:*:*:*", + "matchCriteriaId": "84DD80BF-BF7E-447B-AA74-00B3D8036E36" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.2:r2-s2:*:*:*:*:*:*", + "matchCriteriaId": "57B89EEB-222D-46AA-BC8F-4EE7E17BA7B6" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.2:r2-s5:*:*:*:*:*:*", + "matchCriteriaId": "ECAE613D-1317-4D2E-8A61-980CD5DEAED8" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:16.2:r2-s6:*:*:*:*:*:*", + "matchCriteriaId": "BAB2D63C-C966-42CA-85A9-09820D00A2D8" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:-:*:*:*:*:*:*", + "matchCriteriaId": "CC9B5CDE-3A50-4CD3-962A-FA0989939F37" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r1:*:*:*:*:*:*", + "matchCriteriaId": "7572C187-4D58-4E0D-A605-B2B13EFF5C6B" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2:*:*:*:*:*:*", + "matchCriteriaId": "E34A149E-C2ED-4D86-A105-0A2775654AE7" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s1:*:*:*:*:*:*", + "matchCriteriaId": "4E0D42C4-9B4D-44F9-BC84-E7994404598B" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s2:*:*:*:*:*:*", + "matchCriteriaId": "DE2C20D8-3C73-4B87-BA41-DBFBCA5FBA58" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s3:*:*:*:*:*:*", + "matchCriteriaId": "54D887B4-D2F4-4537-8298-B98D01396F12" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s4:*:*:*:*:*:*", + "matchCriteriaId": "1C1B5AE6-A323-4744-BCA1-25E46D2D27BB" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s5:*:*:*:*:*:*", + "matchCriteriaId": "0AB39E2F-0D67-4FA6-84B8-36684E971002" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s6:*:*:*:*:*:*", + "matchCriteriaId": "A32C3702-48DE-47CF-B0D1-3A629676AD03" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s7:*:*:*:*:*:*", + "matchCriteriaId": "B9695B3E-FCDA-4DF0-B714-8B4F87AA647D" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s8:*:*:*:*:*:*", + "matchCriteriaId": "36214C23-82C8-4A3E-9FF8-04F85FF8B2B7" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.1:r2-s9:*:*:*:*:*:*", + "matchCriteriaId": "F3778643-1684-4549-A764-A1909C14B4B3" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:-:*:*:*:*:*:*", + "matchCriteriaId": "BCEE8D9C-6D64-4A9B-A74A-57A0BF4086C6" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1:*:*:*:*:*:*", + "matchCriteriaId": "E889BF9C-BDDF-4A6A-97BB-00A097EF6D91" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1-s1:*:*:*:*:*:*", + "matchCriteriaId": "8BCF0612-AF16-4925-8E42-77734513F923" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1-s2:*:*:*:*:*:*", + "matchCriteriaId": "595987A6-D8CE-41ED-B51C-EF9CD3B47AD0" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1-s3:*:*:*:*:*:*", + "matchCriteriaId": "7B5A2205-C40B-4746-9A23-1973433FF065" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1-s4:*:*:*:*:*:*", + "matchCriteriaId": "CFA3526C-FF53-4823-B6AC-0BA91BFB532D" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1-s5:*:*:*:*:*:*", + "matchCriteriaId": "AA92B7F8-705B-410F-BDA3-7C28FF51967F" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1-s7:*:*:*:*:*:*", + "matchCriteriaId": "9689695F-53EB-4B35-9072-750E7282B011" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r1-s8:*:*:*:*:*:*", + "matchCriteriaId": "4F7CE683-5647-455B-936C-DF0D973A180A" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r2:*:*:*:*:*:*", + "matchCriteriaId": "7D45F2C3-20FF-4A91-A440-E109B3CCE7C9" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r2-s11:*:*:*:*:*:*", + "matchCriteriaId": "BA433E05-83F8-410D-AEB3-3A02BAB0BE0B" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r2-s6:*:*:*:*:*:*", + "matchCriteriaId": "B87ECEAD-FD18-4252-8D46-F281DD4125AC" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.2:r2-s7:*:*:*:*:*:*", + "matchCriteriaId": "C6788EE2-B0DA-470E-B72E-E8D5CCFB5259" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:-:*:*:*:*:*:*", + "matchCriteriaId": "A283D32F-1CAF-4A5A-83E1-585F2801771F" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r1:*:*:*:*:*:*", + "matchCriteriaId": "38A40E03-F915-4888-87B0-5950F75F097D" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r1-s1:*:*:*:*:*:*", + "matchCriteriaId": "C52E355B-DA7D-4FDE-B2D7-A3C3C9C99918" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r2:*:*:*:*:*:*", + "matchCriteriaId": "69FC46D4-39E2-4E2F-A1D3-1001769A7115" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r2-s1:*:*:*:*:*:*", + "matchCriteriaId": "32F83E8B-A816-4F26-95F8-F0DA7F3DF426" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r2-s2:*:*:*:*:*:*", + "matchCriteriaId": "2C433359-BC8B-4E69-BE74-A31EB148083A" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r2-s3:*:*:*:*:*:*", + "matchCriteriaId": "BCA2976C-C84B-40D9-A806-588629BFFB13" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r2-s4:*:*:*:*:*:*", + "matchCriteriaId": "A2C7B980-033E-40AC-98C9-B252733B0F43" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r2-s5:*:*:*:*:*:*", + "matchCriteriaId": "BA8D32E4-1892-46DC-9782-5466A14E18D9" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.3:r3:-:*:*:*:*:*", + "matchCriteriaId": "D1CAEBD2-2E46-44B5-B1D1-1DDBD450FD27" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:-:*:*:*:*:*:*", + "matchCriteriaId": "A00CA6FB-8F28-4171-B510-8DBA351E80C0" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:r1:*:*:*:*:*:*", + "matchCriteriaId": "988D317A-0646-491F-9B97-853E8E208276" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:r1-s1:*:*:*:*:*:*", + "matchCriteriaId": "605F1AD7-5B09-44F0-9017-15AB3EEE559C" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:r1-s2:*:*:*:*:*:*", + "matchCriteriaId": "CEDDCD30-2255-4FA9-B3E2-9E88AB6F8D80" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:r1-s4:*:*:*:*:*:*", + "matchCriteriaId": "4E4EB6B0-8DB2-4199-96E4-30195D49F756" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:r1-s5:*:*:*:*:*:*", + "matchCriteriaId": "204FC7B5-9CF2-4AC2-9B8D-DA48CAEA6496" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:r1-s6:*:*:*:*:*:*", + "matchCriteriaId": "9D8A8E33-473A-4A40-A7B7-47086BB9012A" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:17.4:r1-s7:*:*:*:*:*:*", + "matchCriteriaId": "F0F65DCA-34B9-4CE8-91C9-426AAAEB4097" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:18.2:-:*:*:*:*:*:*", + "matchCriteriaId": "A8B5BD93-3C11-45D5-ACF0-7C4C01106C8A" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:18.2:r1:*:*:*:*:*:*", + "matchCriteriaId": "167EEC4F-729E-47C2-B0F8-E8108CE3E985" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:18.2:r1-s3:*:*:*:*:*:*", + "matchCriteriaId": "A893CCE5-96B8-44A1-ABEF-6AB9B527B2FB" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:18.2:r1-s4:*:*:*:*:*:*", + "matchCriteriaId": "42203801-E2E7-4DCF-ABBB-D23A91B2A9FF" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:juniper:junos:18.2:r1-s5:*:*:*:*:*:*", + "matchCriteriaId": "238EC996-8E8C-4332-916F-09E54E6EBB9D" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:fedoraproject:fedora:30:*:*:*:*:*:*:*", + "matchCriteriaId": "97A4B8DF-58DA-4AB6-A1F9-331B36409BA3" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:fedoraproject:fedora:31:*:*:*:*:*:*:*", + "matchCriteriaId": "80F0FA5D-8D3B-4C0E-81E2-87998286AF33" + } + ] + } + ] + } + ], + "references": [ + { + "url": "http://www.securityfocus.com/bid/106541", + "source": "sirt@juniper.net", + "tags": [ + "Third Party Advisory", + "VDB Entry" + ] + }, + { + "url": "https://kb.juniper.net/JSA10900", + "source": "sirt@juniper.net", + "tags": [ + "Vendor Advisory" + ] + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/RMKFSHPMOZL7MDWU5RYOTIBTRWSZ4Z6X/", + "source": "sirt@juniper.net" + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/W7CPKBW4QZ4VIY4UXIUVUSHRJ4R2FROE/", + "source": "sirt@juniper.net" + }, + { + "url": "http://www.securityfocus.com/bid/106541", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory", + "VDB Entry" + ] + }, + { + "url": "https://kb.juniper.net/JSA10900", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Vendor Advisory" + ] + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/RMKFSHPMOZL7MDWU5RYOTIBTRWSZ4Z6X/", + "source": "af854a3a-2127-422b-91ae-364da2661108" + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/W7CPKBW4QZ4VIY4UXIUVUSHRJ4R2FROE/", + "source": "af854a3a-2127-422b-91ae-364da2661108" + } + ] } }, - "publishedDate" : "2019-01-15T21:29Z", - "lastModifiedDate" : "2019-10-09T23:43Z" - }, { - "cve" : { - "data_type" : "CVE", - "data_format" : "MITRE", - "data_version" : "4.0", - "CVE_data_meta" : { - "ID" : "CVE-2019-0005", - "ASSIGNER" : "cve@mitre.org" - }, - "problemtype" : { - "problemtype_data" : [ { - "description" : [ { - "lang" : "en", - "value" : "CWE-400" - } ] - } ] - }, - "references" : { - "reference_data" : [ { - "url" : "http://www.securityfocus.com/bid/106665", - "name" : "106665", - "refsource" : "BID", - "tags" : [ "Third Party Advisory" ] - }, { - "url" : "https://kb.juniper.net/JSA10905", - "name" : "https://kb.juniper.net/JSA10905", - "refsource" : "CONFIRM", - "tags" : [ "Vendor Advisory" ] - } ] - }, - "description" : { - "description_data" : [ { - "lang" : "en", - "value" : "On EX2300, EX3400, EX4600, QFX3K and QFX5K series, firewall filter configuration cannot perform packet matching on any IPv6 extension headers. This issue may allow IPv6 packets that should have been blocked to be forwarded. IPv4 packet filtering is unaffected by this vulnerability. Affected releases are Juniper Networks Junos OS on EX and QFX series;: 14.1X53 versions prior to 14.1X53-D47; 15.1 versions prior to 15.1R7; 15.1X53 versions prior to 15.1X53-D234 on QFX5200/QFX5110 series; 15.1X53 versions prior to 15.1X53-D591 on EX2300/EX3400 series; 16.1 versions prior to 16.1R7; 17.1 versions prior to 17.1R2-S10, 17.1R3; 17.2 versions prior to 17.2R3; 17.3 versions prior to 17.3R3; 17.4 versions prior to 17.4R2; 18.1 versions prior to 18.1R2." - } ] - } - }, - "configurations" : { - "CVE_data_version" : "4.0", - "nodes" : [ { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d10:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d15:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d16:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d25:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d26:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d27:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d30:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d35:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d40:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d42:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d43:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d44:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d45:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:14.1x53:d46:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1:r1:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1:r2:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1:r3:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1:r4:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1:r5:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1:r6:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d20:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d21:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d30:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d32:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d33:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d34:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d50:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d51:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d52:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d20:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d21:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d210:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d230:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d234:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d30:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d32:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d33:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d34:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d50:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d51:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d52:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d55:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d57:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d58:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d59:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:15.1x53:d590:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r1:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r2:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r3:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r3-s10:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r4:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r5:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r6:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r6-s6:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:16.1:r7:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.1:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.1:r1:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.2:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.2:r1:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.2:r1-s7:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.2:r2:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.3:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.3:r1:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.3:r2:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:gfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.4:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:o:juniper:junos:17.4:r1:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - }, { - "operator" : "AND", - "children" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:juniper:junos:18.1:*:*:*:*:*:*:*" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:juniper:junos:18.1:r1:*:*:*:*:*:*" - } ] - }, { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex2300-c:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex3400:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:ex4650:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3500:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx3600:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5100:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5110:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5120:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5200:-:*:*:*:*:*:*:*" - }, { - "vulnerable" : false, - "cpe23Uri" : "cpe:2.3:h:juniper:qfx5210:-:*:*:*:*:*:*:*" - } ] - } ] - } ] - }, - "impact" : { - "baseMetricV3" : { - "cvssV3" : { - "version" : "3.0", - "vectorString" : "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N", - "attackVector" : "NETWORK", - "attackComplexity" : "LOW", - "privilegesRequired" : "NONE", - "userInteraction" : "NONE", - "scope" : "UNCHANGED", - "confidentialityImpact" : "NONE", - "integrityImpact" : "LOW", - "availabilityImpact" : "NONE", - "baseScore" : 5.3, - "baseSeverity" : "MEDIUM" + { + "cve": { + "id": "CVE-2019-1010204", + "sourceIdentifier": "josh@bress.net", + "published": "2019-07-23T14:15:13.373", + "lastModified": "2024-11-21T04:18:03.163", + "vulnStatus": "Modified", + "cveTags": [], + "descriptions": [ + { + "lang": "en", + "value": "GNU binutils gold gold v1.11-v1.16 (GNU binutils v2.21-v2.31.1) is affected by: Improper Input Validation, Signed/Unsigned Comparison, Out-of-bounds Read. The impact is: Denial of service. The component is: gold/fileread.cc:497, elfcpp/elfcpp_file.h:644. The attack vector is: An ELF file with an invalid e_shoff header field must be opened." + }, + { + "lang": "es", + "value": "GNU binutils gold gold v1.11-v1.16 (GNU binutils v2.21-v2.31.1) está afectado por: Validación incorrecta de entrada, comparación firmada / sin firmar, lectura fuera de límites. El impacto es: Denegación de servicio. El componente es: gold / fileread.cc: 497, elfcpp / elfcpp_file.h: 644. El vector de ataque es: Se debe abrir un archivo ELF con un campo de encabezado e_shoff no válido." + } + ], + "metrics": { + "cvssMetricV31": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "3.1", + "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H", + "baseScore": 5.5, + "baseSeverity": "MEDIUM", + "attackVector": "LOCAL", + "attackComplexity": "LOW", + "privilegesRequired": "NONE", + "userInteraction": "REQUIRED", + "scope": "UNCHANGED", + "confidentialityImpact": "NONE", + "integrityImpact": "NONE", + "availabilityImpact": "HIGH" + }, + "exploitabilityScore": 1.8, + "impactScore": 3.6 + } + ], + "cvssMetricV2": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "2.0", + "vectorString": "AV:N/AC:M/Au:N/C:N/I:N/A:P", + "baseScore": 4.3, + "accessVector": "NETWORK", + "accessComplexity": "MEDIUM", + "authentication": "NONE", + "confidentialityImpact": "NONE", + "integrityImpact": "NONE", + "availabilityImpact": "PARTIAL" + }, + "baseSeverity": "MEDIUM", + "exploitabilityScore": 8.6, + "impactScore": 2.9, + "acInsufInfo": false, + "obtainAllPrivilege": false, + "obtainUserPrivilege": false, + "obtainOtherPrivilege": false, + "userInteractionRequired": true + } + ] }, - "exploitabilityScore" : 3.9, - "impactScore" : 1.4 - }, - "baseMetricV2" : { - "cvssV2" : { - "version" : "2.0", - "vectorString" : "AV:N/AC:L/Au:N/C:N/I:P/A:N", - "accessVector" : "NETWORK", - "accessComplexity" : "LOW", - "authentication" : "NONE", - "confidentialityImpact" : "NONE", - "integrityImpact" : "PARTIAL", - "availabilityImpact" : "NONE", - "baseScore" : 5.0 - }, - "severity" : "MEDIUM", - "exploitabilityScore" : 10.0, - "impactScore" : 2.9, - "acInsufInfo" : false, - "obtainAllPrivilege" : false, - "obtainUserPrivilege" : false, - "obtainOtherPrivilege" : false, - "userInteractionRequired" : false - } - }, - "publishedDate" : "2019-01-15T21:29Z", - "lastModifiedDate" : "2019-02-14T18:40Z" - }, { - "cve" : { - "data_type" : "CVE", - "data_format" : "MITRE", - "data_version" : "4.0", - "CVE_data_meta" : { - "ID" : "CVE-2019-14811", - "ASSIGNER" : "cve@mitre.org" - }, - "problemtype" : { - "problemtype_data" : [ { - "description" : [ { - "lang" : "en", - "value" : "CWE-264" - } ] - } ] - }, - "references" : { - "reference_data" : [ { - "url" : "http://lists.opensuse.org/opensuse-security-announce/2019-09/msg00088.html", - "name" : "openSUSE-SU-2019:2223", - "refsource" : "SUSE", - "tags" : [ ] - }, { - "url" : "http://lists.opensuse.org/opensuse-security-announce/2019-09/msg00090.html", - "name" : "openSUSE-SU-2019:2222", - "refsource" : "SUSE", - "tags" : [ ] - }, { - "url" : "https://access.redhat.com/errata/RHBA-2019:2824", - "name" : "RHBA-2019:2824", - "refsource" : "REDHAT", - "tags" : [ ] - }, { - "url" : "https://access.redhat.com/errata/RHSA-2019:2594", - "name" : "RHSA-2019:2594", - "refsource" : "REDHAT", - "tags" : [ ] - }, { - "url" : "https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-14811", - "name" : "https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-14811", - "refsource" : "CONFIRM", - "tags" : [ "Exploit", "Issue Tracking", "Mitigation", "Patch", "Third Party Advisory" ] - }, { - "url" : "https://lists.debian.org/debian-lts-announce/2019/09/msg00007.html", - "name" : "[debian-lts-announce] 20190909 [SECURITY] [DLA 1915-1] ghostscript security update", - "refsource" : "MLIST", - "tags" : [ ] - }, { - "url" : "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/6AATIHU32MYKUOXQDJQU4X4DDVL7NAY3/", - "name" : "FEDORA-2019-ebd6c4f15a", - "refsource" : "FEDORA", - "tags" : [ ] - }, { - "url" : "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/LBUC4DBBJTRFNCR3IODBV4IXB2C2HI3V/", - "name" : "FEDORA-2019-0a9d525d71", - "refsource" : "FEDORA", - "tags" : [ ] - }, { - "url" : "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/ZP34D27RKYV2POJ3NJLSVCHUA5V5C45A/", - "name" : "FEDORA-2019-953fc0f16d", - "refsource" : "FEDORA", - "tags" : [ ] - }, { - "url" : "https://seclists.org/bugtraq/2019/Sep/15", - "name" : "20190910 [SECURITY] [DSA 4518-1] ghostscript security update", - "refsource" : "BUGTRAQ", - "tags" : [ ] - }, { - "url" : "https://www.debian.org/security/2019/dsa-4518", - "name" : "DSA-4518", - "refsource" : "DEBIAN", - "tags" : [ ] - } ] - }, - "description" : { - "description_data" : [ { - "lang" : "en", - "value" : "A flaw was found in, ghostscript versions prior to 9.28, in the .pdf_hook_DSC_Creator procedure where it did not properly secure its privileged calls, enabling scripts to bypass `-dSAFER` restrictions. A specially crafted PostScript file could disable security protection and then have access to the file system, or execute arbitrary commands." - } ] + "weaknesses": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "description": [ + { + "lang": "en", + "value": "CWE-125" + }, + { + "lang": "en", + "value": "CWE-681" + } + ] + } + ], + "configurations": [ + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:a:gnu:binutils:*:*:*:*:*:*:*:*", + "versionStartIncluding": "2.21", + "versionEndIncluding": "2.31.1", + "matchCriteriaId": "B1BF4DF3-4D96-4488-A1F7-38A7AF5DC725" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:a:gnu:binutils_gold:*:*:*:*:*:*:*:*", + "versionStartIncluding": "1.11", + "versionEndIncluding": "1.16", + "matchCriteriaId": "52A4DA53-C77B-4E9E-94E3-D7F63C44A2F6" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:a:netapp:hci_management_node:-:*:*:*:*:*:*:*", + "matchCriteriaId": "A3C19813-E823-456A-B1CE-EC0684CE1953" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:a:netapp:solidfire:-:*:*:*:*:*:*:*", + "matchCriteriaId": "A6E9EF0C-AFA8-4F7B-9FDC-1E0F7C26E737" + } + ] + } + ] + } + ], + "references": [ + { + "url": "https://security.netapp.com/advisory/ntap-20190822-0001/", + "source": "josh@bress.net", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://sourceware.org/bugzilla/show_bug.cgi?id=23765", + "source": "josh@bress.net", + "tags": [ + "Issue Tracking", + "Third Party Advisory" + ] + }, + { + "url": "https://support.f5.com/csp/article/K05032915?utm_source=f5support&%3Butm_medium=RSS", + "source": "josh@bress.net" + }, + { + "url": "https://security.netapp.com/advisory/ntap-20190822-0001/", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://sourceware.org/bugzilla/show_bug.cgi?id=23765", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Issue Tracking", + "Third Party Advisory" + ] + }, + { + "url": "https://support.f5.com/csp/article/K05032915?utm_source=f5support&%3Butm_medium=RSS", + "source": "af854a3a-2127-422b-91ae-364da2661108" + } + ] } }, - "configurations" : { - "CVE_data_version" : "4.0", - "nodes" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:artifex:ghostscript:*:*:*:*:*:*:*:*", - "versionEndExcluding" : "9.28" - } ] - } ] - }, - "impact" : { - "baseMetricV3" : { - "cvssV3" : { - "version" : "3.0", - "vectorString" : "CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", - "attackVector" : "LOCAL", - "attackComplexity" : "LOW", - "privilegesRequired" : "NONE", - "userInteraction" : "REQUIRED", - "scope" : "UNCHANGED", - "confidentialityImpact" : "HIGH", - "integrityImpact" : "HIGH", - "availabilityImpact" : "HIGH", - "baseScore" : 7.8, - "baseSeverity" : "HIGH" + { + "cve": { + "id": "CVE-2019-1010180", + "sourceIdentifier": "josh@bress.net", + "published": "2019-07-24T13:15:10.997", + "lastModified": "2024-11-21T04:18:01.790", + "vulnStatus": "Modified", + "cveTags": [], + "descriptions": [ + { + "lang": "en", + "value": "GNU gdb All versions is affected by: Buffer Overflow - Out of bound memory access. The impact is: Deny of Service, Memory Disclosure, and Possible Code Execution. The component is: The main gdb module. The attack vector is: Open an ELF for debugging. The fixed version is: Not fixed yet." + }, + { + "lang": "es", + "value": "GNU gdb Todas las versiones se ven afectadas por: Desbordamiento de búfer - Acceso a memoria fuera de enlace. El impacto es: Denegación de servicio, Divulgación de memoria y Posible ejecución de código. El componente es: El módulo principal de gdb. El vector de ataque es: Abra un ELF para la depuración. La versión arregladas es: Aún no está arreglada." + } + ], + "metrics": { + "cvssMetricV31": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "3.1", + "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", + "baseScore": 7.8, + "baseSeverity": "HIGH", + "attackVector": "LOCAL", + "attackComplexity": "LOW", + "privilegesRequired": "NONE", + "userInteraction": "REQUIRED", + "scope": "UNCHANGED", + "confidentialityImpact": "HIGH", + "integrityImpact": "HIGH", + "availabilityImpact": "HIGH" + }, + "exploitabilityScore": 1.8, + "impactScore": 5.9 + } + ], + "cvssMetricV2": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "2.0", + "vectorString": "AV:N/AC:M/Au:N/C:P/I:P/A:P", + "baseScore": 6.8, + "accessVector": "NETWORK", + "accessComplexity": "MEDIUM", + "authentication": "NONE", + "confidentialityImpact": "PARTIAL", + "integrityImpact": "PARTIAL", + "availabilityImpact": "PARTIAL" + }, + "baseSeverity": "MEDIUM", + "exploitabilityScore": 8.6, + "impactScore": 6.4, + "acInsufInfo": false, + "obtainAllPrivilege": false, + "obtainUserPrivilege": false, + "obtainOtherPrivilege": false, + "userInteractionRequired": true + } + ] }, - "exploitabilityScore" : 1.8, - "impactScore" : 5.9 - }, - "baseMetricV2" : { - "cvssV2" : { - "version" : "2.0", - "vectorString" : "AV:N/AC:M/Au:N/C:P/I:P/A:P", - "accessVector" : "NETWORK", - "accessComplexity" : "MEDIUM", - "authentication" : "NONE", - "confidentialityImpact" : "PARTIAL", - "integrityImpact" : "PARTIAL", - "availabilityImpact" : "PARTIAL", - "baseScore" : 6.8 - }, - "severity" : "MEDIUM", - "exploitabilityScore" : 8.6, - "impactScore" : 6.4, - "acInsufInfo" : false, - "obtainAllPrivilege" : false, - "obtainUserPrivilege" : false, - "obtainOtherPrivilege" : false, - "userInteractionRequired" : true - } - }, - "publishedDate" : "2019-09-03T16:15Z", - "lastModifiedDate" : "2019-09-10T03:15Z" - }, { - "cve" : { - "data_type" : "CVE", - "data_format" : "MITRE", - "data_version" : "4.0", - "CVE_data_meta" : { - "ID" : "CVE-2019-17365", - "ASSIGNER" : "cve@mitre.org" - }, - "problemtype" : { - "problemtype_data" : [ { - "description" : [ { - "lang" : "en", - "value" : "CWE-276" - } ] - } ] - }, - "references" : { - "reference_data" : [ { - "url" : "http://www.openwall.com/lists/oss-security/2019/10/09/4", - "name" : "http://www.openwall.com/lists/oss-security/2019/10/09/4", - "refsource" : "MISC", - "tags" : [ "Exploit", "Mailing List", "Third Party Advisory" ] - }, { - "url" : "http://www.openwall.com/lists/oss-security/2019/10/10/1", - "name" : "[oss-security] 20191010 Re: CVE-2019-17365: Nix per-user profile directory hijack", - "refsource" : "MLIST", - "tags" : [ "Third Party Advisory" ] - } ] - }, - "description" : { - "description_data" : [ { - "lang" : "en", - "value" : "Nix through 2.3 allows local users to gain access to an arbitrary user's account because the parent directory of the user-profile directories is world writable." - } ] + "weaknesses": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "description": [ + { + "lang": "en", + "value": "CWE-125" + } + ] + } + ], + "configurations": [ + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:a:gnu:gdb:*:*:*:*:*:*:*:*", + "versionEndExcluding": "9.1", + "matchCriteriaId": "2855B0DE-972E-4536-9D6E-3C57C4253177" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:opensuse:leap:15.0:*:*:*:*:*:*:*", + "matchCriteriaId": "F1E78106-58E6-4D59-990F-75DA575BFAD9" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:opensuse:leap:15.1:*:*:*:*:*:*:*", + "matchCriteriaId": "B620311B-34A3-48A6-82DF-6F078D7A4493" + } + ] + } + ] + } + ], + "references": [ + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-10/msg00072.html", + "source": "josh@bress.net", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-11/msg00008.html", + "source": "josh@bress.net", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-11/msg00028.html", + "source": "josh@bress.net", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-11/msg00029.html", + "source": "josh@bress.net", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://www.securityfocus.com/bid/109367", + "source": "josh@bress.net", + "tags": [ + "Third Party Advisory", + "VDB Entry" + ] + }, + { + "url": "https://security.gentoo.org/glsa/202003-31", + "source": "josh@bress.net", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://sourceware.org/bugzilla/show_bug.cgi?id=23657", + "source": "josh@bress.net", + "tags": [ + "Exploit", + "Issue Tracking", + "Patch", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-10/msg00072.html", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-11/msg00008.html", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-11/msg00028.html", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-11/msg00029.html", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://www.securityfocus.com/bid/109367", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory", + "VDB Entry" + ] + }, + { + "url": "https://security.gentoo.org/glsa/202003-31", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://sourceware.org/bugzilla/show_bug.cgi?id=23657", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Exploit", + "Issue Tracking", + "Patch", + "Third Party Advisory" + ] + } + ] } }, - "configurations" : { - "CVE_data_version" : "4.0", - "nodes" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:nixos:nix:*:*:*:*:*:*:*:*", - "versionEndIncluding" : "2.3" - } ] - } ] - }, - "impact" : { - "baseMetricV3" : { - "cvssV3" : { - "version" : "3.1", - "vectorString" : "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", - "attackVector" : "LOCAL", - "attackComplexity" : "LOW", - "privilegesRequired" : "LOW", - "userInteraction" : "NONE", - "scope" : "UNCHANGED", - "confidentialityImpact" : "HIGH", - "integrityImpact" : "HIGH", - "availabilityImpact" : "HIGH", - "baseScore" : 7.8, - "baseSeverity" : "HIGH" - }, - "exploitabilityScore" : 1.8, - "impactScore" : 5.9 - }, - "baseMetricV2" : { - "cvssV2" : { - "version" : "2.0", - "vectorString" : "AV:L/AC:L/Au:N/C:P/I:P/A:P", - "accessVector" : "LOCAL", - "accessComplexity" : "LOW", - "authentication" : "NONE", - "confidentialityImpact" : "PARTIAL", - "integrityImpact" : "PARTIAL", - "availabilityImpact" : "PARTIAL", - "baseScore" : 4.6 + { + "cve": { + "id": "CVE-2019-14811", + "sourceIdentifier": "secalert@redhat.com", + "published": "2019-09-03T16:15:11.573", + "lastModified": "2024-11-21T04:27:24.480", + "vulnStatus": "Modified", + "cveTags": [], + "descriptions": [ + { + "lang": "en", + "value": "A flaw was found in, ghostscript versions prior to 9.50, in the .pdf_hook_DSC_Creator procedure where it did not properly secure its privileged calls, enabling scripts to bypass `-dSAFER` restrictions. A specially crafted PostScript file could disable security protection and then have access to the file system, or execute arbitrary commands." + }, + { + "lang": "es", + "value": "Se detecto un defecto en, ghostscript en versiones anteriores a la 9.50, en el procedimiento .pdf_hook_DSC_Creator donde no aseguró adecuadamente sus llamadas privilegiadas, permitiendo que los scripts omitieran las restricciones `-dSAFER`. Un archivo PostScript especialmente diseñado podría deshabilitar la protección de seguridad y luego tener acceso al sistema de archivos o ejecutar comandos arbitrarios." + } + ], + "metrics": { + "cvssMetricV31": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "3.1", + "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", + "baseScore": 7.8, + "baseSeverity": "HIGH", + "attackVector": "LOCAL", + "attackComplexity": "LOW", + "privilegesRequired": "NONE", + "userInteraction": "REQUIRED", + "scope": "UNCHANGED", + "confidentialityImpact": "HIGH", + "integrityImpact": "HIGH", + "availabilityImpact": "HIGH" + }, + "exploitabilityScore": 1.8, + "impactScore": 5.9 + } + ], + "cvssMetricV30": [ + { + "source": "secalert@redhat.com", + "type": "Secondary", + "cvssData": { + "version": "3.0", + "vectorString": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L", + "baseScore": 7.3, + "baseSeverity": "HIGH", + "attackVector": "NETWORK", + "attackComplexity": "LOW", + "privilegesRequired": "NONE", + "userInteraction": "NONE", + "scope": "UNCHANGED", + "confidentialityImpact": "LOW", + "integrityImpact": "LOW", + "availabilityImpact": "LOW" + }, + "exploitabilityScore": 3.9, + "impactScore": 3.4 + } + ], + "cvssMetricV2": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "2.0", + "vectorString": "AV:N/AC:M/Au:N/C:P/I:P/A:P", + "baseScore": 6.8, + "accessVector": "NETWORK", + "accessComplexity": "MEDIUM", + "authentication": "NONE", + "confidentialityImpact": "PARTIAL", + "integrityImpact": "PARTIAL", + "availabilityImpact": "PARTIAL" + }, + "baseSeverity": "MEDIUM", + "exploitabilityScore": 8.6, + "impactScore": 6.4, + "acInsufInfo": false, + "obtainAllPrivilege": false, + "obtainUserPrivilege": false, + "obtainOtherPrivilege": false, + "userInteractionRequired": true + } + ] }, - "severity" : "MEDIUM", - "exploitabilityScore" : 3.9, - "impactScore" : 6.4, - "acInsufInfo" : false, - "obtainAllPrivilege" : false, - "obtainUserPrivilege" : false, - "obtainOtherPrivilege" : false, - "userInteractionRequired" : false - } - }, - "publishedDate" : "2019-10-09T22:15Z", - "lastModifiedDate" : "2019-10-11T13:19Z" - }, { - "cve" : { - "data_type" : "CVE", - "data_format" : "MITRE", - "data_version" : "4.0", - "CVE_data_meta" : { - "ID" : "CVE-2019-1010180", - "ASSIGNER" : "cve@mitre.org" - }, - "problemtype" : { - "problemtype_data" : [ { - "description" : [ { - "lang" : "en", - "value" : "CWE-119" - } ] - } ] - }, - "references" : { - "reference_data" : [ { - "url" : "http://www.securityfocus.com/bid/109367", - "name" : "109367", - "refsource" : "BID", - "tags" : [ "Third Party Advisory", "VDB Entry" ] - }, { - "url" : "https://sourceware.org/bugzilla/show_bug.cgi?id=23657", - "name" : "https://sourceware.org/bugzilla/show_bug.cgi?id=23657", - "refsource" : "MISC", - "tags" : [ "Exploit", "Issue Tracking", "Third Party Advisory" ] - } ] - }, - "description" : { - "description_data" : [ { - "lang" : "en", - "value" : "GNU gdb All versions is affected by: Buffer Overflow - Out of bound memory access. The impact is: Deny of Service, Memory Disclosure, and Possible Code Execution. The component is: The main gdb module. The attack vector is: Open an ELF for debugging. The fixed version is: Not fixed yet." - } ] + "weaknesses": [ + { + "source": "secalert@redhat.com", + "type": "Secondary", + "description": [ + { + "lang": "en", + "value": "CWE-648" + } + ] + }, + { + "source": "nvd@nist.gov", + "type": "Primary", + "description": [ + { + "lang": "en", + "value": "CWE-863" + } + ] + } + ], + "configurations": [ + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:a:artifex:ghostscript:*:*:*:*:*:*:*:*", + "versionEndExcluding": "9.50", + "matchCriteriaId": "1F129EB4-EEB2-46F1-8DAA-E016D7EE1356" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:a:redhat:openshift_container_platform:3.11:*:*:*:*:*:*:*", + "matchCriteriaId": "2F87326E-0B56-4356-A889-73D026DB1D4B" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:a:redhat:openshift_container_platform:4.1:*:*:*:*:*:*:*", + "matchCriteriaId": "064E7BDD-4EF0-4A0D-A38D-8C75BAFEDCEF" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:fedoraproject:fedora:29:*:*:*:*:*:*:*", + "matchCriteriaId": "D100F7CE-FC64-4CC6-852A-6136D72DA419" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:fedoraproject:fedora:30:*:*:*:*:*:*:*", + "matchCriteriaId": "97A4B8DF-58DA-4AB6-A1F9-331B36409BA3" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:fedoraproject:fedora:31:*:*:*:*:*:*:*", + "matchCriteriaId": "80F0FA5D-8D3B-4C0E-81E2-87998286AF33" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:opensuse:leap:15.0:*:*:*:*:*:*:*", + "matchCriteriaId": "F1E78106-58E6-4D59-990F-75DA575BFAD9" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:opensuse:leap:15.1:*:*:*:*:*:*:*", + "matchCriteriaId": "B620311B-34A3-48A6-82DF-6F078D7A4493" + } + ] + } + ] + }, + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:o:debian:debian_linux:8.0:*:*:*:*:*:*:*", + "matchCriteriaId": "C11E6FB0-C8C0-4527-9AA0-CB9B316F8F43" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*", + "matchCriteriaId": "DEECE5FC-CACF-4496-A3E7-164736409252" + }, + { + "vulnerable": true, + "criteria": "cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:*", + "matchCriteriaId": "07B237A9-69A3-4A9C-9DA0-4E06BD37AE73" + } + ] + } + ] + } + ], + "references": [ + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-09/msg00088.html", + "source": "secalert@redhat.com", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-09/msg00090.html", + "source": "secalert@redhat.com", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "https://access.redhat.com/errata/RHBA-2019:2824", + "source": "secalert@redhat.com", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://access.redhat.com/errata/RHSA-2019:2594", + "source": "secalert@redhat.com", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-14811", + "source": "secalert@redhat.com", + "tags": [ + "Exploit", + "Issue Tracking", + "Mitigation", + "Patch", + "Third Party Advisory" + ] + }, + { + "url": "https://lists.debian.org/debian-lts-announce/2019/09/msg00007.html", + "source": "secalert@redhat.com", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/6AATIHU32MYKUOXQDJQU4X4DDVL7NAY3/", + "source": "secalert@redhat.com" + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/LBUC4DBBJTRFNCR3IODBV4IXB2C2HI3V/", + "source": "secalert@redhat.com" + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/ZP34D27RKYV2POJ3NJLSVCHUA5V5C45A/", + "source": "secalert@redhat.com" + }, + { + "url": "https://seclists.org/bugtraq/2019/Sep/15", + "source": "secalert@redhat.com", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "https://security.gentoo.org/glsa/202004-03", + "source": "secalert@redhat.com", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://www.debian.org/security/2019/dsa-4518", + "source": "secalert@redhat.com", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-09/msg00088.html", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://lists.opensuse.org/opensuse-security-announce/2019-09/msg00090.html", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "https://access.redhat.com/errata/RHBA-2019:2824", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://access.redhat.com/errata/RHSA-2019:2594", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-14811", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Exploit", + "Issue Tracking", + "Mitigation", + "Patch", + "Third Party Advisory" + ] + }, + { + "url": "https://lists.debian.org/debian-lts-announce/2019/09/msg00007.html", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/6AATIHU32MYKUOXQDJQU4X4DDVL7NAY3/", + "source": "af854a3a-2127-422b-91ae-364da2661108" + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/LBUC4DBBJTRFNCR3IODBV4IXB2C2HI3V/", + "source": "af854a3a-2127-422b-91ae-364da2661108" + }, + { + "url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/ZP34D27RKYV2POJ3NJLSVCHUA5V5C45A/", + "source": "af854a3a-2127-422b-91ae-364da2661108" + }, + { + "url": "https://seclists.org/bugtraq/2019/Sep/15", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "https://security.gentoo.org/glsa/202004-03", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory" + ] + }, + { + "url": "https://www.debian.org/security/2019/dsa-4518", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Third Party Advisory" + ] + } + ] } }, - "configurations" : { - "CVE_data_version" : "4.0", - "nodes" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:gnu:gdb:*:*:*:*:*:*:*:*" - } ] - } ] - }, - "impact" : { - "baseMetricV3" : { - "cvssV3" : { - "version" : "3.0", - "vectorString" : "CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", - "attackVector" : "LOCAL", - "attackComplexity" : "LOW", - "privilegesRequired" : "NONE", - "userInteraction" : "REQUIRED", - "scope" : "UNCHANGED", - "confidentialityImpact" : "HIGH", - "integrityImpact" : "HIGH", - "availabilityImpact" : "HIGH", - "baseScore" : 7.8, - "baseSeverity" : "HIGH" - }, - "exploitabilityScore" : 1.8, - "impactScore" : 5.9 - }, - "baseMetricV2" : { - "cvssV2" : { - "version" : "2.0", - "vectorString" : "AV:N/AC:M/Au:N/C:P/I:P/A:P", - "accessVector" : "NETWORK", - "accessComplexity" : "MEDIUM", - "authentication" : "NONE", - "confidentialityImpact" : "PARTIAL", - "integrityImpact" : "PARTIAL", - "availabilityImpact" : "PARTIAL", - "baseScore" : 6.8 + { + "cve": { + "id": "CVE-2019-17365", + "sourceIdentifier": "cve@mitre.org", + "published": "2019-10-09T22:15:10.670", + "lastModified": "2025-01-15T14:29:23.370", + "vulnStatus": "Modified", + "cveTags": [], + "descriptions": [ + { + "lang": "en", + "value": "Nix through 2.3 allows local users to gain access to an arbitrary user's account because the parent directory of the user-profile directories is world writable." + }, + { + "lang": "es", + "value": "Nix versiones hasta 2.3, permite a usuarios locales conseguir acceso a la cuenta de un usuario arbitrario porque el directorio principal de los directorios de perfil de usuario son de tipo world writable." + } + ], + "metrics": { + "cvssMetricV31": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "3.1", + "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", + "baseScore": 7.8, + "baseSeverity": "HIGH", + "attackVector": "LOCAL", + "attackComplexity": "LOW", + "privilegesRequired": "LOW", + "userInteraction": "NONE", + "scope": "UNCHANGED", + "confidentialityImpact": "HIGH", + "integrityImpact": "HIGH", + "availabilityImpact": "HIGH" + }, + "exploitabilityScore": 1.8, + "impactScore": 5.9 + } + ], + "cvssMetricV2": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "2.0", + "vectorString": "AV:L/AC:L/Au:N/C:P/I:P/A:P", + "baseScore": 4.6, + "accessVector": "LOCAL", + "accessComplexity": "LOW", + "authentication": "NONE", + "confidentialityImpact": "PARTIAL", + "integrityImpact": "PARTIAL", + "availabilityImpact": "PARTIAL" + }, + "baseSeverity": "MEDIUM", + "exploitabilityScore": 3.9, + "impactScore": 6.4, + "acInsufInfo": false, + "obtainAllPrivilege": false, + "obtainUserPrivilege": false, + "obtainOtherPrivilege": false, + "userInteractionRequired": false + } + ] }, - "severity" : "MEDIUM", - "exploitabilityScore" : 8.6, - "impactScore" : 6.4, - "acInsufInfo" : false, - "obtainAllPrivilege" : false, - "obtainUserPrivilege" : false, - "obtainOtherPrivilege" : false, - "userInteractionRequired" : true - } - }, - "publishedDate" : "2019-07-24T13:15Z", - "lastModifiedDate" : "2019-08-01T15:39Z" - }, { - "cve" : { - "data_type" : "CVE", - "data_format" : "MITRE", - "data_version" : "4.0", - "CVE_data_meta" : { - "ID" : "CVE-2019-1010204", - "ASSIGNER" : "cve@mitre.org" - }, - "problemtype" : { - "problemtype_data" : [ { - "description" : [ { - "lang" : "en", - "value" : "CWE-125" - }, { - "lang" : "en", - "value" : "CWE-20" - } ] - } ] - }, - "references" : { - "reference_data" : [ { - "url" : "https://security.netapp.com/advisory/ntap-20190822-0001/", - "name" : "https://security.netapp.com/advisory/ntap-20190822-0001/", - "refsource" : "CONFIRM", - "tags" : [ ] - }, { - "url" : "https://sourceware.org/bugzilla/show_bug.cgi?id=23765", - "name" : "https://sourceware.org/bugzilla/show_bug.cgi?id=23765", - "refsource" : "MISC", - "tags" : [ "Issue Tracking", "Third Party Advisory" ] - } ] - }, - "description" : { - "description_data" : [ { - "lang" : "en", - "value" : "GNU binutils gold gold v1.11-v1.16 (GNU binutils v2.21-v2.31.1) is affected by: Improper Input Validation, Signed/Unsigned Comparison, Out-of-bounds Read. The impact is: Denial of service. The component is: gold/fileread.cc:497, elfcpp/elfcpp_file.h:644. The attack vector is: An ELF file with an invalid e_shoff header field must be opened." - } ] + "weaknesses": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "description": [ + { + "lang": "en", + "value": "CWE-276" + } + ] + } + ], + "configurations": [ + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:a:nixos:nix:*:*:*:*:*:*:*:*", + "versionEndIncluding": "2.3", + "matchCriteriaId": "41CBEDE7-C5CA-4533-8F81-940E20658FDF" + } + ] + } + ] + } + ], + "references": [ + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/09/4", + "source": "cve@mitre.org", + "tags": [ + "Exploit", + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/10/1", + "source": "cve@mitre.org", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/17/3", + "source": "cve@mitre.org", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/09/4", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Exploit", + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/10/1", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + }, + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/17/3", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Third Party Advisory" + ] + } + ] } }, - "configurations" : { - "CVE_data_version" : "4.0", - "nodes" : [ { - "operator" : "OR", - "cpe_match" : [ { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:gnu:binutils:*:*:*:*:*:*:*:*", - "versionStartIncluding" : "2.21", - "versionEndIncluding" : "2.31.1" - }, { - "vulnerable" : true, - "cpe23Uri" : "cpe:2.3:a:gnu:binutils_gold:*:*:*:*:*:*:*:*", - "versionStartIncluding" : "1.11", - "versionEndIncluding" : "1.16" - } ] - } ] - }, - "impact" : { - "baseMetricV3" : { - "cvssV3" : { - "version" : "3.0", - "vectorString" : "CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H", - "attackVector" : "LOCAL", - "attackComplexity" : "LOW", - "privilegesRequired" : "NONE", - "userInteraction" : "REQUIRED", - "scope" : "UNCHANGED", - "confidentialityImpact" : "NONE", - "integrityImpact" : "NONE", - "availabilityImpact" : "HIGH", - "baseScore" : 5.5, - "baseSeverity" : "MEDIUM" + { + "cve": { + "id": "CVE-2019-18192", + "sourceIdentifier": "cve@mitre.org", + "published": "2019-10-17T20:15:12.707", + "lastModified": "2024-11-21T04:32:47.937", + "vulnStatus": "Modified", + "cveTags": [], + "descriptions": [ + { + "lang": "en", + "value": "GNU Guix 1.0.1 allows local users to gain access to an arbitrary user's account because the parent directory of the user-profile directories is world writable, a similar issue to CVE-2019-17365." + }, + { + "lang": "es", + "value": "GNU Guix versión 1.0.1, permite a los usuarios locales conseguir acceso a la cuenta de un usuario arbitrario porque el directorio principal de los directorios de perfil de usuario son escribibles por todo el mundo, un problema similar a CVE-2019-17365." + } + ], + "metrics": { + "cvssMetricV31": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "3.1", + "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", + "baseScore": 7.8, + "baseSeverity": "HIGH", + "attackVector": "LOCAL", + "attackComplexity": "LOW", + "privilegesRequired": "LOW", + "userInteraction": "NONE", + "scope": "UNCHANGED", + "confidentialityImpact": "HIGH", + "integrityImpact": "HIGH", + "availabilityImpact": "HIGH" + }, + "exploitabilityScore": 1.8, + "impactScore": 5.9 + } + ], + "cvssMetricV2": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "cvssData": { + "version": "2.0", + "vectorString": "AV:L/AC:L/Au:N/C:P/I:P/A:P", + "baseScore": 4.6, + "accessVector": "LOCAL", + "accessComplexity": "LOW", + "authentication": "NONE", + "confidentialityImpact": "PARTIAL", + "integrityImpact": "PARTIAL", + "availabilityImpact": "PARTIAL" + }, + "baseSeverity": "MEDIUM", + "exploitabilityScore": 3.9, + "impactScore": 6.4, + "acInsufInfo": false, + "obtainAllPrivilege": false, + "obtainUserPrivilege": false, + "obtainOtherPrivilege": false, + "userInteractionRequired": false + } + ] }, - "exploitabilityScore" : 1.8, - "impactScore" : 3.6 - }, - "baseMetricV2" : { - "cvssV2" : { - "version" : "2.0", - "vectorString" : "AV:N/AC:M/Au:N/C:N/I:N/A:P", - "accessVector" : "NETWORK", - "accessComplexity" : "MEDIUM", - "authentication" : "NONE", - "confidentialityImpact" : "NONE", - "integrityImpact" : "NONE", - "availabilityImpact" : "PARTIAL", - "baseScore" : 4.3 - }, - "severity" : "MEDIUM", - "exploitabilityScore" : 8.6, - "impactScore" : 2.9, - "acInsufInfo" : false, - "obtainAllPrivilege" : false, - "obtainUserPrivilege" : false, - "obtainOtherPrivilege" : false, - "userInteractionRequired" : true + "weaknesses": [ + { + "source": "nvd@nist.gov", + "type": "Primary", + "description": [ + { + "lang": "en", + "value": "CWE-732" + } + ] + } + ], + "configurations": [ + { + "nodes": [ + { + "operator": "OR", + "negate": false, + "cpeMatch": [ + { + "vulnerable": true, + "criteria": "cpe:2.3:a:gnu:guix:1.0.1:*:*:*:*:*:*:*", + "matchCriteriaId": "EBA9DBA1-9FDE-48F6-ACEB-8D9BFA91A4EE" + } + ] + } + ] + } + ], + "references": [ + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/17/3", + "source": "cve@mitre.org", + "tags": [ + "Mailing List", + "Patch", + "Third Party Advisory" + ] + }, + { + "url": "https://issues.guix.gnu.org/issue/37744", + "source": "cve@mitre.org", + "tags": [ + "Exploit", + "Issue Tracking", + "Third Party Advisory" + ] + }, + { + "url": "http://www.openwall.com/lists/oss-security/2019/10/17/3", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Mailing List", + "Patch", + "Third Party Advisory" + ] + }, + { + "url": "https://issues.guix.gnu.org/issue/37744", + "source": "af854a3a-2127-422b-91ae-364da2661108", + "tags": [ + "Exploit", + "Issue Tracking", + "Third Party Advisory" + ] + } + ] } - }, - "publishedDate" : "2019-07-23T14:15Z", - "lastModifiedDate" : "2019-08-22T07:15Z" - }, { - "cve" : { - "data_type" : "CVE", - "data_format" : "MITRE", - "data_version" : "4.0", - "CVE_data_meta" : { - "ID" : "CVE-2019-18192", - "ASSIGNER" : "cve@mitre.org" - }, - "problemtype" : { - "problemtype_data" : [ { - "description" : [ ] - } ] - }, - "references" : { - "reference_data" : [ { - "url" : "http://www.openwall.com/lists/oss-security/2019/10/17/3", - "name" : "[oss-security] 20191017 CVE-2019-18192: Insecure permissions on Guix profile directory", - "refsource" : "MLIST", - "tags" : [ ] - }, { - "url" : "https://issues.guix.gnu.org/issue/37744", - "name" : "https://issues.guix.gnu.org/issue/37744", - "refsource" : "MISC", - "tags" : [ ] - } ] - }, - "description" : { - "description_data" : [ { - "lang" : "en", - "value" : "GNU Guix 1.0.1 allows local users to gain access to an arbitrary user's account because the parent directory of the user-profile directories is world writable, a similar issue to CVE-2019-17365." - } ] - } - }, - "configurations" : { - "CVE_data_version" : "4.0", - "nodes" : [ ] - }, - "impact" : { }, - "publishedDate" : "2019-10-17T20:15Z", - "lastModifiedDate" : "2019-10-17T20:29Z" - } ] + } + ] } diff --git a/tests/cve.scm b/tests/cve.scm index 90ada2b647..c80059e81f 100644 --- a/tests/cve.scm +++ b/tests/cve.scm @@ -22,6 +22,8 @@ #:use-module (srfi srfi-19) #:use-module (srfi srfi-64)) +;; Generated from the 2019 database : +;; jq -M '.vulnerabilities |= map(select(.cve.id | IN("CVE-2019-14811", "CVE-2019-17365", "CVE-2019-1010180", "CVE-2019-1010204", "CVE-2019-18192", "CVE-2019-0001"))) | .totalResults = (.vulnerabilities | length) | .resultsPerPage = (.vulnerabilities | length)' (define %sample (search-path %load-path "tests/cve-sample.json")) @@ -31,23 +33,19 @@ (define %expected-vulnerabilities ;; What we should get when reading %SAMPLE. (list - (vulnerability "CVE-2019-0001" - ;; Only the "a" CPE configurations are kept; the "o" - ;; configurations are discarded. - '(("juniper" "junos" (or "18.2" (or "18.21-s3" "18.21-s4"))))) - (vulnerability "CVE-2019-0005" - '(("juniper" "junos" (or "18.1" "18.11")))) - ;; CVE-2019-0005 has no "a" configurations. - (vulnerability "CVE-2019-14811" - '(("artifex" "ghostscript" (< "9.28")))) - (vulnerability "CVE-2019-17365" - '(("nixos" "nix" (<= "2.3")))) - (vulnerability "CVE-2019-1010180" - '(("gnu" "gdb" _))) ;any version (vulnerability "CVE-2019-1010204" '(("gnu" "binutils" (and (>= "2.21") (<= "2.31.1"))) ("gnu" "binutils_gold" (and (>= "1.11") (<= "1.16"))))) - ;; CVE-2019-18192 has no associated configurations. + (vulnerability "CVE-2019-1010180" + '(("gnu" "gdb" (< "9.1")))) + (vulnerability "CVE-2019-14811" + '(("artifex" "ghostscript" (< "9.50")))) + (vulnerability "CVE-2019-17365" + '(("nixos" "nix" (<= "2.3")))) + (vulnerability "CVE-2019-18192" + '(("gnu" "guix" "1.0.1"))) + ;; Only the "a" CPE configurations are kept; the "o" configurations are discarded. + ;; This is why CVE-2019-0001 doesn't appear here. )) @@ -55,13 +53,12 @@ (test-equal "json->cve-items" '("CVE-2019-0001" - "CVE-2019-0005" + "CVE-2019-1010204" + "CVE-2019-1010180" "CVE-2019-14811" "CVE-2019-17365" - "CVE-2019-1010180" - "CVE-2019-1010204" "CVE-2019-18192") - (map (compose cve-id cve-item-cve) + (map cve-item-id (call-with-input-file %sample json->cve-items))) (test-equal "cve-item-published-date" @@ -75,32 +72,32 @@ (call-with-input-file %sample json->vulnerabilities)) (test-equal "vulnerabilities->lookup-proc" - (list (list (third %expected-vulnerabilities)) ;ghostscript - (list (third %expected-vulnerabilities)) + (list (list (first %expected-vulnerabilities)) ;binutils + '() + (list (first %expected-vulnerabilities)) '() - (list (fifth %expected-vulnerabilities)) ;gdb - (list (fifth %expected-vulnerabilities)) + (list (second %expected-vulnerabilities)) ;gdb + (list (second %expected-vulnerabilities)) - (list (fourth %expected-vulnerabilities)) ;nix + (list (third %expected-vulnerabilities)) ;ghostscript + (list (third %expected-vulnerabilities)) '() - (list (sixth %expected-vulnerabilities)) ;binutils - '() - (list (sixth %expected-vulnerabilities)) + (list (fourth %expected-vulnerabilities)) ;nix '()) (let* ((vulns (call-with-input-file %sample json->vulnerabilities)) (lookup (vulnerabilities->lookup-proc vulns))) - (list (lookup "ghostscript") - (lookup "ghostscript" "9.27") - (lookup "ghostscript" "9.28") - (lookup "gdb") - (lookup "gdb" "42.0") - (lookup "nix") - (lookup "nix" "2.4") - (lookup "binutils" "2.31.1") + (list (lookup "binutils" "2.31.1") (lookup "binutils" "2.10") (lookup "binutils_gold" "1.11") - (lookup "binutils" "2.32")))) + (lookup "binutils" "2.32") + (lookup "gdb") + (lookup "gdb" "9.0") + (lookup "ghostscript") + (lookup "ghostscript" "9.27") + (lookup "ghostscript" "9.51") + (lookup "nix") + (lookup "nix" "2.4")))) (test-end "cve") |