forked from tribes/guix
Compare commits
93 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ea6f99ccd | |||
| d22e33ea60 | |||
| 137491a68e | |||
| 091c121514 | |||
| bc3e92e673 | |||
| 7208782e20 | |||
| 0c3f020dac | |||
| 60f7c740f8 | |||
| 42ed3aa37a | |||
| cd22c1ad8f | |||
| 17f801ee5e | |||
| 3eeff7cc21 | |||
| ea44e60c30 | |||
| ebf496e893 | |||
| 41fd9df171 | |||
| bbb223548c | |||
| 2fef3e0fed | |||
| 3ce565ecaf | |||
| 7cdf8b3c5b | |||
| 55c1c939e2 | |||
| dceb57d6d9 | |||
| f571658b70 | |||
| c144b645bb | |||
| 78ea5dd4af | |||
| 0a88a73fa9 | |||
| 788e57cba4 | |||
| d9d725c991 | |||
| 7ec8a42a2f | |||
| b408c255ac | |||
| 327409219d | |||
| 56644e8eea | |||
| bfcb8b97ab | |||
| 93318a0e10 | |||
| be02d52548 | |||
| 73a8f8daab | |||
| 08235b1973 | |||
| 03e0d52f32 | |||
| c5e9b92f55 | |||
| 47be4e3308 | |||
| 163f2ebacb | |||
| aaf135adf7 | |||
| 1f5c8dd270 | |||
| 7095f1b42e | |||
| 3691bb640d | |||
| d33bc4b598 | |||
| 5fb2dadefc | |||
| 93b5b6f0c7 | |||
| f0e22ae62c | |||
| e3a708ed79 | |||
| 365dbc5b1c | |||
| 0a8acc0059 | |||
| 425aa1bf7c | |||
| 3b90fc5b3c | |||
| 785f4c6ed9 | |||
| 1b08655ef8 | |||
| 2296d75f8d | |||
| 3c5ad0ebc0 | |||
| af653b283c | |||
| 0b5e1ada2e | |||
| 05b247befe | |||
| 7aeb5d0483 | |||
| 7cd78468a2 | |||
| 0218c4136a | |||
| d768c5c273 | |||
| 76e3a33a1d | |||
| 504c8a3592 | |||
| 5d42aec734 | |||
| b990bf1d54 | |||
| af442f4a25 | |||
| b216fbd3e5 | |||
| 510e367d5e | |||
| 1b135e3bb5 | |||
| af265cd44a | |||
| d764999b2b | |||
| deba95e558 | |||
| 682b4d9b6f | |||
| 1b8583327d | |||
| 3e73fb5fad | |||
| ee567ba7b9 | |||
| 109e9d4a2f | |||
| ea8037f1fd | |||
| bf590448eb | |||
| 5799e25293 | |||
| db729644d9 | |||
| 6dfc28ab1e | |||
| 3f3cec8993 | |||
| 829b7e108d | |||
| 684b1ab605 | |||
| 695243cbda | |||
| 36ae0026e0 | |||
| 432daf5e2b | |||
| 8b5e419c25 | |||
| 5f221c486e |
+394
@@ -34106,6 +34106,300 @@ Zabbix server port.
|
||||
|
||||
@c %end of fragment
|
||||
|
||||
@subsubheading collectd Service
|
||||
@cindex collectd
|
||||
collectd is a daemon which collects, stores, transports, and visualizes
|
||||
system and application performance metrics in a variety of ways.
|
||||
|
||||
@defvar collectd-service-type
|
||||
This is the service type for the @uref{https://collectd.org/, collectd}
|
||||
service. Its value must be a @code{collectd-configuration} record:
|
||||
|
||||
@lisp
|
||||
(service collectd-service-type
|
||||
(collectd-configuration
|
||||
(plugins
|
||||
(list
|
||||
(collectd-plugin-generic
|
||||
(name "cpu")
|
||||
(options '((ReportByCpu . #t)
|
||||
(ReportByState . #t)
|
||||
(ValuesPercentage . #t))))))))
|
||||
@end lisp
|
||||
|
||||
The service may be extended to add new plugins:
|
||||
|
||||
@lisp
|
||||
(simple-service 'collectd-memory
|
||||
collectd-service-type
|
||||
(list
|
||||
(collectd-plugin-generic
|
||||
(name "memory")
|
||||
(options '((ValuesAbsolute . #t)
|
||||
(ValusPercentage . #t))))))
|
||||
@end lisp
|
||||
@end defvar
|
||||
|
||||
|
||||
@c %start of fragment
|
||||
|
||||
@deftp {Data Type} collectd-configuration
|
||||
Available @code{collectd-configuration} fields are:
|
||||
|
||||
@table @asis
|
||||
@item @code{collectd} (default: @code{collectd}) (type: package)
|
||||
The collectd package to use.
|
||||
|
||||
@item @code{base-directory} (default: @code{"/var/lib/collectd"}) (type: string)
|
||||
Sets the base directory. This is the directory beneath which all
|
||||
@acronym{RRD,round-robin database} files are created. Possibly more
|
||||
subdirectories are created. This is also the working directory for
|
||||
collectd.
|
||||
|
||||
@item @code{auto-load-plugins?} (default: @code{#f}) (type: boolean)
|
||||
When set to @code{#f}, plugins must be loaded explicitly, by setting the
|
||||
@code{load-plugin?} field of each plugin configuration to @code{#t}. If
|
||||
a @code{<Plugin ...>} block is encountered and no configuration handling
|
||||
callback for this plugin has been registered, a warning is logged and
|
||||
the block is ignored.
|
||||
|
||||
When set to @code{#t}, each @code{<Plugin ...>} block acts as if it was
|
||||
immediately preceded by a @code{LoadPlugin} statement. @code{LoadPlugin}
|
||||
statements are still required for plugins that don't provide any
|
||||
configuration, e.g. the @code{Load} plugin.
|
||||
|
||||
@item @code{collect-internal-stats?} (default: @code{#f}) (type: boolean)
|
||||
When @code{#t}, various statistics about the collectd daemon will be
|
||||
collected, with "collectd" as the plugin name.
|
||||
|
||||
@item @code{type-databases} (type: list-of-file-likes)
|
||||
One or more files that contain the data-set descriptions. See
|
||||
@code{types.db(5)} for a description of the format of these files.
|
||||
|
||||
@item @code{interval} (default: @code{60}) (type: maybe-seconds)
|
||||
Configures the interval in which to query the read plugins. Smaller
|
||||
values lead to a higher system load produced by collectd, while higher
|
||||
values lead to more coarse statistics. Warning: You should set this
|
||||
once and then never touch it again. If you do, you will have to delete
|
||||
all your RRD files or know some serious RRDtool magic! (Assuming you're
|
||||
using the RRDtool or RRDCacheD plugin.)
|
||||
|
||||
@item @code{max-read-interval} (default: @code{86400}) (type: seconds)
|
||||
A read plugin doubles the interval between queries after each failed
|
||||
attempt to get data. This options limits the maximum value of the
|
||||
interval.
|
||||
|
||||
@item @code{timeout} (type: maybe-integer)
|
||||
Consider a value list "missing" when no update has been read or received
|
||||
for @code{Iterations} iterations. By default, collectd considers a
|
||||
value list missing when no update has been received for twice the update
|
||||
interval. Since this setting uses iterations, the maximum allowed time
|
||||
without update depends on the @code{Interval} information contained in
|
||||
each value list. This is used in the @code{Threshold} configuration to
|
||||
dispatch notifications about missing values, see
|
||||
@code{collectd-threshold(5)} for details.
|
||||
|
||||
@item @code{read-threads} (default: @code{5}) (type: integer)
|
||||
Number of threads to start for reading plugins. You may want to
|
||||
increase this if you have more than five plugins that take a long time
|
||||
to read. Mostly those are plugins that do network-IO. Setting this to
|
||||
a value higher than the number of registered read callbacks is not
|
||||
recommended.
|
||||
|
||||
@item @code{write-threads} (default: @code{5}) (type: integer)
|
||||
Number of threads to start for dispatching value lists to write plugins.
|
||||
You may want to increase this if you have more than five plugins that
|
||||
may take relatively long to write to.
|
||||
|
||||
@item @code{write-queue-limit-high} (type: maybe-integer)
|
||||
Metrics are read by the read threads and then put into a queue to be
|
||||
handled by the write threads. If one of the write plugins is slow (e.g.
|
||||
network timeouts, I/O saturation of the disk) this queue will grow. In
|
||||
order to avoid running into memory issues in such a case, you can limit
|
||||
the size of this queue. If there are @code{write-queue-limit-high}
|
||||
metrics in the queue, any new metrics will be dropped. If the number of
|
||||
metrics currently in the queue is between @code{write-queue-limit-low}
|
||||
and @code{write-queue-limit-high}, the metric is dropped with a
|
||||
probability that is proportional to the number of metrics in the queue
|
||||
(i.e. it increases linearly until it reaches 100%).
|
||||
|
||||
@item @code{write-queue-limit-low} (type: maybe-integer)
|
||||
If there are less than @code{write-queue-limit-low} metrics in the
|
||||
queue, all new metrics will be enqueued. If
|
||||
@code{write-queue-limit-high} is set to non-zero and
|
||||
@code{write-queue-limit-low} is unset, the latter will default to half
|
||||
of @code{write-queue-limit-high}.
|
||||
|
||||
@item @code{host-name} (type: maybe-string)
|
||||
Sets the hostname that identifies a host. If you omit this setting, the
|
||||
hostname will be determined using the @code{gethostname(2)} system call.
|
||||
|
||||
@item @code{fully-qualified-domain-name-lookup?} (default: @code{#t}) (type: boolean)
|
||||
If @code{host-name} is determined automatically, this setting controls
|
||||
whether or not the daemon should try to figure out the
|
||||
@acronym{FQDN,fully qualified domain name}. This is done using a lookup
|
||||
of the name returned by @code{gethostname(2)}.
|
||||
|
||||
@item @code{plugins} (default: @code{()}) (type: list-of-collectd-plugins)
|
||||
Configurations for collectd plugins.
|
||||
|
||||
@end table
|
||||
|
||||
@end deftp
|
||||
|
||||
|
||||
@c %end of fragment
|
||||
|
||||
@c %start of fragment
|
||||
|
||||
@deftp {Data Type} collectd-plugin-generic
|
||||
|
||||
The @code{collectd-plugin-generic} record can represent most collectd
|
||||
plugins.
|
||||
|
||||
This example configuration will enable the CPU usage reporting plugin.
|
||||
See the @code{collectd.conf(5)} man page for a list of plugins and their
|
||||
options.
|
||||
|
||||
@lisp
|
||||
(collectd-plugin-generic
|
||||
(name "cpu")
|
||||
(options '((ReportByCpu . #t)
|
||||
(ReportByState . #t)
|
||||
(ValuesPercentage . #t))))
|
||||
@end lisp
|
||||
|
||||
Available @code{collectd-plugin-generic} fields are:
|
||||
|
||||
@table @asis
|
||||
@item @code{load-plugin?} (default: @code{#t}) (type: boolean)
|
||||
When @code{#t}, include a @code{LoadPlugin} directive in the
|
||||
configuration. This interacts with @code{auto-load-plugins?} in
|
||||
@code{collectd-configuration}; if @code{auto-load-plugins?} is
|
||||
@code{#f}, all plugins should set this to @code{#t}.
|
||||
|
||||
@item @code{name} (type: string)
|
||||
The name of the plugin to configure.
|
||||
|
||||
@item @code{options} (default: @code{()}) (type: plugin-options)
|
||||
Configuration options for the plugin, as an alist. See
|
||||
@code{collect.conf(5)} for the available plugin options.
|
||||
|
||||
@end table
|
||||
|
||||
@end deftp
|
||||
|
||||
|
||||
@c %end of fragment
|
||||
|
||||
|
||||
|
||||
@c %start of fragment
|
||||
|
||||
@deftp {Data Type} collectd-plugin-python
|
||||
|
||||
The @code{collectd-plugin-python} configuration record holds
|
||||
configuration for collectd plugins written in Python. See the
|
||||
@code{collectd-python(5)} man page for more information on Python
|
||||
support in collectd.
|
||||
|
||||
Guix packages listed in the @code{packages} field will be added to the
|
||||
profile used to run collectd. This example configuration will load a
|
||||
Python plugin named @code{myplugin}, whose code is in the
|
||||
@code{python-myplugin} Guix package.
|
||||
|
||||
@lisp
|
||||
(collectd-plugin-python
|
||||
(packages (list python-myplugin))
|
||||
(module "myplugin")
|
||||
(module-options '((SomeOption . "hi")
|
||||
(AnotherOption . 123))))
|
||||
@end lisp
|
||||
|
||||
The @code{module-paths} field will emit verbatim @code{ModulePath}
|
||||
lines, for plugins not packaged for Guix. This example configuration
|
||||
loads the @code{gpio} plugin from
|
||||
@code{/home/user/projects/collectd-gpio/gpio}.
|
||||
|
||||
@lisp
|
||||
(collectd-plugin-python
|
||||
(module-paths
|
||||
(list
|
||||
"/home/user/projects/collectd-gpio/gpio"))
|
||||
(module "gpio")
|
||||
(module-options '((MonitorGPIOs 1 2 3 4))))
|
||||
@end lisp
|
||||
|
||||
The two mechanisms may be combined: a Guix-packaged Python library may
|
||||
be used by unpackaged plugin code. This example loads a
|
||||
@code{mongometrics} plugin from
|
||||
@code{/opt/collectd-mongodb/mongometrics}, and also makes the
|
||||
@code{python-pymongo} Python package available for it to use.
|
||||
|
||||
@lisp
|
||||
(collectd-plugin-python
|
||||
(packages (list python-pymongo))
|
||||
(module-paths
|
||||
(list
|
||||
"/opt/collectd-mongodb/mongometrics"))
|
||||
(module "mongometrics")
|
||||
(module-options '((Host . "localhost"))))
|
||||
@end lisp
|
||||
|
||||
Available @code{collectd-plugin-python} fields are:
|
||||
|
||||
@table @asis
|
||||
@item @code{load-plugin?} (default: @code{#t}) (type: boolean)
|
||||
When @code{#t}, include a @code{LoadPlugin} directive in the
|
||||
configuration. This interacts with @code{auto-load-plugins?} in
|
||||
@code{collectd-configuration}; if @code{collectd-configuration}'s
|
||||
@code{auto-load-plugins?} is @code{#f}, all plugins should set this to
|
||||
@code{#t}.
|
||||
|
||||
@item @code{type-databases} (default: @code{()}) (type: list-of-file-likes)
|
||||
One or more files that contain the data-set descriptions. See
|
||||
@code{types.db(5)} for a description of the format of these files.
|
||||
|
||||
@item @code{packages} (default: @code{()}) (type: list-of-packages)
|
||||
Packages to make available to the Python plugin. These can be
|
||||
dependencies of the plugin code, or may contain the plugin.
|
||||
|
||||
@item @code{module-paths} (default: @code{()}) (type: list-of-string)
|
||||
Entries to prepend to @code{sys.path}.
|
||||
|
||||
@item @code{log-traces?} (default: @code{#f}) (type: boolean)
|
||||
If a Python script throws an exception it will be logged by collectd
|
||||
with the name of the exception and the message. If you set this option
|
||||
to true it will also log the full stacktrace just like the default
|
||||
output of an interactive Python interpreter. This does not apply to the
|
||||
@code{CollectError} exception, which will never log a stacktrace. This
|
||||
should probably be set to false most of the time but is very useful for
|
||||
development and debugging of new modules.
|
||||
|
||||
@item @code{interactive?} (default: @code{#f}) (type: boolean)
|
||||
This option will cause the module to launch an interactive Python
|
||||
interpreter that reads from and writes to the terminal. Note that
|
||||
collectd will terminate right after starting up if you try to run it as
|
||||
a daemon while this option is enabled so make sure to start collectd
|
||||
with the @code{-f} option. See the @code{collectd-python(5)} man page
|
||||
for more information on this option.
|
||||
|
||||
@item @code{module} (type: string)
|
||||
The name of the Python module to import into the collectd Python
|
||||
process. The module must be available in @code{packages} or
|
||||
@code{module-paths}, and register a MPD callback.
|
||||
|
||||
@item @code{module-options} (default: @code{()}) (type: alist)
|
||||
Configuration options for the module.
|
||||
|
||||
@end table
|
||||
|
||||
@end deftp
|
||||
|
||||
|
||||
@c %end of fragment
|
||||
|
||||
|
||||
@node Kerberos Services
|
||||
@subsection Kerberos Services
|
||||
@cindex Kerberos
|
||||
@@ -35893,6 +36187,75 @@ The port on which to connect to the database.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@subsubheading sogogi
|
||||
|
||||
@cindex sogogi, WebDAV Server
|
||||
@uref{https://codeberg.org/emersion/sogogi, sogogi} is a
|
||||
server for the
|
||||
@uref{https://www.rfc-editor.org/rfc/rfc4918, WebDAV} protocol.
|
||||
|
||||
@defvar sogogi-service-type
|
||||
This is the service type for sogogi. Its value must be a
|
||||
@code{sogogi-configuration} object as in this example:
|
||||
|
||||
@lisp
|
||||
(service sogogi-service-type
|
||||
(sogogi-configuration
|
||||
(listen ":8080")
|
||||
(location
|
||||
(list
|
||||
(sogogi-location
|
||||
(path "/")
|
||||
(dir "/srv/http/")
|
||||
(grant '("all ro")))))))
|
||||
@end lisp
|
||||
@end defvar
|
||||
|
||||
@deftp {Data Type} sogogi-configuration
|
||||
Available @code{sogogi-configuration} fields are:
|
||||
|
||||
@table @asis
|
||||
@item @code{listen} (default: @code{"localhost:8080"}) (type: string)
|
||||
Listening address.
|
||||
|
||||
@item @code{location} (default: @code{()}) (type: list-of-sogogi-location)
|
||||
Local directories to expose via a HTTP path
|
||||
|
||||
@item @code{user} (default: @code{()}) (type: list-of-sogogi-user)
|
||||
Users with access to the location.
|
||||
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@deftp {Data Type} sogogi-location
|
||||
Available @code{sogogi-location} fields are:
|
||||
|
||||
@table @asis
|
||||
@item @code{path} (type: string)
|
||||
HTTP path at which the directory will be exposed.
|
||||
|
||||
@item @code{dir} (type: string)
|
||||
Path to local directory to serve.
|
||||
|
||||
@item @code{grant} (type: maybe-list-of-strings)
|
||||
Grant remote users access to the directory.
|
||||
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@deftp {Data Type} sogogi-user
|
||||
Available @code{sogogi-user} fields are:
|
||||
|
||||
@table @asis
|
||||
@item @code{name} (type: maybe-string)
|
||||
Name of the user.
|
||||
|
||||
@item @code{password} (type: maybe-string)
|
||||
Password of the user.
|
||||
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@subsubheading Mumi
|
||||
|
||||
@cindex Mumi, Debbugs Web interface
|
||||
@@ -53813,6 +54176,7 @@ an example of a service and its configuration that you could add to the
|
||||
@subsection Media Home Services
|
||||
|
||||
@cindex kodi
|
||||
|
||||
The @uref{https://kodi.tv, Kodi media center} can be run as a daemon on
|
||||
a media server. With the @code{(gnu home services kodi)} service, you
|
||||
can configure Kodi to run upon login.
|
||||
@@ -54736,6 +55100,36 @@ mouse bindings.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@cindex jellyfin
|
||||
|
||||
The @code{home-jellyfin-mpv-shim-service-type} in the @code{(gnu home
|
||||
services media)} module runs a cast client for the
|
||||
@uref{https://jellyfin.org/, Jellyfin} media system.
|
||||
|
||||
To enable, add this to your home services:
|
||||
|
||||
@lisp
|
||||
(service home-jellyfin-mpv-shim-service-type)
|
||||
@end lisp
|
||||
|
||||
The service starts only if @code{jellyfin-mpv-shim} has been configured
|
||||
with a remote server and credentials. This must be done manually, by
|
||||
launching @code{jellyfin-mpv-shim}. After configuring the server, the
|
||||
service will start automatically when you log in.
|
||||
|
||||
@defvar home-jellyfin-mpv-shim-service-type
|
||||
Type of the service which launches Jellyfin MPV Shim.
|
||||
@end defvar
|
||||
|
||||
@deftp {Data Type} home-jellyfin-mpv-shim-configuration
|
||||
Available @code{home-jellyfin-mpv-shim-configuration} fields are:
|
||||
|
||||
@table @asis
|
||||
@item @code{package} (default: @code{jellyfin-mpv-shim}) (type: package)
|
||||
The Jellyfin MPV Shim package to use.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@node Networking Home Services
|
||||
@subsection Networking Home Services
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2024, 2025 Ian Eure <ian@retrospec.tv>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -19,14 +20,20 @@
|
||||
(define-module (gnu home services media)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services desktop)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu packages kodi)
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
#:export (home-kodi-configuration
|
||||
home-kodi-service-type))
|
||||
home-kodi-service-type
|
||||
|
||||
home-jellyfin-mpv-shim-configuration
|
||||
home-jellyfin-mpv-shim-service-type))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -66,3 +73,40 @@
|
||||
(description
|
||||
"Install and configure the Kodi media center so that it runs as a Shepherd
|
||||
service.")))
|
||||
|
||||
(define-configuration home-jellyfin-mpv-shim-configuration
|
||||
(package
|
||||
(file-like jellyfin-mpv-shim)
|
||||
"The Jellyfin MPV Shim package to use"))
|
||||
|
||||
(define (jellyfin-mpv-shim-shepherd-service config)
|
||||
(list (shepherd-service
|
||||
(documentation "Jellyfin MPV Shim.")
|
||||
(provision '(jellyfin-mpv-shim jellyfin-client))
|
||||
|
||||
;; Depend on 'x11-display', which sets 'DISPLAY' if an X11 server is
|
||||
;; available, and fails to start otherwise.
|
||||
(requirement '(x11-display))
|
||||
|
||||
(modules '((srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(srfi srfi-98)))
|
||||
(start
|
||||
#~(make-forkexec-constructor
|
||||
(list
|
||||
#$(file-append
|
||||
(home-jellyfin-mpv-shim-configuration-package config)
|
||||
"/bin/jellyfin-mpv-shim"))))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
|
||||
(define-public home-jellyfin-mpv-shim-service-type
|
||||
(service-type
|
||||
(name 'home-jellyfin-mpv-shim)
|
||||
(extensions (list (service-extension home-shepherd-service-type
|
||||
jellyfin-mpv-shim-shepherd-service)
|
||||
;; Ensure 'home-x11-service-type' is instantiated so we
|
||||
;; can depend on the Shepherd 'x11-display' service.
|
||||
(service-extension home-x11-service-type
|
||||
(const #t))))
|
||||
(default-value (home-jellyfin-mpv-shim-configuration))
|
||||
(description "Run Jellyfin MPV Shim.")))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2023, 2026 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2023 Brian Cully <bjc@spork.org>
|
||||
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
@@ -193,8 +193,10 @@ PulseAudio clients to use PipeWire transparently.")
|
||||
load-module module-null-sink \
|
||||
sink_name=rtp sink_properties=\"device.description='RTP network output'\"\n"
|
||||
sock)
|
||||
;; Use a fixed sample rate to match what the receiving
|
||||
;; end is likely to expect.
|
||||
(display (string-append "\
|
||||
load-module module-rtp-send source=rtp.monitor"
|
||||
load-module module-rtp-send source=rtp.monitor rate=44100"
|
||||
(if destination-ip
|
||||
(string-append
|
||||
" destination_ip="
|
||||
|
||||
+1
-4
@@ -1498,7 +1498,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/glibc-hurd-2.41-symlink.patch \
|
||||
%D%/packages/patches/glibc-hurd-xstate.patch \
|
||||
%D%/packages/patches/glibc-hurd64-gcc-14.2-tls-bug.patch \
|
||||
%D%/packages/patches/glibc-hurd64-intr-msg-clobber.patch \
|
||||
%D%/packages/patches/glibc-ldd-powerpc.patch \
|
||||
%D%/packages/patches/glibc-ldd-x86_64.patch \
|
||||
%D%/packages/patches/glibc-locales.patch \
|
||||
@@ -1857,7 +1856,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/lirc-reproducible-build.patch \
|
||||
%D%/packages/patches/llvm-13-gcc-14.patch \
|
||||
%D%/packages/patches/lm-sensors-hwmon-attrs.patch \
|
||||
%D%/packages/patches/lsof-compat-linux-6.9.patch \
|
||||
%D%/packages/patches/lsof-fatal-test-failures.patch \
|
||||
%D%/packages/patches/lua-CVE-2014-5461.patch \
|
||||
%D%/packages/patches/lua-pkgconfig.patch \
|
||||
@@ -1983,7 +1981,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/network-manager-plugin-path.patch \
|
||||
%D%/packages/patches/newlib-getentropy.patch \
|
||||
%D%/packages/patches/nginx-socket-cloexec.patch \
|
||||
%D%/packages/patches/nickle-man-release-date.patch \
|
||||
%D%/packages/patches/nlopt_CMake-Assume-working-c-compiler-597.patch \
|
||||
%D%/packages/patches/nnpack-system-libraries.patch \
|
||||
%D%/packages/patches/nsis-env-passthru.patch \
|
||||
@@ -2086,9 +2083,9 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/podofo-gcc-14.patch \
|
||||
%D%/packages/patches/pokerth-boost.patch \
|
||||
%D%/packages/patches/pounce-readable-checks.patch \
|
||||
%D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch \
|
||||
%D%/packages/patches/procps-strtod-test.patch \
|
||||
%D%/packages/patches/prusa-slicer-add-cmake-module.patch \
|
||||
%D%/packages/patches/prusa-wxwidgets-makefile-fix.patch \
|
||||
%D%/packages/patches/pthreadpool-system-libraries.patch \
|
||||
%D%/packages/patches/python-3.11-fix-tests.patch \
|
||||
%D%/packages/patches/python-3.12-fix-tests.patch \
|
||||
|
||||
+78
-85
@@ -77,6 +77,8 @@
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages golang)
|
||||
#:use-module (gnu packages golang-build)
|
||||
#:use-module (gnu packages golang-check)
|
||||
#:use-module (gnu packages golang-compression)
|
||||
#:use-module (gnu packages golang-crypto)
|
||||
#:use-module (gnu packages golang-web)
|
||||
#:use-module (gnu packages golang-xyz)
|
||||
@@ -891,94 +893,85 @@ is like a time machine for your data.")
|
||||
(define-public restic
|
||||
(package
|
||||
(name "restic")
|
||||
(version "0.9.6")
|
||||
;; TODO Try packaging the bundled / vendored dependencies in the 'vendor/'
|
||||
;; directory.
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/restic/restic/releases/download/"
|
||||
"v" version "/restic-" version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zmh42aah32ah8w5n6ilz9bci0y2xrf8p7qshy3yf1lzm5gnbj0w"))
|
||||
(patches
|
||||
(search-patches "restic-0.9.6-fix-tests-for-go1.15.patch"))))
|
||||
(version "0.17.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/restic/restic")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1wsgq7f0bfi0i5iiwcc3hlf2lhxcnz3zfs8p8bc6l913r9hvyg1x"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
`(;; XXX: Tests failed on a newer version of Golang, newer version of
|
||||
;; restic does not provide vendor folder any longer which means - a
|
||||
;; long way of packaging missing inputs.
|
||||
#:go ,go-1.17
|
||||
#:import-path "github.com/restic/restic"
|
||||
;; We don't need to install the source code for end-user applications.
|
||||
#:install-source? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'build
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(with-directory-excursion "src/github.com/restic/restic"
|
||||
;; Disable 'restic self-update'. It makes little sense in Guix.
|
||||
(substitute* "build.go" (("selfupdate") ""))
|
||||
(setenv "HOME" (getcwd)) ; for $HOME/.cache/go-build
|
||||
(invoke "go" "run" "build.go"))))
|
||||
(list
|
||||
#:go go-1.25
|
||||
#:install-source? #f
|
||||
#:import-path "github.com/restic/restic/cmd/restic"
|
||||
#:unpack-path "github.com/restic/restic"
|
||||
#:embed-files #~(list "children" "nodes" "text")
|
||||
#:test-flags
|
||||
;; Python is required.
|
||||
#~(list "-skip" "TestStdinFromCommand|TestStdinFromCommandNoOutput")
|
||||
#:test-subdirs #~(list "../../...")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'install 'install-docs
|
||||
(lambda* (#:key import-path #:allow-other-keys)
|
||||
(with-directory-excursion (string-append "src/" import-path)
|
||||
(let* ((man "/share/man")
|
||||
(man-section (string-append man "/man")))
|
||||
;; Install all the man pages to "out".
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(install-file file
|
||||
(string-append #$output man-section
|
||||
(string-take-right file 1))))
|
||||
(find-files "doc/man" "\\.[1-9]"))))))
|
||||
(add-before 'check 'pre-check
|
||||
(lambda _
|
||||
(setenv "RESTIC_TEST_FUSE" "0"))))))
|
||||
(native-inputs
|
||||
(list go-cloud-google-com-go-storage
|
||||
go-github-com-anacrolix-fuse
|
||||
go-github-com-azure-azure-sdk-for-go-sdk-azcore
|
||||
go-github-com-azure-azure-sdk-for-go-sdk-azidentity
|
||||
go-github-com-azure-azure-sdk-for-go-sdk-storage-azblob
|
||||
go-github-com-backblaze-blazer
|
||||
go-github-com-cenkalti-backoff-v4
|
||||
go-github-com-cespare-xxhash-v2
|
||||
go-github-com-elithrar-simple-scrypt
|
||||
;; go-github-com-go-ole-go-ole ;windows only
|
||||
go-github-com-google-go-cmp
|
||||
go-github-com-hashicorp-golang-lru-v2
|
||||
go-github-com-klauspost-compress
|
||||
go-github-com-minio-minio-go-v7
|
||||
go-github-com-minio-sha256-simd
|
||||
go-github-com-ncw-swift-v2
|
||||
go-github-com-peterbourgon-unixtransport
|
||||
go-github-com-pkg-errors
|
||||
go-github-com-pkg-profile
|
||||
go-github-com-pkg-sftp
|
||||
go-github-com-pkg-xattr
|
||||
go-github-com-restic-chunker
|
||||
go-github-com-spf13-cobra
|
||||
go-github-com-spf13-pflag
|
||||
go-go-uber-org-automaxprocs
|
||||
go-golang-org-x-crypto
|
||||
go-golang-org-x-net
|
||||
go-golang-org-x-oauth2
|
||||
go-golang-org-x-sync
|
||||
go-golang-org-x-sys
|
||||
go-golang-org-x-term
|
||||
go-golang-org-x-text
|
||||
go-golang-org-x-time
|
||||
go-google-golang-org-api
|
||||
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(with-directory-excursion "src/github.com/restic/restic"
|
||||
;; Disable FUSE tests.
|
||||
(setenv "RESTIC_TEST_FUSE" "0")
|
||||
(invoke "go" "run" "build.go" "--test")))))
|
||||
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(src "src/github.com/restic/restic"))
|
||||
(install-file (string-append src "/restic")
|
||||
(string-append out "/bin"))
|
||||
#t)))
|
||||
|
||||
(add-after 'install 'install-docs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(man "/share/man")
|
||||
(man-section (string-append man "/man"))
|
||||
(src "src/github.com/restic/restic/doc/man/"))
|
||||
;; Install all the man pages to "out".
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(install-file file
|
||||
(string-append out man-section
|
||||
(string-take-right file 1))))
|
||||
(find-files src "\\.[1-9]"))
|
||||
#t)))
|
||||
|
||||
(add-after 'install-docs 'install-shell-completion
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(etc (string-append out "/etc"))
|
||||
(share (string-append out "/share")))
|
||||
(for-each
|
||||
(lambda (shell)
|
||||
(let* ((shell-name (symbol->string shell))
|
||||
(dir (string-append "etc/completion/" shell-name)))
|
||||
(mkdir-p dir)
|
||||
(invoke (string-append bin "/restic") "generate"
|
||||
(string-append "--" shell-name "-completion")
|
||||
(string-append dir "/"
|
||||
(case shell
|
||||
((bash) "restic")
|
||||
((zsh) "_restic"))))))
|
||||
'(bash zsh))
|
||||
(with-directory-excursion "etc/completion"
|
||||
(install-file "bash/restic"
|
||||
(string-append etc "/bash_completion.d"))
|
||||
(install-file "zsh/_restic"
|
||||
(string-append share "/zsh/site-functions")))
|
||||
#t))))))
|
||||
;; XXX: These packages have to be bootstrapped to break cycle with
|
||||
;; go-google-golang-org-grpc.
|
||||
go-github-com-envoyproxy-go-control-plane
|
||||
go-github-com-envoyproxy-go-control-plane-envoy))
|
||||
(home-page "https://restic.net/")
|
||||
(synopsis "Backup program with multiple revisions, encryption and more")
|
||||
(description "Restic is a program that does backups right and was designed
|
||||
|
||||
+4
-25
@@ -910,6 +910,7 @@ the store.")
|
||||
"glibc-2.40-dl-cache.patch"
|
||||
"glibc-2.37-versioned-locpath.patch"
|
||||
;; "glibc-allow-kernel-2.6.32.patch"
|
||||
"glibc-guix-locpath.patch"
|
||||
"glibc-reinstate-prlimit64-fallback.patch"
|
||||
"glibc-supported-locales.patch"
|
||||
"glibc-2.37-hurd-clock_t_centiseconds.patch"
|
||||
@@ -918,10 +919,11 @@ the store.")
|
||||
"glibc-hurd-gettyent.patch"
|
||||
"glibc-hurd-getauxval.patch"
|
||||
"glibc-hurd-pthread_setcancelstate.patch"
|
||||
"glibc-hurd-signal-fpe-exception.patch"
|
||||
"glibc-hurd-xstate.patch"
|
||||
"glibc-hurd-2.41-pthread-once.patch"
|
||||
"glibc-hurd-2.41-pthread-sigmask.patch"
|
||||
"glibc-hurd-2.41-symlink.patch"
|
||||
"glibc-hurd64-intr-msg-clobber.patch"
|
||||
"glibc-hurd64-gcc-14.2-tls-bug.patch"))
|
||||
|
||||
(define-public glibc
|
||||
@@ -940,7 +942,6 @@ the store.")
|
||||
(properties `((lint-hidden-cve . ("CVE-2024-2961"
|
||||
"CVE-2024-33601" "CVE-2024-33602"
|
||||
"CVE-2024-33600" "CVE-2024-33599"))))
|
||||
(replacement glibc/fixed)
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
|
||||
@@ -1218,17 +1219,6 @@ with the Linux kernel.")
|
||||
(license lgpl2.0+)
|
||||
(home-page "https://www.gnu.org/software/libc/")))
|
||||
|
||||
(define glibc/fixed
|
||||
(package
|
||||
(inherit glibc)
|
||||
(name "glibc")
|
||||
(source (origin
|
||||
(inherit (package-source glibc))
|
||||
;; XXX: When ungrafting, add the included patch to
|
||||
;; %glibc-patches.
|
||||
(patches (cons (search-patch "glibc-guix-locpath.patch")
|
||||
(origin-patches (package-source glibc))))))))
|
||||
|
||||
;; Define a variation of glibc which uses the default /etc/ld.so.cache, useful
|
||||
;; in FHS containers.
|
||||
(define-public glibc-for-fhs
|
||||
@@ -1555,18 +1545,7 @@ variety of options. It is an alternative to the shell \"type\" built-in
|
||||
command.")
|
||||
(license gpl3+))) ; some files are under GPLv2+
|
||||
|
||||
(define-public glibc/hurd
|
||||
(hidden-package
|
||||
(package/inherit glibc
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source glibc))
|
||||
(patches
|
||||
(append (map search-patch
|
||||
(delete "glibc-hurd64-intr-msg-clobber.patch" %glibc-patches))
|
||||
(search-patches
|
||||
"glibc-hurd-signal-fpe-exception.patch"
|
||||
"glibc-hurd-xstate.patch"))))))))
|
||||
(define-public glibc/hurd glibc)
|
||||
|
||||
(define-public glibc/hurd-headers
|
||||
(package/inherit glibc/hurd
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017, 2018 Theodoros Foradis <theodoros@foradis.org>
|
||||
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018-2021, 2023 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2018-2019 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2021, 2023, 2024 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017-2018, 2021, 2023-2024 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2022, 2023, 2025 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;; Copyright © 2021-2023, 2025 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;; Copyright © 2024 Juliana Sims <juli@incana.org>
|
||||
;;; Copyright © 2025, 2026 Cayetano Santos <csantosb@inventati.org>
|
||||
;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.com>
|
||||
;;; Copyright © 2025-2026 Sharlatan Hellseher <sharlatanus@gmail.com>
|
||||
;;; Copyright © 2022 Konstantinos Agiannis <agiannis.kon@gmail.com>
|
||||
;;; Copyright © 2015-2025 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2022, 2024, 2025 Artyom V. Poptsov <poptsov.artyom@gmail.com>
|
||||
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
|
||||
;;; Copyright © 2016, 2018 Danny Milosavljevic <dannym@scratchpost.org>
|
||||
;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
|
||||
;;; Copyright © 2020-2025 Vinicius Monego <monego@posteo.net>
|
||||
;;; Copyright © 2021 Andrew Miloradovsky <andrew@interpretmath.pw>
|
||||
@@ -24,12 +24,22 @@
|
||||
;;; Copyright © 2022, 2025 Evgeny Pisemsky <mail@pisemsky.site>
|
||||
;;; Copyright © 2025, Ekaitz Zarraga <ekaitz@elenq.tech>
|
||||
;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2020, 2023 Marius Bakke <marius@gnu.org>
|
||||
;;; Copyright © 2018, 2020-2023 Marius Bakke <marius@gnu.org>
|
||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||
;;; Copyright © 2025, 2026 Gabriel Wicki <gabriel@erlikon.ch>
|
||||
;;; Copyright © 2026 Thomas Kramer <thomas@f-si.org>
|
||||
;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
|
||||
;;; Copyright © 2018, 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018, 2020-2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
||||
;;; Copyright © 2025 Greg Hogan <code@greghogan.com>
|
||||
;;; Copyright © 2018 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
||||
;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
|
||||
;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
|
||||
;;; Copyright © 2021-2026 Peter Polidoro <peter@polidoro.io>
|
||||
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
|
||||
;;; Copyright © 2025 Thomas Guillermo Albers Raviola <thomas@thomaslabs.org>
|
||||
;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -76,6 +86,7 @@
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages cpp)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages databases)
|
||||
#:use-module (gnu packages documentation)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages embedded)
|
||||
@@ -131,6 +142,7 @@
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages regex)
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (gnu packages ruby-xyz)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages serialization)
|
||||
#:use-module (gnu packages shells)
|
||||
@@ -145,6 +157,7 @@
|
||||
#:use-module (gnu packages toolkits)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages web)
|
||||
#:use-module (gnu packages wxwidgets)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg))
|
||||
@@ -1053,6 +1066,241 @@ It simulates the netlists of the cells with ngspice and writes the
|
||||
characterization result in a liberty library file.")
|
||||
(license license:agpl3+)))
|
||||
|
||||
(define-public kicad
|
||||
(package
|
||||
(name "kicad")
|
||||
(version "10.0.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/code/kicad.git")
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32
|
||||
"1470x1276yvd8li3w25zjg73fkpl2qp4dsx7adanafq5c4l47rmc"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:out-of-source? #t
|
||||
#:tests? #f ;no tests
|
||||
#:build-type "Release"
|
||||
#:configure-flags
|
||||
,#~(list (string-append "-DOCC_INCLUDE_DIR="
|
||||
#$(file-append opencascade-occt
|
||||
"/include/opencascade"))
|
||||
;; Guix uses 'wxwidgets-sans-egl' for KiCad because
|
||||
;; wxWidgets' EGL canvas support breaks with glew-2.2.
|
||||
"-DKICAD_WAYLAND=OFF"
|
||||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
|
||||
"-DCMAKE_BUILD_TYPE=RelWithDebInfo")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-ngspice-detection
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "eeschema/CMakeLists.txt"
|
||||
(("NGSPICE_DLL_FILE=\"\\$\\{NGSPICE_DLL_FILE\\}\"")
|
||||
(string-append "NGSPICE_DLL_FILE=\"libngspice.so\""))
|
||||
(("NGSPICE_DLL_DIR=\"\\$\\{NGSPICE_DLL_DIR\\}\"")
|
||||
(string-append "NGSPICE_DLL_DIR=\""
|
||||
(dirname
|
||||
(search-input-file inputs
|
||||
"lib/libngspice.so"))
|
||||
"\"")))))
|
||||
(add-after 'install 'wrap-program
|
||||
;; Ensure correct Python at runtime.
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(python (assoc-ref inputs "python"))
|
||||
(file (string-append out "/bin/kicad"))
|
||||
(path (string-append out "/lib/python"
|
||||
,(version-major+minor (package-version
|
||||
python))
|
||||
"/site-packages:"
|
||||
(getenv "GUIX_PYTHONPATH"))))
|
||||
(wrap-program file
|
||||
`("GUIX_PYTHONPATH" ":" prefix
|
||||
(,path))
|
||||
`("PATH" ":" prefix
|
||||
(,(string-append python "/bin:"))))))))))
|
||||
(native-search-paths
|
||||
;; Currently, KiCad environment variables are single-valued
|
||||
;; (see https://gitlab.com/kicad/code/kicad/-/issues/14792).
|
||||
(list (search-path-specification
|
||||
(variable "KICAD") ;to find kicad-doc
|
||||
(files '(""))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD10_TEMPLATE_DIR")
|
||||
(files '("share/kicad/template"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD10_SYMBOL_DIR")
|
||||
(files '("share/kicad/symbols"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD10_FOOTPRINT_DIR")
|
||||
(files '("share/kicad/footprints"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD10_3DMODEL_DIR")
|
||||
(files '("share/kicad/3dmodels"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD_STOCK_DATA_HOME")
|
||||
(files '("share/kicad"))
|
||||
(separator #f))))
|
||||
(native-inputs (list boost
|
||||
desktop-file-utils
|
||||
gettext-minimal
|
||||
pkg-config
|
||||
swig-4.0
|
||||
unixodbc
|
||||
zlib))
|
||||
(inputs (list bash-minimal
|
||||
cairo
|
||||
curl
|
||||
gdk-pixbuf
|
||||
glew
|
||||
glm
|
||||
hicolor-icon-theme
|
||||
gtk+
|
||||
libgit2
|
||||
libngspice
|
||||
libspnav
|
||||
libsecret
|
||||
libsm
|
||||
mesa
|
||||
nng
|
||||
opencascade-occt
|
||||
openssl
|
||||
poppler
|
||||
protobuf
|
||||
python-wrapper
|
||||
python-wxpython
|
||||
wxwidgets-sans-egl
|
||||
(list zstd "lib")))
|
||||
(home-page "https://www.kicad.org/")
|
||||
(synopsis "Electronics Design Automation Suite")
|
||||
(description
|
||||
"Kicad is a program for the formation of printed circuit
|
||||
boards and electrical circuits. The software has a number of programs that
|
||||
perform specific functions, for example, pcbnew (Editing PCB), eeschema (editing
|
||||
electrical diagrams), gerbview (viewing Gerber files) and others.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public kicad-doc
|
||||
(package
|
||||
(name "kicad-doc")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/services/kicad-doc.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1k0ayxsy0nnv9qxkii9yrxs7jx9y3wfjpsv5yl9wql3vdg3qay69"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "-DBUILD_FORMATS=html"
|
||||
"-DLANGUAGES=en")
|
||||
#:tests? #f)) ;no test suite
|
||||
(native-inputs (list asciidoc
|
||||
gettext-minimal
|
||||
git-minimal
|
||||
perl
|
||||
perl-unicode-linebreak
|
||||
perl-yaml-tiny
|
||||
po4a
|
||||
ruby-asciidoctor/minimal
|
||||
source-highlight))
|
||||
(home-page "https://kicad.org")
|
||||
(synopsis "KiCad official documentation")
|
||||
(description "This repository contains the official KiCad documentation.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public kicad-symbols
|
||||
(package
|
||||
(name "kicad-symbols")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-symbols.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0khfnln0f2zsz5hy31nw2rr0nflb2z3s9n9f7g41g03m9l3s43v2"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs (list python-wrapper))
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no tests exist
|
||||
(home-page (package-home-page kicad))
|
||||
(synopsis "Official KiCad schematic symbol libraries")
|
||||
(description "This package contains the official KiCad schematic symbol
|
||||
libraries.")
|
||||
;; TODO: Exception: "To the extent that the creation of electronic designs
|
||||
;; that use 'Licensed Material' can be considered to be 'Adapted Material',
|
||||
;; then the copyright holder waives article 3 of the license with respect to
|
||||
;; these designs and any generated files which use data provided as part of
|
||||
;; the 'Licensed Material'."
|
||||
;; See <https://github.com/KiCad/kicad-symbols/blob/master/LICENSE.md>.
|
||||
(license license:cc-by-sa4.0)))
|
||||
|
||||
(define-public kicad-footprints
|
||||
(package
|
||||
(inherit kicad-symbols)
|
||||
(name "kicad-footprints")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-footprints.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0ymmd1rzrczpvcqzw1mld9x8xhbka0vvjy3kdqwysg4ri97f5wrm"))))
|
||||
(synopsis "Official KiCad footprint libraries")
|
||||
(description "This package contains the official KiCad footprint libraries.")))
|
||||
|
||||
(define-public kicad-packages3d
|
||||
(package
|
||||
(inherit kicad-symbols)
|
||||
(name "kicad-packages3d")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-packages3D.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0k91iw661fpzb7saryjxdcdvk1kis7dhbcpzp7xzjk84i4jvxrp5"))))
|
||||
(synopsis "Official KiCad 3D model libraries")
|
||||
(description "This package contains the official KiCad 3D model libraries.")))
|
||||
|
||||
(define-public kicad-templates
|
||||
(package
|
||||
(inherit kicad-symbols)
|
||||
(name "kicad-templates")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-templates.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0zs29zn8qjgxv0w1vyr8yxmj02m8752zagn4vcraqgik46dwg2id"))))
|
||||
(synopsis "Official KiCad project and worksheet templates")
|
||||
(description "This package contains the official KiCad project and
|
||||
worksheet templates.")))
|
||||
|
||||
(define-public lepton-eda
|
||||
(package
|
||||
(name "lepton-eda")
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
;;; Copyright © 2026 Nikita Alkhovik <forgoty13@gmail.com>
|
||||
;;; Copyright © 2026 Justin Veilleux <terramorpha@cock.li>
|
||||
;;; Copyright © 2026 Spencer King <spencer.king@wustl.edu>
|
||||
;;; Copyright © 2021–2023, 2026 Liliana Marie Prikler <liliana.prikler@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -4715,6 +4716,245 @@ emulator framework based on QEMU.")
|
||||
(sha256
|
||||
(base32 "0mlfs8qfi0clyncfkbxp6in0cpl747510i6bqymwid43xcirbikz"))))))
|
||||
|
||||
(define-public (aemu-postoffice-source commit sha256-hash)
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/Kethen/aemu_postoffice")
|
||||
(commit commit)))
|
||||
(file-name "aemu-postoffice-source")
|
||||
(sha256 sha256-hash)))
|
||||
|
||||
(define-public (libchdr-source commit sha256-hash)
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/rtissera/libchdr")
|
||||
(commit commit)))
|
||||
(file-name "libchdr-source")
|
||||
(sha256 sha256-hash)))
|
||||
|
||||
(define-public (rcheevos-source commit sha256-hash)
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/RetroAchievements/rcheevos/")
|
||||
(commit commit)))
|
||||
(file-name "rcheevos-source")
|
||||
(sha256 sha256-hash)))
|
||||
|
||||
(define-public ppsspp
|
||||
(package
|
||||
(name "ppsspp")
|
||||
(version "1.20.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/hrydgard/ppsspp")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32 "186d2jc6h6xmiqnrifq4xcw0g3fv1slcnvs5mzzxcnfk7ljr6r6p"))
|
||||
(file-name (git-file-name name version))
|
||||
(patches
|
||||
(search-patches "ppsspp-disable-upgrade-and-gold.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
`(begin
|
||||
;; The following is quite a heavy-handed way of unbundling PPSSPP.
|
||||
;; There are still a number of external sources, that we don't
|
||||
;; remove here. Some may be packaged, others are not.
|
||||
;; First, we patch existing sources to include the right headers.
|
||||
(substitute* (append (find-files "Common" ".*\\.(h|cpp)")
|
||||
(find-files "Core" ".*\\.(h|cpp)")
|
||||
(find-files "GPU" ".*\\.(h|cpp)")
|
||||
(find-files "SDL" ".*\\.(h|cpp)")
|
||||
(find-files "UI" ".*\\.(h|cpp)"))
|
||||
;; These headers are all hard-coded in the original source.
|
||||
(("ext/cityhash/") "")
|
||||
(("ext/cpu_features/include/") "cpu_features/")
|
||||
(("ext/glslang/glslang/") "glslang/")
|
||||
(("ext/glslang/") "glslang/")
|
||||
(("ext/miniupnp/") "")
|
||||
(("ext/nanosvg/src") "nanosvg")
|
||||
(("ext/rapidjson/include/") "")
|
||||
(("ext/SPIRV-Cross/") "spirv_cross/")
|
||||
(("ext/vulkan/") "vulkan/")
|
||||
(("ext/xxhash.h") "xxhash.h")
|
||||
;; These definitions do not actually exist in the Vulkan headers,
|
||||
;; but PPSSPP defines them in ext/vulkan.
|
||||
(("VK_FORMAT_BEGIN_RANGE") "VK_FORMAT_UNDEFINED")
|
||||
(("VK_FORMAT_END_RANGE") "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"))
|
||||
;; Next, we patch CMakeLists.
|
||||
(substitute* "CMakeLists.txt"
|
||||
;; Drop unnecessary includes and targets.
|
||||
(("include_directories\\(ext/glslang\\)") "")
|
||||
(("target_include_directories\\(.*ext/xxhash\\)") "")
|
||||
(("target_include_directories\\(.*ext/cityhash\\)") "")
|
||||
(("set_target_properties\\(cityhash .*\\)") "")
|
||||
(("target_compile_options\\(cityhash .*\\)") "")
|
||||
;; Fix linking to GLEW.
|
||||
(("TARGET Ext::GLEW") "true")
|
||||
(("target_link_libraries\\((Common|native) Ext::GLEW\\)" all lib)
|
||||
(string-append "find_package(GLEW)\n"
|
||||
"target_link_libraries(" lib " GLEW::GLEW)"))
|
||||
(("Ext::Snappy") "snappy")
|
||||
(("OGLCompiler") "")
|
||||
(("OSDependent") "")
|
||||
;; Don't search for cityhash/xxhash, we already have them.
|
||||
(("add_library\\((city|xx)hash STATIC") "if()\nendif(")
|
||||
(("ext/xxhash\\.[ch]") "")
|
||||
(("ext/cityhash/.*\\.(cpp|h)") "")
|
||||
;; Drop remaining references to GOLD.
|
||||
(("UI/IAPScreen\\.(cpp|h)") "")
|
||||
;; Link all of spirv-cross.
|
||||
(("spirv-cross-glsl" all)
|
||||
(string-append all
|
||||
" spirv-cross-core spirv-cross-cpp"
|
||||
" spirv-cross-reflect spirv-cross-util")))
|
||||
(substitute* "ext/CMakeLists.txt"
|
||||
(("add_subdirectory\\(cmake.*") "")
|
||||
(("add_subdirectory\\(freetype.*") "")
|
||||
(("add_subdirectory\\(glew.*") "")
|
||||
(("add_subdirectory\\(glslang.*") "")
|
||||
(("add_subdirectory\\(snappy.*") "")
|
||||
(("add_subdirectory\\(SPIRV-Cross-build.*") "")
|
||||
(("add_subdirectory\\(zstd.*") ""))
|
||||
;; Finally, we can delete the bundled sources…
|
||||
(for-each delete-file-recursively
|
||||
'("ext/cmake"
|
||||
"ext/glew"
|
||||
"ext/glslang" "ext/glslang-build"
|
||||
"ext/miniupnp" "ext/miniupnp-build"
|
||||
"ext/native"
|
||||
"ext/snappy"
|
||||
"ext/SPIRV-Cross" "ext/SPIRV-Cross-build"
|
||||
"ext/vulkan"
|
||||
"ext/xxhash.c"
|
||||
"ext/xxhash.h"
|
||||
"ext/zlib"
|
||||
"ext/zstd"))
|
||||
;; … as well as the remaining files referencing GOLD.
|
||||
(for-each delete-file
|
||||
'("UI/IAPScreen.cpp"
|
||||
"UI/IAPScreen.h"
|
||||
"ios/IAPManager.mm"
|
||||
"ios/IAPManager.h"))
|
||||
;; Since we are not including git as an input, PPSSPP is confused
|
||||
;; about its version. Let's fix that here.
|
||||
(substitute* "git-version.cmake"
|
||||
(("unknown") ,version))))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:out-of-source? #f
|
||||
#:configure-flags #~(list "-DARMIPS_USE_STD_FILESYSTEM=ON" ; from armips
|
||||
"-DUSE_DISCORD=OFF"
|
||||
"-DUSE_SYSTEM_FFMPEG=ON"
|
||||
"-DUSE_SYSTEM_LIBZIP=ON"
|
||||
"-DUSE_SYSTEM_MINIUPNPC=ON"
|
||||
"-DUSE_SYSTEM_ZSTD=ON"
|
||||
;; for testing
|
||||
"-DUNITTEST=ON" "-DHEADLESS=ON")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'set-paths 'add-sdl-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(setenv "CPLUS_INCLUDE_PATH"
|
||||
(string-append
|
||||
(dirname (search-input-file inputs
|
||||
"include/SDL2/SDL.h"))
|
||||
":"
|
||||
(getenv "CPLUS_INCLUDE_PATH")))))
|
||||
(add-after 'unpack 'add-external-sources
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; TODO: unbundle armips.
|
||||
(copy-recursively #$(package-source armips) "ext/armips")
|
||||
;; XXX: Lua 5.4 is missing lapi.h, so we have to bundle it 😫
|
||||
(with-directory-excursion "ext/lua"
|
||||
(invoke "tar" "xvf" #$(package-source lua-5.4)
|
||||
"--strip-components=2"))
|
||||
(copy-recursively
|
||||
#$(this-package-native-input "aemu-postoffice-source")
|
||||
"ext/aemu_postoffice")
|
||||
;; No public release, leave bundled for now.
|
||||
(copy-recursively
|
||||
#$(this-package-native-input "libchdr-source")
|
||||
"ext/libchdr")
|
||||
;; TODO: Unbundle rcheevos.
|
||||
(copy-recursively
|
||||
#$(this-package-native-input "rcheevos-source")
|
||||
"ext/rcheevos")))
|
||||
(add-after 'unpack 'fix-shader
|
||||
(lambda _
|
||||
(substitute* (find-files "Common/GPU/" "\\.cpp$")
|
||||
(("#include \"glslang/SPIRV/GlslangToSpv\\.h\"" all)
|
||||
(string-append "#include <glslang/Public/ShaderLang.h>\n"
|
||||
all)))))
|
||||
(replace 'install
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin/ppsspp (string-append out "/bin/ppsspp"))
|
||||
(share (string-append out "/share/ppsspp")))
|
||||
(copy-recursively "icons/hicolor"
|
||||
(string-append out "/share/icons/hicolor"))
|
||||
(install-file "PPSSPPSDL" share)
|
||||
(copy-recursively "assets" (string-append share "/assets"))
|
||||
|
||||
(make-desktop-entry-file
|
||||
(string-append out "/share/applications/ppsspp.desktop")
|
||||
#:name "PPSSPP"
|
||||
#:exec (string-append share "/PPSSPPSDL")
|
||||
#:icon "ppsspp")
|
||||
(mkdir-p (string-append out "/bin"))
|
||||
(with-output-to-file bin/ppsspp
|
||||
(lambda ()
|
||||
(format #t "#!~a~%exec ~a/PPSSPPSDL \"$@\""
|
||||
(search-input-file inputs "/bin/bash") share)))
|
||||
(chmod bin/ppsspp #o755)))))))
|
||||
(native-inputs
|
||||
(list pkg-config python
|
||||
(package-source lua-5.4)
|
||||
(aemu-postoffice-source
|
||||
"2026-03-16"
|
||||
(base32 "072w3jf87s8b00kp8nvscrggn1wq7nv37xfm527h2rg2sm57irp3"))
|
||||
(libchdr-source
|
||||
"8bba7745d758627258b315997a860039244cedaf"
|
||||
(base32 "05syp2mk6m9mdvg7qq0wd612apps615x71kv6im9pxd2f76k1wy3"))
|
||||
(rcheevos-source
|
||||
"v12.3.0"
|
||||
(base32 "09h9n7znl2ajkicshv4scawjb9zz3v9aka8986j9sg5y02a4h3wf"))))
|
||||
(inputs (list bash
|
||||
cityhash
|
||||
cpu-features
|
||||
ffmpeg
|
||||
glew
|
||||
glslang
|
||||
libpng
|
||||
libzip
|
||||
;; lua-5.4
|
||||
mesa
|
||||
miniupnpc
|
||||
nanosvg
|
||||
openxr
|
||||
rapidjson
|
||||
sdl2
|
||||
sdl2-ttf
|
||||
snappy
|
||||
spirv-cross
|
||||
vulkan-headers
|
||||
vulkan-loader
|
||||
wayland
|
||||
xxhash
|
||||
zlib
|
||||
`(,zstd "lib")))
|
||||
(home-page "https://www.ppsspp.org/")
|
||||
(synopsis "PSP emulator")
|
||||
(description
|
||||
"PPSSPP is a ``high-level'' emulator simulating the PSP operating
|
||||
system.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public exomizer
|
||||
(package
|
||||
(name "exomizer")
|
||||
|
||||
@@ -998,233 +998,6 @@ The viewer can be used interactively with a REPL (for example Geiser in
|
||||
Emacs).")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public kicad
|
||||
(package
|
||||
(name "kicad")
|
||||
(version "9.0.8")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/code/kicad.git")
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32
|
||||
"1b995p0qb9cjpj0n3x3szbqr6d7fxwmrp2nbx37y7ym2bc1lpxd8"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:out-of-source? #t
|
||||
#:tests? #f ;no tests
|
||||
#:build-type "Release"
|
||||
#:configure-flags
|
||||
,#~(list "-DKICAD_SCRIPTING_PYTHON3=ON"
|
||||
(string-append "-DOCC_INCLUDE_DIR="
|
||||
#$(this-package-input "opencascade-occt")
|
||||
"/include/opencascade")
|
||||
"-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON"
|
||||
"-DKICAD_USE_EGL=OFF"
|
||||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
|
||||
"-DCMAKE_BUILD_TYPE=RelWithDebInfo")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-ngspice-detection
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "eeschema/CMakeLists.txt"
|
||||
(("NGSPICE_DLL_FILE=\"\\$\\{NGSPICE_DLL_FILE\\}\"")
|
||||
(string-append "NGSPICE_DLL_FILE=\""
|
||||
(assoc-ref inputs "libngspice")
|
||||
"/lib/libngspice.so\"")))))
|
||||
(add-after 'install 'wrap-program
|
||||
;; Ensure correct Python at runtime.
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(python (assoc-ref inputs "python"))
|
||||
(file (string-append out "/bin/kicad"))
|
||||
(path (string-append out "/lib/python"
|
||||
,(version-major+minor (package-version
|
||||
python))
|
||||
"/site-packages:"
|
||||
(getenv "GUIX_PYTHONPATH"))))
|
||||
(wrap-program file
|
||||
`("GUIX_PYTHONPATH" ":" prefix
|
||||
(,path))
|
||||
`("PATH" ":" prefix
|
||||
(,(string-append python "/bin:"))))))))))
|
||||
(native-search-paths
|
||||
;; Currently, KiCad environment variables are single-valued
|
||||
;; (see https://gitlab.com/kicad/code/kicad/-/issues/14792).
|
||||
(list (search-path-specification
|
||||
(variable "KICAD") ;to find kicad-doc
|
||||
(files '(""))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD9_TEMPLATE_DIR")
|
||||
(files '("share/kicad/template"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD9_SYMBOL_DIR")
|
||||
(files '("share/kicad/symbols"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD9_FOOTPRINT_DIR")
|
||||
(files '("share/kicad/footprints"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD9_3DMODEL_DIR")
|
||||
(files '("share/kicad/3dmodels"))
|
||||
(separator #f))
|
||||
(search-path-specification
|
||||
(variable "KICAD_STOCK_DATA_HOME")
|
||||
(files '("share/kicad"))
|
||||
(separator #f))))
|
||||
(native-inputs (list boost
|
||||
desktop-file-utils
|
||||
gettext-minimal
|
||||
pkg-config
|
||||
swig-4.0
|
||||
unixodbc
|
||||
zlib))
|
||||
(inputs (list bash-minimal
|
||||
cairo
|
||||
curl
|
||||
glew
|
||||
glm
|
||||
hicolor-icon-theme
|
||||
libngspice
|
||||
libsm
|
||||
libgit2
|
||||
libsecret
|
||||
mesa
|
||||
opencascade-occt
|
||||
openssl
|
||||
python-wrapper
|
||||
gtk+
|
||||
wxwidgets-sans-egl
|
||||
nng
|
||||
python-wxpython
|
||||
protobuf
|
||||
gdk-pixbuf
|
||||
(list zstd "lib")))
|
||||
(home-page "https://www.kicad.org/")
|
||||
(synopsis "Electronics Design Automation Suite")
|
||||
(description
|
||||
"Kicad is a program for the formation of printed circuit
|
||||
boards and electrical circuits. The software has a number of programs that
|
||||
perform specific functions, for example, pcbnew (Editing PCB), eeschema (editing
|
||||
electrical diagrams), gerbview (viewing Gerber files) and others.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public kicad-doc
|
||||
(package
|
||||
(name "kicad-doc")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/services/kicad-doc.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"07g80p1igp8j3kh3qpmqd150i9950w1143yhncwik2ypccwjdfjy"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "-DBUILD_FORMATS=html")
|
||||
#:tests? #f)) ;no test suite
|
||||
(native-inputs (list asciidoc
|
||||
gettext-minimal
|
||||
git-minimal
|
||||
perl
|
||||
perl-unicode-linebreak
|
||||
perl-yaml-tiny
|
||||
po4a
|
||||
ruby-asciidoctor/minimal
|
||||
source-highlight))
|
||||
(home-page "https://kicad.org")
|
||||
(synopsis "KiCad official documentation")
|
||||
(description "This repository contains the official KiCad documentation.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public kicad-symbols
|
||||
(package
|
||||
(name "kicad-symbols")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-symbols.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"08qb4rqxsyhrcvj1k200m2c06jjy7jwjmf9n1qkcm0biqqc5dba4"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no tests exist
|
||||
(home-page (package-home-page kicad))
|
||||
(synopsis "Official KiCad schematic symbol libraries")
|
||||
(description "This package contains the official KiCad schematic symbol
|
||||
libraries.")
|
||||
;; TODO: Exception: "To the extent that the creation of electronic designs
|
||||
;; that use 'Licensed Material' can be considered to be 'Adapted Material',
|
||||
;; then the copyright holder waives article 3 of the license with respect to
|
||||
;; these designs and any generated files which use data provided as part of
|
||||
;; the 'Licensed Material'."
|
||||
;; See <https://github.com/KiCad/kicad-symbols/blob/master/LICENSE.md>.
|
||||
(license license:cc-by-sa4.0)))
|
||||
|
||||
(define-public kicad-footprints
|
||||
(package
|
||||
(inherit kicad-symbols)
|
||||
(name "kicad-footprints")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-footprints.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1w7dkb93s84ymi1syxpzacbmkxlnlh0k4z1c62nabspb901nn524"))))
|
||||
(synopsis "Official KiCad footprint libraries")
|
||||
(description "This package contains the official KiCad footprint libraries.")))
|
||||
|
||||
(define-public kicad-packages3d
|
||||
(package
|
||||
(inherit kicad-symbols)
|
||||
(name "kicad-packages3d")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-packages3D.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1j26dmgz7xfixlqrzclb1wpc6zkd10n1fq7rmdrgwwx083p3c7a8"))))
|
||||
(synopsis "Official KiCad 3D model libraries")
|
||||
(description "This package contains the official KiCad 3D model libraries.")))
|
||||
|
||||
(define-public kicad-templates
|
||||
(package
|
||||
(inherit kicad-symbols)
|
||||
(name "kicad-templates")
|
||||
(version (package-version kicad))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/kicad/libraries/kicad-templates.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0zs29zn8qjgxv0w1vyr8yxmj02m8752zagn4vcraqgik46dwg2id"))))
|
||||
(synopsis "Official KiCad project and worksheet templates")
|
||||
(description "This package contains the official KiCad project and
|
||||
worksheet templates.")))
|
||||
|
||||
(define-public librseq
|
||||
;; There's no release.
|
||||
(let ((commit "c3ed6b64bbe1944bd8de8b9fde14e7c290f02a90")
|
||||
@@ -4211,13 +3984,10 @@ G-codes to binary and vice versa.")
|
||||
openvdb
|
||||
pango
|
||||
prusa-libbgcode
|
||||
;; XXX: Using Prusa wxWidgets fork as PrusaSlicer segfaults when compiled
|
||||
;; with regular wxwidgets.
|
||||
prusa-wxwidgets
|
||||
wxwidgets
|
||||
qhull
|
||||
onetbb
|
||||
webkitgtk-for-gtk3
|
||||
webkitgtk-with-libsoup2
|
||||
z3
|
||||
zlib))
|
||||
(home-page "https://www.prusa3d.com/prusaslicer/")
|
||||
|
||||
@@ -427,7 +427,7 @@ ones.")
|
||||
(define-public fsarchiver
|
||||
(package
|
||||
(name "fsarchiver")
|
||||
(version "0.8.7")
|
||||
(version "0.8.9")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -437,10 +437,10 @@ ones.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1vy8ay0fn32i298bx9scqghi7xm9z2101zxk5xshbrkl00b2m4nm"))))
|
||||
(base32 "0wyq140yzhhqzg364ai7m21z2kgvyi6dmqlw5ycblryf0zkvd7vq"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
(list autoconf automake pkg-config))
|
||||
(list autoconf-2.72 automake pkg-config))
|
||||
(inputs
|
||||
(list bzip2
|
||||
e2fsprogs
|
||||
|
||||
@@ -3847,7 +3847,7 @@ arrows and custom ligatures for @code{TODO:} and @code{NOTE:}.")
|
||||
(define-public font-monaspace
|
||||
(package
|
||||
(name "font-monaspace")
|
||||
(version "1.301")
|
||||
(version "1.400")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -3857,7 +3857,7 @@ arrows and custom ligatures for @code{TODO:} and @code{NOTE:}.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0f6i9v2m7x5zjdfwmcj180nmgxzlnbk2z0x7yv5sbdcrvndz1lzj"))))
|
||||
"1rldcci0nh5zqqcmj8mfqsv7c8bqy2nxgfn8gk4zsxvgdbxa79vk"))))
|
||||
(build-system font-build-system)
|
||||
(outputs '("out" "ttf" "woff"))
|
||||
(home-page "https://monaspace.githubnext.com")
|
||||
|
||||
@@ -1457,7 +1457,7 @@ fullscreen) or other display servers.")
|
||||
(define-public wayland-protocols
|
||||
(package
|
||||
(name "wayland-protocols")
|
||||
(version "1.45")
|
||||
(version "1.47")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -1466,7 +1466,7 @@ fullscreen) or other display servers.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1d2fv41vq75pvgkd3ykjypnp8zv0afv71p36cd91h19lbmwaia8h"))))
|
||||
"0i30fp6p03qrvv4msm9yj39sk6gmcryp3q6x29v2wycbv27wsgmw"))))
|
||||
(build-system meson-build-system)
|
||||
(inputs
|
||||
(list wayland))
|
||||
|
||||
+98
-86
@@ -5,7 +5,7 @@
|
||||
;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 Nikita <nikita@n0.is>
|
||||
;;; Copyright © 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017-2019, 2021, 2023-2025 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017-2019, 2021, 2023-2026 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
|
||||
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
@@ -22,7 +22,7 @@
|
||||
;;; Copyright © 2024 Liliana Marie Prikler <liliana.prikler@gmail.com>
|
||||
;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com>
|
||||
;;; Copyright © 2024 Arnaud Lechevallier <arnaud.lechevallier@free.fr>
|
||||
;;; Copyright © 2024 aurtzy <aurtzy@gmail.com>
|
||||
;;; Copyright © 2024-2025 Alvin Hsu <aurtzy@gmail.com>
|
||||
;;; Copyright © 2025 Sughosha <sughosha@disroot.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -43,6 +43,7 @@
|
||||
(define-module (gnu packages gl)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages backup)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages build-tools)
|
||||
#:use-module (gnu packages check)
|
||||
@@ -57,6 +58,7 @@
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-build)
|
||||
@@ -74,6 +76,7 @@
|
||||
#:use-module (guix hg-download)
|
||||
#:use-module (gnu packages cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system cargo)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (guix build-system python)
|
||||
@@ -241,7 +244,6 @@ generate a GL/GLES/EGL/GLX/WGL loader tailored for specific requirements.")
|
||||
|
||||
(define-public glad
|
||||
(package
|
||||
(inherit glad-0.1)
|
||||
(name "glad")
|
||||
(version "2.0.8")
|
||||
(source (origin
|
||||
@@ -255,20 +257,26 @@ generate a GL/GLES/EGL/GLX/WGL loader tailored for specific requirements.")
|
||||
"0c9cygiq35aiq6bpdvbwqs0wxc2dvxsh4jnx50466savscxalsk9"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments glad-0.1)
|
||||
((#:phases phases '%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(replace 'install-cmakelists.txt
|
||||
(lambda _
|
||||
(let ((share (string-append #$output "/share/"
|
||||
#$(package-name this-package))))
|
||||
(install-file "cmake/CMakeLists.txt" share))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "xvfb-run" "utility/test.sh"))))))))
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'install 'install-cmakelists.txt
|
||||
(lambda _
|
||||
(let ((share (string-append #$output "/share/"
|
||||
#$(package-name this-package))))
|
||||
(install-file "cmake/CMakeLists.txt" share)
|
||||
(install-file "cmake/GladConfig.cmake" share))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "xvfb-run" "utility/test.sh")))))))
|
||||
(native-inputs (list python-setuptools python-wheel xvfb-run-for-tests))
|
||||
(propagated-inputs (list python-jinja2))))
|
||||
(propagated-inputs (list python-jinja2))
|
||||
(home-page "https://github.com/Dav1dde/glad")
|
||||
(synopsis "Multi-language GL/GLES/EGL/GLX/WGL loader generator")
|
||||
(description "Glad uses the official Khronos XML specifications to
|
||||
generate a GL/GLES/EGL/GLX/WGL loader tailored for specific requirements.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public s2tc
|
||||
(package
|
||||
@@ -316,7 +324,7 @@ also known as DXTn or DXTC) for Mesa.")
|
||||
(define-public mesa
|
||||
(package
|
||||
(name "mesa")
|
||||
(version "25.2.3")
|
||||
(version "26.0.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -325,8 +333,7 @@ also known as DXTn or DXTC) for Mesa.")
|
||||
(string-append "ftp://ftp.freedesktop.org/pub/mesa/"
|
||||
"mesa-" version ".tar.xz")))
|
||||
(sha256
|
||||
(base32
|
||||
"1y5lj9zy2hfvx9ji1rvsjapmzap7mpp5i3pf2yfcpmpica2v5mpj"))))
|
||||
(base32 "0ikk7hb60q581i2wb1pasphv7sgqkv74qaw4cdiiq8dy45956gwp"))))
|
||||
(build-system meson-build-system)
|
||||
(propagated-inputs
|
||||
;; The following are in the Requires.private field of gl.pc.
|
||||
@@ -339,17 +346,28 @@ also known as DXTn or DXTC) for Mesa.")
|
||||
libxxf86vm
|
||||
xorgproto))
|
||||
(inputs
|
||||
(list elfutils ;libelf required for r600 when using llvm
|
||||
expat
|
||||
(force libva-without-mesa)
|
||||
libxml2
|
||||
libxrandr
|
||||
libxvmc
|
||||
llvm-for-mesa
|
||||
vulkan-loader
|
||||
wayland
|
||||
wayland-protocols
|
||||
`(,zstd "lib")))
|
||||
(append
|
||||
(list elfutils ;libelf required for r600 when using llvm
|
||||
expat
|
||||
(force libva-without-mesa)
|
||||
libxml2
|
||||
libxrandr
|
||||
libxvmc
|
||||
llvm-for-mesa
|
||||
vulkan-loader
|
||||
wayland
|
||||
wayland-protocols
|
||||
`(,zstd "lib"))
|
||||
;; The freedreno driver wants libarchive and lua.
|
||||
(if (target-arm?)
|
||||
(list libarchive
|
||||
lua-5.4)
|
||||
'())
|
||||
;; Rust isn't needed for all architectures.
|
||||
(if (target-x86-64?)
|
||||
;; NVK dependencies
|
||||
(cargo-inputs 'mesa)
|
||||
'())))
|
||||
(native-inputs
|
||||
(append
|
||||
(list bison
|
||||
@@ -375,13 +393,12 @@ also known as DXTn or DXTC) for Mesa.")
|
||||
wayland
|
||||
wayland-protocols)
|
||||
'())
|
||||
;; Rust isn't needed for all architectures.
|
||||
(if (target-x86-64?)
|
||||
;; NVK dependencies
|
||||
(list rust
|
||||
(module-ref (resolve-interface '(gnu packages rust-apps))
|
||||
'rust-bindgen-cli)
|
||||
(module-ref (resolve-interface '(gnu packages rust-apps))
|
||||
'rust-cbindgen-0.26))
|
||||
rust-bindgen-cli
|
||||
rust-cbindgen)
|
||||
'())))
|
||||
(outputs '("out" "bin"))
|
||||
(arguments
|
||||
@@ -390,15 +407,15 @@ also known as DXTn or DXTC) for Mesa.")
|
||||
#~(list
|
||||
#$@(cond
|
||||
((target-aarch64?)
|
||||
;; This includes more drivers than "auto": asahi, r300, r600
|
||||
'("-Dgallium-drivers=asahi,etnaviv,freedreno,lima,nouveau,\
|
||||
panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
;; This includes more drivers than "auto": r300, r600
|
||||
'("-Dgallium-drivers=asahi,etnaviv,freedreno,iris,lima,nouveau,\
|
||||
panfrost,r300,r600,svga,softpipe,lima,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
((target-arm32?)
|
||||
;; This includes more drivers than "auto": r300, r600
|
||||
'("-Dgallium-drivers=etnaviv,freedreno,lima,nouveau,\
|
||||
panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
'("-Dgallium-drivers=etnaviv,freedreno,iris,lima,nouveau,\
|
||||
panfrost,r300,r600,svga,softpipe,lima,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
((or (target-ppc64le?) (target-ppc32?) (target-riscv64?))
|
||||
;; This include more drivers than "auto": svga
|
||||
;; This includes more drivers than "auto": svga
|
||||
'("-Dgallium-drivers=nouveau,r300,r600,radeonsi,svga,softpipe,llvmpipe,virgl,zink"))
|
||||
(else
|
||||
'("-Dgallium-drivers=auto")))
|
||||
@@ -412,18 +429,23 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
;; features required by wayland
|
||||
"-Dgles2=enabled"
|
||||
"-Dgbm=enabled"
|
||||
"-Dshared-glapi=enabled"
|
||||
"--wrap-mode=nodownload" ; XXX: disable
|
||||
|
||||
#$@(cond
|
||||
;; Increase the number of vulkan drivers on each architecture:
|
||||
((target-x86-32?)
|
||||
;; This doesn't include nouveau (which is in "auto") as it needs
|
||||
;; rust.
|
||||
;; TODO: Enable nouveau/NVK.
|
||||
'("-Dvulkan-drivers=intel,intel_hasvk,amd,swrast"))
|
||||
;; TODO: Reenable nouveau/NVK when rust support lands.
|
||||
'("-Dvulkan-drivers=amd,intel,intel_hasvk,swrast,virtio"))
|
||||
((target-x86-64?)
|
||||
'("-Dvulkan-drivers=amd,intel,intel_hasvk,nouveau,swrast,virtio"))
|
||||
((target-arm32?)
|
||||
'("-Dvulkan-drivers=swrast,intel,panfrost,freedreno,virtio"))
|
||||
((target-aarch64?)
|
||||
;; This differs from "auto" which only includes swrast and intel
|
||||
'("-Dvulkan-drivers=freedreno,amd,broadcom,swrast,asahi"))
|
||||
;; This includes more drivers than "auto": amd, broadcom
|
||||
'("-Dvulkan-drivers=swrast,intel,panfrost,freedreno,asahi,amd,broadcom,virtio"))
|
||||
;; The default fallback seems to be amd and swrast.
|
||||
((target-linux?)
|
||||
'("-Dvulkan-drivers=amd,swrast,virtio"))
|
||||
(else
|
||||
'("-Dvulkan-drivers=auto")))
|
||||
|
||||
@@ -440,9 +462,6 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
;; Also enable the tests.
|
||||
"-Dbuild-tests=true"
|
||||
|
||||
;; Re-enable X11 protocol support for the DRI2 extension.
|
||||
"-Dlegacy-x11=dri2"
|
||||
|
||||
"-Dllvm=enabled") ; default is x86/x86_64 only
|
||||
|
||||
;; XXX: 'debugoptimized' causes LTO link failures on some drivers. The
|
||||
@@ -450,9 +469,13 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
#:build-type "release"
|
||||
|
||||
#:modules '((ice-9 match)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-1)
|
||||
(guix build utils)
|
||||
((guix build cargo-build-system) #:prefix cargo:)
|
||||
(guix build meson-build-system))
|
||||
#:imported-modules (append %cargo-build-system-modules
|
||||
%meson-build-system-modules)
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
#$@(if (%current-target-system)
|
||||
@@ -468,6 +491,30 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
(search-input-file
|
||||
native-inputs "/bin/cmake")))))
|
||||
#~())
|
||||
#$@(if (this-package-native-input "rust")
|
||||
#~((add-after 'unpack 'prepare-rust-crates
|
||||
(lambda args
|
||||
(apply (assoc-ref cargo:%standard-phases
|
||||
'prepare-rust-crates)
|
||||
args)
|
||||
;; Use /tmp/rust-crates as the source.
|
||||
(substitute* (find-files "subprojects" "-rs\\.wrap$")
|
||||
(("source_url = (.*)" _ url)
|
||||
(let ((split-url (string-split url #\/)))
|
||||
(string-append
|
||||
"source_url = file:///tmp/rust-crates/rust-"
|
||||
(string-join
|
||||
(string-split (list-ref split-url 6) #\_) "-")
|
||||
"-" (list-ref split-url 7) ".tar.gz\n"))))
|
||||
;; "Download" the packages.
|
||||
(for-each
|
||||
(lambda (wrapper)
|
||||
(invoke "meson" "subprojects" "download"
|
||||
(string-drop-right wrapper 5)))
|
||||
(scandir "subprojects"
|
||||
(lambda (file)
|
||||
(string-suffix? "-rs.wrap" file)))))))
|
||||
#~())
|
||||
(add-after 'unpack 'disable-failing-test
|
||||
(lambda _
|
||||
;; Disable the intel vulkan (anv_state_pool) tests, as they may
|
||||
@@ -510,41 +557,6 @@ panfrost,r300,r600,svga,softpipe,llvmpipe,tegra,v3d,vc4,virgl,zink"))
|
||||
(("'lp_test_arit', ") ""))))
|
||||
(_
|
||||
'((display "No tests to disable on this architecture.\n"))))))
|
||||
#$@(if (target-x86-64?)
|
||||
#~((add-after 'unpack 'patch-subproject-sources
|
||||
(lambda _
|
||||
;; Patch each relevant subproject source URL in wrapfiles to
|
||||
;; use the store, which avoids an attempt to download them
|
||||
;; mid-build.
|
||||
(for-each
|
||||
(match-lambda
|
||||
((name source)
|
||||
(let ((wrap-file (string-append
|
||||
"subprojects/" name ".wrap"))
|
||||
(subproject-dest (string-append
|
||||
"subprojects/" name))
|
||||
(overlay-dir (string-append
|
||||
"subprojects/packagefiles/" name)))
|
||||
(mkdir-p subproject-dest)
|
||||
(invoke "tar" "xf" source "-C" subproject-dest
|
||||
"--strip-components=1")
|
||||
;; Normally when the patch_directory wrap file property
|
||||
;; is specified, meson automatically copies from
|
||||
;; packagefiles, but this is not the case here (only
|
||||
;; happens when downloading source?) so we manually copy
|
||||
;; overlay-dir to subproject-dest.
|
||||
(when (file-exists? overlay-dir)
|
||||
(copy-recursively overlay-dir subproject-dest))
|
||||
(call-with-output-file wrap-file
|
||||
(lambda (port)
|
||||
(format port "[wrap-file]
|
||||
directory = ~a
|
||||
"
|
||||
name))))))
|
||||
'#+(module-ref (resolve-interface
|
||||
'(gnu packages rust-crates))
|
||||
'mesa-cargo-inputs)))))
|
||||
#~())
|
||||
(add-after 'unpack 'set-home-directory
|
||||
;; Build tries to use a shader cache (non-fatal error).
|
||||
(lambda _ (setenv "HOME" "/tmp")))
|
||||
@@ -664,7 +676,7 @@ from software emulation to complete hardware acceleration for modern GPUs.")
|
||||
#~(cons* "-Dgallium-rusticl=true"
|
||||
;; Enable all drivers by default.
|
||||
(string-append "-Dgallium-rusticl-enable-drivers="
|
||||
"iris,llvmpipe,nouveau,panfrost,radeonsi,r600")
|
||||
"asahi,freedreno,radeonsi")
|
||||
#$flags))
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
|
||||
@@ -7058,7 +7058,8 @@ runtime image loader executables that are used inside the sandbox.")
|
||||
#:vendor-dir "vendor"
|
||||
#:cargo-target #$(cargo-triplet)
|
||||
args))
|
||||
'(unpack-rust-crates
|
||||
'(prepare-rust-crates
|
||||
unpack-rust-crates
|
||||
configure
|
||||
check-for-pregenerated-files
|
||||
patch-cargo-checksums))))
|
||||
|
||||
+387
-66
@@ -382,10 +382,14 @@ devices.")
|
||||
;; - cloud.google.com/go/auth
|
||||
;; - cloud.google.com/go/auth/oauth2adapt
|
||||
;; - cloud.google.com/go/compute/metadata
|
||||
;; - cloud.google.com/go/longrunning
|
||||
;; - cloud.google.com/go/monitoring
|
||||
;; - cloud.google.com/go/storage
|
||||
(for-each delete-file-recursively
|
||||
(list "auth"
|
||||
"compute/metadata"
|
||||
"longrunning"
|
||||
"monitoring"
|
||||
"storage"))))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
@@ -421,15 +425,12 @@ devices.")
|
||||
"internal/tracecontext"
|
||||
"internal/uid"
|
||||
"internal/version"
|
||||
"longrunning"
|
||||
"pubsub/internal/distribution"
|
||||
"pubsub/internal/scheduler"
|
||||
"pubsub/internal/testutil"
|
||||
"pubsub/v2/internal/distribution"
|
||||
"pubsub/v2/internal/scheduler"
|
||||
"pubsub/v2/internal/testutil"
|
||||
"pubsublite/internal/test"
|
||||
"pubsublite/internal/wire"
|
||||
"rpcreplay"
|
||||
"spanner/spansql"
|
||||
"translate")))
|
||||
@@ -456,7 +457,7 @@ Services.")
|
||||
(define-public go-cloud-google-com-go-auth
|
||||
(package
|
||||
(name "go-cloud-google-com-go-auth")
|
||||
(version "0.17.0")
|
||||
(version "0.18.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -466,7 +467,7 @@ Services.")
|
||||
#:subdir "auth"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0i18wkz04w9wpckw021nawr82dh92krmcsn471rpjx1jrmgsbi5v"))
|
||||
(base32 "1c2i8jhc4rizmwz6716bwxwy04adjmm7k2cigki3m1f00rwblmki"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)))
|
||||
@@ -488,25 +489,28 @@ Services.")
|
||||
#~(list "-skip"
|
||||
(string-join
|
||||
;; These tests all require credentials/tokens
|
||||
'("TestGetGRPCTransportConfigAndEndpoint_S2A"
|
||||
"TestGetHTTPTransportConfig_S2A"
|
||||
"TestDownscopedToken"
|
||||
"TestDialTCPUserTimeout"
|
||||
"TestFetchTrustBoundaryData"
|
||||
"TestLogDirectPathMisconfigDirectPathNotSet"
|
||||
"TestLogDirectPathMisconfigNotOnGCE") "|"))))
|
||||
(list "TestDownscopedToken"
|
||||
"TestLogDirectPathMisconfigDirectPathNotSet"
|
||||
"TestLogDirectPathMisconfigNotOnGCE"
|
||||
;; Runint OTP instance is required.
|
||||
"TestDial_OpenTelemetry/telemetry_enabled_success"
|
||||
"TestDial_OpenTelemetry/telemetry_enabled_error")
|
||||
"|"))))
|
||||
(propagated-inputs
|
||||
(list go-google-golang-org-protobuf
|
||||
go-google-golang-org-grpc
|
||||
go-golang-org-x-time
|
||||
go-golang-org-x-net
|
||||
go-go-opentelemetry-io-contrib-instrumentation-net-http-otelhttp
|
||||
go-go-opentelemetry-io-contrib-instrumentation-google-golang-org-grpc-otelgrpc
|
||||
go-github-com-googleapis-gax-go-v2
|
||||
go-github-com-googleapis-enterprise-certificate-proxy
|
||||
go-github-com-google-s2a-go
|
||||
(list go-cloud-google-com-go-compute-metadata
|
||||
go-github-com-google-go-cmp
|
||||
go-cloud-google-com-go-compute-metadata))
|
||||
go-github-com-google-s2a-go
|
||||
go-github-com-googleapis-enterprise-certificate-proxy
|
||||
go-github-com-googleapis-gax-go-v2
|
||||
go-go-opentelemetry-io-contrib-instrumentation-google-golang-org-grpc-otelgrpc
|
||||
go-go-opentelemetry-io-contrib-instrumentation-net-http-otelhttp
|
||||
go-go-opentelemetry-io-otel
|
||||
go-go-opentelemetry-io-otel-sdk
|
||||
go-go-opentelemetry-io-otel-trace
|
||||
go-golang-org-x-net
|
||||
go-golang-org-x-time
|
||||
go-google-golang-org-grpc
|
||||
go-google-golang-org-protobuf))
|
||||
(home-page "https://cloud.google.com/go")
|
||||
(synopsis "Google Auth Library for Go")
|
||||
(description
|
||||
@@ -562,7 +566,7 @@ cloud.google.com/go/auth and golang.org/x/oauth2.")
|
||||
(define-public go-cloud-google-com-go-compute-metadata
|
||||
(package
|
||||
(name "go-cloud-google-com-go-compute-metadata")
|
||||
(version "0.8.0")
|
||||
(version "0.9.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -572,7 +576,7 @@ cloud.google.com/go/auth and golang.org/x/oauth2.")
|
||||
#:subdir "compute/metadata"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "02xl6mnw3i1x8zfafrsl2gr0v5a29nn3aiif6ndzssqr0pqfg5dw"))))
|
||||
(base32 "1xhiyv3p9kh6qj007yqd8fic2w48ngrff2vwi9i21v82v5zp51gv"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -580,6 +584,8 @@ cloud.google.com/go/auth and golang.org/x/oauth2.")
|
||||
#:unpack-path "cloud.google.com/go"))
|
||||
(native-inputs
|
||||
(list go-github-com-google-go-cmp))
|
||||
(propagated-inputs
|
||||
(list go-golang-org-x-sys))
|
||||
(home-page "https://pkg.go.dev/cloud.google.com/go/compute/metadata")
|
||||
(synopsis "Go wrapper for Google Compute Engine metadata service")
|
||||
(description
|
||||
@@ -587,6 +593,98 @@ cloud.google.com/go/auth and golang.org/x/oauth2.")
|
||||
API service accounts for Go.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-cloud-google-com-go-longrunning
|
||||
(package
|
||||
(name "go-cloud-google-com-go-longrunning")
|
||||
(version "0.8.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/googleapis/google-cloud-go")
|
||||
(commit (go-version->git-ref version #:subdir "longrunning"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1ykr9kj0sbb4w0h190lp9gcxppv18dp0d5ak2g93dky8hjyc2wfa"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)))
|
||||
(snippet #~(begin
|
||||
(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 "." "longrunning")))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:import-path "cloud.google.com/go/longrunning"
|
||||
#:unpack-path "cloud.google.com/go"))
|
||||
(propagated-inputs
|
||||
(list go-cloud-google-com-go
|
||||
go-github-com-googleapis-gax-go-v2
|
||||
go-google-golang-org-api
|
||||
go-google-golang-org-genproto
|
||||
go-google-golang-org-genproto-googleapis-api
|
||||
go-google-golang-org-genproto-googleapis-rpc
|
||||
go-google-golang-org-grpc
|
||||
go-google-golang-org-protobuf))
|
||||
(home-page "https://cloud.google.com/go")
|
||||
(synopsis "Helper library for working with long running operations")
|
||||
(description
|
||||
"Package longrunning supports Long Running Operations for the Google
|
||||
Cloud Libraries. See google.golang.org/genproto/googleapis/longrunning for
|
||||
its service definition.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-cloud-google-com-go-monitoring
|
||||
(package
|
||||
(name "go-cloud-google-com-go-monitoring")
|
||||
(version "1.24.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/googleapis/google-cloud-go")
|
||||
(commit (go-version->git-ref version #:subdir "monitoring"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "13rdnpz6jz5242gfx6xv6q66rr7k2sbrf7s507wq09bxvd4g20p0"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)))
|
||||
(snippet
|
||||
#~(begin
|
||||
(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 "." "monitoring")))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:skip-build? #t
|
||||
#:import-path "cloud.google.com/go/monitoring"
|
||||
#:unpack-path "cloud.google.com/go"))
|
||||
(propagated-inputs
|
||||
(list go-cloud-google-com-go-longrunning
|
||||
go-github-com-googleapis-gax-go-v2
|
||||
go-google-golang-org-api
|
||||
go-google-golang-org-genproto
|
||||
go-google-golang-org-genproto-googleapis-api
|
||||
go-google-golang-org-genproto-googleapis-rpc
|
||||
go-google-golang-org-grpc
|
||||
go-google-golang-org-protobuf))
|
||||
(home-page "https://cloud.google.com/go")
|
||||
(synopsis "Cloud Monitoring API")
|
||||
(description
|
||||
"This package provides a Go Client Library for Cloud Monitoring API.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-cloud-google-com-go-storage
|
||||
(package
|
||||
(name "go-cloud-google-com-go-storage")
|
||||
@@ -624,14 +722,14 @@ API service accounts for Go.")
|
||||
(list go-github-com-google-go-cmp))
|
||||
(propagated-inputs
|
||||
(list go-cloud-google-com-go
|
||||
;; go-cloud-google-com-go-auth
|
||||
go-cloud-google-com-go-auth
|
||||
;; go-cloud-google-com-go-compute-metadata
|
||||
;; go-cloud-google-com-go-iam
|
||||
;; go-cloud-google-com-go-longrunning
|
||||
go-cloud-google-com-go-longrunning
|
||||
go-github-com-google-uuid
|
||||
go-github-com-googleapis-gax-go-v2
|
||||
;; go-github-com-googlecloudplatform-opentelemetry-operations-go-exporter-metric
|
||||
;; go-go-opentelemetry-io-contrib-detectors-gcp
|
||||
go-github-com-googlecloudplatform-opentelemetry-operations-go-exporter-metric
|
||||
go-go-opentelemetry-io-contrib-detectors-gcp
|
||||
go-go-opentelemetry-io-otel
|
||||
;; go-go-opentelemetry-io-otel-exporters-stdout-stdoutmetric
|
||||
go-go-opentelemetry-io-otel-sdk
|
||||
@@ -7327,7 +7425,7 @@ sanitization, to use in various HTML contexts and with various DOM APIs.")
|
||||
(define-public go-github-com-googleapis-enterprise-certificate-proxy
|
||||
(package
|
||||
(name "go-github-com-googleapis-enterprise-certificate-proxy")
|
||||
(version "0.3.7")
|
||||
(version "0.3.14")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -7336,17 +7434,21 @@ sanitization, to use in various HTML contexts and with various DOM APIs.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1jblnaa4hn9x5gfrsiw007wws7hy4h795xzzrw2bzf297ydrlnyg"))))
|
||||
(base32 "16ypygh5jk2ndwkbdai1z23xn872z6fsj1iis28fp6mgw9s89hl8"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ;; TODO: Tests require additional dependencies
|
||||
#:skip-build? #t
|
||||
#:import-path "github.com/googleapis/enterprise-certificate-proxy"))
|
||||
#:import-path "github.com/googleapis/enterprise-certificate-proxy"
|
||||
;; TODO: Tests require additional dependencies
|
||||
#:test-subdirs
|
||||
#~(list "client"
|
||||
"client/util"
|
||||
"internal/signer/util")))
|
||||
(propagated-inputs
|
||||
(list go-golang-org-x-sys go-golang-org-x-crypto
|
||||
;; go-github-com-google-go-pkcs11
|
||||
))
|
||||
(list ;; go-github-com-google-go-pkcs11
|
||||
go-golang-org-x-crypto
|
||||
go-golang-org-x-sys))
|
||||
(home-page "https://github.com/googleapis/enterprise-certificate-proxy")
|
||||
(synopsis "Google Proxies for Enterprise Certificates (GA)")
|
||||
(description
|
||||
@@ -7363,7 +7465,7 @@ Terraform by using the enterprise certificates feature.")
|
||||
(define-public go-github-com-googleapis-gax-go-v2
|
||||
(package
|
||||
(name "go-github-com-googleapis-gax-go-v2")
|
||||
(version "2.15.0")
|
||||
(version "2.19.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -7372,22 +7474,28 @@ Terraform by using the enterprise certificates feature.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0mp07716zjb7q9di6sfglscahrg053lsq3j5w68dknxn1fks5j6f"))))
|
||||
(base32 "1nd5qv2dhn6xiw27hmxxyan9v3hiwcqpg9cy2q679v6b0vj7ijmj"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ;; TODO: Tests require additional dependencies
|
||||
#:go go-1.25
|
||||
#:skip-build? #t
|
||||
#:import-path "github.com/googleapis/gax-go/v2"
|
||||
#:unpack-path "github.com/googleapis/gax-go"))
|
||||
#:unpack-path "github.com/googleapis/gax-go"
|
||||
;; TODO: Tests require additional dependencies
|
||||
#:test-subdirs #~(list "internallog" "internallog/grpclog")))
|
||||
(native-inputs
|
||||
(list go-github-com-google-go-cmp))
|
||||
(propagated-inputs
|
||||
(list go-google-golang-org-protobuf
|
||||
go-google-golang-org-grpc
|
||||
go-google-golang-org-genproto-googleapis-rpc
|
||||
(list go-go-opentelemetry-io-otel
|
||||
go-go-opentelemetry-io-otel-metric
|
||||
go-go-opentelemetry-io-otel-sdk-metric
|
||||
;; go-google-golang-org-api ;cycles, boostrap is required
|
||||
;; go-google-golang-org-genproto ;cycles, boostrap is required
|
||||
go-google-golang-org-genproto-googleapis-api
|
||||
;; go-google-golang-org-genproto
|
||||
;; go-google-golang-org-api
|
||||
go-github-com-google-go-cmp))
|
||||
go-google-golang-org-genproto-googleapis-rpc
|
||||
go-google-golang-org-grpc
|
||||
go-google-golang-org-protobuf))
|
||||
(home-page "https://github.com/googleapis/gax-go")
|
||||
(synopsis "Google API Extensions for Go")
|
||||
(description
|
||||
@@ -7395,6 +7503,140 @@ Terraform by using the enterprise certificates feature.")
|
||||
for clients and servers based on @code{gRPC} and Google API conventions.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public go-github-com-googlecloudplatform-opentelemetry-operations-go-detectors-gcp
|
||||
(package
|
||||
(name
|
||||
"go-github-com-googlecloudplatform-opentelemetry-operations-go-detectors-gcp")
|
||||
(version "1.31.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/GoogleCloudPlatform/opentelemetry-operations-go")
|
||||
(commit (go-version->git-ref version #:subdir "detectors/gcp"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0a2641mgbc2fv8ramifawpxv9rx99wqknv0xqin3wfapsn2vn5i9"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:import-path "github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp"
|
||||
#:unpack-path "github.com/GoogleCloudPlatform/opentelemetry-operations-go"))
|
||||
(native-inputs
|
||||
(list go-github-com-stretchr-testify))
|
||||
(propagated-inputs
|
||||
(list go-cloud-google-com-go-compute-metadata))
|
||||
(home-page
|
||||
"https://github.com/GoogleCloudPlatform/opentelemetry-operations-go")
|
||||
(synopsis "GCP Resource detection library")
|
||||
(description
|
||||
"This is a library intended to be used by Upstream @code{OpenTelemetry}
|
||||
resource detectors. It exists within this repository to allow for integration
|
||||
testing of the detection functions in real GCP environments.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-github-com-googlecloudplatform-opentelemetry-operations-go-exporter-metric
|
||||
(package
|
||||
(name "go-github-com-googlecloudplatform-opentelemetry-operations-go-exporter-metric")
|
||||
(version "0.55.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/GoogleCloudPlatform/opentelemetry-operations-go")
|
||||
(commit (go-version->git-ref version #:subdir "exporter/metric"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0a2641mgbc2fv8ramifawpxv9rx99wqknv0xqin3wfapsn2vn5i9"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)))
|
||||
(snippet
|
||||
#~(begin
|
||||
(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 "exporter" "metric")
|
||||
(delete-all-but "." "exporter")))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:skip-build? #t
|
||||
#:tests? #f ;TODO: more packaging is required
|
||||
#:import-path "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric"
|
||||
#:unpack-path "github.com/GoogleCloudPlatform/opentelemetry-operations-go"))
|
||||
(native-inputs
|
||||
(list go-github-com-stretchr-testify
|
||||
#;go-github-com-googlecloudplatform-opentelemetry-operations-go-internal-cloudmock))
|
||||
(propagated-inputs
|
||||
(list go-cloud-google-com-go-monitoring
|
||||
go-github-com-googleapis-gax-go-v2
|
||||
go-github-com-googlecloudplatform-opentelemetry-operations-go-internal-resourcemapping
|
||||
go-go-opentelemetry-io-otel
|
||||
go-go-opentelemetry-io-otel-metric
|
||||
go-go-opentelemetry-io-otel-sdk
|
||||
go-go-opentelemetry-io-otel-sdk-metric
|
||||
go-go-opentelemetry-io-otel-trace
|
||||
go-golang-org-x-oauth2
|
||||
go-google-golang-org-api
|
||||
go-google-golang-org-genproto-googleapis-api
|
||||
go-google-golang-org-grpc
|
||||
go-google-golang-org-protobuf))
|
||||
(home-page "https://github.com/GoogleCloudPlatform/opentelemetry-operations-go")
|
||||
(synopsis "OpenTelemetry Google Cloud Monitoring Exporter")
|
||||
(description
|
||||
"@code{OpenTelemetry} Google Cloud Monitoring Exporter allows the user to
|
||||
send collected metrics to Google Cloud.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-github-com-googlecloudplatform-opentelemetry-operations-go-internal-resourcemapping
|
||||
(package
|
||||
(name "go-github-com-googlecloudplatform-opentelemetry-operations-go-internal-resourcemapping")
|
||||
(version "0.55.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/GoogleCloudPlatform/opentelemetry-operations-go")
|
||||
(commit (go-version->git-ref version
|
||||
#:subdir "internal/resourcemapping"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0a2641mgbc2fv8ramifawpxv9rx99wqknv0xqin3wfapsn2vn5i9"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)))
|
||||
(snippet
|
||||
#~(begin
|
||||
(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 "internal" "resourcemapping")
|
||||
(delete-all-but "." "internal")))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:import-path (string-append "github.com/GoogleCloudPlatform/"
|
||||
"opentelemetry-operations-go/"
|
||||
"internal/resourcemapping")
|
||||
#:unpack-path "github.com/GoogleCloudPlatform/opentelemetry-operations-go"))
|
||||
(propagated-inputs
|
||||
(list go-go-opentelemetry-io-otel
|
||||
go-google-golang-org-genproto-googleapis-api))
|
||||
(home-page "https://github.com/GoogleCloudPlatform/opentelemetry-operations-go")
|
||||
(synopsis "OpenTelemetry Google Cloud resource mapping module")
|
||||
;; XXX: Project lacks proper descripton.
|
||||
(description
|
||||
"This package provides an OpenTelemetry Google Cloud resource mapping
|
||||
module.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-github-com-gopacket-gopacket
|
||||
(package
|
||||
(name "go-github-com-gopacket-gopacket")
|
||||
@@ -17149,6 +17391,51 @@ lists)
|
||||
"Package sdk provides an auto-instrumentable @code{OpenTelemetry} SDK.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-go-opentelemetry-io-contrib-detectors-gcp
|
||||
(package
|
||||
(name "go-go-opentelemetry-io-contrib-detectors-gcp")
|
||||
(version "1.42.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/open-telemetry/opentelemetry-go-contrib")
|
||||
(commit (go-version->git-ref version #:subdir "detectors/gcp"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "18k9pqwzlcjkiz8cy2hgl5jwal10ypj171hra4zsqizbqjivd4lc"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)))
|
||||
(snippet
|
||||
#~(begin
|
||||
(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 "detectors" "gcp")
|
||||
(delete-all-but "." "detectors")))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:skip-build? #t
|
||||
#:import-path "go.opentelemetry.io/contrib/detectors/gcp"
|
||||
#:unpack-path "go.opentelemetry.io/contrib"))
|
||||
(propagated-inputs
|
||||
(list go-cloud-google-com-go-compute-metadata
|
||||
go-github-com-google-go-cmp
|
||||
go-github-com-googlecloudplatform-opentelemetry-operations-go-detectors-gcp
|
||||
go-github-com-stretchr-testify
|
||||
go-go-opentelemetry-io-otel
|
||||
go-go-opentelemetry-io-otel-sdk))
|
||||
(home-page "https://go.opentelemetry.io/contrib")
|
||||
(synopsis "GCP Resource detector")
|
||||
(description
|
||||
"Package gcp provides a resource detector for GCP Cloud Function.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-go-opentelemetry-io-contrib-instrumentation-google-golang-org-grpc-otelgrpc
|
||||
(package
|
||||
(name
|
||||
@@ -18262,7 +18549,7 @@ an alternative fork of @url{https://github.com/mattbaird/jsonpatch}.")
|
||||
(define-public go-google-golang-org-api
|
||||
(package
|
||||
(name "go-google-golang-org-api")
|
||||
(version "0.247.0")
|
||||
(version "0.272.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -18271,7 +18558,7 @@ an alternative fork of @url{https://github.com/mattbaird/jsonpatch}.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "19rj4m4qfc6lfik6p562a2nyf9mhmz0nfargpnvkcvdzi0rh350x"))
|
||||
(base32 "1agvmw1sj2xy2p0ig2xdivn8i5pjnw93d2kq4hix7s5ysiswnpw4"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
#~(begin
|
||||
@@ -18289,25 +18576,16 @@ an alternative fork of @url{https://github.com/mattbaird/jsonpatch}.")
|
||||
(list "TestLogDirectPathMisconfigAttrempDirectPathNotSet"
|
||||
"TestLogDirectPathMisconfigNotOnGCE"
|
||||
"TestNewClient"
|
||||
"TestNewTokenSource"
|
||||
"TestNewTokenSource_WithCredentialJSON")
|
||||
"TestNewTokenSource")
|
||||
"|"))
|
||||
#:test-subdirs
|
||||
;; XXX: Remove when all dependencies are packaged.
|
||||
#~(list "."
|
||||
"google-api-go-generator/..."
|
||||
"googleapi/..."
|
||||
"impersonate/..."
|
||||
"internal/..."
|
||||
"iterator/..."
|
||||
"option/..."
|
||||
"support/bundler/..."
|
||||
"transport"
|
||||
"transport/grpc"
|
||||
"transport/http"
|
||||
"idtoken/..."
|
||||
"transport/grpc/..."
|
||||
"transport/http/...")))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'remove-integration-tests
|
||||
(lambda* (#:key import-path #:allow-other-keys)
|
||||
;; Tests require network access and credential to reach external
|
||||
;; API.
|
||||
(with-directory-excursion (string-append "src/" import-path)
|
||||
(delete-file-recursively "integration-tests")))))))
|
||||
(propagated-inputs
|
||||
(list go-cloud-google-com-go-auth
|
||||
go-cloud-google-com-go-auth-oauth2adapt
|
||||
@@ -18323,7 +18601,7 @@ an alternative fork of @url{https://github.com/mattbaird/jsonpatch}.")
|
||||
go-golang-org-x-oauth2
|
||||
go-golang-org-x-sync
|
||||
go-golang-org-x-time
|
||||
;; go-google-golang-org-genproto-googleapis-bytestream
|
||||
go-google-golang-org-genproto-googleapis-bytestream
|
||||
go-google-golang-org-genproto-googleapis-rpc
|
||||
go-google-golang-org-grpc
|
||||
go-google-golang-org-protobuf))
|
||||
@@ -18353,6 +18631,7 @@ an alternative fork of @url{https://github.com/mattbaird/jsonpatch}.")
|
||||
;; Submodules with their own go.mod files and packaged separately:
|
||||
;;
|
||||
(delete-file-recursively "googleapis/api")
|
||||
(delete-file-recursively "googleapis/bytestream")
|
||||
(delete-file-recursively "googleapis/rpc")))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
@@ -18546,6 +18825,48 @@ interacting with Google's @code{gRPC} APIs.")
|
||||
"This package provides an API to interact with @acronym{GCP, Google Cloud Platform}.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-google-golang-org-genproto-googleapis-bytestream
|
||||
(package
|
||||
(name "go-google-golang-org-genproto-googleapis-bytestream")
|
||||
(version "0.0.0-20260316180232-0b37fe3546d5")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/googleapis/go-genproto")
|
||||
(commit (go-version->git-ref version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0yvcd9xiyarwmzgl70xqiaxxla3qiys1iysqajwmbrf8k4ghr26p"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-26)))
|
||||
(snippet
|
||||
#~(begin
|
||||
(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 "googleapis" "bytestream")
|
||||
(delete-all-but "." "googleapis")))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:go go-1.25
|
||||
#:import-path "google.golang.org/genproto/googleapis/bytestream"
|
||||
#:unpack-path "google.golang.org/genproto"))
|
||||
(propagated-inputs
|
||||
(list go-google-golang-org-grpc
|
||||
go-google-golang-org-protobuf))
|
||||
(home-page "https://google.golang.org/genproto")
|
||||
(synopsis "Bytestream implementation of Google Cloud Platform in Golang")
|
||||
(description
|
||||
"This package provides an Bytestream to interact with @acronym{GCP,
|
||||
Google Cloud Platform}.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public go-google-golang-org-grpc
|
||||
(package
|
||||
(name "go-google-golang-org-grpc")
|
||||
|
||||
@@ -2763,7 +2763,7 @@ Some feature highlights:
|
||||
(define-public openxr
|
||||
(package
|
||||
(name "openxr")
|
||||
(version "1.0.26")
|
||||
(version "1.1.57")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -2781,7 +2781,7 @@ Some feature highlights:
|
||||
; ;; Delete bundled jsoncpp.
|
||||
; (delete-file-recursively "src/external/jsoncpp")))
|
||||
(sha256
|
||||
(base32 "0s66xgwkdj5vn05l493hqydrxfpxxidd6mcb8l7l5awhn88cy16f"))))
|
||||
(base32 "1s4cg0cl6cn98d3cvgvwsichic4q3bx34flbdklnzprc18vmaqv7"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ; there are no tests
|
||||
|
||||
@@ -1002,10 +1002,6 @@ par compared to the rest.")
|
||||
"-Dquinn=disabled" ;test fails
|
||||
"-Dskia=disabled" ;attempts to download binaries
|
||||
"-Dsodium-source=system"
|
||||
;; The 'spotify' option causes the build error: "the trait
|
||||
;; bound `vergen::feature::build::Build:
|
||||
;; vergen_lib::entries::Add` is not satisfied"
|
||||
"-Dspotify=disabled"
|
||||
"-Dtests=enabled"
|
||||
"-Dtracers=disabled" ;test fails
|
||||
"-Dthreadshare=disabled" ;test fails
|
||||
@@ -1041,7 +1037,8 @@ par compared to the rest.")
|
||||
(apply (assoc-ref cargo:%standard-phases phase)
|
||||
#:cargo-target #$(cargo-triplet)
|
||||
args))
|
||||
'(unpack-rust-crates
|
||||
'(prepare-rust-crates
|
||||
unpack-rust-crates
|
||||
configure
|
||||
check-for-pregenerated-files
|
||||
patch-cargo-checksums))))
|
||||
@@ -1061,7 +1058,8 @@ par compared to the rest.")
|
||||
"libgstlewton.so"
|
||||
"libgstrsaudiofx.so"
|
||||
"libgstrsaudioparsers.so"
|
||||
"libgstspeechmatics.so"))
|
||||
"libgstspeechmatics.so"
|
||||
"libgstspotify.so"))
|
||||
(,#$output:net
|
||||
. ("libgstdeepgram.so"
|
||||
"libgsthlsmultivariantsink.so"
|
||||
|
||||
@@ -247,7 +247,7 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.")
|
||||
(define-public feh
|
||||
(package
|
||||
(name "feh")
|
||||
(version "3.10.3")
|
||||
(version "3.11.3")
|
||||
(home-page "https://feh.finalrewind.org/")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
@@ -255,7 +255,7 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.")
|
||||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1j79850gwrjamgc22cv1hiynia4w5lc8qbhww3qpl8bhjxwy49jl"))))
|
||||
"0qqha3k1pivrw8kr6alk3l92qh75cgynb4vsvg024fa359cs7k7j"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:phases
|
||||
|
||||
@@ -11480,7 +11480,7 @@ found in custom keyboard firmware like QMK.")
|
||||
(define-public pipewire
|
||||
(package
|
||||
(name "pipewire")
|
||||
(version "1.5.85")
|
||||
(version "1.6.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -11489,7 +11489,7 @@ found in custom keyboard firmware like QMK.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1nd74wjy16bw8ng00acc26rakpqabcq1z64h23w97i18pb7z64xq"))))
|
||||
"01jvq9ck8dhkbmw21jw0frgbgvzwfq1dxkvl3zynrj179kpm4v9w"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -11521,7 +11521,7 @@ found in custom keyboard firmware like QMK.")
|
||||
gstreamer
|
||||
jack-2
|
||||
ldacbt
|
||||
libcamera
|
||||
libcamera-minimal
|
||||
libdrm
|
||||
libfdk
|
||||
libfreeaptx
|
||||
|
||||
+2
-24
@@ -37,7 +37,7 @@
|
||||
(define-public lsof
|
||||
(package
|
||||
(name "lsof")
|
||||
(version "4.99.3")
|
||||
(version "4.99.6")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -46,8 +46,7 @@
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1v32407al4j0hhcph95lv4xvr9h012lii29iyq41iwj39zwfavax"))
|
||||
(patches (search-patches "lsof-compat-linux-6.9.patch"))))
|
||||
"08p0c0wci9vam6b29ym7z7sip8gd0j0dz7zy4f0b32dw51rb3z9k"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list automake
|
||||
autoconf
|
||||
@@ -57,27 +56,6 @@
|
||||
pkg-config
|
||||
procps ;for ps
|
||||
util-linux)) ;for unshare
|
||||
(arguments
|
||||
(list #:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-configure-ac-version
|
||||
;; see https://github.com/lsof-org/lsof/commit/932a0b3b1992497e23fd9b8d31116b9ca9b0f98d
|
||||
;; to fix tests/case-01-version.bash test fail.
|
||||
(lambda _
|
||||
(substitute* "configure.ac"
|
||||
(("4\\.99\\.0")
|
||||
"4.99.3"))))
|
||||
(add-before 'bootstrap 'disable-failing-tests
|
||||
(lambda _
|
||||
(substitute* "Makefile.am"
|
||||
;; Fails with ‘ERROR!!! client gethostbyaddr() failure’.
|
||||
(("(TESTS \\+=.*) tests/LTsock" _ prefix)
|
||||
prefix)
|
||||
;; Fails on CoW filesystems (eg. btrfs)
|
||||
(("tests/LTlock") "")
|
||||
;; Fails because /proc not mounted in sandbox
|
||||
(("\tdialects/linux/tests/case-20-epoll.bash \\\\")
|
||||
"\\")))))))
|
||||
(synopsis "Display information about open files")
|
||||
(description
|
||||
"Lsof stands for LiSt Open Files, and it does just that.
|
||||
|
||||
@@ -2872,17 +2872,17 @@ data by providing clean labels during training.")
|
||||
(define-public python-cma
|
||||
(package
|
||||
(name "python-cma")
|
||||
(version "4.4.1")
|
||||
(version "4.4.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "cma" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1n17shbcmy7h7k105ar9yhj2zmgykx1wv9fhwd5kbwrcypa221mz"))))
|
||||
"0w41k8dk8g1ngx797dzag5xcwws77sfnfriim874rq6wnmadcav3"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list #:test-backend #~'custom
|
||||
#:test-flags #~'("cma/test.py")))
|
||||
#:test-flags #~'("src/cma/test.py")))
|
||||
(native-inputs (list python-pytest python-setuptools))
|
||||
(propagated-inputs (list python-numpy))
|
||||
(home-page "https://github.com/CMA-ES/pycma")
|
||||
|
||||
@@ -1346,7 +1346,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
|
||||
(define-public mu
|
||||
(package
|
||||
(name "mu")
|
||||
(version "1.12.15")
|
||||
(version "1.14.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -1355,7 +1355,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "191q23nj690bn4cbb26yf7pw5ihb1xmbna6ccdrkkf4m19yrxr12"))))
|
||||
(base32 "1fhnnm58ndfd6hzdagrsgcdcm2qlcjlda13vyx5d9lclhxgdn0vf"))))
|
||||
(build-system meson-build-system)
|
||||
(native-inputs
|
||||
(list pkg-config
|
||||
@@ -1364,7 +1364,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
|
||||
tzdata-for-tests ; for tests
|
||||
texinfo))
|
||||
(inputs
|
||||
(list glib gmime guile-3.0 xapian readline python))
|
||||
(list glib gmime guile-3.0-latest xapian readline python))
|
||||
(arguments
|
||||
(list
|
||||
#:modules '((guix build meson-build-system)
|
||||
|
||||
@@ -9760,7 +9760,7 @@ diagrams.")
|
||||
(define-public libpoly
|
||||
(package
|
||||
(name "libpoly")
|
||||
(version "0.2.0")
|
||||
(version "0.2.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -9769,7 +9769,7 @@ diagrams.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0vwdffmff3widzj8x1pjvpw48s7h1y1pm8cad3zscmg2hzaqwkc0"))))
|
||||
"1nyiddvxzziagz7zrl2in8k1mypaj8z7vmm633h9mk4iiy586ddq"))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs (list gmp))
|
||||
(native-inputs
|
||||
|
||||
+21
-22
@@ -46,6 +46,7 @@
|
||||
;;; Copyright © 2024 Nguyễn Gia Phong <cnx@loang.net>
|
||||
;;; Copyright © 2025 Evgeny Pisemsky <mail@pisemsky.site>
|
||||
;;; Copyright © 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2025 Adrien 'neox' Bourmault <neox@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -1149,25 +1150,20 @@ simultaneously and therefore appear under the same nickname on IRC.")
|
||||
(define-public python-nbxmpp
|
||||
(package
|
||||
(name "python-nbxmpp")
|
||||
(version "5.0.4")
|
||||
(version "7.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "nbxmpp" version))
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://dev.gajim.org/gajim/python-nbxmpp")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "04fnc743d523gb38mm1inii80agmpb9r6hvn3f8ygnj3yq7s2vhn"))))
|
||||
(base32 "1n7b6yv2k89hsmhmx9pi7m8l3aq97xppaz3hm7mvqgvxnlw0c1kr"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
;; XXX: This probably should be an option for pyproject-build-system
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests? (invoke "python" "-m" "unittest" "-v")))))))
|
||||
(native-inputs
|
||||
(list python-setuptools
|
||||
python-wheel))
|
||||
(arguments (list #:test-backend #~'unittest))
|
||||
(propagated-inputs
|
||||
(list python-setuptools))
|
||||
(inputs
|
||||
(list glib
|
||||
glib-networking
|
||||
@@ -1187,7 +1183,7 @@ of xmpppy.")
|
||||
(define-public gajim
|
||||
(package
|
||||
(name "gajim")
|
||||
(version "1.9.5")
|
||||
(version "2.4.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -1195,7 +1191,7 @@ of xmpppy.")
|
||||
(version-major+minor version)
|
||||
"/gajim-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0g2nhy6ypj4jbz216sgiy37spq34bwa0ydn2g73fp9qnxfq4vpvz"))
|
||||
(base32 "0s2jryg8c0ifgf88pfj7k1ifhl1l2fw4w8w80g7xh3qpk5gj7ml0"))
|
||||
(patches
|
||||
(search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
|
||||
(build-system pyproject-build-system)
|
||||
@@ -1282,13 +1278,14 @@ of xmpppy.")
|
||||
glib-networking
|
||||
gsettings-desktop-schemas
|
||||
gsound
|
||||
gspell
|
||||
libspelling
|
||||
libadwaita
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gtk+
|
||||
gtksourceview-4
|
||||
gst-plugins-good
|
||||
gtk
|
||||
gtksourceview
|
||||
gupnp-igd
|
||||
libappindicator
|
||||
libnice
|
||||
libomemo
|
||||
libsecret
|
||||
@@ -1299,6 +1296,7 @@ of xmpppy.")
|
||||
python-dbus-1.2
|
||||
python-emoji
|
||||
python-gssapi
|
||||
python-httpx
|
||||
python-idna
|
||||
python-keyring
|
||||
python-nbxmpp
|
||||
@@ -1310,7 +1308,8 @@ of xmpppy.")
|
||||
python-pygobject
|
||||
python-pyopenssl
|
||||
python-qrcode
|
||||
python-sqlalchemy-2))
|
||||
python-sqlalchemy-2
|
||||
python-truststore))
|
||||
(propagated-inputs
|
||||
(list dconf))
|
||||
(synopsis "Fully-featured XMPP client")
|
||||
|
||||
+105
-62
@@ -166,70 +166,113 @@ bind processes, and much more.")
|
||||
|
||||
(define-public hwloc-2
|
||||
(package
|
||||
(inherit hwloc-1)
|
||||
(name "hwloc")
|
||||
(version "2.13.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://download.open-mpi.org/release/hwloc/v"
|
||||
(version-major+minor version)
|
||||
"/hwloc-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1aqdznqp7f18yg95vbr5n6ccxxdiywacygvn3wbhzn7bnspkdsaj"))
|
||||
;; XXX: Remove after updating package from 2.13.0.
|
||||
(patches (search-patches "hwloc-add-with-opencl.patch"))))
|
||||
|
||||
(native-inputs (modify-inputs native-inputs
|
||||
(append autoconf)
|
||||
(append automake)
|
||||
(append libtool)
|
||||
(append opencl-headers)
|
||||
(append bash))) ;for completion tests
|
||||
(inputs (modify-inputs inputs
|
||||
;; XXX: rocm-smi requires libdrm/drm.h but doesn't propagate a
|
||||
;; package providing these. For now, libdrm is used to provide
|
||||
;; this header.
|
||||
(append libdrm)
|
||||
(append opencl-icd-loader)
|
||||
(append rocm-smi-lib)
|
||||
(delete "numactl"))) ;libnuma is no longer needed.
|
||||
(propagated-inputs (modify-inputs propagated-inputs
|
||||
;; hwloc.pc lists libze_loader and libxml2 in
|
||||
;; 'Requires.private' in 'hwloc.pc'.
|
||||
(append level-zero libxml2)))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/open-mpi/hwloc")
|
||||
(commit (string-append "hwloc-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1l9skkcizlv0qvw2lzmysndbm528xvszhiqq3569da157qpa5xav"))
|
||||
;; XXX: Remove after updating package from 2.13.0.
|
||||
(patches (search-patches "hwloc-add-with-opencl.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" ;'lstopo' & co., depends on Cairo, libx11, etc.
|
||||
"lib" ;small closure
|
||||
"doc" ;400+ section 3 man pages
|
||||
"debug"))
|
||||
(native-inputs
|
||||
(list autoconf automake libtool opencl-headers bash pkg-config))
|
||||
(inputs
|
||||
(append (if (%current-target-system)
|
||||
'() ;fewer dependencies when cross-compiling
|
||||
(list libx11 cairo ncurses expat))
|
||||
(list
|
||||
;; XXX: rocm-smi requires libdrm/drm.h but doesn't
|
||||
;; propagate a package providing these. For now, libdrm is
|
||||
;; used to provide this header.
|
||||
libdrm
|
||||
opencl-icd-loader
|
||||
rocm-smi-lib)))
|
||||
(propagated-inputs
|
||||
;; hwloc.pc lists libze_loader and libxml2 in
|
||||
;; 'Requires.private' in 'hwloc.pc'.
|
||||
(list level-zero libpciaccess libxml2))
|
||||
(arguments
|
||||
(substitute-keyword-arguments arguments
|
||||
((#:configure-flags flags '())
|
||||
#~(cons* (string-append "--with-opencl="
|
||||
#$(this-package-input "opencl-icd-loader"))
|
||||
"--enable-rsmi"
|
||||
(string-append "--with-rocm="
|
||||
#$(this-package-input "rocm-smi-lib"))
|
||||
#$flags))
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
(add-after 'unpack 'delete-configure
|
||||
(lambda _
|
||||
;; Remove configure file to generate it with patch.
|
||||
(delete-file "configure")))
|
||||
(replace 'skip-linux-libnuma-test
|
||||
(lambda _
|
||||
;; Arrange to skip 'tests/hwloc/linux-libnuma', which fails on
|
||||
;; some machines: <https://github.com/open-mpi/hwloc/issues/213>.
|
||||
(substitute* "tests/hwloc/linux-libnuma.c"
|
||||
(("numa_available\\(\\)")
|
||||
"-1"))))
|
||||
(add-before 'check 'skip-tests-that-require-/sys
|
||||
(lambda _
|
||||
;; 'test-gather-topology.sh' requires /sys as of 2.9.0; skip it.
|
||||
(setenv "HWLOC_TEST_GATHER_TOPOLOGY" "0")))
|
||||
(add-before 'check 'skip-test-that-fails-on-qemu
|
||||
(lambda _
|
||||
;; Skip test that fails on emulated hardware due to QEMU bug:
|
||||
;; <https://bugs.gnu.org/40342>.
|
||||
(substitute* "tests/hwloc/hwloc_get_last_cpu_location.c"
|
||||
(("hwloc_topology_init" all)
|
||||
(string-append "exit (77);\n" all)))))))))))
|
||||
(list
|
||||
#:configure-flags
|
||||
#~(list
|
||||
(string-append
|
||||
"--with-opencl=" #$(this-package-input "opencl-icd-loader"))
|
||||
"--enable-rsmi"
|
||||
(string-append "--with-rocm=" #$(this-package-input "rocm-smi-lib"))
|
||||
"--localstatedir=/var")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'check 'skip-linux-libnuma-test
|
||||
(lambda _
|
||||
;; Arrange to skip 'tests/hwloc/linux-libnuma', which fails on
|
||||
;; some machines: <https://github.com/open-mpi/hwloc/issues/213>.
|
||||
(substitute* "tests/hwloc/linux-libnuma.c"
|
||||
(("numa_available\\(\\)")
|
||||
"-1"))))
|
||||
(add-after 'install 'refine-libnuma
|
||||
;; Give -L arguments for libraries to avoid propagation
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "lib"))
|
||||
(numa (assoc-ref inputs "numactl")))
|
||||
(substitute* (map (lambda (f) (string-append out "/" f))
|
||||
'("lib/pkgconfig/hwloc.pc" "lib/libhwloc.la"))
|
||||
(("-lnuma" lib)
|
||||
(string-append "-L" numa "/lib " lib))))))
|
||||
(add-after 'install 'avoid-circular-references
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((lib (assoc-ref outputs "lib")))
|
||||
;; Suppress the 'prefix=' and 'exec_prefix=' lines so that the
|
||||
;; "lib" output doesn't refer to "out".
|
||||
(substitute* (string-append lib "/lib/pkgconfig/hwloc.pc")
|
||||
(("^.*prefix=.*$")
|
||||
"")))))
|
||||
(add-after 'install 'move-man-pages
|
||||
(lambda _
|
||||
;; Move section 1 and 3 man pages to the "doc" output.
|
||||
(copy-recursively (string-append #$output "/share/man/man1")
|
||||
(string-append #$output:doc "/share/man/man1"))
|
||||
(copy-recursively (string-append #$output "/share/man/man7")
|
||||
(string-append #$output:doc "/share/man/man7"))
|
||||
(delete-file-recursively
|
||||
(string-append #$output "/share/man/man1"))
|
||||
(delete-file-recursively
|
||||
(string-append #$output "/share/man/man7"))))
|
||||
(add-before 'check 'skip-tests-that-require-/sys
|
||||
(lambda _
|
||||
;; 'test-gather-topology.sh' requires /sys as of 2.9.0; skip it.
|
||||
(setenv "HWLOC_TEST_GATHER_TOPOLOGY" "0")))
|
||||
(add-before 'check 'skip-test-that-fails-on-qemu
|
||||
(lambda _
|
||||
;; Skip test that fails on emulated hardware due to QEMU bug:
|
||||
;; <https://bugs.gnu.org/40342>.
|
||||
(substitute* "tests/hwloc/hwloc_get_last_cpu_location.c"
|
||||
(("hwloc_topology_init" all)
|
||||
(string-append "exit (77);\n" all))))))))
|
||||
(home-page "https://www.open-mpi.org/projects/hwloc/")
|
||||
(synopsis "Abstraction of hardware architectures")
|
||||
(description
|
||||
"hwloc provides a portable abstraction (across OS,
|
||||
versions, architectures, ...) of the hierarchical topology of modern
|
||||
architectures, including NUMA memory nodes, sockets, shared caches, cores and
|
||||
simultaneous multithreading. It also gathers various attributes such as cache
|
||||
and memory information. It primarily aims at helping high-performance
|
||||
computing applications with gathering information about the hardware so as to
|
||||
exploit it accordingly and efficiently.
|
||||
|
||||
hwloc may display the topology in multiple convenient formats. It also offers
|
||||
a powerful programming interface to gather information about the hardware,
|
||||
bind processes, and much more.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public hwloc
|
||||
;; The latest stable series of hwloc.
|
||||
|
||||
+41
-2
@@ -540,8 +540,9 @@ enables iPod support in music players such as Clementine.")
|
||||
python-setuptools))
|
||||
(inputs
|
||||
(list bash-minimal
|
||||
gst-libav
|
||||
python-gst
|
||||
gst-libav))
|
||||
(propagated-inputs
|
||||
(list python-gst
|
||||
python-pygobject
|
||||
python-pykka
|
||||
python-requests
|
||||
@@ -554,6 +555,44 @@ from local disk or cloud services, and can be controlled using a variety of
|
||||
MPD and web clients.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public mopidy-local
|
||||
(package
|
||||
(name "mopidy-local")
|
||||
(version "3.3.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/mopidy/mopidy-local")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1fqw6rq39w4q53w6jgl80x358rhzl4c9gdqb9kfgckmcz6vbcfm1"))))
|
||||
(build-system pyproject-build-system)
|
||||
(native-inputs
|
||||
(list python-pytest
|
||||
python-setuptools))
|
||||
(propagated-inputs
|
||||
(list mopidy
|
||||
python-pykka
|
||||
python-uritools))
|
||||
(home-page "https://mopidy.com/ext/local/")
|
||||
(synopsis "Mopidy extension for playing music from local file archive")
|
||||
(description
|
||||
"This package provides Mopidy's extension for playing music from local
|
||||
file archive.
|
||||
|
||||
In contrast to @url{https://mopidy.com/ext/file, Mopidy-File}, Mopidy-Local
|
||||
builds an index of archive’s metadata ahead of time, and can thus provide
|
||||
additional features like search.
|
||||
|
||||
The music metadata is stored in a SQLite database. This lets users to browse
|
||||
their music collection by album, artist, composer and performer, and provides
|
||||
full-text search capabilities based on SQLite’s FTS modules. It also notices
|
||||
updates via @command{mopidy local scan} while Mopidy is running, so you can
|
||||
scan your media library periodically, for example from a cron job.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public clementine
|
||||
;; Clementine has one automatic release per commit at
|
||||
;; <https://github.com/clementine-player/Clementine/releases>.
|
||||
|
||||
+50
-35
@@ -478,9 +478,9 @@ Raspberry Pi ISP (PiSP), consisting of the Frontend and Backend hardware
|
||||
components.")
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public libcamera
|
||||
(define-public libcamera-minimal
|
||||
(package
|
||||
(name "libcamera")
|
||||
(name "libcamera-minimal")
|
||||
(version "0.6.0")
|
||||
(source
|
||||
(origin
|
||||
@@ -491,27 +491,18 @@ components.")
|
||||
(commit (string-append "v" version))))
|
||||
(patches (search-patches
|
||||
"libcamera-ipa_manager-disable-signature-verification.patch"))
|
||||
(file-name
|
||||
(git-file-name name version))
|
||||
(file-name (git-file-name "libcamera" version))
|
||||
(sha256
|
||||
(base32 "0g6rphsa1hi9y22l2vw5cj75bf57clq3cggviwd1bnjhpp61nryc"))))
|
||||
(build-system meson-build-system)
|
||||
(outputs '("out" "doc" "gst" "tools"))
|
||||
(arguments
|
||||
(list #:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
|
||||
#:configure-flags
|
||||
#~(list (string-append "-Dbindir=" #$output:tools "/bin")
|
||||
"-Dudev=enabled"
|
||||
"-Dv4l2=true"
|
||||
#~(list "-Dudev=enabled"
|
||||
"-Dv4l2=enabled"
|
||||
"-Dtest=true")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-sphinx-theme
|
||||
;; sphinx_book_theme requires node for packaging
|
||||
;; use the default sphinx theme instead
|
||||
(lambda _
|
||||
(substitute* "Documentation/conf.py.in"
|
||||
(("sphinx_book_theme") "alabaster"))))
|
||||
(add-after 'unpack 'disable-gstreamer-tests
|
||||
;; these require /dev/udmabuf
|
||||
(lambda _
|
||||
@@ -530,39 +521,24 @@ components.")
|
||||
(substitute* "test/meson.build"
|
||||
((".*'name': 'file'.*")
|
||||
"")))))
|
||||
#~())
|
||||
(add-after 'install 'move-doc-and-gst
|
||||
(lambda _
|
||||
(mkdir-p (string-append #$output:doc "/share"))
|
||||
(rename-file (string-append #$output "/share/doc")
|
||||
(string-append #$output:doc "/share/doc"))
|
||||
(mkdir-p (string-append #$output:gst "/lib"))
|
||||
(rename-file
|
||||
(string-append #$output "/lib/gstreamer-1.0")
|
||||
(string-append #$output:gst "/lib/gstreamer-1.0")))))))
|
||||
#~()))))
|
||||
(native-inputs
|
||||
(list googletest
|
||||
graphviz ;for 'dot'
|
||||
doxygen
|
||||
pkg-config
|
||||
(list pkg-config
|
||||
python-wrapper
|
||||
python-sphinx
|
||||
python-sphinxcontrib-doxylink
|
||||
python-pyyaml))
|
||||
python-pyyaml
|
||||
python-packaging))
|
||||
(inputs
|
||||
(append
|
||||
(list eudev
|
||||
glib
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
libevent
|
||||
libjpeg-turbo
|
||||
libtiff
|
||||
libyaml
|
||||
libyuv
|
||||
pybind11-2
|
||||
python-jinja2
|
||||
python-ply
|
||||
qtbase)
|
||||
python-ply)
|
||||
;; libpisp is only needed for the rpi/pisp pipeline on ARM.
|
||||
(if (target-arm?)
|
||||
(list libpisp)
|
||||
@@ -573,6 +549,45 @@ Android, and ChromeOS.")
|
||||
(home-page "https://libcamera.org/")
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
;; Drop the documentation and the sample utilities.
|
||||
;; The README.rst gives a nice list of what packages are required.
|
||||
(define-public libcamera
|
||||
(package/inherit libcamera-minimal
|
||||
(name "libcamera")
|
||||
(outputs '("out" "doc" "gst" "tools"))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments libcamera-minimal)
|
||||
((#:configure-flags flags #~'())
|
||||
#~(cons (string-append "-Dbindir=" #$output:tools "/bin")
|
||||
#$flags))
|
||||
((#:phases phases #~%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(add-after 'unpack 'set-sphinx-theme
|
||||
;; sphinx_book_theme requires node for packaging
|
||||
;; use the default sphinx theme instead
|
||||
(lambda _
|
||||
(substitute* "Documentation/conf.py.in"
|
||||
(("sphinx_book_theme") "alabaster"))))
|
||||
(add-after 'install 'move-doc-and-gst
|
||||
(lambda _
|
||||
(mkdir-p (string-append #$output:doc "/share"))
|
||||
(rename-file (string-append #$output "/share/doc")
|
||||
(string-append #$output:doc "/share/doc"))
|
||||
(mkdir-p (string-append #$output:gst "/lib"))
|
||||
(rename-file
|
||||
(string-append #$output "/lib/gstreamer-1.0")
|
||||
(string-append #$output:gst "/lib/gstreamer-1.0"))))))))
|
||||
(native-inputs
|
||||
(modify-inputs (package-native-inputs libcamera-minimal)
|
||||
(append googletest
|
||||
doxygen
|
||||
graphviz
|
||||
python-sphinx
|
||||
python-sphinxcontrib-doxylink)))
|
||||
(inputs
|
||||
(modify-inputs (package-inputs libcamera-minimal)
|
||||
(append libevent libtiff qtbase)))))
|
||||
|
||||
(define-public libnice
|
||||
(package
|
||||
(name "libnice")
|
||||
|
||||
+23
-16
@@ -1,7 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016 Nikita <nikita@n0.is>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2024 Eric Bavier <bavier@posteo.net>
|
||||
;;; Copyright © 2024,2026 Eric Bavier <bavier@posteo.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,35 +20,42 @@
|
||||
|
||||
(define-module (gnu packages nickle)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages ruby-xyz)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages))
|
||||
|
||||
(define-public nickle
|
||||
(package
|
||||
(name "nickle")
|
||||
(version "2.97")
|
||||
(version "2.107")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://nickle.org/release/nickle-"
|
||||
version ".tar.gz"))
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gqashcs3r0d1yp6rq6q2ayjdwsjxnd8z0ij55ayrbhn296l7mp2"))
|
||||
(patches (search-patches "nickle-man-release-date.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs (list readline))
|
||||
"1wli8p5fv2ldy51ycc8pcx8rl3ph2wbyiqs21qpjadlvildaaqj0"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-build-date
|
||||
(lambda _
|
||||
;; Our patch touches Makefile.am, but rather than rebootstrap,
|
||||
;; make the substitution directly in Makefile.in.
|
||||
(substitute* "Makefile.in"
|
||||
(("BUILD_DATE") "RELEASE_DATE")))))))
|
||||
(list #:phases #~(modify-phases %standard-phases
|
||||
(add-before 'configure 'disable-benchmarks
|
||||
;; Benchmarks would require `gmp` and don't
|
||||
;; test anything not already covered by other
|
||||
;; tests, so disable them here.
|
||||
(lambda _
|
||||
(substitute* "meson.build"
|
||||
(("^subdir\\('bench'\\)" &)
|
||||
(string-append "# " &))))))))
|
||||
(native-inputs (list bc bison flex pkg-config ruby-asciidoctor-pdf))
|
||||
(inputs (list readline))
|
||||
(synopsis "Numeric oriented programming language")
|
||||
(description
|
||||
"Nickle is a programming language based prototyping environment with
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
(define-public parallel
|
||||
(package
|
||||
(name "parallel")
|
||||
(version "20260222")
|
||||
(version "20260322")
|
||||
(outputs '("out" "doc"))
|
||||
(source
|
||||
(origin
|
||||
@@ -90,7 +90,7 @@
|
||||
(uri (string-append "mirror://gnu/parallel/parallel-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "0j0zmq1klbvpz590vr2di8yvsniwixlhsmir7zfjy3rajx42l9y6"))
|
||||
(base32 "1q7g5f13nlwichgh0dk8w5fqjnfnxvwxk6rjy0fd5l7l6blq0ikn"))
|
||||
(snippet
|
||||
'(begin
|
||||
(use-modules (guix build utils))
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
This commit adds the patch that fixes:
|
||||
<https://github.com/lsof-org/lsof/issues/317>
|
||||
|
||||
The issue was triggering the following error in the `test` phase that
|
||||
resulted in a build failure in Linux 6.9 or higher:
|
||||
|
||||
FAIL: lib/dialects/linux/tests/case-20-pidfd-pid.bash
|
||||
|
||||
|
||||
From c1678e3f6e4b4d984cb3078b7bf0c9e24bedb8ca Mon Sep 17 00:00:00 2001
|
||||
From: Jiajie Chen <c@jia.je>
|
||||
Date: Fri, 17 May 2024 15:22:35 +0800
|
||||
Subject: [PATCH] [linux] Maintain original output for pidfd in linux 6.9
|
||||
|
||||
---
|
||||
00DIST | 3 +++
|
||||
lib/dialects/linux/dproc.c | 13 +++++++++++++
|
||||
2 files changed, 16 insertions(+)
|
||||
|
||||
diff --git a/00DIST b/00DIST
|
||||
index d5a0349..9a29611 100644
|
||||
--- a/00DIST
|
||||
+++ b/00DIST
|
||||
@@ -5605,6 +5605,9 @@ Supplement Regenerated the 4.04 distribution to correct a non-
|
||||
|
||||
[linux] Do not embed kernel version in CFLAGS (#314)
|
||||
|
||||
+ [linux] Linux 6.9 changed the pidfs appearence in procfs. Try
|
||||
+ to maintain original output in lsof (#317)
|
||||
+
|
||||
|
||||
Vic Abell <abe@purdue.edu>
|
||||
July 14, 2018
|
||||
diff --git a/lib/dialects/linux/dproc.c b/lib/dialects/linux/dproc.c
|
||||
index cb6bb64..3a7a120 100644
|
||||
--- a/lib/dialects/linux/dproc.c
|
||||
+++ b/lib/dialects/linux/dproc.c
|
||||
@@ -1273,6 +1273,10 @@ static int process_id(struct lsof_context *ctx, /* context */
|
||||
#endif /* defined(HASEPTOPTS) */
|
||||
if (rest && rest[0] == '[' && rest[1] == 'p')
|
||||
fdinfo_mask |= FDINFO_PID;
|
||||
+ else if (Lf->ntype == N_REGLR && rest && *rest && strcmp(pbuf, "pidfd") == 0) {
|
||||
+ // https://github.com/lsof-org/lsof/issues/317
|
||||
+ fdinfo_mask |= FDINFO_PID;
|
||||
+ }
|
||||
|
||||
if ((av = get_fdinfo(ctx, pathi, fdinfo_mask, &fi)) &
|
||||
FDINFO_POS) {
|
||||
@@ -1338,6 +1342,15 @@ static int process_id(struct lsof_context *ctx, /* context */
|
||||
Lf->sf |= SELPTYINFO;
|
||||
}
|
||||
#endif /* defined(HASEPTOPTS) && defined(HASPTYEPT) */
|
||||
+ else if (Lf->ntype == N_REGLR && rest && *rest && Lf->nm &&
|
||||
+ strcmp(Lf->nm, "pidfd") == 0) {
|
||||
+ // https://github.com/lsof-org/lsof/issues/317
|
||||
+ // pidfd since Linux 6.9 becomes a regular file:
|
||||
+ // /proc/PID/fd/FD -> pidfd:[INODE]
|
||||
+ (void)snpf(rest, sizeof(pbuf) - (rest - pbuf),
|
||||
+ "[pidfd:%d]", fi.pid);
|
||||
+ enter_nm(ctx, rest);
|
||||
+ }
|
||||
|
||||
if (Lf->sf)
|
||||
link_lfile(ctx);
|
||||
--
|
||||
2.45.2
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
Submitted close to upstream at
|
||||
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1070162
|
||||
|
||||
From 95ff7e9de4ed815e060b1df59b5b2b105307e0d7 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Bavier <bavier@posteo.net>
|
||||
Date: Mon, 29 Apr 2024 23:34:15 -0500
|
||||
Subject: [PATCH] Fixes substitution of REALEASE_DATE in nickle.1
|
||||
|
||||
* Makefile.am (nickle.1): 'BUILD_DATE' -> 'RELEASE_DATE'.
|
||||
* nickle.1.in: Include version in footer.
|
||||
---
|
||||
Makefile.am | 2 +-
|
||||
nickle.1.in | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index ba28ec9..5ed56a3 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -96,7 +96,7 @@ RELEASE_FILES = $(TARFILE) $(SIGFILE) $(SRPMFILE) $(RPMFILE)
|
||||
|
||||
nickle.1: nickle.1.in nickle-config.h
|
||||
sed -e 's,@''VERSION@,$(VERSION),' \
|
||||
- -e 's,@''BUILD_DATE@,$(BUILD_DATE),' \
|
||||
+ -e 's,@''RELEASE_DATE@,$(RELEASE_DATE),' \
|
||||
-e 's,@''pkgdatadir@,$(pkgdatadir),' $(top_srcdir)/nickle.1.in > $@
|
||||
|
||||
nickle.spec: nickle.spec.in nickle-config.h
|
||||
diff --git a/nickle.1.in b/nickle.1.in
|
||||
index 4871ac2..1ab9e08 100644
|
||||
--- a/nickle.1.in
|
||||
+++ b/nickle.1.in
|
||||
@@ -1,4 +1,4 @@
|
||||
-.TH NICKLE 1 "@RELEASE_DATE@"
|
||||
+.TH NICKLE 1 "@RELEASE_DATE@" "nickle @VERSION@"
|
||||
.SH NAME
|
||||
nickle \- a desk calculator language
|
||||
.SH SYNOPSIS
|
||||
--
|
||||
2.41.0
|
||||
|
||||
@@ -0,0 +1,984 @@
|
||||
From 82e98cf24808754578ab26adef5c33acc949f75e Mon Sep 17 00:00:00 2001
|
||||
From: Liliana Marie Prikler <liliana.prikler@gmail.com>
|
||||
Date: Sat, 5 Jun 2021 22:47:00 -0400
|
||||
Subject: [PATCH] ppsspp: Remove upgrade code and gold support.
|
||||
|
||||
Original patch from Liliana Marie Prikler.
|
||||
Rebased on master (commit 69fa20744958aef8da9ca052ba7675fdc1636e46) by
|
||||
Maxim Cournoyer.
|
||||
Revised again by Liliana Marie Prikler for versions 1.12.3 and 1.14.4.
|
||||
Revised again again by Liliana Marie Prikler for version 1.20.3.
|
||||
---
|
||||
CMakeLists.txt | 78 +++++------------------
|
||||
Common/System/Request.cpp | 2 -
|
||||
Common/System/System.h | 1 -
|
||||
Core/Config.cpp | 123 +------------------------------------
|
||||
Core/Config.h | 11 ----
|
||||
Core/MIPS/IR/IRJit.h | 5 --
|
||||
Qt/QtMain.cpp | 6 --
|
||||
Qt/mainwindow.cpp | 8 +--
|
||||
Qt/mainwindow.h | 3 +-
|
||||
SDL/SDLMain.cpp | 11 +---
|
||||
UI/Background.cpp | 2 +-
|
||||
UI/GameSettingsScreen.cpp | 7 ---
|
||||
UI/MainScreen.cpp | 91 +--------------------------
|
||||
UI/MainScreen.h | 3 -
|
||||
UI/MemStickScreen.cpp | 9 +--
|
||||
UI/MiscScreens.cpp | 36 +----------
|
||||
UI/ReportScreen.cpp | 11 +---
|
||||
UI/UIAtlas.cpp | 1 -
|
||||
UWP/PPSSPP_UWPMain.cpp | 8 +--
|
||||
Windows/MainWindowMenu.cpp | 9 ---
|
||||
Windows/main.cpp | 10 +--
|
||||
Windows/resource.h | 1 -
|
||||
ios/main.mm | 33 ++++------
|
||||
23 files changed, 39 insertions(+), 430 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 070f49b..f206ced 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -137,27 +137,6 @@ if(OPENXR AND NOT ARMV7_DEVICE)
|
||||
message("OpenXR enabled")
|
||||
endif()
|
||||
|
||||
-if(GOLD)
|
||||
- add_compile_definitions(GOLD)
|
||||
- message("Gold Build")
|
||||
- if(IOS_APP_STORE)
|
||||
- message("WARNING: Gold build for iOS is deprecated")
|
||||
- endif()
|
||||
-else()
|
||||
- message("Non-gold Build")
|
||||
-endif()
|
||||
-
|
||||
-if(USE_IAP)
|
||||
- if(GOLD)
|
||||
- message(FATAL_ERROR "USE_IAP and GOLD can't be enabled together")
|
||||
- endif()
|
||||
- if(NOT IOS_APP_STORE)
|
||||
- message(FATAL_ERROR "USE_IAP can only be enabled in app store builds")
|
||||
- endif()
|
||||
- message("USE_IAP for iOS enabled")
|
||||
- add_compile_definitions(USE_IAP)
|
||||
-endif()
|
||||
-
|
||||
if(IOS_APP_STORE)
|
||||
add_compile_definitions(PPSSPP_PLATFORM_IOS_APP_STORE)
|
||||
add_compile_definitions(GLES_SILENCE_DEPRECATION)
|
||||
@@ -211,8 +190,6 @@ option(USE_ASAN "Use address sanitizer" OFF)
|
||||
option(USE_UBSAN "Use undefined behaviour sanitizer" OFF)
|
||||
option(USE_CCACHE "Use ccache if detected" ON)
|
||||
option(USE_NO_MMAP "Disable mmap usage" OFF)
|
||||
-option(USE_IAP "IAP enabled" OFF)
|
||||
-option(GOLD "Gold build" OFF)
|
||||
|
||||
if(USE_CCACHE)
|
||||
include(ccache)
|
||||
@@ -1462,11 +1439,7 @@ elseif(WIN32)
|
||||
set(TargetBin PPSSPPWindows)
|
||||
elseif(LIBRETRO)
|
||||
else()
|
||||
- if(GOLD)
|
||||
- set(TargetBin PPSSPPGold)
|
||||
- else()
|
||||
- set(TargetBin PPSSPPSDL)
|
||||
- endif()
|
||||
+ set(TargetBin PPSSPPSDL)
|
||||
# Require SDL
|
||||
add_compile_definitions(SDL)
|
||||
list(APPEND nativeExtra
|
||||
@@ -2972,17 +2945,10 @@ endif()
|
||||
if(TargetBin)
|
||||
if(APPLE)
|
||||
if(NOT IOS)
|
||||
- if(GOLD)
|
||||
- set(ICON_PATH_ABS ${CMAKE_CURRENT_SOURCE_DIR}/icons/ppsspp_gold.icns)
|
||||
- set(MACOSX_BUNDLE_ICON_FILE ppsspp_gold.icns)
|
||||
- set(MACOSX_BUNDLE_BUNDLE_NAME "PPSSPP Gold")
|
||||
- set(MACOSX_BUNDLE_GUI_IDENTIFIER org.ppsspp.ppssppgold)
|
||||
- else()
|
||||
- set(ICON_PATH_ABS ${CMAKE_CURRENT_SOURCE_DIR}/icons/ppsspp.icns)
|
||||
- set(MACOSX_BUNDLE_ICON_FILE ppsspp.icns)
|
||||
- set(MACOSX_BUNDLE_BUNDLE_NAME "PPSSPP")
|
||||
- set(MACOSX_BUNDLE_GUI_IDENTIFIER org.ppsspp.ppsspp)
|
||||
- endif()
|
||||
+ set(ICON_PATH_ABS ${CMAKE_CURRENT_SOURCE_DIR}/icons/ppsspp.icns)
|
||||
+ set(MACOSX_BUNDLE_ICON_FILE ppsspp.icns)
|
||||
+ set(MACOSX_BUNDLE_BUNDLE_NAME "PPSSPP")
|
||||
+ set(MACOSX_BUNDLE_GUI_IDENTIFIER org.ppsspp.ppsspp)
|
||||
set_source_files_properties(${ICON_PATH_ABS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
|
||||
endif()
|
||||
|
||||
@@ -3081,25 +3047,15 @@ if(IOS AND NOT LIBRETRO)
|
||||
set(PRODUCT_NAME "PPSSPP")
|
||||
set(BUNDLE_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/ios/PPSSPP-Info.plist")
|
||||
set(BUNDLE_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/ios/App.entitlements")
|
||||
- if(GOLD)
|
||||
- if(IOS_APP_STORE)
|
||||
- set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp-gold")
|
||||
- else()
|
||||
- set(BUNDLE_IDENTIFIER "org.ppsspp.ppssppgold")
|
||||
- endif()
|
||||
- set(ICON_NAME "PPSSPPGold")
|
||||
- set(DISPLAY_NAME "PPSSPP Gold")
|
||||
+ if(IOS_APP_STORE)
|
||||
+ set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp-free")
|
||||
else()
|
||||
- if(IOS_APP_STORE)
|
||||
- set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp-free")
|
||||
- else()
|
||||
- set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp")
|
||||
- endif()
|
||||
- set(ICON_NAME "AppIcon")
|
||||
- set(DISPLAY_NAME "PPSSPP")
|
||||
+ set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp")
|
||||
endif()
|
||||
+ set(ICON_NAME "AppIcon")
|
||||
+ set(DISPLAY_NAME "PPSSPP")
|
||||
if(IOS_APP_STORE)
|
||||
- message(STATUS "DevTeam: ${DEVELOPMENT_TEAM_ID} Icon: ${ICON_NAME} Target: ${TargetBin} Gold: ${GOLD} IAP: ${USE_IAP}")
|
||||
+ message(STATUS "DevTeam: ${DEVELOPMENT_TEAM_ID} Icon: ${ICON_NAME} Target: ${TargetBin}")
|
||||
message(STATUS "CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
|
||||
|
||||
# This is for injecting the version into the plist, and also copying resources.
|
||||
@@ -3191,15 +3147,9 @@ if(IOS AND NOT LIBRETRO)
|
||||
endif()
|
||||
|
||||
if(MACOSX AND NOT IOS)
|
||||
- if(GOLD)
|
||||
- set_target_properties(${TargetBin} PROPERTIES
|
||||
- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macOS/InfoGold.plist"
|
||||
- )
|
||||
- else()
|
||||
- set_target_properties(${TargetBin} PROPERTIES
|
||||
- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macOS/Info.plist"
|
||||
- )
|
||||
- endif()
|
||||
+ set_target_properties(${TargetBin} PROPERTIES
|
||||
+ MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macOS/Info.plist"
|
||||
+ )
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT ANDROID AND NOT APPLE)
|
||||
diff --git a/Common/System/Request.cpp b/Common/System/Request.cpp
|
||||
index 8332529..00035fd 100644
|
||||
--- a/Common/System/Request.cpp
|
||||
+++ b/Common/System/Request.cpp
|
||||
@@ -49,8 +49,6 @@ const char *RequestTypeAsString(SystemRequestType type) {
|
||||
case SystemRequestType::MICROPHONE_COMMAND: return "MICROPHONE_COMMAND";
|
||||
case SystemRequestType::RUN_CALLBACK_IN_WNDPROC: return "RUN_CALLBACK_IN_WNDPROC";
|
||||
case SystemRequestType::MOVE_TO_TRASH: return "MOVE_TO_TRASH";
|
||||
- case SystemRequestType::IAP_RESTORE_PURCHASES: return "IAP_RESTORE_PURCHASES";
|
||||
- case SystemRequestType::IAP_MAKE_PURCHASE: return "IAP_MAKE_PURCHASE";
|
||||
default: return "N/A";
|
||||
}
|
||||
}
|
||||
diff --git a/Common/System/System.h b/Common/System/System.h
|
||||
index e58a5cc..3c227be 100644
|
||||
--- a/Common/System/System.h
|
||||
+++ b/Common/System/System.h
|
||||
@@ -194,7 +194,6 @@ enum SystemProperty {
|
||||
SYSPROP_DISPLAY_HAS_CAMERA_CUTOUT,
|
||||
|
||||
SYSPROP_DEVICE_TYPE,
|
||||
- SYSPROP_APP_GOLD, // To avoid having #ifdef GOLD other than in main.cpp and similar.
|
||||
|
||||
// Exposed on Android. Choosing the optimal sample rate for audio
|
||||
// will result in lower latencies. Buffer size is automatically matched
|
||||
diff --git a/Core/Config.cpp b/Core/Config.cpp
|
||||
index 4380e80..afd177a 100644
|
||||
--- a/Core/Config.cpp
|
||||
+++ b/Core/Config.cpp
|
||||
@@ -237,7 +237,6 @@ static const ConfigSetting generalSettings[] = {
|
||||
ConfigSetting("CurrentDirectory", SETTING(g_Config, currentDirectory), "", CfgFlag::DEFAULT),
|
||||
ConfigSetting("ShowDebuggerOnLoad", SETTING(g_Config, bShowDebuggerOnLoad), false, CfgFlag::DEFAULT),
|
||||
ConfigSetting("ShowImDebugger", SETTING(g_Config, bShowImDebugger), false, CfgFlag::DONT_SAVE),
|
||||
- ConfigSetting("CheckForNewVersion", SETTING(g_Config, bCheckForNewVersion), true, CfgFlag::DEFAULT),
|
||||
ConfigSetting("Language", SETTING(g_Config, sLanguageIni), &DefaultLangRegion, CfgFlag::DEFAULT),
|
||||
ConfigSetting("ForceLagSync2", SETTING(g_Config, bForceLagSync), false, CfgFlag::PER_GAME),
|
||||
ConfigSetting("DiscordRichPresence", SETTING(g_Config, bDiscordRichPresence), false, CfgFlag::DEFAULT),
|
||||
@@ -1112,12 +1111,6 @@ static const ConfigSetting jitSettings[] = {
|
||||
ConfigSetting("DiscardRegsOnJRRA", SETTING(g_Config, bDiscardRegsOnJRRA), false, CfgFlag::DONT_SAVE | CfgFlag::REPORT),
|
||||
};
|
||||
|
||||
-static const ConfigSetting upgradeSettings[] = {
|
||||
- ConfigSetting("UpgradeMessage", SETTING(g_Config, sUpgradeMessage), "", CfgFlag::DEFAULT),
|
||||
- ConfigSetting("UpgradeVersion", SETTING(g_Config, sUpgradeVersion), "", CfgFlag::DEFAULT),
|
||||
- ConfigSetting("DismissedVersion", SETTING(g_Config, sDismissedVersion), "", CfgFlag::DEFAULT),
|
||||
-};
|
||||
-
|
||||
static const ConfigSetting themeSettings[] = {
|
||||
ConfigSetting("ThemeName", SETTING(g_Config, sThemeName), "Default", CfgFlag::DEFAULT),
|
||||
};
|
||||
@@ -1156,7 +1149,6 @@ static const ConfigSectionMeta g_sectionMeta[] = {
|
||||
{ &g_Config, themeSettings, ARRAY_SIZE(themeSettings), "Theme" },
|
||||
{ &g_Config, vrSettings, ARRAY_SIZE(vrSettings), "VR" },
|
||||
{ &g_Config, achievementSettings, ARRAY_SIZE(achievementSettings), "Achievements" },
|
||||
- { &g_Config, upgradeSettings, ARRAY_SIZE(upgradeSettings), "Upgrade" },
|
||||
{ &g_Config.displayLayoutLandscape, displayLayoutSettings, ARRAY_SIZE(displayLayoutSettings), "DisplayLayout.Landscape", "Graphics" }, // We read the old settings from [Graphics], since most people played in landscape before.
|
||||
{ &g_Config.displayLayoutPortrait, displayLayoutSettings, ARRAY_SIZE(displayLayoutSettings), "DisplayLayout.Portrait"}, // These we don't want to read from the old settings, since for most people, those settings will be bad.
|
||||
{ &g_Config.touchControlsLandscape, touchControlSettings, ARRAY_SIZE(touchControlSettings), "TouchControls.Landscape", "Control" }, // We read the old settings from [Control], since most people played in landscape before.
|
||||
@@ -1400,8 +1392,6 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename) {
|
||||
}
|
||||
}
|
||||
|
||||
- CheckForUpdate();
|
||||
-
|
||||
INFO_LOG(Log::Loader, "Loading controller config: %s", controllerIniFilename_.c_str());
|
||||
bSaveSettings = true;
|
||||
|
||||
@@ -1623,117 +1613,6 @@ void Config::NotifyUpdatedCpuCore() {
|
||||
}
|
||||
}
|
||||
|
||||
-bool Config::SupportsUpgradeCheck() const {
|
||||
-#if PPSSPP_PLATFORM(WINDOWS) || PPSSPP_PLATFORM(LINUX) || PPSSPP_PLATFORM(MACOS) || PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS_APP_STORE)
|
||||
- return true;
|
||||
-#else
|
||||
- return false;
|
||||
-#endif
|
||||
-}
|
||||
-
|
||||
-#if 0
|
||||
-// Use for debugging the version check without messing with the server
|
||||
-#define NEW_VERSION_OVERRIDE "v1.100.3-gaaaaaaaaa"
|
||||
-constexpr int UPDATE_CHECK_FREQ = 1;
|
||||
-#else
|
||||
-constexpr int UPDATE_CHECK_FREQ = 5;
|
||||
-#endif
|
||||
-
|
||||
-void Config::CheckForUpdate() {
|
||||
- if (!bCheckForNewVersion || !SupportsUpgradeCheck()) {
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- const char *gitVer = PPSSPP_GIT_VERSION;
|
||||
- Version installed(gitVer);
|
||||
- Version upgrade(sUpgradeVersion);
|
||||
- const bool versionsValid = installed.IsValid() && upgrade.IsValid();
|
||||
-
|
||||
- // Do this regardless of iRunCount to prevent a silly bug where one might use an older
|
||||
- // build of PPSSPP, receive an upgrade notice, then start a newer version, and still receive the upgrade notice,
|
||||
- // even if said newer version is >= the upgrade found online.
|
||||
- if ((sDismissedVersion == sUpgradeVersion) || (versionsValid && (installed >= upgrade))) {
|
||||
- sUpgradeMessage.clear();
|
||||
- }
|
||||
-
|
||||
- // Check for new version on every 10 runs.
|
||||
- // Sometimes the download may not be finished when the main screen shows (if the user dismisses the
|
||||
- // splash screen quickly), but then we'll just show the notification next time instead, we store the
|
||||
- // upgrade number in the ini.
|
||||
-
|
||||
- const bool checkThisTime = iRunCount % UPDATE_CHECK_FREQ == 0;
|
||||
- if (checkThisTime) {
|
||||
- const char *versionUrl = "http://www.ppsspp.org/version.json";
|
||||
- const char *acceptMime = "application/json, text/*; q=0.9, */*; q=0.8";
|
||||
- g_DownloadManager.StartDownload(versionUrl, Path(), http::RequestFlags::Default, acceptMime, "version", [this](http::Request &download) { VersionJsonDownloadCompleted(download); });
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-void Config::VersionJsonDownloadCompleted(http::Request &download) {
|
||||
- if (download.ResultCode() != 200) {
|
||||
- ERROR_LOG(Log::Loader, "Failed to download %s: %d", download.url().c_str(), download.ResultCode());
|
||||
- return;
|
||||
- }
|
||||
- std::string data;
|
||||
- download.buffer().TakeAll(&data);
|
||||
- if (data.empty()) {
|
||||
- ERROR_LOG(Log::Loader, "Version check: Empty data from server!");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- json::JsonReader reader(data.c_str(), data.size());
|
||||
- const json::JsonGet root = reader.root();
|
||||
- if (!root) {
|
||||
- ERROR_LOG(Log::Loader, "Failed to parse json");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- std::string version;
|
||||
- root.getString("version", &version);
|
||||
-
|
||||
- #ifdef NEW_VERSION_OVERRIDE
|
||||
- version = NEW_VERSION_OVERRIDE;
|
||||
- #endif
|
||||
-
|
||||
- const char *gitVer = PPSSPP_GIT_VERSION;
|
||||
- Version installed(gitVer);
|
||||
- Version upgrade(version);
|
||||
- Version dismissed(g_Config.sDismissedVersion);
|
||||
-
|
||||
- if (!installed.IsValid()) {
|
||||
- ERROR_LOG(Log::Loader, "Version check: Local version string invalid. Build problems? %s", PPSSPP_GIT_VERSION);
|
||||
- return;
|
||||
- }
|
||||
- if (!upgrade.IsValid()) {
|
||||
- ERROR_LOG(Log::Loader, "Version check: Invalid server version: %s", version.c_str());
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- if (installed >= upgrade) {
|
||||
- INFO_LOG(Log::Loader, "Version check: Already up to date, erasing any upgrade message");
|
||||
- g_Config.sUpgradeMessage.clear();
|
||||
- g_Config.sUpgradeVersion = upgrade.ToString();
|
||||
- g_Config.sDismissedVersion.clear();
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- if (installed < upgrade && dismissed != upgrade) {
|
||||
- g_Config.sUpgradeMessage = "New version of PPSSPP available!";
|
||||
- g_Config.sUpgradeVersion = upgrade.ToString();
|
||||
- g_Config.sDismissedVersion.clear();
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-bool Config::ShowUpgradeReminder() {
|
||||
- return !sUpgradeMessage.empty() && !sUpgradeVersion.empty() && sUpgradeVersion != sDismissedVersion;
|
||||
-}
|
||||
-
|
||||
-void Config::DismissUpgrade() {
|
||||
- INFO_LOG(Log::Loader, "Upgrade dismissed for version %s", sUpgradeVersion.c_str());
|
||||
- sDismissedVersion = sUpgradeVersion;
|
||||
- sUpgradeMessage.clear();
|
||||
-}
|
||||
-
|
||||
void Config::SetSearchPath(const Path &searchPath) {
|
||||
searchPath_ = searchPath;
|
||||
}
|
||||
diff --git a/Core/Config.h b/Core/Config.h
|
||||
index 3cb451c..b7f6d10 100644
|
||||
--- a/Core/Config.h
|
||||
+++ b/Core/Config.h
|
||||
@@ -679,11 +679,6 @@ struct Config : public ConfigBlock {
|
||||
|
||||
Path mountRoot; // Actually, mount as host0. keeping consistent with headless args.
|
||||
|
||||
- // Data for upgrade prompt
|
||||
- std::string sUpgradeMessage; // The actual message from the server is currently not used, need a translation mechanism. So this just acts as a flag.
|
||||
- std::string sUpgradeVersion;
|
||||
- std::string sDismissedVersion;
|
||||
-
|
||||
void Load(const char *iniFileName = nullptr, const char *controllerIniFilename = nullptr);
|
||||
bool Save(const char *saveReason);
|
||||
void Reload();
|
||||
@@ -706,12 +701,6 @@ struct Config : public ConfigBlock {
|
||||
|
||||
void UpdateIniLocation(const char *iniFileName = nullptr, const char *controllerIniFilename = nullptr);
|
||||
|
||||
- bool SupportsUpgradeCheck() const;
|
||||
- void CheckForUpdate();
|
||||
- void VersionJsonDownloadCompleted(http::Request &download);
|
||||
- void DismissUpgrade();
|
||||
- bool ShowUpgradeReminder();
|
||||
-
|
||||
void GetReportingInfo(UrlEncoder &data) const;
|
||||
|
||||
int NextValidBackend();
|
||||
diff --git a/Core/MIPS/IR/IRJit.h b/Core/MIPS/IR/IRJit.h
|
||||
index 4667043..e3af580 100644
|
||||
--- a/Core/MIPS/IR/IRJit.h
|
||||
+++ b/Core/MIPS/IR/IRJit.h
|
||||
@@ -38,11 +38,6 @@
|
||||
//
|
||||
// #define IR_PROFILING
|
||||
|
||||
-// Try to catch obvious misses of be above rule.
|
||||
-#if defined(IR_PROFILING) && defined(GOLD)
|
||||
-#error
|
||||
-#endif
|
||||
-
|
||||
namespace MIPSComp {
|
||||
|
||||
// TODO : Use arena allocators. For now let's just malloc.
|
||||
diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp
|
||||
index c7d43a3..4e0786d 100644
|
||||
--- a/Qt/QtMain.cpp
|
||||
+++ b/Qt/QtMain.cpp
|
||||
@@ -262,12 +262,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
return true;
|
||||
case SYSPROP_SUPPORTS_OPEN_FILE_IN_EDITOR:
|
||||
return true; // FileUtil.cpp: OpenFileInEditor
|
||||
- case SYSPROP_APP_GOLD:
|
||||
-#ifdef GOLD
|
||||
- return true;
|
||||
-#else
|
||||
- return false;
|
||||
-#endif
|
||||
case SYSPROP_CAN_JIT:
|
||||
return true;
|
||||
case SYSPROP_HAS_KEYBOARD:
|
||||
diff --git a/Qt/mainwindow.cpp b/Qt/mainwindow.cpp
|
||||
index cbd9fda..670a1ca 100644
|
||||
--- a/Qt/mainwindow.cpp
|
||||
+++ b/Qt/mainwindow.cpp
|
||||
@@ -112,7 +112,7 @@ void MainWindow::updateMenus()
|
||||
int width = (internalPortrait ? 272 : 480) * action->data().toInt();
|
||||
int height = (internalPortrait ? 480 : 272) * action->data().toInt();
|
||||
if (g_Config.iWindowWidth == width && g_Config.iWindowHeight == height) {
|
||||
- action->setChecked(true);
|
||||
+ action->setChecked(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -423,11 +423,6 @@ void MainWindow::forumAct()
|
||||
QDesktopServices::openUrl(QUrl("https://forums.ppsspp.org/"));
|
||||
}
|
||||
|
||||
-void MainWindow::goldAct()
|
||||
-{
|
||||
- QDesktopServices::openUrl(QUrl("https://www.ppsspp.org/buygold"));
|
||||
-}
|
||||
-
|
||||
void MainWindow::gitAct()
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl("https://github.com/hrydgard/ppsspp/"));
|
||||
@@ -680,7 +675,6 @@ void MainWindow::createMenus()
|
||||
MenuTree* helpMenu = new MenuTree(this, menuBar(), QT_TR_NOOP("&Help"));
|
||||
helpMenu->add(new MenuAction(this, SLOT(websiteAct()), QT_TR_NOOP("Visit www.&ppsspp.org")));
|
||||
helpMenu->add(new MenuAction(this, SLOT(forumAct()), QT_TR_NOOP("PPSSPP &forums")));
|
||||
- helpMenu->add(new MenuAction(this, SLOT(goldAct()), QT_TR_NOOP("Buy &Gold")));
|
||||
helpMenu->add(new MenuAction(this, SLOT(gitAct()), QT_TR_NOOP("Git&Hub")));
|
||||
helpMenu->add(new MenuAction(this, SLOT(discordAct()), QT_TR_NOOP("Discord")));
|
||||
helpMenu->addSeparator();
|
||||
diff --git a/Qt/mainwindow.h b/Qt/mainwindow.h
|
||||
index 5e735ae..55a180f 100644
|
||||
--- a/Qt/mainwindow.h
|
||||
+++ b/Qt/mainwindow.h
|
||||
@@ -100,7 +100,7 @@ private slots:
|
||||
void stopAct();
|
||||
void resetAct();
|
||||
void switchUMDAct();
|
||||
- void displayRotationGroup_triggered(QAction *action) {
|
||||
+ void displayRotationGroup_triggered(QAction *action) {
|
||||
DisplayLayoutConfig &config = g_Config.GetDisplayLayoutConfig(g_display.GetDeviceOrientation());
|
||||
config.iInternalScreenRotation = action->data().toInt();
|
||||
}
|
||||
@@ -187,7 +187,6 @@ private slots:
|
||||
// Help
|
||||
void websiteAct();
|
||||
void forumAct();
|
||||
- void goldAct();
|
||||
void gitAct();
|
||||
void discordAct();
|
||||
void aboutAct();
|
||||
diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp
|
||||
index 5eea6e5..9799010 100644
|
||||
--- a/SDL/SDLMain.cpp
|
||||
+++ b/SDL/SDLMain.cpp
|
||||
@@ -438,7 +438,7 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string
|
||||
case SystemRequestType::SET_WINDOW_TITLE:
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(g_mutexWindow);
|
||||
- const char *app_name = System_GetPropertyBool(SYSPROP_APP_GOLD) ? "PPSSPP Gold" : "PPSSPP";
|
||||
+ const char *app_name = "PPSSPP";
|
||||
g_windowState.title = param1.empty() ? app_name : param1;
|
||||
g_windowState.update = true;
|
||||
return true;
|
||||
@@ -742,12 +742,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
#endif
|
||||
case SYSPROP_HAS_KEYBOARD:
|
||||
return true;
|
||||
- case SYSPROP_APP_GOLD:
|
||||
-#ifdef GOLD
|
||||
- return true;
|
||||
-#else
|
||||
- return false;
|
||||
-#endif
|
||||
case SYSPROP_CAN_JIT:
|
||||
return true;
|
||||
case SYSPROP_SUPPORTS_OPEN_FILE_IN_EDITOR:
|
||||
@@ -777,9 +771,6 @@ case SYSPROP_HAS_FILE_BROWSER:
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
- // hack for testing - do not commit
|
||||
- case SYSPROP_USE_IAP:
|
||||
- return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
diff --git a/UI/Background.cpp b/UI/Background.cpp
|
||||
index 73be05b..3d5fb96 100644
|
||||
--- a/UI/Background.cpp
|
||||
+++ b/UI/Background.cpp
|
||||
@@ -272,7 +272,7 @@ class BouncingIconAnimation : public Animation {
|
||||
// Draw the image.
|
||||
float xpos = xbase + dc.GetBounds().x;
|
||||
float ypos = ybase + dc.GetBounds().y;
|
||||
- ImageID icon = !color_ix && System_GetPropertyBool(SYSPROP_APP_GOLD) ? ImageID("I_ICON_GOLD") : ImageID("I_ICON");
|
||||
+ ImageID icon = ImageID("I_ICON");
|
||||
ui_draw2d.DrawImage(icon, xpos, ypos, scale, COLORS[color_ix], ALIGN_CENTER);
|
||||
dc.Flush();
|
||||
|
||||
diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp
|
||||
index 85cd7f7..fa0c330 100644
|
||||
--- a/UI/GameSettingsScreen.cpp
|
||||
+++ b/UI/GameSettingsScreen.cpp
|
||||
@@ -1439,13 +1439,6 @@ void GameSettingsScreen::CreateSystemSettings(UI::ViewGroup *systemSettings) {
|
||||
systemSettings->Add(new CheckBox(&g_Config.bCacheFullIsoInRam, sy->T("Cache full ISO in RAM")))->SetEnabled(!PSP_IsInited());
|
||||
}
|
||||
|
||||
- CheckBox *checkForUpdate = systemSettings->Add(new CheckBox(&g_Config.bCheckForNewVersion, sy->T("VersionCheck", "Check for new versions of PPSSPP")));
|
||||
- checkForUpdate->OnClick.Add([](UI::EventParams &e) {
|
||||
- // Reset the dismissed version so it will check again.
|
||||
- if (g_Config.bCheckForNewVersion) {
|
||||
- g_Config.sDismissedVersion.clear();
|
||||
- }
|
||||
- });
|
||||
systemSettings->Add(new CheckBox(&g_Config.bScreenshotsAsPNG, sy->T("Screenshots as PNG")));
|
||||
static const char *screenshotModeChoices[] = { "Final processed image", "Raw game image" };
|
||||
systemSettings->Add(new PopupMultiChoice(&g_Config.iScreenshotMode, sy->T("Screenshot mode"), screenshotModeChoices, 0, ARRAY_SIZE(screenshotModeChoices), I18NCat::SYSTEM, screenManager()));
|
||||
diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp
|
||||
index 8e7ca54..6153025 100644
|
||||
--- a/UI/MainScreen.cpp
|
||||
+++ b/UI/MainScreen.cpp
|
||||
@@ -57,7 +57,6 @@
|
||||
#include "UI/GameSettingsScreen.h"
|
||||
#include "UI/BaseScreens.h"
|
||||
#include "UI/ControlMappingScreen.h"
|
||||
-#include "UI/IAPScreen.h"
|
||||
#include "UI/RemoteISOScreen.h"
|
||||
#include "UI/DisplayLayoutScreen.h"
|
||||
#include "UI/SavedataScreen.h"
|
||||
@@ -1280,7 +1279,7 @@ class LogoView : public UI::AnchorLayout {
|
||||
|
||||
private:
|
||||
ImageID GetIconID() const {
|
||||
- return System_GetPropertyBool(SYSPROP_APP_GOLD) ? ImageID("I_ICON_GOLD") : ImageID("I_ICON");
|
||||
+ return ImageID("I_ICON");
|
||||
}
|
||||
|
||||
const bool portrait_;
|
||||
@@ -1302,16 +1301,6 @@ void MainScreen::CreateMainButtons(UI::ViewGroup *parent, bool portrait) {
|
||||
parent->Add(new Choice(mm->T("www.ppsspp.org")))->OnClick.Handle(this, &MainScreen::OnPPSSPPOrg);
|
||||
}
|
||||
|
||||
- if (!System_GetPropertyBool(SYSPROP_APP_GOLD) && (System_GetPropertyInt(SYSPROP_DEVICE_TYPE) != DEVICE_TYPE_VR)) {
|
||||
- Choice *gold = parent->Add(portrait ? new Choice(ImageID("I_ICON_GOLD"), portrait ? new LinearLayoutParams() : nullptr) : new Choice(mm->T("Buy PPSSPP Gold")));
|
||||
- gold->OnClick.Add([this](UI::EventParams &) {
|
||||
- LaunchBuyGold(this->screenManager());
|
||||
- });
|
||||
- gold->SetIconRight(ImageID("I_ICON_GOLD"), 0.5f);
|
||||
- gold->SetImageScale(0.6f); // for the left-icon in case of vertical.
|
||||
- gold->SetShine(true);
|
||||
- }
|
||||
-
|
||||
if (!portrait) {
|
||||
parent->Add(new Spacer(16.0));
|
||||
}
|
||||
@@ -1384,7 +1373,7 @@ void MainScreen::CreateViews() {
|
||||
if (g_recentFiles.HasAny()) {
|
||||
tabHolder_->SetCurrentTab(std::clamp(g_Config.iDefaultTab, 0, g_Config.bRemoteTab ? 3 : 2), true);
|
||||
} else if (g_Config.iMaxRecent > 0) {
|
||||
- tabHolder_->SetCurrentTab(1, true);
|
||||
+ tabHolder_->SetCurrentTab(1, true);
|
||||
}
|
||||
|
||||
if (backFromStore_ || showHomebrewTab) {
|
||||
@@ -1490,41 +1479,6 @@ void MainScreen::CreateViews() {
|
||||
}
|
||||
|
||||
root_->SetTag("mainroot");
|
||||
-
|
||||
- if (!g_Config.sUpgradeMessage.empty()) {
|
||||
- auto di = GetI18NCategory(I18NCat::DIALOG);
|
||||
- Margins margins(0, 0);
|
||||
- if (vertical) {
|
||||
- margins.bottom = ITEM_HEIGHT;
|
||||
- }
|
||||
- UI::LinearLayout *upgradeBar = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT, margins));
|
||||
-
|
||||
- UI::Margins textMargins(10, 5);
|
||||
- UI::Margins buttonMargins(5, 0);
|
||||
- UI::Drawable solid(0xFFbd9939);
|
||||
- upgradeBar->SetSpacing(5.0f);
|
||||
- upgradeBar->SetBG(solid);
|
||||
- std::string upgradeMessage(di->T("New version of PPSSPP available"));
|
||||
- if (!vertical) {
|
||||
- // The version only really fits in the horizontal layout.
|
||||
- upgradeMessage += ": " + g_Config.sUpgradeVersion;
|
||||
- }
|
||||
- upgradeBar->Add(new TextView(upgradeMessage, new LinearLayoutParams(1.0f, UI::Gravity::G_VCENTER, textMargins)));
|
||||
- upgradeBar->Add(new Choice(di->T("Download"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDownloadUpgrade);
|
||||
- Choice *dismiss = upgradeBar->Add(new Choice("", ImageID("I_CROSS"), new LinearLayoutParams(buttonMargins)));
|
||||
- dismiss->OnClick.Add([this](UI::EventParams &e) {
|
||||
- g_Config.DismissUpgrade();
|
||||
- g_Config.Save("dismissupgrade");
|
||||
- RecreateViews();
|
||||
- });
|
||||
-
|
||||
- // Slip in under root_
|
||||
- LinearLayout *newRoot = new LinearLayout(ORIENT_VERTICAL);
|
||||
- newRoot->Add(root_);
|
||||
- newRoot->Add(upgradeBar);
|
||||
- root_->ReplaceLayoutParams(new LinearLayoutParams(1.0));
|
||||
- root_ = newRoot;
|
||||
- }
|
||||
}
|
||||
|
||||
bool MainScreen::key(const KeyInput &key) {
|
||||
@@ -1565,26 +1519,6 @@ void MainScreen::OnAllowStorage(UI::EventParams &e) {
|
||||
System_AskForPermission(SYSTEM_PERMISSION_STORAGE);
|
||||
}
|
||||
|
||||
-// See Config::SupportsUpgradeCheck() if you add more platforms.
|
||||
-void MainScreen::OnDownloadUpgrade(UI::EventParams &e) {
|
||||
-#if PPSSPP_PLATFORM(ANDROID)
|
||||
- // Go to app store
|
||||
- if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "market://details?id=org.ppsspp.ppssppgold");
|
||||
- } else {
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "market://details?id=org.ppsspp.ppsspp");
|
||||
- }
|
||||
-#elif PPSSPP_PLATFORM(WINDOWS)
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.ppsspp.org/download");
|
||||
-#elif PPSSPP_PLATFORM(IOS_APP_STORE)
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "itms-apps://itunes.apple.com/app/id6496972903");
|
||||
-#else
|
||||
- // Go directly to ppsspp.org and let the user sort it out
|
||||
- // (for details and in case downloads doesn't have their platform.)
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.ppsspp.org/");
|
||||
-#endif
|
||||
-}
|
||||
-
|
||||
void MainScreen::sendMessage(UIMessage message, const char *value) {
|
||||
// Always call the base class method first to handle the most common messages.
|
||||
UIBaseScreen::sendMessage(message, value);
|
||||
@@ -1732,24 +1666,6 @@ void MainScreen::OnCredits(UI::EventParams &e) {
|
||||
screenManager()->push(new CreditsScreen());
|
||||
}
|
||||
|
||||
-void LaunchBuyGold(ScreenManager *screenManager) {
|
||||
- if (System_GetPropertyBool(SYSPROP_USE_IAP)) {
|
||||
- screenManager->push(new IAPScreen(true));
|
||||
- } else if (System_GetPropertyBool(SYSPROP_USE_APP_STORE)) {
|
||||
-#if PPSSPP_PLATFORM(ANDROID)
|
||||
- LaunchPlayStoreOrWebsiteGold();
|
||||
-#else
|
||||
- screenManager->push(new IAPScreen(false));
|
||||
-#endif
|
||||
- } else {
|
||||
-#if PPSSPP_PLATFORM(IOS_APP_STORE)
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.ppsspp.org/buygold_ios");
|
||||
-#else
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.ppsspp.org/buygold");
|
||||
-#endif
|
||||
- }
|
||||
-}
|
||||
-
|
||||
void MainScreen::OnPPSSPPOrg(UI::EventParams &e) {
|
||||
System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.ppsspp.org");
|
||||
}
|
||||
@@ -1785,9 +1701,6 @@ void MainScreen::dialogFinished(const Screen *dialog, DialogResult result) {
|
||||
if (gameBrowsers_.size() >= 2) {
|
||||
gameBrowsers_[1]->RequestRefresh();
|
||||
}
|
||||
- } else if (tag == "IAP") {
|
||||
- // Gold status may have changed.
|
||||
- RecreateViews();
|
||||
} else if (tag == "Upload") {
|
||||
// Files may have been uploaded.
|
||||
RecreateViews();
|
||||
diff --git a/UI/MainScreen.h b/UI/MainScreen.h
|
||||
index 49d743c..457ccd7 100644
|
||||
--- a/UI/MainScreen.h
|
||||
+++ b/UI/MainScreen.h
|
||||
@@ -166,7 +166,6 @@ class MainScreen : public UIBaseScreen {
|
||||
void OnCredits(UI::EventParams &e);
|
||||
void OnPPSSPPOrg(UI::EventParams &e);
|
||||
void OnForums(UI::EventParams &e);
|
||||
- void OnDownloadUpgrade(UI::EventParams &e);
|
||||
void OnAllowStorage(UI::EventParams &e);
|
||||
|
||||
UI::TabHolder *tabHolder_ = nullptr;
|
||||
@@ -218,5 +217,3 @@ class GridSettingsPopupScreen : public UI::PopupScreen {
|
||||
const float MAX_GAME_GRID_SCALE = 3.0f;
|
||||
const float MIN_GAME_GRID_SCALE = 0.8f;
|
||||
};
|
||||
-
|
||||
-void LaunchBuyGold(ScreenManager *screenManager);
|
||||
diff --git a/UI/MemStickScreen.cpp b/UI/MemStickScreen.cpp
|
||||
index 69b9d3d..8a02aff 100644
|
||||
--- a/UI/MemStickScreen.cpp
|
||||
+++ b/UI/MemStickScreen.cpp
|
||||
@@ -123,12 +123,10 @@ static void AddExplanation(UI::ViewGroup *viewGroup, MemStickScreen::Choice choi
|
||||
case MemStickScreen::CHOICE_STORAGE_ROOT:
|
||||
// Old school choice
|
||||
holder->Add(new TextView(iz->T("DataWillStay", "Data will stay even if you uninstall PPSSPP"), flags, false))->SetBullet(true);
|
||||
- holder->Add(new TextView(iz->T("DataCanBeShared", "Data can be shared between PPSSPP regular/Gold"), flags, false))->SetBullet(true);
|
||||
holder->Add(new TextView(iz->T("EasyUSBAccess", "Easy USB access"), flags, false))->SetBullet(true);
|
||||
break;
|
||||
case MemStickScreen::CHOICE_BROWSE_FOLDER:
|
||||
holder->Add(new TextView(iz->T("DataWillStay", "Data will stay even if you uninstall PPSSPP"), flags, false))->SetBullet(true);
|
||||
- holder->Add(new TextView(iz->T("DataCanBeShared", "Data can be shared between PPSSPP regular/Gold"), flags, false))->SetBullet(true);
|
||||
#if !PPSSPP_PLATFORM(UWP)
|
||||
holder->Add(new TextView(iz->T("EasyUSBAccess", "Easy USB access"), flags, false))->SetBullet(true);
|
||||
#endif
|
||||
@@ -136,13 +134,8 @@ static void AddExplanation(UI::ViewGroup *viewGroup, MemStickScreen::Choice choi
|
||||
case MemStickScreen::CHOICE_PRIVATE_DIRECTORY:
|
||||
// Consider https://www.compart.com/en/unicode/U+26A0 (unicode warning sign?)? or a graphic?
|
||||
holder->Add(new TextView(iz->T("DataWillBeLostOnUninstall", "Warning! Data will be lost when you uninstall PPSSPP!"), flags, false))->SetBullet(true);
|
||||
- holder->Add(new TextView(iz->T("DataCannotBeShared", "Data CANNOT be shared between PPSSPP regular/Gold!"), flags, false))->SetBullet(true);
|
||||
#if !PPSSPP_PLATFORM(UWP)
|
||||
- if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
|
||||
- holder->Add(new TextView(iz->T("USBAccessThroughGold", "USB access through Android/data/org.ppsspp.ppssppgold/files"), flags, false))->SetBullet(true);
|
||||
- } else {
|
||||
- holder->Add(new TextView(iz->T("USBAccessThrough", "USB access through Android/data/org.ppsspp.ppsspp/files"), flags, false))->SetBullet(true);
|
||||
- }
|
||||
+ holder->Add(new TextView(iz->T("USBAccessThrough", "USB access through Android/data/org.ppsspp.ppsspp/files"), flags, false))->SetBullet(true);
|
||||
#endif
|
||||
break;
|
||||
case MemStickScreen::CHOICE_SET_MANUAL:
|
||||
diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp
|
||||
index 1dedbef..9c4f965 100644
|
||||
--- a/UI/MiscScreens.cpp
|
||||
+++ b/UI/MiscScreens.cpp
|
||||
@@ -441,12 +441,7 @@ void LogoScreen::DrawForeground(UIContext &dc) {
|
||||
|
||||
// Manually formatting UTF-8 is fun. \xXX doesn't work everywhere.
|
||||
snprintf(temp, sizeof(temp), "%s Henrik Rydg%c%crd", cr->T_cstr("created", "Created by"), 0xC3, 0xA5);
|
||||
- if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
|
||||
- UI::DrawIconShine(dc, Bounds::FromCenter(bounds.centerX() - 125, startY, 60.0f), 0.7f, true);
|
||||
- dc.Draw()->DrawImage(ImageID("I_ICON_GOLD"), bounds.centerX() - 125, startY, 1.2f, 0xFFFFFFFF, ALIGN_CENTER);
|
||||
- } else {
|
||||
- dc.Draw()->DrawImage(ImageID("I_ICON"), bounds.centerX() - 125, startY, 1.2f, 0xFFFFFFFF, ALIGN_CENTER);
|
||||
- }
|
||||
+ dc.Draw()->DrawImage(ImageID("I_ICON"), bounds.centerX() - 125, startY, 1.2f, 0xFFFFFFFF, ALIGN_CENTER);
|
||||
dc.Draw()->DrawImage(ImageID("I_LOGO"), bounds.centerX() + 45, startY, 1.5f, 0xFFFFFFFF, ALIGN_CENTER);
|
||||
//dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", bounds.w / 2, bounds.h / 2 - 30, textColor, ALIGN_CENTER);
|
||||
dc.SetFontScale(1.0f, 1.0f);
|
||||
@@ -512,15 +507,6 @@ void CreditsScreen::CreateDialogViews(UI::ViewGroup *parent) {
|
||||
|
||||
const bool portrait = GetDeviceOrientation() == DeviceOrientation::Portrait;
|
||||
|
||||
- const bool gold = System_GetPropertyBool(SYSPROP_APP_GOLD);
|
||||
-
|
||||
- /*
|
||||
- if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
|
||||
- root_->Add(new ShinyIcon(ImageID("I_ICON_GOLD"), new AnchorLayoutParams(WRAP_CONTENT, WRAP_CONTENT, 10, 10, NONE, NONE, false)))->SetScale(1.5f);
|
||||
- } else {
|
||||
- root_->Add(new ImageView(ImageID("I_ICON"), "", IS_DEFAULT, new AnchorLayoutParams(WRAP_CONTENT, WRAP_CONTENT, 10, 10, NONE, NONE, false)))->SetScale(1.5f);
|
||||
- }*/
|
||||
-
|
||||
constexpr float columnWidth = 265.0f;
|
||||
|
||||
LinearLayout *left;
|
||||
@@ -544,18 +530,6 @@ void CreditsScreen::CreateDialogViews(UI::ViewGroup *parent) {
|
||||
}
|
||||
|
||||
int rightYOffset = 0;
|
||||
- if (!System_GetPropertyBool(SYSPROP_APP_GOLD)) {
|
||||
- ScreenManager *sm = screenManager();
|
||||
- Choice *gold = new Choice(mm->T("Buy PPSSPP Gold"));
|
||||
- gold->SetIconRight(ImageID("I_ICON_GOLD"), 0.5f);
|
||||
- gold->SetImageScale(0.6f); // for the left-icon in case of vertical.
|
||||
- gold->SetShine(true);
|
||||
-
|
||||
- left->Add(gold)->OnClick.Add([sm](UI::EventParams) {
|
||||
- LaunchBuyGold(sm);
|
||||
- });
|
||||
- rightYOffset = 74;
|
||||
- }
|
||||
left->Add(new Choice(cr->T("PPSSPP Forums"), ImageID("I_LINK_OUT")))->OnClick.Add([](UI::EventParams &e) {
|
||||
System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://forums.ppsspp.org");
|
||||
});
|
||||
@@ -611,7 +585,7 @@ void CreditsScroller::Draw(UIContext &dc) {
|
||||
specialthankssolarmystic += ')';
|
||||
|
||||
std::string_view credits[] = {
|
||||
- System_GetPropertyBool(SYSPROP_APP_GOLD) ? "PPSSPP Gold" : "PPSSPP",
|
||||
+ "PPSSPP",
|
||||
"",
|
||||
cr->T("title", "A fast and portable PSP emulator"),
|
||||
"",
|
||||
@@ -735,11 +709,7 @@ void CreditsScroller::Draw(UIContext &dc) {
|
||||
|
||||
// TODO: This is kinda ugly, done on every frame...
|
||||
char temp[256];
|
||||
- if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
|
||||
- snprintf(temp, sizeof(temp), "PPSSPP Gold %s", PPSSPP_GIT_VERSION);
|
||||
- } else {
|
||||
- snprintf(temp, sizeof(temp), "PPSSPP %s", PPSSPP_GIT_VERSION);
|
||||
- }
|
||||
+ snprintf(temp, sizeof(temp), "PPSSPP %s", PPSSPP_GIT_VERSION);
|
||||
credits[0] = (const char *)temp;
|
||||
|
||||
dc.Begin();
|
||||
diff --git a/UI/ReportScreen.cpp b/UI/ReportScreen.cpp
|
||||
index 02080aa..7a0e773 100644
|
||||
--- a/UI/ReportScreen.cpp
|
||||
+++ b/UI/ReportScreen.cpp
|
||||
@@ -478,11 +478,7 @@ void ReportFinishScreen::ShowSuggestions() {
|
||||
bool valid = false;
|
||||
for (const auto &item : suggestions) {
|
||||
std::string_view suggestion = "";
|
||||
- if (item == "Upgrade") {
|
||||
- suggestion = rp->T("SuggestionUpgrade", "Upgrade to a newer PPSSPP build");
|
||||
- } else if (item == "Downgrade") {
|
||||
- suggestion = rp->T("SuggestionDowngrade", "Downgrade to an older PPSSPP version (please report this bug)");
|
||||
- } else if (item == "VerifyDisc") {
|
||||
+ if (item == "VerifyDisc") {
|
||||
suggestion = rp->T("SuggestionVerifyDisc", "Check your ISO is a good copy of your disc");
|
||||
} else if (item == "Config:CPUSpeed:0") {
|
||||
suggestion = rp->T("SuggestionCPUSpeed0", "Disable locked CPU speed setting");
|
||||
@@ -500,11 +496,6 @@ void ReportFinishScreen::ShowSuggestions() {
|
||||
resultItems_->Add(new TextView(std::string(" - ") + std::string(suggestion), FLAG_WRAP_TEXT, false))->SetShadow(true);
|
||||
}
|
||||
}
|
||||
-
|
||||
- if (!valid) {
|
||||
- // No actual valid versions. Let's just say upgrade and hope the server's not broken.
|
||||
- resultItems_->Add(new TextView(std::string(" - ") + rp->T_cstr("SuggestionUpgrade", "Upgrade to a newer PPSSPP build"), FLAG_WRAP_TEXT, false))->SetShadow(true);
|
||||
- }
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/UI/UIAtlas.cpp b/UI/UIAtlas.cpp
|
||||
index 92b1d3a..50199d2 100644
|
||||
--- a/UI/UIAtlas.cpp
|
||||
+++ b/UI/UIAtlas.cpp
|
||||
@@ -75,7 +75,6 @@ static const ImageMeta imageIDs[] = {
|
||||
{"I_GRID", false},
|
||||
{"I_LOGO", false},
|
||||
{"I_ICON", false},
|
||||
- {"I_ICON_GOLD", false},
|
||||
{"I_FOLDER", false},
|
||||
{"I_UP_DIRECTORY", false},
|
||||
{"I_GEAR", false},
|
||||
diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp
|
||||
index a89ee1f..eed5bdf 100644
|
||||
--- a/UWP/PPSSPP_UWPMain.cpp
|
||||
+++ b/UWP/PPSSPP_UWPMain.cpp
|
||||
@@ -478,12 +478,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
return true;
|
||||
case SYSPROP_HAS_ACCELEROMETER:
|
||||
return IsMobile();
|
||||
- case SYSPROP_APP_GOLD:
|
||||
-#ifdef GOLD
|
||||
- return true;
|
||||
-#else
|
||||
- return false;
|
||||
-#endif
|
||||
case SYSPROP_CAN_JIT:
|
||||
return true;
|
||||
case SYSPROP_HAS_KEYBOARD:
|
||||
@@ -705,7 +699,7 @@ std::string GetCPUBrandString() {
|
||||
winrt::hstring dev_filter = L"System.Devices.DeviceInstanceID:=\"" + cpu_id + L"\"";
|
||||
|
||||
try {
|
||||
- auto collection = winrt::Windows::Devices::Enumeration::DeviceInformation::FindAllAsync(dev_filter, {},
|
||||
+ auto collection = winrt::Windows::Devices::Enumeration::DeviceInformation::FindAllAsync(dev_filter, {},
|
||||
winrt::Windows::Devices::Enumeration::DeviceInformationKind::Device).get();
|
||||
if (collection.Size() > 0) {
|
||||
cpu_name = collection.GetAt(0).Name();
|
||||
diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp
|
||||
index 856e39d..cc22d2b 100644
|
||||
--- a/Windows/MainWindowMenu.cpp
|
||||
+++ b/Windows/MainWindowMenu.cpp
|
||||
@@ -170,10 +170,6 @@ namespace MainWindow {
|
||||
// Don't need to update here, happens later.
|
||||
|
||||
HMENU helpMenu = GetSubmenuById(hMenu, ID_HELP_MENU);
|
||||
- if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
|
||||
- RemoveMenu(helpMenu, ID_HELP_BUYGOLD, MF_BYCOMMAND);
|
||||
- }
|
||||
-
|
||||
HMENU hMenuOptions = GetSubmenuById(hMenu, ID_OPTIONS_MENU);
|
||||
g_hMenuBackend = GetSubmenuById(hMenuOptions, ID_OPTIONS_BACKEND_MENU);
|
||||
}
|
||||
@@ -310,7 +306,6 @@ namespace MainWindow {
|
||||
// Help menu: it's translated in CreateHelpMenu.
|
||||
TranslateMenuItem(menu, ID_HELP_OPENWEBSITE);
|
||||
TranslateMenuItem(menu, ID_HELP_OPENFORUM);
|
||||
- TranslateMenuItem(menu, ID_HELP_BUYGOLD);
|
||||
TranslateMenuItem(menu, ID_HELP_GITHUB);
|
||||
TranslateMenuItem(menu, ID_HELP_DISCORD);
|
||||
TranslateMenuItem(menu, ID_HELP_ABOUT);
|
||||
@@ -933,10 +928,6 @@ namespace MainWindow {
|
||||
System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.ppsspp.org/");
|
||||
break;
|
||||
|
||||
- case ID_HELP_BUYGOLD:
|
||||
- System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.ppsspp.org/buygold");
|
||||
- break;
|
||||
-
|
||||
case ID_HELP_OPENFORUM:
|
||||
System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://forums.ppsspp.org/");
|
||||
break;
|
||||
diff --git a/Windows/main.cpp b/Windows/main.cpp
|
||||
index c7ad098..0280cb9 100644
|
||||
--- a/Windows/main.cpp
|
||||
+++ b/Windows/main.cpp
|
||||
@@ -450,12 +450,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
return true;
|
||||
case SYSPROP_HAS_LOGIN_DIALOG:
|
||||
return true;
|
||||
- case SYSPROP_APP_GOLD:
|
||||
-#ifdef GOLD
|
||||
- return true;
|
||||
-#else
|
||||
- return false;
|
||||
-#endif
|
||||
case SYSPROP_CAN_JIT:
|
||||
return true;
|
||||
case SYSPROP_HAS_KEYBOARD:
|
||||
@@ -478,8 +472,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
#endif
|
||||
case SYSPROP_HAS_ACCELEROMETER:
|
||||
return g_InputManager.AnyAccelerometer();
|
||||
- case SYSPROP_USE_IAP:
|
||||
- return false; // This should never be set to true on Windows. Only for testing/dev.
|
||||
case SYSPROP_USE_APP_STORE:
|
||||
return false;
|
||||
default:
|
||||
@@ -654,7 +646,7 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string
|
||||
}
|
||||
case SystemRequestType::SET_WINDOW_TITLE:
|
||||
{
|
||||
- const char *name = System_GetPropertyBool(SYSPROP_APP_GOLD) ? "PPSSPP Gold " : "PPSSPP ";
|
||||
+ const char *name = "PPSSPP ";
|
||||
std::wstring winTitle = ConvertUTF8ToWString(std::string(name) + PPSSPP_GIT_VERSION);
|
||||
if (!param1.empty()) {
|
||||
winTitle.append(ConvertUTF8ToWString(" - " + param1));
|
||||
diff --git a/Windows/resource.h b/Windows/resource.h
|
||||
index 0dee92b..602b2fb 100644
|
||||
--- a/Windows/resource.h
|
||||
+++ b/Windows/resource.h
|
||||
@@ -353,7 +353,6 @@
|
||||
// Dummy option to let the buffered rendering hotkey cycle through all the options.
|
||||
#define ID_OPTIONS_BUFFEREDRENDERINGDUMMY 40500
|
||||
#define IDC_STEPOUT 40501
|
||||
-#define ID_HELP_BUYGOLD 40502
|
||||
|
||||
#define IDC_STATIC -1
|
||||
|
||||
diff --git a/ios/main.mm b/ios/main.mm
|
||||
index 0407b8b..13aace6 100644
|
||||
--- a/ios/main.mm
|
||||
+++ b/ios/main.mm
|
||||
@@ -379,16 +379,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
case SYSPROP_KEYBOARD_IS_SOFT:
|
||||
// If a hardware keyboard is connected, and we add support, we could return false here.
|
||||
return true;
|
||||
- case SYSPROP_APP_GOLD:
|
||||
-#ifdef GOLD
|
||||
- // This is deprecated.
|
||||
- return true;
|
||||
-#elif PPSSPP_PLATFORM(IOS_APP_STORE)
|
||||
- // Check the IAP status.
|
||||
- return [[IAPManager sharedIAPManager] isGoldUnlocked];
|
||||
-#else
|
||||
- return false;
|
||||
-#endif
|
||||
case SYSPROP_USE_IAP:
|
||||
#if PPSSPP_PLATFORM(IOS_APP_STORE) && defined(USE_IAP)
|
||||
return true;
|
||||
@@ -701,4 +691,3 @@ int main(int argc, char *argv[]) {
|
||||
return UIApplicationMain(argc, argv, NSStringFromClass([PPSSPPUIApplication class]), NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
-
|
||||
--
|
||||
2.52.0
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index 8f33aa2ff4..39928382da 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -4358,7 +4358,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS = \
|
||||
monodll_msw_utils.o \
|
||||
monodll_utilsexc.o \
|
||||
monodll_fswatcher.o \
|
||||
- monodll_msw_secretstore.o
|
||||
+ monodll_msw_secretstore.o \
|
||||
monodll_msw_uilocale.o
|
||||
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS)
|
||||
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS \
|
||||
@@ -5284,7 +5284,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS = \
|
||||
monodll_uuid.o \
|
||||
monodll_msw_evtloop.o \
|
||||
monodll_access.o \
|
||||
- monodll_dark_mode.o
|
||||
+ monodll_dark_mode.o \
|
||||
monodll_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS = \
|
||||
@@ -6196,7 +6196,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1 = \
|
||||
monodll_uuid.o \
|
||||
monodll_msw_evtloop.o \
|
||||
monodll_access.o \
|
||||
- monodll_dark_mode.o
|
||||
+ monodll_dark_mode.o \
|
||||
monodll_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_1 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_1 = \
|
||||
@@ -6371,7 +6371,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1 = \
|
||||
monolib_msw_utils.o \
|
||||
monolib_utilsexc.o \
|
||||
monolib_fswatcher.o \
|
||||
- monolib_msw_secretstore.o
|
||||
+ monolib_msw_secretstore.o \
|
||||
monolib_msw_uilocale.o
|
||||
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_1 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1)
|
||||
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_1 \
|
||||
@@ -7297,7 +7297,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2 = \
|
||||
monolib_uuid.o \
|
||||
monolib_msw_evtloop.o \
|
||||
monolib_access.o \
|
||||
- monolib_dark_mode.o
|
||||
+ monolib_dark_mode.o \
|
||||
monolib_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_2 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_2 = \
|
||||
@@ -8209,7 +8209,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3 = \
|
||||
monolib_uuid.o \
|
||||
monolib_msw_evtloop.o \
|
||||
monolib_access.o \
|
||||
- monolib_dark_mode.o
|
||||
+ monolib_dark_mode.o \
|
||||
monolib_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_3 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_3 = \
|
||||
@@ -8436,7 +8436,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2 = \
|
||||
basedll_msw_utils.o \
|
||||
basedll_utilsexc.o \
|
||||
basedll_fswatcher.o \
|
||||
- basedll_msw_secretstore.o
|
||||
+ basedll_msw_secretstore.o \
|
||||
basedll_msw_uilocale.o
|
||||
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_2 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2)
|
||||
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_2 \
|
||||
@@ -8523,7 +8523,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3 = \
|
||||
baselib_msw_utils.o \
|
||||
baselib_utilsexc.o \
|
||||
baselib_fswatcher.o \
|
||||
- baselib_msw_secretstore.o
|
||||
+ baselib_msw_secretstore.o \
|
||||
baselib_msw_uilocale.o
|
||||
@COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_3 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3)
|
||||
@COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_3 \
|
||||
@@ -9464,7 +9464,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4 = \
|
||||
coredll_uuid.o \
|
||||
coredll_msw_evtloop.o \
|
||||
coredll_access.o \
|
||||
- coredll_dark_mode.o
|
||||
+ coredll_dark_mode.o \
|
||||
coredll_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_4 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_4 = \
|
||||
@@ -10376,7 +10376,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5 = \
|
||||
coredll_uuid.o \
|
||||
coredll_msw_evtloop.o \
|
||||
coredll_access.o \
|
||||
- coredll_dark_mode.o
|
||||
+ coredll_dark_mode.o \
|
||||
coredll_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_5 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_5 = \
|
||||
@@ -11204,7 +11204,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6 = \
|
||||
corelib_uuid.o \
|
||||
corelib_msw_evtloop.o \
|
||||
corelib_access.o \
|
||||
- corelib_dark_mode.o
|
||||
+ corelib_dark_mode.o \
|
||||
corelib_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_6 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_6 = \
|
||||
@@ -12116,7 +12116,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7 = \
|
||||
corelib_uuid.o \
|
||||
corelib_msw_evtloop.o \
|
||||
corelib_access.o \
|
||||
- corelib_dark_mode.o
|
||||
+ corelib_dark_mode.o \
|
||||
corelib_msw_bmpbndl.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_7 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_7 = \
|
||||
@@ -236,7 +236,7 @@ it.")
|
||||
(define-public trealla
|
||||
(package
|
||||
(name "trealla")
|
||||
(version "2.92.6")
|
||||
(version "2.92.7")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -245,7 +245,7 @@ it.")
|
||||
(url "https://github.com/trealla-prolog/trealla")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32 "1qiqdq3bv5wmrss6hnwa7nn3fr2rj5a8g8v53khzfljppalwl401"))
|
||||
(base32 "07z2i0bkqzdx0szwr4v98cb9r7a3ghy0vz5jn3xa7zh41yfr33nx"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
;;; Copyright © 2024 jgart <jgart@dismail.de>
|
||||
;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.com>
|
||||
;;; Copyright © 2025 Nguyễn Gia Phong <cnx@loang.net>
|
||||
;;; Copyright © 2025 Adrien 'neox' Bourmault <neox@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -719,7 +720,7 @@ python-axolotl.")
|
||||
(define-public python-omemo-dr
|
||||
(package
|
||||
(name "python-omemo-dr")
|
||||
(version "1.0.1")
|
||||
(version "1.2.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -728,7 +729,7 @@ python-axolotl.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1gx0znbfvs8jg9s754hha81l8wpghswkfsqx2jzpgv6gigf3sm8z"))))
|
||||
(base32 "18snryk95wyiz5jh5wa5x58yych9d8l9hmnqq828gsb5ncxq3szk"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments (list #:test-backend #~'unittest))
|
||||
(propagated-inputs
|
||||
|
||||
@@ -3686,24 +3686,23 @@ SLURM jobs (meant for internal use by python-snakemake-executor-plugin-slurm).")
|
||||
(define-public python-sparse
|
||||
(package
|
||||
(name "python-sparse")
|
||||
(version "0.15.5")
|
||||
(version "0.18.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "sparse" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0rp29gp82qwwkq210pzh2qmlqhi2007nb7p7nwqmrkgmjq6cwxjc"))))
|
||||
"1x5zkgbsgmpr6nis0k2y5vrsg7l61ly2zishnijcgh0fxdhjdyap"))))
|
||||
(build-system pyproject-build-system)
|
||||
(propagated-inputs
|
||||
(list python-numba python-numpy python-scipy))
|
||||
(native-inputs
|
||||
(list python-dask
|
||||
python-pytest
|
||||
python-pytest-cov
|
||||
python-pytest-cov ; runs by default
|
||||
python-setuptools
|
||||
python-setuptools-scm
|
||||
python-wheel))
|
||||
python-setuptools-scm))
|
||||
(home-page "https://github.com/pydata/sparse/")
|
||||
(synopsis "Library for multi-dimensional sparse arrays")
|
||||
(description
|
||||
|
||||
@@ -16172,7 +16172,7 @@ file (e.g. @file{PKG-INFO}).")
|
||||
(build-system pyproject-build-system)
|
||||
;; tests: 124 passed, 16 skipped
|
||||
(native-inputs
|
||||
(list git-minimal
|
||||
(list git-minimal/pinned
|
||||
patchelf
|
||||
python-pytest
|
||||
python-pytest-mock))
|
||||
@@ -39547,6 +39547,31 @@ package updates.")
|
||||
adherence to RFC 6570, but adds a few extensions.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-uritools
|
||||
(package
|
||||
(name "python-uritools")
|
||||
(version "6.0.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/tkem/uritools/")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "115a8xphnv0ykd4c0pjh5rd4zy92znpdv4nwbn7n2d6irznvk00v"))))
|
||||
(build-system pyproject-build-system)
|
||||
(native-inputs
|
||||
(list python-pytest
|
||||
python-setuptools))
|
||||
(home-page "https://github.com/tkem/uritools/")
|
||||
(synopsis "URI parsing, classification and composition")
|
||||
(description
|
||||
"This package provides RFC 3986 compliant functions for parsing,
|
||||
classifying and composing URIs and URI references, largely replacing the
|
||||
Python Standard Library's urllib.parse module.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-urwid
|
||||
(package
|
||||
(name "python-urwid")
|
||||
|
||||
+29
-23
@@ -957,33 +957,36 @@ highlighting tool to ease code review from your terminal.")
|
||||
(define-public difftastic
|
||||
(package
|
||||
(name "difftastic")
|
||||
(version "0.63.0")
|
||||
(version "0.68.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (crate-uri "difftastic" version))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0md332fch4b87akdvljzxp4m2k5yri7cpkz3n54jc762j7j9qmrz"))))
|
||||
(base32 "012h76wx5jv6czc9j4awfan7vhrc6g5fdgnxrjmzg5q27wn99hn6"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
`(#:install-source? #f
|
||||
#:cargo-test-flags
|
||||
`("--release" "--"
|
||||
"--skip=display::side_by_side::tests::test_display_hunks"
|
||||
"--skip=display::style::tests::split_string_cjk"
|
||||
"--skip=display::style::tests::split_string_cjk2"
|
||||
"--skip=display::style::tests::split_string_simple"
|
||||
"--skip=display::style::tests::split_string_unicode"
|
||||
"--skip=display::style::tests::test_combining_char"
|
||||
"--skip=display::style::tests::test_split_and_apply"
|
||||
,(string-append "--skip=display::style::tests::"
|
||||
"test_split_and_apply_gap_between_styles_on_wrap_boundary")
|
||||
"--skip=display::style::tests::test_split_and_apply_trailing_text"
|
||||
"--skip=display::style::tests::test_split_and_apply_trailing_text_newline")))
|
||||
(list
|
||||
#:install-source? #f
|
||||
#:cargo-test-flags
|
||||
'(list "--"
|
||||
"--skip=display::side_by_side::tests::test_display_hunks"
|
||||
"--skip=display::style")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
;; jemalloc needs unbundling for tikv-jemallocator-sys
|
||||
(add-before 'build 'override-jemalloc
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((jemalloc (assoc-ref inputs "jemalloc")))
|
||||
;; This flag is needed when not using the bundled jemalloc.
|
||||
;; https://github.com/tikv/jemallocator/issues/19
|
||||
(setenv
|
||||
"CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS" "1")
|
||||
(setenv "JEMALLOC_OVERRIDE"
|
||||
(string-append jemalloc "/lib/libjemalloc.so"))))))))
|
||||
(inputs
|
||||
(cons mimalloc (cargo-inputs 'difftastic)))
|
||||
(cons jemalloc (cargo-inputs 'difftastic)))
|
||||
(home-page "https://difftastic.wilfred.me.uk/")
|
||||
(synopsis "Structural diff command that understands syntax")
|
||||
(description
|
||||
@@ -3089,11 +3092,14 @@ support, watch support (like @command{top}) and a tree view.")
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((bin (string-append (assoc-ref outputs "out") "/bin"))
|
||||
(bindgen (string-append bin "/bindgen"))
|
||||
(llvm-dir (string-append
|
||||
(assoc-ref inputs "clang") "/lib")))
|
||||
(clang (assoc-ref inputs "clang"))
|
||||
(llvm-dir (string-append clang "/lib"))
|
||||
(clang-bin (string-append clang "/bin")))
|
||||
(install-file "target/release/bindgen" bin)
|
||||
(wrap-program bindgen
|
||||
`("LIBCLANG_PATH" = (,llvm-dir))))))
|
||||
`("LIBCLANG_PATH" = (,llvm-dir))
|
||||
;; The bindgen binary requires clang, add one as a fallback.
|
||||
`("PATH" suffix (,clang-bin))))))
|
||||
(add-after 'install 'install-completions
|
||||
(lambda* (#:key native-inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
@@ -3788,14 +3794,14 @@ background agent taking care of maintaining the necessary state.")
|
||||
(define-public rust-cargo-c
|
||||
(package
|
||||
(name "rust-cargo-c")
|
||||
(version "0.10.20+cargo-0.94.0")
|
||||
(version "0.10.21+cargo-0.95.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (crate-uri "cargo-c" version))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0q1198xlkcd50nxx722s18lpm6hacnvzqqacb0xdld8ll9z3m5ay"))))
|
||||
(base32 "14bfybh3gzcrk7h22xxxhib1zc3m95j52ib258wxv64n939gln54"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments (list #:install-source? #f))
|
||||
(native-inputs
|
||||
|
||||
+1029
-406
File diff suppressed because it is too large
Load Diff
+20
-5
@@ -1830,8 +1830,8 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
|
||||
(define-public rust-1.94
|
||||
(let ((base-rust
|
||||
(rust-bootstrapped-package
|
||||
rust-1.93 "1.94.0"
|
||||
"0k274dla70wnajjli2w80by9k4nqf2wah1lw9xhzy8gkscf94gxq")))
|
||||
rust-1.93 "1.94.1"
|
||||
"056mbblkhn5ig62v09r6938qmnb09ygy32n62vvwvqqjbxi2l52c")))
|
||||
(package
|
||||
(inherit base-rust)
|
||||
(source
|
||||
@@ -1901,7 +1901,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
|
||||
;;; Here we take the latest included Rust, make it public, and re-enable tests
|
||||
;;; and extra components such as rustfmt.
|
||||
(define-public rust
|
||||
(let ((base-rust rust-1.93))
|
||||
(let ((base-rust rust-1.94))
|
||||
(package
|
||||
(inherit base-rust)
|
||||
(properties (append
|
||||
@@ -1922,6 +1922,17 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
|
||||
(cons '(srfi srfi-26) modules))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(add-after 'unpack 'patch-shebangs-in-tests
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(with-directory-excursion
|
||||
"src/tools/rust-analyzer/crates/parser/test_data"
|
||||
(substitute* '("lexer/ok/shebang_frontmatter.rast"
|
||||
"parser/inline/ok/frontmatter.rast")
|
||||
(("/usr/bin/env cargo")
|
||||
(search-input-file inputs "bin/cargo")))
|
||||
(substitute* "lexer/ok/single_line_comments.rast"
|
||||
(("/usr/bin/env bash")
|
||||
(search-input-file inputs "bin/bash"))))))
|
||||
(add-after 'unpack 'disable-tests-requiring-git
|
||||
(lambda _
|
||||
(substitute* "src/tools/cargo/tests/testsuite/publish_lockfile.rs"
|
||||
@@ -2063,6 +2074,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
|
||||
"library/std" ;rustc
|
||||
"src/tools/cargo"
|
||||
"src/tools/clippy"
|
||||
"src/tools/llvm-bitcode-linker"
|
||||
"src/tools/rust-analyzer"
|
||||
"src/tools/rustfmt"))))
|
||||
(replace 'check
|
||||
@@ -2082,7 +2094,10 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
|
||||
(replace 'install
|
||||
;; Phase overridden to also install more tools.
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(invoke "./x.py" "install")
|
||||
;; Install rustc, std, and llvm-bitcode-linker.
|
||||
;; rust-src is handled separately in 'install-rust-src'.
|
||||
(invoke "./x.py" "install" "compiler/rustc" "library/std"
|
||||
"llvm-bitcode-linker")
|
||||
(substitute* "config.toml"
|
||||
;; Adjust the prefix to the 'cargo' output.
|
||||
(("prefix = \"[^\"]*\"")
|
||||
@@ -2130,7 +2145,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
|
||||
(with-directory-excursion
|
||||
(string-append (assoc-ref outputs "rust-src")
|
||||
"/lib/rustlib/src/rust/src/tools/")
|
||||
(substitute* (find-files "." "\\.rs$")
|
||||
(substitute* (find-files "." "\\.(rs|rast)$")
|
||||
(("#!.*/bin/cargo")
|
||||
(string-append "#!" (assoc-ref outputs "cargo")
|
||||
"/bin/cargo"))))))
|
||||
|
||||
@@ -190,7 +190,8 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
|
||||
(apply (assoc-ref cargo:%standard-phases phase)
|
||||
#:cargo-target #$(cargo-triplet)
|
||||
args))
|
||||
'(unpack-rust-crates
|
||||
'(prepare-rust-crates
|
||||
unpack-rust-crates
|
||||
configure
|
||||
check-for-pregenerated-files
|
||||
patch-cargo-checksums))))
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2016, 2023, 2024, 2026 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
|
||||
;;; Copyright © 2018, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
|
||||
@@ -391,7 +391,10 @@ modules for Tk, all written in high-level Tcl. Examples of provided widgets:
|
||||
(files (list (string-append "lib/Tclxml" version))))))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--exec-prefix=" (assoc-ref %outputs "out"))
|
||||
(list (string-append "CFLAGS=-g -O2"
|
||||
" -Wno-implicit-function-declaration"
|
||||
" -Wno-incompatible-pointer-types")
|
||||
(string-append "--exec-prefix=" (assoc-ref %outputs "out"))
|
||||
(string-append "--with-tclconfig="
|
||||
(assoc-ref %build-inputs "tcl") "/lib")
|
||||
(string-append "--with-xml2-config="
|
||||
|
||||
+47
-56
@@ -3154,8 +3154,7 @@ wallpaper using mpv.")
|
||||
(define-public libvpx
|
||||
(package
|
||||
(name "libvpx")
|
||||
(version "1.15.2")
|
||||
(replacement libvpx/fixed)
|
||||
(version "1.16.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -3164,8 +3163,9 @@ wallpaper using mpv.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"07c29a5q19613pldp8qm6harqwl7kvqhs7vw4mr8s3dnwyb5jpnl"))
|
||||
(patches (search-patches "libvpx-CVE-2016-2818.patch"))))
|
||||
"0llik9k5rs9ychw9fnknwrz8662dm370yf76r6d6n07727faylyg"))
|
||||
(patches (search-patches "libvpx-CVE-2016-2818.patch"
|
||||
"libvpx-CVE-2026-2447.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "--enable-shared"
|
||||
@@ -3194,11 +3194,6 @@ wallpaper using mpv.")
|
||||
(license license:bsd-3)
|
||||
(home-page "https://www.webmproject.org/")))
|
||||
|
||||
(define-public libvpx/fixed
|
||||
(hidden-package
|
||||
(package-with-extra-patches libvpx
|
||||
(search-patches "libvpx-CVE-2026-2447.patch"))))
|
||||
|
||||
(define-public orfondl
|
||||
(package
|
||||
(name "orfondl")
|
||||
@@ -4228,7 +4223,7 @@ be used for realtime video capture via Linux-specific APIs.")
|
||||
"-DENABLE_QSV11=OFF"
|
||||
"-DENABLE_NVENC=OFF"
|
||||
;; Requires a custom version of websocketpp in inputs, that's
|
||||
;; patched to be compatible with recent versions of Boost
|
||||
;; patched to be compatible with recent versions of Boost
|
||||
"-DENABLE_WEBSOCKET=ON"
|
||||
;; Browser plugin requires cef, but it is not packaged yet.
|
||||
;; <https://bitbucket.org/chromiumembedded/cef/src/master/>
|
||||
@@ -6491,7 +6486,7 @@ and audio capture, network stream playback, and many more.")
|
||||
(define-public dav1d
|
||||
(package
|
||||
(name "dav1d")
|
||||
(version "1.5.1")
|
||||
(version "1.5.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -6500,7 +6495,7 @@ and audio capture, network stream playback, and many more.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1n0b5m4srdjsqg15plc9fng5kjv14ygqahjxy8863fbzhr13vjx9"))))
|
||||
(base32 "0x19r721gf91a37xqm70j7qcpadyd3m9lcf1lasxq73wnby5lxqk"))))
|
||||
(build-system meson-build-system)
|
||||
(native-inputs
|
||||
(if (target-x86?)
|
||||
@@ -6782,63 +6777,59 @@ result in several formats:
|
||||
(define-public rav1e
|
||||
(package
|
||||
(name "rav1e")
|
||||
(version "0.7.1")
|
||||
(version "0.8.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (crate-uri "rav1e" version))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1sawva6nmj2fvynydbcirr3nb7wjyg0id2hz2771qnv6ly0cx1yd"))))
|
||||
(base32 "0axk3ji3jmlr81svmsy5zvj8shmhpp8lz5nyghkq752xx1bdvdj3"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
`(#:install-source? #f
|
||||
(list
|
||||
#:install-source? #f
|
||||
#:modules '((guix build cargo-build-system)
|
||||
(guix build utils)
|
||||
(ice-9 match))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'build
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(invoke "cargo" "cinstall" "--release"
|
||||
;; Only build the dynamic library.
|
||||
"--library-type" "cdylib"
|
||||
(string-append "--prefix=" out)))))
|
||||
(add-after 'install 'install-completions
|
||||
(lambda* (#:key native-inputs outputs #:allow-other-keys)
|
||||
(unless ,(%current-target-system)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(share (string-append out "/share"))
|
||||
(bash-completions-dir
|
||||
(string-append out "/etc/bash_completion.d"))
|
||||
(zsh-completions-dir
|
||||
(string-append share "/zsh/site-functions"))
|
||||
(fish-completions-dir
|
||||
(string-append share "/fish/vendor_completions.d"))
|
||||
(elvish-completions-dir
|
||||
(string-append share "/elvish/lib"))
|
||||
(rav1e (string-append out "/bin/rav1e"))
|
||||
(common-flags '("-" "-o" "-" "advanced" "--completion")))
|
||||
(mkdir-p bash-completions-dir)
|
||||
(with-output-to-file
|
||||
(string-append bash-completions-dir "/rav1e")
|
||||
(lambda _ (apply invoke rav1e (append common-flags '("bash")))))
|
||||
(mkdir-p zsh-completions-dir)
|
||||
;; This one currently fails to build.
|
||||
;(with-output-to-file
|
||||
; (string-append zsh-completions-dir "/_rav1e")
|
||||
; (lambda _ (apply invoke rav1e (append common-flags '("zsh")))))
|
||||
(mkdir-p fish-completions-dir)
|
||||
(with-output-to-file
|
||||
(string-append fish-completions-dir "/rav1e.fish")
|
||||
(lambda _ (apply invoke rav1e (append common-flags '("fish")))))
|
||||
(mkdir-p elvish-completions-dir)
|
||||
(with-output-to-file
|
||||
(string-append elvish-completions-dir "/rav1e")
|
||||
(lambda _
|
||||
(apply invoke rav1e (append common-flags '("elvish"))))))))))))
|
||||
#~(modify-phases %standard-phases
|
||||
(replace 'build
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(invoke "cargo" "cinstall" "--release"
|
||||
;; Only build the dynamic library.
|
||||
"--library-type" "cdylib"
|
||||
(string-append "--prefix=" out)))))
|
||||
(add-after 'install 'install-completions
|
||||
(lambda* (#:key native-inputs #:allow-other-keys)
|
||||
(for-each
|
||||
(match-lambda
|
||||
((shell . path)
|
||||
(mkdir-p (in-vicinity #$output (dirname path)))
|
||||
(let ((binary
|
||||
(if #$(%current-target-system)
|
||||
(search-input-file native-inputs "bin/rav1e")
|
||||
(in-vicinity #$output "bin/rav1e"))))
|
||||
(with-output-to-file (in-vicinity #$output path)
|
||||
(lambda _
|
||||
(invoke binary
|
||||
"-" "-o"
|
||||
"-" "advanced"
|
||||
"--completion" shell))))))
|
||||
'(("bash" . "share/bash-completion/completions/rav1e")
|
||||
("elvish" . "share/elvish/lib/rav1e")
|
||||
("fish" . "share/fish/vendor_completions.d/rav1e.fish")
|
||||
;; This one currently fails to build.
|
||||
;("zsh" . "share/zsh/site-functions/_rav1e")
|
||||
)))))))
|
||||
(native-inputs
|
||||
(append (if (target-x86?)
|
||||
(list nasm)
|
||||
'())
|
||||
(if (%current-target-system)
|
||||
(list this-package)
|
||||
'())
|
||||
(list pkg-config rust-cargo-c)))
|
||||
(inputs
|
||||
(cons* libgit2-1.9 zlib (cargo-inputs 'rav1e)))
|
||||
|
||||
+100
-40
@@ -161,6 +161,8 @@
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (gnu packages ruby-check)
|
||||
#:use-module (gnu packages ruby-xyz)
|
||||
#:use-module (gnu packages rust)
|
||||
#:use-module (gnu packages rust-apps)
|
||||
#:use-module (gnu packages rsync)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages selinux)
|
||||
@@ -217,6 +219,9 @@
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Delete the bundled rust crates.
|
||||
(delete-file-recursively "subprojects/packagecache")
|
||||
(mkdir-p "subprojects/packagecache")
|
||||
;; TODO: Scrub all firmwares from this directory!
|
||||
(with-directory-excursion "pc-bios"
|
||||
;; Delete firmwares provided by SeaBIOS.
|
||||
@@ -261,28 +266,34 @@
|
||||
"share/qemu/pxe-virtio.rom"))
|
||||
#~((string-append #$output "/share/qemu"))))
|
||||
(out #$output))
|
||||
(list (string-append "--cc=" gcc)
|
||||
;; Some architectures insist on using HOST_CC.
|
||||
(string-append "--host-cc=" gcc)
|
||||
(string-append "--prefix=" out)
|
||||
"--sysconfdir=/etc"
|
||||
"--enable-fdt=system"
|
||||
(string-append "--firmwarepath=" out "/share/qemu:"
|
||||
(dirname seabios) ":"
|
||||
(dirname ipxe) ":"
|
||||
(dirname openbios) ":"
|
||||
(dirname opensbi))
|
||||
(string-append "--smbd=" out "/libexec/samba-wrapper")
|
||||
"--disable-debug-info" ;for space considerations
|
||||
;; The binaries need to be linked against -lrt.
|
||||
(string-append "--extra-ldflags=-lrt")))
|
||||
(cons* (string-append "--cc=" gcc)
|
||||
;; Some architectures insist on using HOST_CC.
|
||||
(string-append "--host-cc=" gcc)
|
||||
(string-append "--prefix=" out)
|
||||
"--sysconfdir=/etc"
|
||||
"--enable-fdt=system"
|
||||
(string-append "--firmwarepath=" out "/share/qemu:"
|
||||
(dirname seabios) ":"
|
||||
(dirname ipxe) ":"
|
||||
(dirname openbios) ":"
|
||||
(dirname opensbi))
|
||||
(string-append "--smbd=" out "/libexec/samba-wrapper")
|
||||
"--disable-debug-info" ;for space considerations
|
||||
;; The binaries need to be linked against -lrt.
|
||||
(string-append "--extra-ldflags=-lrt")
|
||||
#$@(if (this-package-native-input "rust")
|
||||
#~((list "--enable-rust"))
|
||||
#~((list)))))
|
||||
;; Make build and test output verbose to facilitate investigation upon failure.
|
||||
#:make-flags #~'("V=1")
|
||||
#:modules `((srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 ftw)
|
||||
(ice-9 match)
|
||||
((guix build cargo-build-system) #:prefix cargo:)
|
||||
,@%default-gnu-modules)
|
||||
#:imported-modules `(,@%cargo-build-system-modules
|
||||
,@%default-gnu-imported-modules)
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
;; Since we removed the bundled firmwares above, many tests
|
||||
@@ -325,6 +336,29 @@
|
||||
"\"~a\",~%" file))
|
||||
allowed-differences)
|
||||
(close-port allowed-differences-whitelist))))
|
||||
#$@(if (this-package-native-input "rust")
|
||||
#~((add-after 'unpack 'prepare-rust-crates
|
||||
(lambda args
|
||||
(apply (assoc-ref cargo:%standard-phases
|
||||
'prepare-rust-crates)
|
||||
args)
|
||||
;; Use /tmp/rust-crates as the source.
|
||||
(substitute* (find-files "subprojects" "-rs\\.wrap$")
|
||||
(("source_url = (.*)" _ url)
|
||||
(let ((split-url (string-split url #\/)))
|
||||
(string-append
|
||||
"source_url = file:///tmp/rust-crates/rust-"
|
||||
(list-ref split-url 6) "-"
|
||||
(list-ref split-url 7) ".tar.gz\n"))))
|
||||
;; "Download" the packages.
|
||||
(for-each
|
||||
(lambda (wrapper)
|
||||
(invoke "meson" "subprojects" "download"
|
||||
(string-drop-right wrapper 5)))
|
||||
(scandir "subprojects"
|
||||
(lambda (file)
|
||||
(string-suffix? "-rs.wrap" file)))))))
|
||||
#~())
|
||||
;; If the ipxe firmware isn't available, remove it from the list
|
||||
;; of files expected to be available and remove some of the tests.
|
||||
#$@(if (not (this-package-input "ipxe-qemu"))
|
||||
@@ -587,27 +621,38 @@ exec smbd $@")))
|
||||
zlib
|
||||
`(,zstd "lib"))))
|
||||
(native-inputs
|
||||
;; Note: acpica is here only to pretty-print firmware differences with IASL
|
||||
;; (see the replace-firmwares phase above).
|
||||
(list acpica
|
||||
bison
|
||||
flex
|
||||
gettext-minimal
|
||||
`(,glib "bin") ;gtester, etc.
|
||||
meson
|
||||
ninja
|
||||
perl
|
||||
pkg-config
|
||||
python-wrapper
|
||||
python-sphinx
|
||||
python-sphinx-rtd-theme
|
||||
python-tomli
|
||||
texinfo
|
||||
;; The following static libraries are required to build
|
||||
;; the static output of QEMU.
|
||||
`(,glib "static")
|
||||
`(,pcre2 "static")
|
||||
`(,zlib "static")))
|
||||
(append
|
||||
;; The rust code doesn't seem to be in use yet.
|
||||
(if #f ;(supported-package? rust)
|
||||
(append
|
||||
(cons* rust
|
||||
rust-bindgen-cli
|
||||
(cargo-inputs 'qemu))
|
||||
(or (and=> (%current-target-system)
|
||||
(compose list make-rust-sysroot))
|
||||
'()))
|
||||
'())
|
||||
;; Note: acpica is here only to pretty-print firmware differences with
|
||||
;; IASL (see the replace-firmwares phase above).
|
||||
(list acpica
|
||||
bison
|
||||
flex
|
||||
gettext-minimal
|
||||
`(,glib "bin") ;gtester, etc.
|
||||
meson
|
||||
ninja
|
||||
perl
|
||||
pkg-config
|
||||
python-wrapper
|
||||
python-sphinx
|
||||
python-sphinx-rtd-theme
|
||||
python-tomli
|
||||
texinfo
|
||||
;; The following static libraries are required to build
|
||||
;; the static output of QEMU.
|
||||
`(,glib "static")
|
||||
`(,pcre2 "static")
|
||||
`(,zlib "static"))))
|
||||
(home-page "https://www.qemu.org")
|
||||
(synopsis "Machine emulator and virtualizer")
|
||||
(description
|
||||
@@ -2467,9 +2512,23 @@ Open Container Initiative specification.")
|
||||
#:build-flags
|
||||
#~(list (string-append "-ldflags="
|
||||
"-X github.com/opencontainers/umoci.version="
|
||||
#$version))))
|
||||
;; TODO: build manpages from <doc/man> with 'go-md2man'.
|
||||
(propagated-inputs
|
||||
#$version))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'install 'build-and-install-man-pages
|
||||
(lambda* (#:key unpack-path #:allow-other-keys)
|
||||
(with-directory-excursion
|
||||
(string-append "src/" unpack-path "/doc/man")
|
||||
(mkdir-p (string-append #$output "/share/man/man1"))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(let* ((file (string-drop-right file 3)) ;cut .md
|
||||
(in-md (string-append file ".md"))
|
||||
(out-man (string-append #$output
|
||||
"/share/man/man1/" file)))
|
||||
(invoke "go-md2man" "-in" in-md "-out" out-man)))
|
||||
(find-files "." "\\.md$"))))))))
|
||||
(native-inputs
|
||||
(list go-github-com-adalogics-go-fuzz-headers
|
||||
go-github-com-apex-log
|
||||
go-github-com-blang-semver-v4
|
||||
@@ -2489,7 +2548,8 @@ Open Container Initiative specification.")
|
||||
go-github-com-stretchr-testify
|
||||
go-github-com-urfave-cli
|
||||
go-golang-org-x-sys
|
||||
go-google-golang-org-protobuf))
|
||||
go-google-golang-org-protobuf
|
||||
go-md2man))
|
||||
(home-page "https://umo.ci/")
|
||||
(synopsis "Tool for modifying Open Container images")
|
||||
(description
|
||||
|
||||
@@ -242,39 +242,6 @@ and many other languages.")
|
||||
(substitute* "src/unix/mimetype.cpp"
|
||||
(("/usr(/local)?/share/mime") mime))))))))))
|
||||
|
||||
(define-public prusa-wxwidgets
|
||||
;; There is no proper tag/release, all patches are in separate branches based on
|
||||
;; the wxWidgets release (e.g. this commit is taken from "v3.2.0-patched" branch".)
|
||||
(let ((commit "78aa2dc0ea7ce99dc19adc1140f74c3e2e3f3a26")
|
||||
(revision "0"))
|
||||
(package
|
||||
(inherit wxwidgets-sans-egl)
|
||||
(name "prusa-wxwidgets")
|
||||
(version (git-version "3.2.0" revision commit))
|
||||
(home-page "https://github.com/prusa3d/wxWidgets")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url home-page)
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
;; The patch is taken from the NixOS nixpkgs repository (see
|
||||
;; <https://github.com/NixOS/nixpkgs/commit/0e724ac89f3dbf6ed31d647290a371b44a85e5ad>.)
|
||||
(patches (search-patches "prusa-wxwidgets-makefile-fix.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1xk6w7q4xv4cj906xa5dwam5q51mc8bszbkkz7l8d3wjmsz73rwv"))))
|
||||
(native-inputs (modify-inputs native-inputs
|
||||
(prepend nanosvg)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments arguments
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
(add-after 'unpack 'copy-nanosvg-source
|
||||
(lambda _
|
||||
(copy-recursively #$(package-source nanosvg) "3rdparty/nanosvg/"))))))))))
|
||||
|
||||
(define-public python-wxpython
|
||||
(package
|
||||
(name "python-wxpython")
|
||||
|
||||
@@ -688,7 +688,7 @@ avoiding password prompts when X11 forwarding has already been setup.")
|
||||
(define-public libxkbcommon
|
||||
(package
|
||||
(name "libxkbcommon")
|
||||
(version "1.11.0")
|
||||
(version "1.13.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -697,7 +697,7 @@ avoiding password prompts when X11 forwarding has already been setup.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1swa6rf63c0wi0qq5r661g63yk2iwa9l66148078xkrwcf05sp91"))))
|
||||
"1440s6w7m7xpxw44d3x9wyn5wy4wxdx33idvklxkhp9irnq32jy1"))))
|
||||
(outputs '("out" "doc"))
|
||||
(build-system meson-build-system)
|
||||
(inputs
|
||||
@@ -713,6 +713,8 @@ avoiding password prompts when X11 forwarding has already been setup.")
|
||||
doxygen
|
||||
pkg-config
|
||||
python
|
||||
;; setxkbmap needed for tests.
|
||||
setxkbmap
|
||||
;; wayland-scanner is required at build time.
|
||||
wayland
|
||||
;; Xvfb for tests.
|
||||
@@ -955,7 +957,7 @@ rasterisation.")
|
||||
(define-public libdrm
|
||||
(package
|
||||
(name "libdrm")
|
||||
(version "2.4.124")
|
||||
(version "2.4.131")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -963,7 +965,7 @@ rasterisation.")
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0yd37j3c1qz9gmwvv7vwqgss8aiizypsg8hn9fpsyjnac4zjjdmc"))))
|
||||
"1m8pyv2l7mbkf1wy54b3dsvm7f8ksf0xwm6nlc36928wnn1rkfj5"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
(list #:configure-flags
|
||||
|
||||
@@ -2513,7 +2513,7 @@ XC-APPGROUP, XTEST.")
|
||||
(define-public libevdev
|
||||
(package
|
||||
(name "libevdev")
|
||||
(version "1.13.3")
|
||||
(version "1.13.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -2521,11 +2521,11 @@ XC-APPGROUP, XTEST.")
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gygrc20d7cw70fdb5mp0ns3pmy8skggyl1mbpfyp3i0hv7amwdb"))))
|
||||
"040ialc9galic1bxgllp9g26fzk8lay0db1p8x0ky8yqrgn1bwkk"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("--disable-static")))
|
||||
(native-inputs (list python))
|
||||
(native-inputs (list pkg-config python))
|
||||
(home-page "https://www.freedesktop.org/wiki/Software/libevdev/")
|
||||
(synopsis "Wrapper library for evdev devices")
|
||||
(description
|
||||
|
||||
+565
-6
@@ -21,24 +21,39 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu services monitoring)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages monitoring)
|
||||
#:use-module (gnu packages networking)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (gnu services web)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages monitoring)
|
||||
#:use-module (gnu packages networking)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu system shadow)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module ((guix modules) #:select (source-module-closure))
|
||||
#:use-module (guix packages)
|
||||
#:use-module ((guix profiles) #:select (packages->manifest
|
||||
profile
|
||||
profile-search-paths))
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix search-paths) #:select (search-path-specification-variable))
|
||||
#:use-module ((guix self) #:select (make-config.scm))
|
||||
#:use-module ((guix ui) #:select (display-hint G_))
|
||||
#:use-module (guix utils)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module ((srfi srfi-2) #:select (and-let*))
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module ((srfi srfi-171) #:select (list-transduce
|
||||
rcons
|
||||
tconcatenate
|
||||
tfilter
|
||||
tmap))
|
||||
|
||||
#:export (darkstat-configuration
|
||||
darkstat-service-type
|
||||
|
||||
@@ -94,7 +109,49 @@
|
||||
zabbix-agent-service-type
|
||||
zabbix-front-end-configuration
|
||||
zabbix-front-end-service-type
|
||||
%zabbix-front-end-configuration-nginx))
|
||||
%zabbix-front-end-configuration-nginx
|
||||
|
||||
collectd-plugin-generic
|
||||
collectd-plugin-generic?
|
||||
collectd-plugin-generic-load-plugin?
|
||||
collectd-plugin-generic-name
|
||||
collectd-plugin-generic-options
|
||||
|
||||
collectd-plugin-python
|
||||
collectd-plugin-python?
|
||||
collectd-plugin-python-load-plugin?
|
||||
collectd-plugin-python-type-databases
|
||||
collectd-plugin-python-type-packages
|
||||
collectd-plugin-python-module-paths
|
||||
collectd-plugin-python-log-traces?
|
||||
collectd-plugin-python-log-interactive?
|
||||
collectd-plugin-python-import
|
||||
collectd-plugin-python-module
|
||||
|
||||
collectd-plugin?
|
||||
|
||||
%collectd-default-type-database
|
||||
%collectd-pid-file
|
||||
|
||||
collectd-configuration
|
||||
collectd-configuration?
|
||||
collectd-configuration-collectd
|
||||
collectd-configuration-base-directory
|
||||
collectd-configuration-auto-load-plugins?
|
||||
collectd-configuration-collect-internal-stats?
|
||||
collectd-configuration-type-databases
|
||||
collectd-configuration-interval
|
||||
collectd-configuration-max-read-interval
|
||||
collectd-configuration-timeout
|
||||
collectd-configuration-read-threads
|
||||
collectd-configuration-write-threads
|
||||
collectd-configuration-write-queue-limit-high
|
||||
collectd-configuration-write-queue-limit-low
|
||||
collectd-configuration-host-name
|
||||
collectd-configuration-fully-qualified-domain-name-lookup?
|
||||
collectd-configuration-plugins
|
||||
|
||||
collectd-service-type))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -1186,3 +1243,505 @@ with Zabbix server.")))
|
||||
`((zabbix-front-end-configuration
|
||||
,zabbix-front-end-configuration-fields))
|
||||
'zabbix-front-end-configuration))
|
||||
|
||||
|
||||
;;
|
||||
;; collectd
|
||||
;;
|
||||
|
||||
(define *indent* (make-parameter ""))
|
||||
|
||||
(defmacro with-indent (. body)
|
||||
`(parameterize ((*indent* (string-append (*indent*) " ")))
|
||||
,@body))
|
||||
|
||||
(define seconds? integer?)
|
||||
|
||||
(define-maybe/no-serialization seconds)
|
||||
|
||||
(define list-of-string? (list-of string?))
|
||||
|
||||
(define list-of-file-likes? (list-of file-like?))
|
||||
|
||||
(define (collectd-serialize-list-of-file-likes name value)
|
||||
#~(string-join
|
||||
(map
|
||||
(lambda (v) (format #f "~a~a \"~a\"" #$name #$(*indent*) v))
|
||||
'#$value)
|
||||
"\n" 'suffix))
|
||||
|
||||
(define (collectd-serialize-file-like name value)
|
||||
(collectd-serialize-list-of-file-likes name (list value)))
|
||||
|
||||
(define list-of-packages? (list-of package?))
|
||||
|
||||
(define (collectd-serialize-value value)
|
||||
(cond
|
||||
;; Strings get quoted and escaped.
|
||||
((string? value)
|
||||
(format #f "~s" value))
|
||||
|
||||
;; Keywords become unquoted strings (#:foo -> foo).
|
||||
((keyword? value)
|
||||
(collectd-serialize-value
|
||||
(keyword->symbol value)))
|
||||
|
||||
;; Booleans become bare words.
|
||||
((eq? value #t) "true")
|
||||
((eq? value #f) "false")
|
||||
|
||||
;; Alists serialize to lines of KEY VALUE.
|
||||
((alist? value)
|
||||
(apply string-append
|
||||
(map
|
||||
(generic-serialize-alist-entry collectd-serialize-field)
|
||||
value)))
|
||||
|
||||
;; Lists get their elements serialized and joined with a space.
|
||||
((list? value) (string-join (map collectd-serialize-value value) " "))
|
||||
|
||||
;; Other types (numbers etc) turn into bare strings.
|
||||
(else (object->string value))))
|
||||
|
||||
(define (collectd-serialize-field name value)
|
||||
(if (and (list? value) (null-list? value))
|
||||
""
|
||||
(format #nil "~a~a ~a~%" (*indent*) name
|
||||
(collectd-serialize-value value))))
|
||||
|
||||
(define (remap-names name-map serializer)
|
||||
"Renaming serializer.
|
||||
|
||||
Wraps `serializer', renaming fields according to `name-map', an alist of
|
||||
'((field-name . serialized-name))."
|
||||
(lambda (name value)
|
||||
(serializer (or (and=> (assoc name name-map) cdr) name) value)))
|
||||
|
||||
(define (collectd-make-load-plugin?-serializer plugin-name)
|
||||
(lambda (_ load-plugin?)
|
||||
(if load-plugin?
|
||||
(collectd-serialize-field "LoadPlugin" plugin-name)
|
||||
"")))
|
||||
|
||||
;; Generic plugin support.
|
||||
|
||||
(define-configuration/no-serialization collectd-plugin-generic
|
||||
(load-plugin?
|
||||
(boolean #t)
|
||||
"When @code{#t}, include a @code{LoadPlugin} directive in the
|
||||
configuration. This interacts with @code{auto-load-plugins?} in
|
||||
@code{collectd-configuration}; if @code{auto-load-plugins?} is @code{#f}, all
|
||||
plugins should set this to @code{#t}.")
|
||||
|
||||
(name
|
||||
string
|
||||
"The name of the plugin to configure. See @code{collect.conf(5)} for the
|
||||
list of plugins.")
|
||||
|
||||
(options
|
||||
(alist '())
|
||||
"Configuration options for the plugin, as an alist. See
|
||||
@code{collect.conf(5)} for the available plugin options."))
|
||||
|
||||
(define (collectd-serialize-plugin-generic _ value)
|
||||
(match-record value <collectd-plugin-generic>
|
||||
(name load-plugin? options)
|
||||
#~(string-join
|
||||
`("\n"
|
||||
,#$((collectd-make-load-plugin?-serializer name) #nil load-plugin?)
|
||||
,(string-append "<Plugin " #$name ">\n")
|
||||
,#$(with-indent (collectd-serialize-value options))
|
||||
"</Plugin>\n")
|
||||
"")))
|
||||
|
||||
;; Python plugin support.
|
||||
|
||||
(define (collectd-serialize-python-module name value)
|
||||
(apply string-append
|
||||
`(,(string-append (*indent*) "<Module "
|
||||
(collectd-serialize-value name)
|
||||
">")
|
||||
"\n"
|
||||
,@(with-indent
|
||||
(map
|
||||
(lambda (kvs)
|
||||
(collectd-serialize-field (car kvs) (cdr kvs)))
|
||||
value))
|
||||
,(string-append (*indent*) "</Module>"))))
|
||||
|
||||
(define collectd-plugin-python-remap
|
||||
'((module-paths . "ModulePath")
|
||||
(load-plugin? . "LoadPlugin")
|
||||
(log-traces? . "LogTraces")
|
||||
(interactive? . "Interactive")
|
||||
(type-databases . "TypesDB")
|
||||
(packages . "ModulePath")
|
||||
(module . "Import")))
|
||||
|
||||
(define collectd-serialize-plugin-python-field
|
||||
(remap-names collectd-plugin-python-remap
|
||||
collectd-serialize-field))
|
||||
|
||||
(define-configuration collectd-plugin-python
|
||||
(load-plugin?
|
||||
(boolean #t)
|
||||
"When @code{#t}, include a @code{LoadPlugin} directive in the
|
||||
configuration. This interacts with @code{auto-load-plugins?} in
|
||||
@code{collectd-configuration}; if @code{collectd-configuration}'s
|
||||
@code{auto-load-plugins?} is @code{#f}, all plugins should set this to
|
||||
@code{#t}."
|
||||
(serializer (collectd-make-load-plugin?-serializer "python")))
|
||||
|
||||
(type-databases
|
||||
(list-of-file-likes '())
|
||||
"One or more files that contain the data-set descriptions. See
|
||||
@code{types.db(5)} for a description of the format of these files."
|
||||
(serializer (remap-names collectd-plugin-python-remap
|
||||
collectd-serialize-list-of-file-likes)))
|
||||
|
||||
(packages
|
||||
(list-of-packages '())
|
||||
"Packages to make available to the Python plugin. These can be
|
||||
dependencies of the plugin code, or may contain the plugin."
|
||||
(serializer empty-serializer))
|
||||
|
||||
(module-paths
|
||||
(list-of-string '())
|
||||
"Entries to prepend to @code{sys.path}."
|
||||
(serializer collectd-serialize-plugin-python-field))
|
||||
|
||||
(log-traces?
|
||||
(boolean #f)
|
||||
"If a Python script throws an exception it will be logged by
|
||||
collectd with the name of the exception and the message. If you set
|
||||
this option to true it will also log the full stacktrace just like the
|
||||
default output of an interactive Python interpreter. This does not
|
||||
apply to the @code{CollectError} exception, which will never log a
|
||||
stacktrace. This should probably be set to false most of the time but
|
||||
is very useful for development and debugging of new modules."
|
||||
(serializer collectd-serialize-plugin-python-field))
|
||||
|
||||
(interactive?
|
||||
(boolean #f)
|
||||
"This option will cause the module to launch an interactive Python
|
||||
interpreter that reads from and writes to the terminal. Note that collectd
|
||||
will terminate right after starting up if you try to run it as a daemon while
|
||||
this option is enabled so make sure to start collectd with the @code{-f}
|
||||
option. See the @code{collectd-python(5)} man page for more information on
|
||||
this option."
|
||||
(serializer collectd-serialize-plugin-python-field))
|
||||
|
||||
(module
|
||||
string
|
||||
"The name of the Python module to import into the collectd Python
|
||||
process. The module must be available in @code{packages} or
|
||||
@code{module-paths}, and register a MPD callback."
|
||||
(serializer collectd-serialize-plugin-python-field))
|
||||
|
||||
(module-options
|
||||
(alist '())
|
||||
"Configuration options for the module."
|
||||
(serializer (lambda (_ value) (collectd-serialize-value value)))))
|
||||
|
||||
(define (collectd-serialize-plugin-python _ value)
|
||||
(define (serialize-fields fields)
|
||||
(list-transduce
|
||||
(base-transducer value) rcons
|
||||
(filter-configuration-fields collectd-plugin-python-fields fields)))
|
||||
|
||||
(match-record
|
||||
value <collectd-plugin-python> (module)
|
||||
#~(string-append
|
||||
"\n"
|
||||
#$@(serialize-fields '(load-plugin? type-databases))
|
||||
"<Plugin python>\n"
|
||||
#$@(with-indent
|
||||
(append
|
||||
(serialize-fields '(log-traces? interactive? module-paths module))
|
||||
(list (*indent*) "<Module " (collectd-serialize-value module) ">\n")
|
||||
(with-indent (serialize-fields '(module-options)))
|
||||
(list (*indent*) "</Module>\n")))
|
||||
"</Plugin>\n")))
|
||||
|
||||
(define (collectd-plugin? x)
|
||||
;; XXX: Extend this if plugin-specific configuration records are
|
||||
;; added.
|
||||
(or (collectd-plugin-generic? x)
|
||||
(collectd-plugin-python? x)))
|
||||
|
||||
(define list-of-collectd-plugins? (list-of collectd-plugin?))
|
||||
|
||||
(define (collectd-serialize-plugin name value)
|
||||
((match value
|
||||
;; XXX: Extend this if plugin-specific configuration records are
|
||||
;; added.
|
||||
;; Note that these *must* return gexps, not strings, otherwise things
|
||||
;; like type-databases won't work.
|
||||
(($ <collectd-plugin-generic>) collectd-serialize-plugin-generic)
|
||||
(($ <collectd-plugin-python>) collectd-serialize-plugin-python))
|
||||
name value))
|
||||
|
||||
(define (collectd-serialize-list-of-plugins name value)
|
||||
#~(string-append
|
||||
#$@(map
|
||||
(lambda (v) (collectd-serialize-plugin name v))
|
||||
value)))
|
||||
|
||||
(define collectd-configuration-remap
|
||||
'((base-directory . "BaseDir")
|
||||
(auto-load-plugins? . "AutoLoadPlugin")
|
||||
(collect-internal-stats? . "CollectInternalStats")
|
||||
(type-databases . "TypesDB")
|
||||
(interval . "Interval")
|
||||
(max-read-interval . "MaxReadInterval")
|
||||
(timeout . "Timeout")
|
||||
(read-threads . "ReadThreads")
|
||||
(write-threads . "WriteThreads")
|
||||
(write-queue-limit-high . "WriteQueueLimitHigh")
|
||||
(write-queue-limit-low . "WriteQueueLimitLow")
|
||||
(host-name . "Hostname")
|
||||
(fully-qualified-domain-name-lookup? . "FQDNLookup")))
|
||||
|
||||
(define collectd-configuration-serialize-field
|
||||
(remap-names collectd-configuration-remap
|
||||
collectd-serialize-field))
|
||||
|
||||
(define %collectd-default-type-database
|
||||
(file-append collectd "/share/collectd/types.db"))
|
||||
|
||||
(define-configuration collectd-configuration
|
||||
(collectd
|
||||
(package collectd)
|
||||
"The collectd package to use."
|
||||
(serializer empty-serializer))
|
||||
|
||||
(base-directory
|
||||
(string "/var/lib/collectd")
|
||||
"Sets the base directory. This is the directory beneath which all
|
||||
@acronym{RRD, round-robin database} files are created. Possibly more
|
||||
subdirectories are created. This is also the working directory for
|
||||
collectd."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(auto-load-plugins?
|
||||
(boolean #f)
|
||||
"When set to @code{#f}, plugins must be loaded explicitly, by setting the
|
||||
@code{load-plugin?} field of each plugin configuration to @code{#t}. If a
|
||||
@code{<Plugin ...>} block is encountered and no configuration handling
|
||||
callback for this plugin has been registered, a warning is logged and the
|
||||
block is ignored.
|
||||
|
||||
When set to @code{#t}, each @code{<Plugin ...>} block acts as if it was
|
||||
immediately preceded by a @code{LoadPlugin} statement. @code{LoadPlugin}
|
||||
statements are still required for plugins that don't provide any
|
||||
configuration, e.g. the @code{Load} plugin."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(collect-internal-stats?
|
||||
(boolean #f)
|
||||
"When @code{#t}, various statistics about the collectd daemon will
|
||||
be collected, with \"collectd\" as the plugin name."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(type-databases
|
||||
(list-of-file-likes (list %collectd-default-type-database))
|
||||
"One or more files that contain the data-set descriptions. See
|
||||
@code{types.db(5)} for a description of the format of these files."
|
||||
(serializer (remap-names collectd-configuration-remap
|
||||
collectd-serialize-list-of-file-likes)))
|
||||
|
||||
(interval
|
||||
(seconds 60)
|
||||
"Configures the interval in which to query the read plugins.
|
||||
Smaller values lead to a higher system load produced by
|
||||
collectd, while higher values lead to more coarse statistics.
|
||||
|
||||
Warning: You should set this once and then never touch it again. If
|
||||
you do, you will have to delete all your RRD files or know some
|
||||
serious RRDtool magic! (Assuming you're using the RRDtool or
|
||||
RRDCacheD plugin.)"
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(max-read-interval
|
||||
(seconds 86400)
|
||||
"A read plugin doubles the interval between queries after each
|
||||
failed attempt to get data.
|
||||
|
||||
This options limits the maximum value of the interval."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(timeout
|
||||
maybe-integer
|
||||
"Consider a value list \"missing\" when no update has been read or
|
||||
received for @code{Iterations} iterations. By default, collectd considers
|
||||
a value list missing when no update has been received for twice the
|
||||
update interval. Since this setting uses iterations, the maximum
|
||||
allowed time without update depends on the @code{Interval} information
|
||||
contained in each value list. This is used in the @code{Threshold}
|
||||
configuration to dispatch notifications about missing values, see
|
||||
@code{collectd-threshold(5)} for details."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(read-threads
|
||||
(integer 5)
|
||||
"Number of threads to start for reading plugins. You may want to
|
||||
increase this if you have more than five plugins that take a long time
|
||||
to read. Mostly those are plugins that do network-IO. Setting this to
|
||||
a value higher than the number of registered read callbacks is not
|
||||
recommended."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(write-threads
|
||||
(integer 5)
|
||||
"Number of threads to start for dispatching value lists to write
|
||||
plugins. You may want to increase this if you have more than five
|
||||
plugins that may take relatively long to write to."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(write-queue-limit-high
|
||||
maybe-integer
|
||||
"Metrics are read by the read threads and then put into a queue to
|
||||
be handled by the write threads. If one of the write plugins is
|
||||
slow (e.g. network timeouts, I/O saturation of the disk) this queue
|
||||
will grow. In order to avoid running into memory issues in such a
|
||||
case, you can limit the size of this queue.
|
||||
|
||||
If there are @code{write-queue-limit-high} metrics in the queue, any
|
||||
new metrics will be dropped.
|
||||
|
||||
If the number of metrics currently in the queue is between
|
||||
@code{write-queue-limit-low} and @code{write-queue-limit-high}, the
|
||||
metric is dropped with a probability that is proportional to the
|
||||
number of metrics in the queue (i.e. it increases linearly until it
|
||||
reaches 100%)."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(write-queue-limit-low
|
||||
maybe-integer
|
||||
"If there are less than @code{write-queue-limit-low} metrics in the
|
||||
queue, all new metrics will be enqueued.
|
||||
|
||||
If @code{write-queue-limit-high} is set to non-zero and
|
||||
@code{write-queue-limit-low} is unset, the latter will default to half
|
||||
of @code{write-queue-limit-high}."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(host-name
|
||||
maybe-string
|
||||
"Sets the hostname that identifies a host. If you omit this setting,
|
||||
the hostname will be determined using the @code{gethostname(2)} system
|
||||
call."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(fully-qualified-domain-name-lookup?
|
||||
(boolean #t)
|
||||
"If @code{host-name} is determined automatically, this setting
|
||||
controls whether or not the daemon should try to figure out the
|
||||
@acronym{FQDN, fully qualified domain name}. This is done using a
|
||||
lookup of the name returned by @code{gethostname(2)}."
|
||||
(serializer collectd-configuration-serialize-field))
|
||||
|
||||
(plugins
|
||||
(list-of-collectd-plugins '())
|
||||
"Configurations for collectd plugins."
|
||||
(serializer collectd-serialize-list-of-plugins))
|
||||
|
||||
(prefix collectd-))
|
||||
|
||||
(define (collectd-configuration-python config)
|
||||
"Return the Python package collectd was built with, or #f."
|
||||
(and=> (assoc-ref (package-native-inputs
|
||||
(collectd-configuration-collectd config))
|
||||
"python")
|
||||
car))
|
||||
|
||||
(define (collectd-python-packages config)
|
||||
"Return a list of all packages in Python plugins."
|
||||
(append-map
|
||||
(lambda (plugin)
|
||||
(if (collectd-plugin-python? plugin)
|
||||
(collectd-plugin-python-packages plugin)
|
||||
'()))
|
||||
(collectd-configuration-plugins config)))
|
||||
|
||||
(define (collectd-profile-packages config)
|
||||
"Return packages to include in the profile for collectd."
|
||||
(let ((python (collectd-configuration-python config))
|
||||
(python-packages (collectd-python-packages config)))
|
||||
(cons
|
||||
(collectd-configuration-collectd config)
|
||||
;; Only include Python and packages if collectd has support.
|
||||
(if python
|
||||
(cons python python-packages)
|
||||
'()))))
|
||||
|
||||
(define (make-collectd-profile-wrapper config)
|
||||
"Return a gexp representing a wrapper for collectd, which runs it in a profile."
|
||||
(let* ((collectd (collectd-configuration-collectd config))
|
||||
(packages (collectd-profile-packages config))
|
||||
(collectd-profile (profile
|
||||
(content
|
||||
(packages->manifest packages)))))
|
||||
(computed-file
|
||||
"collectd-profile-wrapper"
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(call-with-output-file #$output
|
||||
(lambda (output)
|
||||
(format output
|
||||
(string-append
|
||||
"#! ~a~%~%"
|
||||
". ~a~%"
|
||||
"exec -a \"${0##*/}\" ~a \"$@\"~%")
|
||||
#$(file-append bash "/bin/bash")
|
||||
#$(file-append collectd-profile "/etc/profile")
|
||||
#$(file-append collectd "/sbin/collectd"))))
|
||||
(chmod #$output #o755))))))
|
||||
|
||||
(define %collectd-pid-file "/var/run/collectd.pid")
|
||||
|
||||
(define (make-collectd-shepherd-service config)
|
||||
(let ((config-file
|
||||
(mixed-text-file
|
||||
"collectd.conf"
|
||||
(serialize-configuration config collectd-configuration-fields))))
|
||||
(match-record config <collectd-configuration> (collectd)
|
||||
(shepherd-service
|
||||
(provision '(collectd))
|
||||
(documentation "Run collectd.")
|
||||
(requirement '(user-processes networking))
|
||||
(start
|
||||
#~(make-forkexec-constructor
|
||||
(list #$(make-collectd-profile-wrapper config)
|
||||
"-C" #$config-file
|
||||
"-B" ; Don't create base dir.
|
||||
"-P" #$%collectd-pid-file)
|
||||
#:pid-file #$%collectd-pid-file))
|
||||
(stop #~(make-kill-destructor))))))
|
||||
|
||||
(define (collectd-activation config)
|
||||
(match-record config <collectd-configuration> (base-directory)
|
||||
(with-imported-modules
|
||||
(source-module-closure '((guix build utils)))
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(mkdir-p #$base-directory)))))
|
||||
|
||||
(define collectd-service-type
|
||||
(service-type
|
||||
(name 'collectd)
|
||||
(description "Run collectd")
|
||||
(extensions
|
||||
(list
|
||||
(service-extension shepherd-root-service-type
|
||||
(compose list make-collectd-shepherd-service))
|
||||
(service-extension activation-service-type
|
||||
collectd-activation)))
|
||||
(compose concatenate)
|
||||
(extend
|
||||
(lambda (config plugins)
|
||||
(collectd-configuration
|
||||
(inherit config)
|
||||
(plugins (append (collectd-configuration-plugins config) plugins)))))
|
||||
(default-value (collectd-configuration))))
|
||||
|
||||
@@ -313,6 +313,15 @@
|
||||
patchwork-virtualhost
|
||||
patchwork-service-type
|
||||
|
||||
sogogi-service-type
|
||||
sogogi-configuration
|
||||
sogogi-config-file
|
||||
sogogi-configuration?
|
||||
sogogi-user
|
||||
sogogi-user?
|
||||
sogogi-location
|
||||
sogogi-location?
|
||||
|
||||
mumi-configuration
|
||||
mumi-configuration?
|
||||
mumi-configuration-mumi
|
||||
@@ -2182,6 +2191,128 @@ WSGIPassAuthorization On
|
||||
(description
|
||||
"Patchwork patch tracking system.")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; sogogi.
|
||||
;;;
|
||||
|
||||
(define (sogogi-serialize-section section-name value fields)
|
||||
(let ((first-field (car fields)))
|
||||
#~(format #f "~a ~a {~%~a}~%"
|
||||
#$(object->string section-name)
|
||||
#$((configuration-field-getter first-field) value)
|
||||
#$(serialize-configuration value (cdr fields)))))
|
||||
|
||||
(define (sogogi-serialize-field field-name value)
|
||||
(let ((field (object->string field-name)))
|
||||
#~(format #f "~a ~a~%" #$field #$value)))
|
||||
|
||||
(define sogogi-serialize-string sogogi-serialize-field)
|
||||
(define (sogogi-serialize-list-of-strings field-name value)
|
||||
#~(string-append
|
||||
#$@(map (cut sogogi-serialize-string field-name <>)
|
||||
value)))
|
||||
|
||||
(define-maybe string (prefix sogogi-))
|
||||
(define-maybe list-of-strings (prefix sogogi-))
|
||||
|
||||
(define-configuration sogogi-user
|
||||
(name
|
||||
maybe-string
|
||||
"Name of the user.")
|
||||
|
||||
(password
|
||||
maybe-string
|
||||
"Password of the user.")
|
||||
|
||||
(prefix sogogi-))
|
||||
|
||||
(define (sogogi-serialize-sogogi-user field-name value)
|
||||
(sogogi-serialize-section field-name value sogogi-user-fields))
|
||||
|
||||
(define-configuration sogogi-location
|
||||
(path
|
||||
string
|
||||
"HTTP path at which the directory will be exposed.")
|
||||
|
||||
(dir
|
||||
string
|
||||
"Path to local directory to serve.")
|
||||
|
||||
(grant
|
||||
maybe-list-of-strings
|
||||
"Grant remote users access to the directory.")
|
||||
|
||||
(prefix sogogi-))
|
||||
|
||||
(define (sogogi-serialize-sogogi-location field-name value)
|
||||
(sogogi-serialize-section field-name value sogogi-location-fields))
|
||||
|
||||
(define (sogogi-serialize-list-of-sogogi-location field-name value)
|
||||
#~(string-append #$@(map (cut sogogi-serialize-sogogi-location field-name <>) value)))
|
||||
|
||||
(define (sogogi-serialize-list-of-sogogi-user field-name value)
|
||||
#~(string-append #$@(map (cut sogogi-serialize-sogogi-user field-name <>) value)))
|
||||
|
||||
(define list-of-sogogi-user? (list-of sogogi-user?))
|
||||
(define list-of-sogogi-location? (list-of sogogi-location?))
|
||||
|
||||
(define-configuration sogogi-configuration
|
||||
(listen
|
||||
(string "localhost:8080")
|
||||
"Listening address.")
|
||||
|
||||
(location
|
||||
(list-of-sogogi-location '())
|
||||
"Local directories to expose via a HTTP path.")
|
||||
|
||||
(user
|
||||
(list-of-sogogi-user '())
|
||||
"Users with access to the location.")
|
||||
|
||||
(prefix sogogi-))
|
||||
|
||||
(define (sogogi-config-file config)
|
||||
(mixed-text-file "sogogi.conf"
|
||||
(serialize-configuration
|
||||
config
|
||||
sogogi-configuration-fields)))
|
||||
|
||||
(define (sogogi-shepherd-service config)
|
||||
(let ((config-file (sogogi-config-file config)))
|
||||
(list (shepherd-service
|
||||
(documentation "Sogogi daemon.")
|
||||
(provision '(sogogi))
|
||||
;; sogogi may be bound to a particular IP address, hence
|
||||
;; only start it after the networking service has started.
|
||||
(requirement '(user-processes networking))
|
||||
(actions (list (shepherd-configuration-action config-file)))
|
||||
(start #~(make-forkexec-constructor
|
||||
(list (string-append #$sogogi "/bin/sogogi")
|
||||
"-config" #$config-file)))
|
||||
(stop #~(make-kill-destructor))))))
|
||||
|
||||
(define sogogi-account-service
|
||||
(list (user-group (name "sogogi") (system? #t))
|
||||
(user-account
|
||||
(name "sogogi")
|
||||
(group "sogogi")
|
||||
(system? #t)
|
||||
(comment "Sogogi daemon user")
|
||||
(home-directory "/var/empty")
|
||||
(shell (file-append shadow "/sbin/nologin")))))
|
||||
|
||||
(define sogogi-service-type
|
||||
(service-type (name 'sogogi)
|
||||
(description "Run the sogogi WebDAV server.")
|
||||
(extensions
|
||||
(list (service-extension account-service-type
|
||||
(const sogogi-account-service))
|
||||
(service-extension shepherd-root-service-type
|
||||
sogogi-shepherd-service)))
|
||||
(compose concatenate)
|
||||
(default-value (sogogi-configuration))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Mumi.
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
%test-anonip
|
||||
%test-go-webdav
|
||||
%test-patchwork
|
||||
%test-sogogi
|
||||
%test-agate
|
||||
%test-miniflux-admin-string
|
||||
%test-miniflux-admin-file
|
||||
@@ -780,6 +781,55 @@ HTTP-PORT."
|
||||
(description "Connect to a running Patchwork service.")
|
||||
(value (run-patchwork-test patchwork))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; sogogi
|
||||
;;;
|
||||
|
||||
(define %sogogi-os
|
||||
(simple-operating-system
|
||||
(service dhcpcd-service-type)
|
||||
(simple-service 'make-http-root activation-service-type
|
||||
%make-http-root)
|
||||
(service sogogi-service-type
|
||||
(sogogi-configuration
|
||||
(listen ":8080")
|
||||
(user
|
||||
(list
|
||||
(sogogi-user
|
||||
(name "testuser")
|
||||
(password "testpass"))))
|
||||
(location
|
||||
(list
|
||||
(sogogi-location
|
||||
(path "/")
|
||||
(dir "/srv/http/")
|
||||
(grant '("all ro" "user:testuser rw")))))))))
|
||||
|
||||
(define %test-sogogi
|
||||
(system-test
|
||||
(name "sogogi")
|
||||
(description "Test that the sogogi can handle HTTP requests.")
|
||||
(value
|
||||
(let ((http-port 8080))
|
||||
(run-webserver-test name %sogogi-os
|
||||
#:http-port http-port
|
||||
#:extra-tests
|
||||
#~(begin
|
||||
(use-modules (srfi srfi-11) (srfi srfi-64)
|
||||
(gnu build marionette)
|
||||
(web uri)
|
||||
(web client)
|
||||
(web response))
|
||||
|
||||
(test-equal "unauthenticated delete"
|
||||
401
|
||||
(let-values
|
||||
(((response _)
|
||||
(http-delete #$(simple-format
|
||||
#f "http://localhost:~A/index.html" http-port))))
|
||||
(response-code response)))))))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Agate
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
;;; Copyright © 2016 David Craven <david@craven.ch>
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
|
||||
;;; Copyright © 2019-2025 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2019-2026 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
|
||||
;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
@@ -101,8 +101,9 @@ Cargo.toml file present at its root."
|
||||
" | cut -d/ -f2"
|
||||
" | grep -q '^Cargo.toml$'"))))))
|
||||
|
||||
(define* (unpack-rust-crates #:key inputs (vendor-dir "guix-vendor")
|
||||
#:allow-other-keys)
|
||||
(define* (prepare-rust-crates #:key inputs (vendor-dir "guix-vendor")
|
||||
#:allow-other-keys)
|
||||
"Find the rust-crate inputs and cache them for future use."
|
||||
(define (inputs->rust-inputs inputs)
|
||||
"Filter using the label part from INPUTS."
|
||||
(filter (lambda (input)
|
||||
@@ -115,30 +116,71 @@ Cargo.toml file present at its root."
|
||||
(((names . directories) ...)
|
||||
directories)))
|
||||
|
||||
(chmod "." #o755)
|
||||
(let ((rust-inputs (inputs->directories (inputs->rust-inputs inputs))))
|
||||
(unless (null? rust-inputs)
|
||||
(mkdir-p "target/package")
|
||||
(mkdir-p vendor-dir)
|
||||
;; TODO: copy only regular inputs to target/package, not native-inputs.
|
||||
(for-each
|
||||
(lambda (input-crate)
|
||||
(for-each
|
||||
(lambda (packaged-crate)
|
||||
(unless
|
||||
(file-exists?
|
||||
(string-append "target/package/" (basename packaged-crate)))
|
||||
(install-file packaged-crate "target/package/")))
|
||||
(find-files
|
||||
(string-append input-crate "/share/cargo/registry") "\\.crate$")))
|
||||
(delete-duplicates rust-inputs))
|
||||
|
||||
(for-each (lambda (crate)
|
||||
(invoke "tar" "xzf" crate "-C" vendor-dir))
|
||||
(find-files "target/package" "\\.crate$")))))
|
||||
(let ((crate-cache "/tmp/rust-crates/"))
|
||||
(mkdir-p crate-cache)
|
||||
(mkdir-p vendor-dir)
|
||||
(for-each
|
||||
(lambda (input-crate)
|
||||
(when (file-exists?
|
||||
(string-append input-crate "/share/cargo/registry"))
|
||||
(for-each
|
||||
(lambda (packaged-crate)
|
||||
(unless
|
||||
(file-exists?
|
||||
(string-append crate-cache (basename packaged-crate)))
|
||||
(install-file packaged-crate crate-cache))
|
||||
;; TODO: Move this to 'unpack-rust-crates.
|
||||
;; Unpack the inputs from rust-sources.
|
||||
(invoke "tar" "xzf" packaged-crate "-C" vendor-dir))
|
||||
(find-files
|
||||
(string-append input-crate "/share/cargo/registry")
|
||||
"\\.crate$")))
|
||||
(unless
|
||||
(file-exists?
|
||||
(string-append crate-cache (strip-store-file-name input-crate)))
|
||||
(copy-file input-crate
|
||||
(string-append
|
||||
crate-cache (strip-store-file-name input-crate)))))
|
||||
(delete-duplicates rust-inputs))))))
|
||||
|
||||
(define (rust-package? name)
|
||||
(string-prefix? "rust-" name))
|
||||
|
||||
(define* (unpack-rust-crates #:key source inputs (vendor-dir "guix-vendor")
|
||||
#:allow-other-keys)
|
||||
"Vendor Cargo.toml dependencies as guix inputs."
|
||||
|
||||
;; Prepare one new directory with all the required dependencies.
|
||||
;; It's necessary to do this (instead of just using /gnu/store as the
|
||||
;; directory) because we want to hide the libraries in subdirectories
|
||||
;; share/rust-source/... instead of polluting the user's profile root.
|
||||
(chmod "." #o755)
|
||||
(mkdir-p vendor-dir)
|
||||
(for-each
|
||||
(match-lambda
|
||||
((name . path)
|
||||
(let* ((basepath (strip-store-file-name path))
|
||||
(crate-dir (string-append vendor-dir "/" basepath)))
|
||||
(and (crate-src? path #:source source)
|
||||
;; Gracefully handle duplicate inputs
|
||||
(not (file-exists? crate-dir))
|
||||
(if (directory-exists? path)
|
||||
(copy-recursively path crate-dir)
|
||||
(begin
|
||||
(mkdir-p crate-dir)
|
||||
;; Cargo crates are simply gzipped tarballs but with a
|
||||
;; .crate extension. We expand the source to a directory
|
||||
;; name we control so that we can generate any cargo
|
||||
;; checksums. The --strip-components argument is needed to
|
||||
;; prevent creating an extra directory within `crate-dir`.
|
||||
(format #t "Unpacking ~a~%" name)
|
||||
(invoke "tar" "xf" path "-C" crate-dir
|
||||
"--strip-components" "1")))))))
|
||||
inputs))
|
||||
|
||||
(define* (check-for-pregenerated-files #:key parallel-build? #:allow-other-keys)
|
||||
"Check the source code for files which are known to generally be bundled
|
||||
libraries or executables."
|
||||
@@ -169,35 +211,7 @@ libraries or executables."
|
||||
(cargo-target #f)
|
||||
(vendor-dir "guix-vendor")
|
||||
#:allow-other-keys)
|
||||
"Vendor Cargo.toml dependencies as guix inputs."
|
||||
(chmod "." #o755)
|
||||
;; Prepare one new directory with all the required dependencies.
|
||||
;; It's necessary to do this (instead of just using /gnu/store as the
|
||||
;; directory) because we want to hide the libraries in subdirectories
|
||||
;; share/rust-source/... instead of polluting the user's profile root.
|
||||
(mkdir-p vendor-dir)
|
||||
(for-each
|
||||
(match-lambda
|
||||
((name . path)
|
||||
(let* ((basepath (strip-store-file-name path))
|
||||
(crate-dir (string-append vendor-dir "/" basepath)))
|
||||
(and (crate-src? path #:source source)
|
||||
;; Gracefully handle duplicate inputs
|
||||
(not (file-exists? crate-dir))
|
||||
(if (directory-exists? path)
|
||||
(copy-recursively path crate-dir)
|
||||
(begin
|
||||
(mkdir-p crate-dir)
|
||||
;; Cargo crates are simply gzipped tarballs but with a
|
||||
;; .crate extension. We expand the source to a directory
|
||||
;; name we control so that we can generate any cargo
|
||||
;; checksums. The --strip-components argument is needed to
|
||||
;; prevent creating an extra directory within `crate-dir`.
|
||||
(format #t "Unpacking ~a~%" name)
|
||||
(invoke "tar" "xf" path "-C" crate-dir
|
||||
"--strip-components" "1")))))))
|
||||
inputs)
|
||||
|
||||
"Prepare the environment for building the rust package."
|
||||
;; For cross-building
|
||||
(when target
|
||||
(setenv "CARGO_BUILD_TARGET" cargo-target)
|
||||
@@ -376,10 +390,20 @@ directory = '" vendor-dir "'") port)
|
||||
(for-each
|
||||
(lambda (crate)
|
||||
(invoke "tar" "xzf" crate "-C" vendor-dir))
|
||||
(find-files "target/package" "\\.crate$"))
|
||||
(map (lambda (f) (string-append "target/package/" f))
|
||||
(scandir "target/package"
|
||||
(lambda (f) (string-suffix? ".crate" f)))))
|
||||
(patch-cargo-checksums #:vendor-dir vendor-dir))
|
||||
cargo-package-crates))
|
||||
|
||||
;; Cargo creates target/package/tmp-crate/ as scratch space during
|
||||
;; packaging and leaves .crate file copies there after uplifting them
|
||||
;; to target/package/. Delete it so the repacking scandir does not
|
||||
;; pick the tmp-crate directory instead of the extracted crate
|
||||
;; directory when crate names sort after "tmp-crate" alphabetically.
|
||||
(when (file-exists? "target/package/tmp-crate")
|
||||
(delete-file-recursively "target/package/tmp-crate"))
|
||||
|
||||
;; Then unpack the crate, reset the timestamp of all contained files, and
|
||||
;; repack them. This is necessary to ensure that they are reproducible.
|
||||
(with-directory-excursion "target/package"
|
||||
@@ -464,7 +488,8 @@ directory = '" vendor-dir "'") port)
|
||||
(replace 'check check)
|
||||
(replace 'install install)
|
||||
(add-after 'build 'package package)
|
||||
(add-after 'unpack 'unpack-rust-crates unpack-rust-crates)
|
||||
(add-after 'unpack 'prepare-rust-crates prepare-rust-crates)
|
||||
(add-after 'prepare-rust-crates 'unpack-rust-crates unpack-rust-crates)
|
||||
(add-after 'configure 'check-for-pregenerated-files check-for-pregenerated-files)
|
||||
(add-after 'patch-generated-file-shebangs 'patch-cargo-checksums patch-cargo-checksums)))
|
||||
|
||||
|
||||
+2
-1
@@ -1455,7 +1455,8 @@ and in the current monad setting (system type, etc.)"
|
||||
(($ <gexp-input> (? self-quoting? x))
|
||||
(return x))
|
||||
(($ <gexp-input> x)
|
||||
(raise (condition (&gexp-input-error (input x)))))
|
||||
(raise (condition (&gexp-input-error (input x))
|
||||
(&error-location (location (gexp-location exp))))))
|
||||
(x
|
||||
(return x)))))
|
||||
|
||||
|
||||
+49
-42
@@ -61,6 +61,7 @@
|
||||
gnu-package-download-url
|
||||
|
||||
official-gnu-packages
|
||||
official-gnu-packages*
|
||||
find-package
|
||||
gnu-package?
|
||||
|
||||
@@ -181,6 +182,13 @@ to fetch the list of GNU packages over HTTP."
|
||||
(close-port port)
|
||||
lst)))
|
||||
|
||||
(define official-gnu-packages*
|
||||
(mlambda ()
|
||||
"A memoizing version of 'official-gnu-packages' that returns the empty
|
||||
list when something goes wrong, such as a networking issue."
|
||||
(let ((gnus (false-if-exception (official-gnu-packages))))
|
||||
(or gnus '()))))
|
||||
|
||||
(define (find-package name)
|
||||
"Find GNU package called NAME and return it. Return #f if it was not
|
||||
found."
|
||||
@@ -189,51 +197,50 @@ found."
|
||||
(official-gnu-packages)))
|
||||
|
||||
(define gnu-package?
|
||||
(let ((official-gnu-packages (memoize official-gnu-packages)))
|
||||
(mlambdaq (package)
|
||||
"Return true if PACKAGE is a GNU package. This procedure may access the
|
||||
(mlambdaq (package)
|
||||
"Return true if PACKAGE is a GNU package. This procedure may access the
|
||||
network to check in GNU's database."
|
||||
(define (mirror-type url)
|
||||
(let ((uri (string->uri url)))
|
||||
(and (eq? (uri-scheme uri) 'mirror)
|
||||
(cond
|
||||
((member (uri-host uri)
|
||||
'("gnu" "gnupg" "gcc" "gnome"))
|
||||
;; Definitely GNU.
|
||||
'gnu)
|
||||
((equal? (uri-host uri) "cran")
|
||||
;; Possibly GNU: mirror://cran could be either GNU R itself
|
||||
;; or a non-GNU package.
|
||||
#f)
|
||||
(else
|
||||
;; Definitely non-GNU.
|
||||
'non-gnu)))))
|
||||
(define (mirror-type url)
|
||||
(let ((uri (string->uri url)))
|
||||
(and (eq? (uri-scheme uri) 'mirror)
|
||||
(cond
|
||||
((member (uri-host uri)
|
||||
'("gnu" "gnupg" "gcc" "gnome"))
|
||||
;; Definitely GNU.
|
||||
'gnu)
|
||||
((equal? (uri-host uri) "cran")
|
||||
;; Possibly GNU: mirror://cran could be either GNU R itself
|
||||
;; or a non-GNU package.
|
||||
#f)
|
||||
(else
|
||||
;; Definitely non-GNU.
|
||||
'non-gnu)))))
|
||||
|
||||
(define (gnu-home-page? package)
|
||||
(letrec-syntax ((>> (syntax-rules ()
|
||||
((_ value proc)
|
||||
(and=> value proc))
|
||||
((_ value proc rest ...)
|
||||
(and=> value
|
||||
(lambda (next)
|
||||
(>> (proc next) rest ...)))))))
|
||||
(>> package package-home-page
|
||||
string->uri uri-host
|
||||
(lambda (host)
|
||||
(member host '("www.gnu.org" "gnu.org"))))))
|
||||
(define (gnu-home-page? package)
|
||||
(letrec-syntax ((>> (syntax-rules ()
|
||||
((_ value proc)
|
||||
(and=> value proc))
|
||||
((_ value proc rest ...)
|
||||
(and=> value
|
||||
(lambda (next)
|
||||
(>> (proc next) rest ...)))))))
|
||||
(>> package package-home-page
|
||||
string->uri uri-host
|
||||
(lambda (host)
|
||||
(member host '("www.gnu.org" "gnu.org"))))))
|
||||
|
||||
(or (gnu-home-page? package)
|
||||
(match (package-source package)
|
||||
((? origin? origin)
|
||||
(let ((url (origin-uri origin))
|
||||
(name (package-upstream-name package)))
|
||||
(case (and (string? url) (mirror-type url))
|
||||
((gnu) #t)
|
||||
((non-gnu) #f)
|
||||
(else
|
||||
(and (member name (map gnu-package-name (official-gnu-packages)))
|
||||
#t)))))
|
||||
(_ #f))))))
|
||||
(or (gnu-home-page? package)
|
||||
(match (package-source package)
|
||||
((? origin? origin)
|
||||
(let ((url (origin-uri origin))
|
||||
(name (package-upstream-name package)))
|
||||
(case (and (string? url) (mirror-type url))
|
||||
((gnu) #t)
|
||||
((non-gnu) #f)
|
||||
(else
|
||||
(and (member name (map gnu-package-name (official-gnu-packages*)))
|
||||
#t)))))
|
||||
(_ #f)))))
|
||||
|
||||
|
||||
;;;
|
||||
|
||||
+11
-8
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
|
||||
;;; Copyright © 2015-2018, 2020-2021, 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015-2018, 2020-2021, 2023, 2026 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
|
||||
;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
|
||||
@@ -183,18 +183,21 @@ REPO."
|
||||
(define (elpa-version->string elpa-version repo name)
|
||||
"Convert the package version as used in Emacs package files into a string."
|
||||
(if (pair? elpa-version)
|
||||
(if (every positive? elpa-version)
|
||||
(if (every (cut >= <> 0) elpa-version)
|
||||
(let-values (((ms rest) (match elpa-version
|
||||
((ms . rest)
|
||||
(values ms rest)))))
|
||||
(fold (lambda (n s) (string-append s "." (number->string n)))
|
||||
(number->string ms) rest))
|
||||
(begin
|
||||
(info (G_ "Package version for ~s contains non numeric part.~%") name)
|
||||
(if (eq? 'gnu-devel repo)
|
||||
(version-from-elpa-devel-feed name)
|
||||
#f)))
|
||||
#f))
|
||||
(if (eq? 'gnu-devel repo)
|
||||
(version-from-elpa-devel-feed name)
|
||||
(raise
|
||||
(formatted-message
|
||||
(G_ "invalid ELPA package version ~s for '~a'")
|
||||
elpa-version name))))
|
||||
(raise (formatted-message
|
||||
(G_ "invalid ELPA package version ~s for '~a' in repository '~a'")
|
||||
elpa-version repo name))))
|
||||
|
||||
(define (package-home-page alist)
|
||||
"Extract the package home-page from ALIST."
|
||||
|
||||
@@ -1237,13 +1237,6 @@ upstream status")
|
||||
'()
|
||||
str)))
|
||||
|
||||
(define official-gnu-packages*
|
||||
(mlambda ()
|
||||
"A memoizing version of 'official-gnu-packages' that returns the empty
|
||||
list when something goes wrong, such as a networking issue."
|
||||
(let ((gnus (false-if-exception (official-gnu-packages))))
|
||||
(or gnus '()))))
|
||||
|
||||
(define (check-gnu-synopsis+description package)
|
||||
"Make sure that, if PACKAGE is a GNU package, it uses the synopsis and
|
||||
descriptions maintained upstream."
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:autoload (system syntax) (syntax-local-binding)
|
||||
#:export (define-record-type*
|
||||
this-record
|
||||
|
||||
@@ -206,6 +207,23 @@ of TYPE matches the expansion-time ABI."
|
||||
index
|
||||
(loop rest (+ 1 index))))))))
|
||||
|
||||
(define (check-shadowing identifier)
|
||||
;; Warn if IDENTIFIER shadows a local binding.
|
||||
;; Note: not using (guix diagnostics) to remain independent of
|
||||
;; other Guix modules.
|
||||
(when (eq? 'lexical (syntax-local-binding identifier))
|
||||
(format (current-warning-port)
|
||||
"~a: inherited field binding '~a' of \
|
||||
record type '~a' shadows local variable~%"
|
||||
(match (syntax-source identifier)
|
||||
(#f "<unknown-location>")
|
||||
(lst (format #f "~a:~a:~a"
|
||||
(assq-ref lst 'filename)
|
||||
(and=> (assq-ref lst 'line) 1+)
|
||||
(assq-ref lst 'column))))
|
||||
(syntax->datum identifier)
|
||||
(syntax->datum #'type))))
|
||||
|
||||
(define* (wrap-field-value f value #:optional parent)
|
||||
;; Wrap VALUE, the value of field F, such that its sanitizer is
|
||||
;; called and its properties (thunked, delayed) honored. When
|
||||
@@ -222,6 +240,7 @@ of TYPE matches the expansion-time ABI."
|
||||
#`((struct-ref #,parent
|
||||
#,(field-index f))
|
||||
#,this-identifier)))
|
||||
(check-shadowing f)
|
||||
#`(lambda (x)
|
||||
(syntax-parameterize ((#,this-identifier
|
||||
(lambda (s)
|
||||
|
||||
+2
-1
@@ -808,7 +808,8 @@ evaluating the tests and bodies of CLAUSES."
|
||||
target)))
|
||||
((gexp-input-error? c)
|
||||
(let ((input (gexp-error-invalid-input c)))
|
||||
(leave (G_ "~s: invalid G-expression input~%")
|
||||
(leave (and (error-location? c) (error-location c))
|
||||
(G_ "~s: invalid G-expression input~%")
|
||||
(gexp-error-invalid-input c))))
|
||||
((profile-not-found-error? c)
|
||||
(leave (G_ "profile '~a' does not exist~%")
|
||||
|
||||
@@ -2805,7 +2805,10 @@ void DerivationGoal::startBuilder()
|
||||
}
|
||||
for (auto & file : files) {
|
||||
if (pathExists(file)) {
|
||||
ctx.filesInChroot[file] = file;
|
||||
/* On Guix System, /etc/services is a symlink; likewise,
|
||||
on systemd-based system, /etc/resolv.conf is a symlink.
|
||||
Dereference them. */
|
||||
ctx.filesInChroot[file] = canonPath(file, true);
|
||||
ctx.readOnlyFilesInChroot.insert(file);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -584,8 +584,11 @@
|
||||
(set! (@ (guile) set-port-encoding!) (const #t))
|
||||
|
||||
(let-values (((response body)
|
||||
;; Note: www.gnu.org returns 403 when
|
||||
;; 'User-Agent' is missing.
|
||||
(http-get "http://www.gnu.org/licenses/gpl-3.0.txt"
|
||||
#:decode-body? #f)))
|
||||
#:decode-body? #f
|
||||
#:headers '((user-agent . "GNU Guile")))))
|
||||
(call-with-output-file %output
|
||||
(lambda (port)
|
||||
(put-bytevector port body)))))
|
||||
|
||||
+16
-1
@@ -33,7 +33,10 @@
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bootstrap)
|
||||
#:use-module ((guix diagnostics) #:select (guix-warning-port))
|
||||
#:use-module ((guix diagnostics) #:select (error-location
|
||||
error-location?
|
||||
guix-warning-port
|
||||
source-properties->location))
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-64)
|
||||
@@ -1307,6 +1310,18 @@ importing.* \\(guix config\\) from the host"
|
||||
(run-with-store %store
|
||||
(lower-gexp #~(#\+)))))
|
||||
|
||||
(let* ((g #~#$*unspecified*)
|
||||
(loc (current-source-location)) ;keep this alignment!
|
||||
(g-loc (source-properties->location
|
||||
`((line . ,(- (assq-ref loc 'line) 1))
|
||||
,@(alist-delete 'line loc)))))
|
||||
(test-equal "lower-gexp, invalid input location"
|
||||
g-loc
|
||||
(guard (c ((and (gexp-input-error? c) (error-location? c))
|
||||
(error-location c)))
|
||||
(run-with-store %store
|
||||
(lower-gexp g)))))
|
||||
|
||||
(test-assertm "gexp->derivation #:references-graphs"
|
||||
(mlet* %store-monad
|
||||
((one (text-file "one" (random-text)))
|
||||
|
||||
@@ -302,6 +302,26 @@
|
||||
=>
|
||||
(,(foo-bar child) ,(foo-baz child))))))
|
||||
|
||||
(test-assert "define-record-type* & inherited value shadowing"
|
||||
(let ((exp '(begin
|
||||
(define-record-type* <foo> foo make-foo
|
||||
foo?
|
||||
(bar foo-bar)
|
||||
(baz foo-baz (thunked)))
|
||||
|
||||
(let ((x (foo (bar 1) (baz 2)))
|
||||
(baz 123))
|
||||
;; Below, the 'baz' binding for the inherited field value
|
||||
;; shadows the 'baz' above, which should trigger a warning.
|
||||
(foo (inherit x)
|
||||
(baz (* baz 2)))))))
|
||||
(string-contains
|
||||
(call-with-output-string
|
||||
(lambda (port)
|
||||
(parameterize ((current-warning-port port))
|
||||
(eval exp (test-module)))))
|
||||
"shadows local variable")))
|
||||
|
||||
(test-assert "define-record-type* & delayed"
|
||||
(begin
|
||||
(define-record-type* <foo> foo make-foo
|
||||
|
||||
Reference in New Issue
Block a user