me
/
guix
Archived
1
0
Fork 0

Merge branch 'master' into core-updates-frozen

master
Ludovic Courtès 2021-12-13 11:49:15 +01:00
commit 1052ae5f03
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
47 changed files with 2428 additions and 745 deletions

View File

@ -449,6 +449,7 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
("rarr" "→")
("hellip" "…")
("rsquo" "")
("nbsp" " ")
(e (pk 'unknown-entity e) (primitive-exit 2))))
(define (concatenate-snippets pieces)

View File

@ -346,7 +346,8 @@ Services
* Base Services:: Essential system services.
* Scheduled Job Execution:: The mcron service.
* Log Rotation:: The rottlog service.
* Networking Services:: Network setup, SSH daemon, etc.
* Networking Setup:: Setting up network interfaces.
* Networking Services:: Firewall, SSH daemon, etc.
* Unattended Upgrades:: Automated system upgrades.
* X Window:: Graphical display.
* Printing Services:: Local and remote printer support.
@ -15816,7 +15817,8 @@ declaration.
* Base Services:: Essential system services.
* Scheduled Job Execution:: The mcron service.
* Log Rotation:: The rottlog service.
* Networking Services:: Network setup, SSH daemon, etc.
* Networking Setup:: Setting up network interfaces.
* Networking Services:: Firewall, SSH daemon, etc.
* Unattended Upgrades:: Automated system upgrades.
* X Window:: Graphical display.
* Printing Services:: Local and remote printer support.
@ -17038,11 +17040,202 @@ The list of syslog-controlled files to be rotated. By default it is:
"/var/log/maillog")}.
@end defvr
@node Networking Services
@subsection Networking Services
@node Networking Setup
@subsection Networking Setup
The @code{(gnu services networking)} module provides services to configure
the network interface.
The @code{(gnu services networking)} module provides services to
configure network interfaces and set up networking on your machine.
Those services provide different ways for you to set up your machine: by
declaring a static network configuration, by running a Dynamic Host
Configuration Protocol (DHCP) client, or by running daemons such as
NetworkManager and Connman that automate the whole process,
automatically adapt to connectivity changes, and provide a high-level
user interface.
On a laptop, NetworkManager and Connman are by far the most convenient
options, which is why the default desktop services include
NetworkManager (@pxref{Desktop Services, @code{%desktop-services}}).
For a server, or for a virtual machine or a container, static network
configuration or a simple DHCP client are often more appropriate.
This section describes the various network setup services available,
starting with static network configuration.
@defvr {Scheme Variable} static-networking-service-type
This is the type for statically-configured network interfaces. Its
value must be a list of @code{static-networking} records. Each of them
declares a set of @dfn{addresses}, @dfn{routes}, and @dfn{links}, as
show below.
@cindex network interface controller (NIC)
@cindex NIC, networking interface controller
Here is the simplest configuration, with only one network interface
controller (NIC) and only IPv4 connectivity:
@example
;; Static networking for one NIC, IPv4-only.
(service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device "eno1")
(value "10.0.2.15/24"))))
(routes
(list (network-route
(destination "default")
(gateway "10.0.2.2"))))
(name-servers '("10.0.2.3")))))
@end example
The snippet above can be added to the @code{services} field of your
operating system configuration (@pxref{Using the Configuration System}).
It will configure your machine to have 10.0.2.15 as its IP address, with
a 24-bit netmask for the local network---meaning that any 10.0.2.@var{x}
address is on the local area network (LAN). Traffic to addresses
outside the local network is routed @i{via} 10.0.2.2. Host names are
resolved by sending domain name system (DNS) queries to 10.0.2.3.
@end defvr
@deftp {Data Type} static-networking
This is the data type representing a static network configuration.
As an example, here is how you would declare the configuration of a
machine with a single network interface controller (NIC) available as
@code{eno1}, and with one IPv4 and one IPv6 address:
@lisp
;; Network configuration for one NIC, IPv4 + IPv6.
(static-networking
(addresses (list (network-address
(device "eno1")
(value "10.0.2.15/24"))
(network-address
(device "eno1")
(value "2001:123:4567:101::1/64"))))
(routes (list (network-route
(destination "default")
(gateway "10.0.2.2"))
(network-route
(destination "default")
(gateway "2020:321:4567:42::1"))))
(name-servers '("10.0.2.3")))
@end lisp
If you are familiar with the @command{ip} command of the
@uref{https://wiki.linuxfoundation.org/networking/iproute2,
@code{iproute2} package} found on Linux-based systems, the declaration
above is equivalent to typing:
@example
ip address add 10.0.2.15/24 dev eno1
ip address add 2001:123:4567:101::1/64 dev eno1
ip route add default via inet 10.0.2.2
ip route add default via inet6 2020:321:4567:42::1
@end example
Run @command{man 8 ip} for more info. Venerable GNU/Linux users will
certainly know how to do it with @command{ifconfig} and @command{route},
but we'll spare you that.
The available fields of this data type are as follows:
@table @asis
@item @code{addresses}
@itemx @code{links} (default: @code{'()})
@itemx @code{routes} (default: @code{'()})
The list of @code{network-address}, @code{network-link}, and
@code{network-route} records for this network (see below).
@item @code{name-servers} (default: @code{'()})
The list of IP addresses (strings) of domain name servers. These IP
addresses go to @file{/etc/resolv.conf}.
@item @code{provision} (default: @code{'(networking)})
If true, this should be a list of symbols for the Shepherd service
corresponding to this network configuration.
@item @code{requirement} (default @code{'()})
The list of Shepherd services depended on.
@end table
@end deftp
@deftp {Data Type} network-address
This is the data type representing the IP address of a network
interface.
@table @code
@item device
The name of the network interface for this address---e.g.,
@code{"eno1"}.
@item value
The actual IP address and network mask, in
@uref{https://en.wikipedia.org/wiki/CIDR#CIDR_notation, @acronym{CIDR,
Classless Inter-Domain Routing} notation}, as a string.
For example, @code{"10.0.2.15/24"} denotes IPv4 address 10.0.2.15 on a
24-bit sub-network---all 10.0.2.@var{x} addresses are on the same local
network.
@item ipv6?
Whether @code{value} denotes an IPv6 address. By default this is
automatically determined.
@end table
@end deftp
@deftp {Data Type} network-route
This is the data type representing a network route.
@table @asis
@item @code{destination}
The route destination (a string), either an IP address or
@code{"default"} to denote the default route.
@item @code{source} (default: @code{#f})
The route source.
@item @code{device} (default: @code{#f})
The device used for this route---e.g., @code{"eno2"}.
@item @code{ipv6?} (default: auto)
Whether this is an IPv6 route. By default this is automatically
determined based on @code{destination} or @code{gateway}.
@item @code{gateway} (default: @code{#f})
IP address (a string) through which traffic is routed.
@end table
@end deftp
@deftp {Data Type} network-link
Data type for a network link (@pxref{Link,,, guile-netlink,
Guile-Netlink Manual}).
@table @code
@item name
The name of the link---e.g., @code{"v0p0"}.
@item type
A symbol denoting the type of the link---e.g., @code{'veth}.
@item arguments
List of arguments for this type of link.
@end table
@end deftp
@cindex loopback device
@defvr {Scheme Variable} %loopback-static-networking
This is the @code{static-networking} record representing the ``loopback
device'', @code{lo}, for IP addresses 127.0.0.1 and ::1, and providing
the @code{loopback} Shepherd service.
@end defvr
@cindex networking, with QEMU
@cindex QEMU, networking
@defvr {Scheme Variable} %qemu-static-networking
This is the @code{static-networking} record representing network setup
when using QEMU's user-mode network stack on @code{eth0} (@pxref{Using
the user mode network stack,,, QEMU, QEMU Documentation}).
@end defvr
@cindex DHCP, networking service
@defvr {Scheme Variable} dhcp-client-service-type
@ -17051,154 +17244,6 @@ Protocol (DHCP) client, on all the non-loopback network interfaces. Its value
is the DHCP client package to use, @code{isc-dhcp} by default.
@end defvr
@deffn {Scheme Procedure} dhcpd-service-type
This type defines a service that runs a DHCP daemon. To create a
service of this type, you must supply a @code{<dhcpd-configuration>}.
For example:
@lisp
(service dhcpd-service-type
(dhcpd-configuration
(config-file (local-file "my-dhcpd.conf"))
(interfaces '("enp0s25"))))
@end lisp
@end deffn
@deftp {Data Type} dhcpd-configuration
@table @asis
@item @code{package} (default: @code{isc-dhcp})
The package that provides the DHCP daemon. This package is expected to
provide the daemon at @file{sbin/dhcpd} relative to its output
directory. The default package is the
@uref{https://www.isc.org/products/DHCP, ISC's DHCP server}.
@item @code{config-file} (default: @code{#f})
The configuration file to use. This is required. It will be passed to
@code{dhcpd} via its @code{-cf} option. This may be any ``file-like''
object (@pxref{G-Expressions, file-like objects}). See @code{man
dhcpd.conf} for details on the configuration file syntax.
@item @code{version} (default: @code{"4"})
The DHCP version to use. The ISC DHCP server supports the values ``4'',
``6'', and ``4o6''. These correspond to the @code{dhcpd} program
options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for
details.
@item @code{run-directory} (default: @code{"/run/dhcpd"})
The run directory to use. At service activation time, this directory
will be created if it does not exist.
@item @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"})
The PID file to use. This corresponds to the @code{-pf} option of
@code{dhcpd}. See @code{man dhcpd} for details.
@item @code{interfaces} (default: @code{'()})
The names of the network interfaces on which dhcpd should listen for
broadcasts. If this list is not empty, then its elements (which must be
strings) will be appended to the @code{dhcpd} invocation when starting
the daemon. It may not be necessary to explicitly specify any
interfaces here; see @code{man dhcpd} for details.
@end table
@end deftp
@defvr {Scheme Variable} static-networking-service-type
This is the type for statically-configured network interfaces.
@c TODO Document <static-networking> data structures.
@end defvr
@deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @
[#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @
[#:requirement @code{'(udev)}]
Return a service that starts @var{interface} with address @var{ip}. If
@var{netmask} is true, use it as the network mask. If @var{gateway} is true,
it must be a string specifying the default network gateway. @var{requirement}
can be used to declare a dependency on another service before configuring the
interface.
This procedure can be called several times, one for each network
interface of interest. Behind the scenes what it does is extend
@code{static-networking-service-type} with additional network interfaces
to handle.
For example:
@lisp
(static-networking-service "eno1" "192.168.1.82"
#:gateway "192.168.1.2"
#:name-servers '("192.168.1.2"))
@end lisp
@end deffn
@cindex wicd
@cindex wireless
@cindex WiFi
@cindex network management
@deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}]
Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network
management daemon that aims to simplify wired and wireless networking.
This service adds the @var{wicd} package to the global profile, providing
several commands to interact with the daemon and configure networking:
@command{wicd-client}, a graphical user interface, and the @command{wicd-cli}
and @command{wicd-curses} user interfaces.
@end deffn
@cindex ModemManager
@defvr {Scheme Variable} modem-manager-service-type
This is the service type for the
@uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager}
service. The value for this service type is a
@code{modem-manager-configuration} record.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} modem-manager-configuration
Data type representing the configuration of ModemManager.
@table @asis
@item @code{modem-manager} (default: @code{modem-manager})
The ModemManager package to use.
@end table
@end deftp
@cindex USB_ModeSwitch
@cindex Modeswitching
@defvr {Scheme Variable} usb-modeswitch-service-type
This is the service type for the
@uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch}
service. The value for this service type is
a @code{usb-modeswitch-configuration} record.
When plugged in, some USB modems (and other USB devices) initially present
themselves as a read-only storage medium and not as a modem. They need to be
@dfn{modeswitched} before they are usable. The USB_ModeSwitch service type
installs udev rules to automatically modeswitch these devices when they are
plugged in.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} usb-modeswitch-configuration
Data type representing the configuration of USB_ModeSwitch.
@table @asis
@item @code{usb-modeswitch} (default: @code{usb-modeswitch})
The USB_ModeSwitch package providing the binaries for modeswitching.
@item @code{usb-modeswitch-data} (default: @code{usb-modeswitch-data})
The package providing the device data and udev rules file used by
USB_ModeSwitch.
@item @code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")})
Which config file to use for the USB_ModeSwitch dispatcher. By default the
config file shipped with USB_ModeSwitch is used which disables logging to
@file{/var/log} among other default settings. If set to @code{#f}, no config
file is used.
@end table
@end deftp
@cindex NetworkManager
@defvr {Scheme Variable} network-manager-service-type
@ -17335,6 +17380,139 @@ List of additional command-line arguments to pass to the daemon.
@end table
@end deftp
@cindex wicd
@cindex wireless
@cindex WiFi
@cindex network management
@deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}]
Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network
management daemon that aims to simplify wired and wireless networking.
This service adds the @var{wicd} package to the global profile, providing
several commands to interact with the daemon and configure networking:
@command{wicd-client}, a graphical user interface, and the @command{wicd-cli}
and @command{wicd-curses} user interfaces.
@end deffn
@cindex ModemManager
Some networking devices such as modems require special care, and this is
what the services below focus on.
@defvr {Scheme Variable} modem-manager-service-type
This is the service type for the
@uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager}
service. The value for this service type is a
@code{modem-manager-configuration} record.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} modem-manager-configuration
Data type representing the configuration of ModemManager.
@table @asis
@item @code{modem-manager} (default: @code{modem-manager})
The ModemManager package to use.
@end table
@end deftp
@cindex USB_ModeSwitch
@cindex Modeswitching
@defvr {Scheme Variable} usb-modeswitch-service-type
This is the service type for the
@uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch}
service. The value for this service type is
a @code{usb-modeswitch-configuration} record.
When plugged in, some USB modems (and other USB devices) initially present
themselves as a read-only storage medium and not as a modem. They need to be
@dfn{modeswitched} before they are usable. The USB_ModeSwitch service type
installs udev rules to automatically modeswitch these devices when they are
plugged in.
This service is part of @code{%desktop-services} (@pxref{Desktop
Services}).
@end defvr
@deftp {Data Type} usb-modeswitch-configuration
Data type representing the configuration of USB_ModeSwitch.
@table @asis
@item @code{usb-modeswitch} (default: @code{usb-modeswitch})
The USB_ModeSwitch package providing the binaries for modeswitching.
@item @code{usb-modeswitch-data} (default: @code{usb-modeswitch-data})
The package providing the device data and udev rules file used by
USB_ModeSwitch.
@item @code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")})
Which config file to use for the USB_ModeSwitch dispatcher. By default the
config file shipped with USB_ModeSwitch is used which disables logging to
@file{/var/log} among other default settings. If set to @code{#f}, no config
file is used.
@end table
@end deftp
@node Networking Services
@subsection Networking Services
The @code{(gnu services networking)} module discussed in the previous
section provides services for more advanced setups: providing a DHCP
service for others to use, filtering packets with iptables or nftables,
running a WiFi access point with @command{hostapd}, running the
@command{inetd} ``superdaemon'', and more. This section describes
those.
@deffn {Scheme Procedure} dhcpd-service-type
This type defines a service that runs a DHCP daemon. To create a
service of this type, you must supply a @code{<dhcpd-configuration>}.
For example:
@lisp
(service dhcpd-service-type
(dhcpd-configuration
(config-file (local-file "my-dhcpd.conf"))
(interfaces '("enp0s25"))))
@end lisp
@end deffn
@deftp {Data Type} dhcpd-configuration
@table @asis
@item @code{package} (default: @code{isc-dhcp})
The package that provides the DHCP daemon. This package is expected to
provide the daemon at @file{sbin/dhcpd} relative to its output
directory. The default package is the
@uref{https://www.isc.org/products/DHCP, ISC's DHCP server}.
@item @code{config-file} (default: @code{#f})
The configuration file to use. This is required. It will be passed to
@code{dhcpd} via its @code{-cf} option. This may be any ``file-like''
object (@pxref{G-Expressions, file-like objects}). See @code{man
dhcpd.conf} for details on the configuration file syntax.
@item @code{version} (default: @code{"4"})
The DHCP version to use. The ISC DHCP server supports the values ``4'',
``6'', and ``4o6''. These correspond to the @code{dhcpd} program
options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for
details.
@item @code{run-directory} (default: @code{"/run/dhcpd"})
The run directory to use. At service activation time, this directory
will be created if it does not exist.
@item @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"})
The PID file to use. This corresponds to the @code{-pf} option of
@code{dhcpd}. See @code{man dhcpd} for details.
@item @code{interfaces} (default: @code{'()})
The names of the network interfaces on which dhcpd should listen for
broadcasts. If this list is not empty, then its elements (which must be
strings) will be appended to the @code{dhcpd} invocation when starting
the daemon. It may not be necessary to explicitly specify any
interfaces here; see @code{man dhcpd} for details.
@end table
@end deftp
@cindex hostapd service, for Wi-Fi access points
@cindex Wi-Fi access points, hostapd service
@defvr {Scheme Variable} hostapd-service-type
@ -17397,6 +17575,7 @@ network that can be seen on @code{wlan0}, by default.
The service's value is a @code{hostapd-configuration} record.
@end defvr
@cindex iptables
@defvr {Scheme Variable} iptables-service-type
This is the service type to set up an iptables configuration. iptables is a
@ -20530,7 +20709,7 @@ a system which relies on @code{%desktop-services}, you may use
(operating-system
@dots{}
(services %my-desktop-services)
(services %my-desktop-services))
@end lisp
@end defvr
@ -30642,11 +30821,18 @@ cluster node that supports multiple storage backends, and installs the
"ganeti-instance-guix" "ganeti-instance-debootstrap"))
%base-packages))
(services
(append (list (static-networking-service "eth0" "192.168.1.201"
#:netmask "255.255.255.0"
#:gateway "192.168.1.254"
#:name-servers '("192.168.1.252"
"192.168.1.253"))
(append (list (service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device "eth0")
(value "192.168.1.201/24"))))
(routes
(list (network-route
(destination "default")
(gateway "192.168.1.254"))))
(name-servers '("192.168.1.252"
"192.168.1.253")))))
;; Ganeti uses SSH to communicate between nodes.
(service openssh-service-type

View File

@ -25,6 +25,59 @@
(channel-news
(version 0)
(entry (commit "223f1b1eb3707f1d3ef91200dd616ee6c8b77db0")
(title
(en "Improved static networking support on Guix System")
(fr "Meilleure prise en charge de réseaux statiques sur Guix System"))
(body
(en "Support for declarative static networking setup on Guix System
has been improved. It now allows you to list IPv4 and IPv6 addresses in
routes in a flexible way, similar to what you would do with the @command{ip}
command, but in a declarative fashion, as in this example:
@lisp
;; Static networking for one NIC, IPv4-only.
(service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device \"eno1\")
(value \"10.0.2.15/24\"))))
(routes
(list (network-route
(destination \"default\")
(gateway \"10.0.2.2\"))))
(name-servers '(\"10.0.2.3\")))))
@end lisp
The @code{static-networking-service} procedure remains available but is
deprecated. Run @command{info \"(guix) Networking Setup\"} for more
information.")
(fr "La configuration déclarative et statique du réseau est mieux
prise en charge sur Guix System. Il est maintenant possible d'énumérer des
adresses IPv6 et IPv4 et les chemins avec plus de flexibilité, un peu comme ce
qu'on peut faire avec la commande @command{ip} mais de manière déclarative,
comme dans cet exemple :
@lisp
;; Réseau statique à une seule interface, IPv4 seulement.
(service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device \"eno1\")
(value \"10.0.2.15/24\"))))
(routes
(list (network-route
(destination \"default\")
(gateway \"10.0.2.2\"))))
(name-servers '(\"10.0.2.3\")))))
@end lisp
La procédure @code{static-networking-service} reste disponible mais elle est
obsolète. Lancer @command{info \"(guix) Networking Setup\"} pour plus
d'informations.")))
(entry (commit "52cb5cf5b852117b5151a67af187d80764849ad3")
(title
(en "Icedove 91: profile folder moved to @file{~/.thunderbird}")

View File

@ -185,13 +185,9 @@ set."
("servers/crash-suspend" ("/hurd/crash" "--suspend"))
("servers/password" ("/hurd/password"))
("servers/socket/1" ("/hurd/pflocal"))
("servers/socket/2" ("/hurd/pfinet"
"--interface" "eth0"
"--address"
"10.0.2.15" ;the default QEMU guest IP
"--netmask" "255.255.255.0"
"--gateway" "10.0.2.2"
"--ipv6" "/servers/socket/26"))
;; /servers/socket/2 and /26 are created by 'static-networking-service'.
;; XXX: Spawn pfinet without arguments on these nodes so that a DHCP
;; client has someone to talk to?
("proc" ("/hurd/procfs" "--stat-mode=444"))))
(define devices

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
@ -111,6 +111,15 @@ wait for at most HANDSHAKE-TIMEOUT seconds for handshake to complete. Return
(close-port sock)
#f))))
(define (delete-file* file)
"Ensure FILE does not exist."
(catch 'system-error
(lambda ()
(delete-file file))
(lambda args
(unless (= ENOENT (system-error-errno args))
(apply throw args)))))
(define (secret-service-receive-secrets port)
"Listen to local PORT and wait for a secret service client to send secrets.
Write them to the file system. Return the list of files installed on success,
@ -170,6 +179,12 @@ and #f otherwise."
(log "installing file '~a' (~a bytes)...~%"
file size)
(mkdir-p (dirname file))
;; It could be that FILE already exists, for instance
;; because it has been created by a service's activation
;; snippet (e.g., SSH host keys). Delete it.
(delete-file* file)
(call-with-output-file file
(lambda (output)
(dump port output size)

View File

@ -1747,6 +1747,7 @@ dist_patch_DATA = \
%D%/packages/patches/rustc-1.39.0-src.patch \
%D%/packages/patches/rust-adblock-ignore-live-tests.patch \
%D%/packages/patches/rust-coresimd-doctest.patch \
%D%/packages/patches/i3status-rust-enable-unstable-features.patch \
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
%D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \
%D%/packages/patches/rust-nettle-disable-vendor.patch \
@ -1754,6 +1755,8 @@ dist_patch_DATA = \
%D%/packages/patches/rust-openssl-sys-no-vendor.patch \
%D%/packages/patches/rust-shell2batch-lint-fix.patch \
%D%/packages/patches/sbc-fix-build-non-x86.patch \
%D%/packages/patches/sbcl-aserve-add-HTML-5-elements.patch \
%D%/packages/patches/sbcl-aserve-fix-rfe12668.patch \
%D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \
%D%/packages/patches/sbcl-clml-fix-types.patch \
%D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \

View File

@ -8,6 +8,7 @@
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1099,6 +1100,68 @@ more.")
license:lgpl2.0+
license:lgpl2.1+))))
(define-public sunclock
(let ((commit "f4106eb0a81f7594726d6b2859efd8fc64cc1225")
(revision "1"))
(package
(name "sunclock")
(version (git-version "3.57" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/nongiach/Sunclock")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "1rczdpmhvfw57b9r793vq8vqlbdhlkgj52fxwrdfl6cwj95a9kv2"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
(list (string-append "DESTDIR=" %output)
;; Fix incorrect argument given to gcc. Error message:
;; "gcc: error: DefaultGcc2AMD64Opt: No such file or directory"
"CDEBUGFLAGS=")
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda _
(chdir "sunclock-3.57")
(substitute* "Imakefile"
(("^MANDIR=/X11R6/man/man1")
"MANDIR=/share/man/man1")
(("^BINDIR=/X11R6/bin")
"BINDIR=/bin")
;; Disable ZLIB support for vmf files because zlib implements
;; `gzgetc` as a macro instead of a function, which results in
;; a compilation error.
((" -DZLIB") "")
((" -lz") "")
(("cd \\$\\(DESTDIR\\)\\$\\(SHAREDIR\\)/earthmaps/vmf ; \
gzip -f \\*.vmf")
""))
;; Generate Makefile.
(invoke "xmkmf"))))
#:tests? #f)) ; No check target.
(inputs
`(("libjpeg-turbo" ,libjpeg-turbo)
("libpng" ,libpng)
("libx11" ,libx11)
("libxpm" ,libxpm)))
(native-inputs
`(("imake" ,imake)))
(home-page "https://github.com/nongiach/Sunclock")
(synopsis
"Map of the Earth that shows which portion is illuminated by the Sun")
(description
"Sunclock displays a map of the Earth and shows which portion is
illuminated by the Sun. It can commute between two states, the \"clock window\"
and the \"map window\". The clock window displays a small map of the Earth and
therefore occupies little space on the screen, while the \"map window\" displays
a large map and offers more advanced functions: local time of cities, Sun and
Moon position, etc.")
(license license:gpl2+))))
(define-public python-jplephem
(package
(name "python-jplephem")

View File

@ -4948,7 +4948,7 @@ as is the case with audio plugins.")
(define-public carla
(package
(name "carla")
(version "2.1.1")
(version "2.4.1")
(source
(origin
(method git-fetch)
@ -4958,8 +4958,7 @@ as is the case with audio plugins.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g"))))
(base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no "check" target

View File

@ -1518,6 +1518,36 @@ data. In addition, provides numerous plotting functions for commonly
used visualizations.")
(license license:artistic2.0)))
(define-public r-dearseq
(package
(name "r-dearseq")
(version "1.6.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "dearseq" version))
(sha256
(base32
"07vr27rv3z86ajd62c0ilvfgz9z35qsiwwi5pv4sygbhnnjwh3rc"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
("r-kernsmooth" ,r-kernsmooth)
("r-matrixstats" ,r-matrixstats)
("r-patchwork" ,r-patchwork)
("r-pbapply" ,r-pbapply)
("r-statmod" ,r-statmod)
("r-survey" ,r-survey)
("r-viridislite" ,r-kernsmooth)))
(home-page "https://github.com/borishejblum/dearseq")
(synopsis "DEA for RNA-seq data through a robust variance component test")
(description
"This is a package for Differential Expression Analysis of RNA-seq data.
It features a variance component score test accounting for data
heteroscedasticity through precision weights. Perform both gene-wise and gene
set analyses, and can deal with repeated or longitudinal data.")
(license license:gpl2)))
(define-public r-decipher
(package
(name "r-decipher")
@ -1638,6 +1668,41 @@ spent loading the full derfinder package when running the F-statistics
calculation in parallel.")
(license license:artistic2.0)))
(define-public r-drimseq
(package
(name "r-drimseq")
(version "1.22.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "DRIMSeq" version))
(sha256
(base32 "0y2jb0hb633id038zmwnfny6h4ai77fdyy02f77vha1z8xg5nl02"))))
(properties `((upstream-name . "DRIMSeq")))
(build-system r-build-system)
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)
("r-biocparallel" ,r-biocparallel)
("r-edger" ,r-edger)
("r-genomicranges" ,r-genomicranges)
("r-ggplot2" ,r-ggplot2)
("r-iranges" ,r-iranges)
("r-limma" ,r-limma)
("r-mass" ,r-mass)
("r-reshape2" ,r-reshape2)
("r-s4vectors" ,r-s4vectors)))
(native-inputs `(("r-knitr" ,r-knitr)))
(home-page "https://bioconductor.org/packages/DRIMSeq")
(synopsis "Differential transcript usage and tuQTL analyses with Dirichlet-multinomial model in RNA-seq")
(description
"The package provides two frameworks. One for the differential
transcript usage analysis between different conditions and one for the tuQTL
analysis. Both are based on modeling the counts of genomic features (i.e.,
transcripts) with the Dirichlet-multinomial distribution. The package also
makes available functions for visualization and exploration of the data and
results.")
(license license:gpl3+)))
(define-public r-bluster
(package
(name "r-bluster")
@ -1721,6 +1786,59 @@ naming and share the same rich and consistent \"Vector API\" as much as
possible.")
(license license:artistic2.0)))
(define-public r-isoformswitchanalyzer
(package
(name "r-isoformswitchanalyzer")
(version "1.16.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "IsoformSwitchAnalyzeR" version))
(sha256
(base32 "14bqf39gw5ab5r9sr3afkig1jbzdvds1bmcvc6bpb45kschx7fwf"))))
(properties `((upstream-name . "IsoformSwitchAnalyzeR")))
(build-system r-build-system)
(propagated-inputs
`(("r-biobase" ,r-biobase)
("r-biocgenerics" ,r-biocgenerics)
("r-biostrings" ,r-biostrings)
("r-bsgenome" ,r-bsgenome)
("r-dbi" ,r-dbi)
("r-dexseq" ,r-dexseq)
("r-dplyr" ,r-dplyr)
("r-drimseq" ,r-drimseq)
("r-edger" ,r-edger)
("r-futile-logger" ,r-futile-logger)
("r-genomeinfodb" ,r-genomeinfodb)
("r-genomicranges" ,r-genomicranges)
("r-ggplot2" ,r-ggplot2)
("r-gridextra" ,r-gridextra)
("r-iranges" ,r-iranges)
("r-limma" ,r-limma)
("r-magrittr" ,r-magrittr)
("r-plyr" ,r-plyr)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcurl" ,r-rcurl)
("r-readr" ,r-readr)
("r-reshape2" ,r-reshape2)
("r-rtracklayer" ,r-rtracklayer)
("r-stringr" ,r-stringr)
("r-tibble" ,r-tibble)
("r-tximeta" ,r-tximeta)
("r-tximport" ,r-tximport)
("r-venndiagram" ,r-venndiagram)
("r-xvector" ,r-xvector)))
(native-inputs
`(("r-knitr" ,r-knitr)))
(home-page "https://bioconductor.org/packages/IsoformSwitchAnalyzeR/")
(synopsis "Analyze alternative splicing in RNA-seq data")
(description
"This is a package for the analysis of alternative splicing and isoform
switches with predicted functional consequences (e.g. gain/loss of protein
domains etc.) from quantification of all types of RNASeq by tools such as
Kallisto, Salmon, StringTie, Cufflinks/Cuffdiff etc.")
(license license:gpl2+)))
;; This is a CRAN package, but it depends on r-biobase and r-limma from Bioconductor.
(define-public r-absfiltergsea
(package
@ -6734,6 +6852,37 @@ required source code files from the official Leidenalg distribution and
several functions from the R igraph package.")
(license license:gpl3+))))
(define-public r-sanssouci
;; sansscouci doesn't have a (versioned) release yet.
;; This is the latest commit as of packaging for Guix.
(let ((commit "5fe20a9aaf4ac637fa83d9cc73ff1c22de97ca6f")
(revision "1"))
(package
(name "r-sanssouci")
(version (git-version "0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pneuvial/sanssouci.git")
(commit commit)))
(sha256
(base32
"13ycdd790qw64qy2zdvcrpj3fc8as628rsly32438d3rifnlc5sk"))))
(build-system r-build-system)
(propagated-inputs
`(("r-generics" ,r-generics)
("r-matrix" ,r-matrix)
("r-matrixstats" ,r-matrixstats)
("r-rcpp" ,r-rcpp)
("r-rcpparmadillo" ,r-rcpparmadillo)))
(home-page "https://pneuvial.github.io/sanssouci")
(synopsis "Post Hoc multiple testing inference")
(description
"The goal of sansSouci is to perform post hoc inference: in a multiple
testing context, sansSouci provides statistical guarantees on possibly
user-defined and/or data-driven sets of hypotheses.")
(license license:gpl3))))
(define-public r-monocle3
(package
(name "r-monocle3")

View File

@ -39,7 +39,7 @@
(define-public dunst
(package
(name "dunst")
(version "1.7.1")
(version "1.7.3")
(source (origin
(method git-fetch)
(uri (git-reference
@ -48,7 +48,7 @@
(file-name (git-file-name name version))
(sha256
(base32
"0v15fhwzcg7zfn092sry0f4qb6dccz9bb312y9dadg745wf3n9qw"))))
"1ra0ii805w3rrs0qqbjxzl6i79ksz42lnvbglw18h4igkza21kzj"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no check target

View File

@ -13863,6 +13863,39 @@ commands are bound to keys reachable with the left hand and movement keys are
reached with the right hand.")
(license license:gpl3+)))
(define-public emacs-cc-mode
(package
(name "emacs-cc-mode")
(version "5.35")
(source
(origin
(method hg-fetch)
(uri (hg-reference
(url "http://hg.code.sf.net/p/cc-mode/cc-mode")
(changeset
(string-append "Release_"
(string-replace-substring version "." "_")))))
(file-name (hg-file-name name version))
(sha256
(base32 "03cvl61baccx57zd62nz2wy4hvij5hl2syg7byaxgrs4c7grr414"))))
(build-system emacs-build-system)
(arguments
'(#:tests? #t
#:test-command '("make" "test")
#:phases
(modify-phases %standard-phases
(add-before 'install 'make-info
(lambda _
(invoke "make" "info"))))))
(native-inputs
`(("texinfo" ,texinfo)))
(home-page "http://cc-mode.sourceforge.net/")
(synopsis "Framework for creating major modes for C-style languages")
(description
"CC Mode is an Emacs and XEmacs mode for editing C and other languages with
similar syntax; currently C++, Objective-C, Java, CORBA's IDL, Pike, and AWK.")
(license license:gpl3+)))
(define-public emacs-csharp-mode
(package
(name "emacs-csharp-mode")
@ -21400,21 +21433,18 @@ package recipes.")
(license license:gpl3+)))
(define-public emacs-dpd
;; XXX: Upstream does not use tag yet. Version is extracted from "dpd.el".
(let ((commit "f53f251a58859f375617ce4f257fecc83c8ca5da")
(revision "0"))
(package
(name "emacs-dpd")
(version (git-version "0.1.0" revision commit))
(version "0.2.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/lilyp/emacs-dpd")
(commit commit)))
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1nislvaxjb53x2ah330szcca4d595npx6zxrrwa5xximj6365wk0"))))
(base32 "0wrqmpfcqp87dr5blpskf9kvm9slvffldqfxx77n15gcw516zzc8"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-packed" ,emacs-packed)))
@ -21423,7 +21453,7 @@ package recipes.")
(description
"This package provides tools for generating package-desc structures and
feeding them to package.el library.")
(license license:gpl3+))))
(license license:gpl3+)))
(define-public emacs-picpocket
(let ((version "41")
@ -27135,17 +27165,19 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
(license license:gpl3+)))
(define-public emacs-telega-server
(let ((commit "b4a5e206bd259f3d7f7633a725b2990704d6a1e8")
(revision "1"))
(package
(name "emacs-telega-server")
(version "0.7.031")
(version (git-version "0.7.15" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/zevlg/telega.el")
(commit (string-append "v" version))))
(commit commit)))
(sha256
(base32 "05j82796s4k3yr0igl6hir3p8qj0cw66vvhbpbcy28d6q9v9vjjz"))
(base32 "0gr4nmpk175hxmj357bpzaqywbjc6dmmvfxnyzkh884vyzbwdxlc"))
(file-name (git-file-name "emacs-telega" version))
(patches
(search-patches "emacs-telega-path-placeholder.patch"
@ -27159,7 +27191,7 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'enter-subdirectory
(lambda _ (chdir "server") #t))
(lambda _ (chdir "server")))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@ -27171,7 +27203,7 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
(add-after 'install 'check
(assoc-ref %standard-phases 'check))
(add-before 'install-license-files 'leave-subdirectory
(lambda _ (chdir "..") #t)))
(lambda _ (chdir ".."))))
#:test-target "test"))
(inputs
`(("tdlib" ,tdlib)
@ -27183,7 +27215,7 @@ other @code{helm-type-file} sources such as @code{helm-locate}.")
(synopsis "Server process of Telega")
(description "Telega-server is helper program to interact with Telegram
service, and connect it with Emacs via inter-process communication.")
(license license:gpl3+)))
(license license:gpl3+))))
(define-public emacs-telega
(package
@ -27217,7 +27249,7 @@ service, and connect it with Emacs via inter-process communication.")
"\"" ffmpeg-bin "\")"))))))
(add-after 'unpack 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "telega-server.el"
(substitute* "telega-customize.el"
(("@TELEGA_SERVER_BIN@")
(search-input-file inputs "/bin/telega-server")))
(substitute* "telega-util.el"
@ -29737,7 +29769,7 @@ released, and track their progress in watching a series.")
(define-public emacs-webpaste
(package
(name "emacs-webpaste")
(version "3.2.1")
(version "3.2.2")
(source
(origin
(method git-fetch)
@ -29746,8 +29778,7 @@ released, and track their progress in watching a series.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1d481pdnh7cnbyka7wn59czlci63zwfqms8n515svg92qm573ckd"))))
(base32 "07hj9nr7x6c9w2dnvc58cfbprgp9cqzdxflp5qlpglzdw0bi9s3c"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t

View File

@ -92,7 +92,9 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
@ -106,6 +108,7 @@
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
#:use-module (gnu packages time)
@ -1839,6 +1842,37 @@ local, single-user UI, or as a multi-user UI for viewing, adding, and
editing on the Web.")
(license license:gpl3)))
(define-public optionmatrix
(package
(name "optionmatrix")
(version "1.4.3")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/optionmatrix/optionmatrix-"
version ".tar.xz"))
(sha256
(base32 "1zd0pfiphnijh1l94swb3mjrpmjsn37z11mklamd7zw6h2d4zh4d"))))
(build-system gnu-build-system)
(inputs
`(("gsl" ,gsl)
("gtk3" ,gtk+)
("ncurses" ,ncurses)))
(native-inputs
`(("pkg-config" ,pkg-config)
("texinfo" ,texinfo)
("texlive" ,(texlive-union (list texlive-epsf
texlive-tex-texinfo)))))
(home-page "https://anthonybradford.github.io/optionmatrix/")
(synopsis "Financial derivative calculator")
(description
"The OptionMatrix programs are financial derivative calculators. These
calculators are real-time multi-model option chain pricers with analytics and
interactive controls. This package provides a GTK+ graphical user interface
(@code{optionmatrix}) and a curses interface (@code{optionmatrix_console}).")
(license license:gpl3+)))
(define-public python-ta-lib
(package
(name "python-ta-lib")

View File

@ -1335,11 +1335,11 @@ standards of the IceCat project.")
(cpe-version . ,(first (string-split version #\-)))))))
;; Update this together with icecat!
(define %icedove-build-id "20211119000000") ;must be of the form YYYYMMDDhhmmss
(define %icedove-build-id "20211207000000") ;must be of the form YYYYMMDDhhmmss
(define-public icedove
(package
(name "icedove")
(version "91.3.2")
(version "91.4.0")
(source icecat-source)
(properties
`((cpe-name . "thunderbird_esr")))
@ -1620,7 +1620,7 @@ standards of the IceCat project.")
;; in the Thunderbird release tarball. We don't use the release
;; tarball because it duplicates the Icecat sources and only adds the
;; "comm" directory, which is provided by this repository.
,(let ((changeset "c35def313c0c2bd0341e3e058f862f02390269c4"))
,(let ((changeset "ab6dfcf3a37bf53aac1a9d632d45ee51047050bb"))
(origin
(method hg-fetch)
(uri (hg-reference
@ -1629,7 +1629,7 @@ standards of the IceCat project.")
(file-name (string-append "thunderbird-" version "-checkout"))
(sha256
(base32
"0rp4i353dskx065a6hskvfpf0l2qywqnivks9qc6a85h4yah4rvq")))))
"00zj1k3c8p66ylf9n7xp42y6kiv3h6hf8ba7bk6f8wj3hh0r2hrd")))))
("cargo" ,rust "cargo")
("clang" ,clang)
("llvm" ,llvm)

View File

@ -10,6 +10,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
;;; Copyright © 2021 Giacomo Leidi <goodoldpaul@autistici.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -442,3 +443,45 @@ This approach allows:
@item Using backend specific styles to customize the output
@end itemize")
(license license:expat)))
(define-public gprof2dot
(package
(name "gprof2dot")
(version "2021.02.21")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jrfonseca/gprof2dot")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1jjhsjf5fdi1fkn7mvhnzkh6cynl8gcjrygd3cya5mmda3akhzic"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(add-installed-pythonpath inputs outputs)
(invoke "python" "tests/test.py")))))))
(native-inputs
`(("graphviz" ,graphviz)))
(home-page "https://github.com/jrfonseca/gprof2dot")
(synopsis "Generate a dot graph from the output of several profilers")
(description "This package provides a Python script to convert the output
from many profilers into a dot graph.
It can:
@itemize
@item prune nodes and edges below a certain threshold;
@item use an heuristic to propagate time inside mutually recursive functions;
@item use color efficiently to draw attention to hot-spots;
@item work on any platform where Python and Graphviz is available.
@end itemize")
(license license:lgpl3+)))

View File

@ -102,7 +102,7 @@
("java-asm-util" ,java-asm-util-8)
("java-classpathx-servletapi" ,java-classpathx-servletapi)
("java-commons-cli" ,java-commons-cli)
("java-jansi" ,java-jansi)
("java-jansi" ,java-jansi-1)
("java-jline-2" ,java-jline-2)
("java-picocli" ,java-picocli)
("java-xstream" ,java-xstream)))

View File

@ -556,7 +556,7 @@ you send to a FIFO file.")
(define-public guile-dsv
(package
(name "guile-dsv")
(version "0.4.0")
(version "0.5.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -565,7 +565,7 @@ you send to a FIFO file.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1mvyc8i38j56frjh3p6vwziv8lrzlyqndz30663h5nwcp0044sdn"))))
"0s9zan08ala7432pn44z3vmb3sc19rf18zfr9mskydnam5xn6qlw"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
@ -581,21 +581,6 @@ you send to a FIFO file.")
#:imported-modules ((guix build guile-build-system)
,@%gnu-build-system-modules)
#:phases (modify-phases %standard-phases
(add-before 'configure 'set-guilesitedir
(lambda _
(substitute* "Makefile.in"
(("^guilesitedir =.*$")
"guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
(substitute* "modules/Makefile.in"
(("^guilesitedir =.*$")
"guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
(substitute* "modules/dsv/Makefile.in"
(("^guilesitedir =.*$")
"guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
#t))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -4783,14 +4768,13 @@ locations.")
(base32
"0jcl6mzqy04if5drflmygmggbgzsxa42mlmskqb3cfqmksq0zj0y"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f)); no tests
(inputs
`(("guile" ,guile-3.0)))
(native-inputs
`(("automake" ,automake)
("autoconf" ,autoconf)
("pkg-config" ,pkg-config)
("guile" ,guile-3.0) ;for 'guild compile' + guile.m4
("texinfo" ,texinfo)))
(home-page "https://git.lepiller.eu/guile-netlink")
(synopsis "Netlink protocol implementation for Guile")

View File

@ -7901,14 +7901,14 @@ JavaMail API.")
(define-public java-log4j-api
(package
(name "java-log4j-api")
(version "2.4.1")
(version "2.15.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/logging/log4j/" version
"/apache-log4j-" version "-src.tar.gz"))
(sha256
(base32
"0j5p9gik0jysh37nlrckqbky12isy95cpwg2gv5fas1rcdqbraxd"))))
"0h4ndw096h9cql0kyi1zd0ymp8hqxc1jdgdxkn0kxf8vd9b4dx14"))))
(build-system ant-build-system)
(arguments
`(#:tests? #f ; tests require unpackaged software
@ -7929,6 +7929,7 @@ JavaMail API.")
`(("java-osgi-core" ,java-osgi-core)
("java-hamcrest-core" ,java-hamcrest-core)
("java-junit" ,java-junit)))
(properties '((cpe-name . "log4j")))
(home-page "https://logging.apache.org/log4j/2.x/")
(synopsis "API module of the Log4j logging framework for Java")
(description
@ -7946,7 +7947,11 @@ Java.")
("java-log4j-api" ,java-log4j-api)
("java-mail" ,java-mail)
("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec)
("java-conversant-disruptor" ,java-conversant-disruptor)
("java-lmax-disruptor" ,java-lmax-disruptor)
("java-jctools-core" ,java-jctools-core-1)
("java-stax2-api" ,java-stax2-api)
("java-jansi" ,java-jansi)
("java-kafka" ,java-kafka-clients)
("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
@ -7993,6 +7998,7 @@ logging framework for Java.")))
(inputs
`(("log4j-api" ,java-log4j-api)
("log4j-core" ,java-log4j-core)
("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec)
("osgi-core" ,java-osgi-core)
("eclipse-osgi" ,java-eclipse-osgi)
("java-lmax-disruptor" ,java-lmax-disruptor)))))
@ -11377,15 +11383,16 @@ programming language.")
(define-public java-lmax-disruptor
(package
(name "java-lmax-disruptor")
(version "3.3.7")
(version "3.4.4")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/LMAX-Exchange/disruptor/"
"archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/LMAX-Exchange/disruptor")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"17da2gwj5abnlsfgn2xqjk5lgzbg4vkb0hdv2dvc8r2fx4bi7w3g"))))
"02c5kp3n8a73dq9ay7ar53s1k3x61z9yzc5ikqb03m6snr1wpfqn"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-lmax-disruptor.jar"
@ -11409,6 +11416,68 @@ for high performance inter-thread communication that avoids the need for
message queues or resource locking.")
(license license:asl2.0)))
(define-public java-conversant-disruptor
(package
(name "java-conversant-disruptor")
(version "1.2.19")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/conversant/disruptor")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0gx1dm7sfg7pa05cs4qby10gfcplai5b5lf1f7ik1a76dh3vhl0g"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-conversant-disruptor.jar"
#:source-dir "src/main/java"
#:phases
(modify-phases %standard-phases
(add-before 'build 'copy-resources
(lambda _
(copy-recursively "src/main/resources" "build/classes")))
(add-before 'build 'remove-module
(lambda _
(delete-file "src/main/java/module-info.java"))))))
(native-inputs
`(("java-junit" ,java-junit)))
(home-page "https://github.com/conversant/disruptor")
(synopsis "High performance intra-thread communication")
(description "Conversant Disruptor is the highest performing intra-thread
transfer mechanism available in Java. Conversant Disruptor is an implementation
of this type of ring buffer that has almost no overhead and that exploits a
particularly simple design.")
(license license:asl2.0)))
(define-public java-jctools-core-1
(package
(name "java-jctools-core")
(version "1.2.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/JCTools/JCTools")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"105my29nwd4djvdllmq8s3jdzbyplbkxzwmddxiiilb4yqr1pghb"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-jctools-core.jar"
#:source-dir "jctools-core/src/main/java"
#:test-dir "jctools-core/src/test"))
(native-inputs
`(("java-junit" ,java-junit)
("java-hamcrest-all" ,java-hamcrest-all)))
(home-page "https://github.com/JCTools/JCTools")
(synopsis "Concurrency tools for Java")
(description "This library implements concurrent data structures that are
not natively available in Java.")
(license license:asl2.0)))
(define-public java-commons-bcel
(package
(name "java-commons-bcel")
@ -12193,15 +12262,79 @@ console output.")
(define-public java-jansi
(package
(name "java-jansi")
(version "1.16")
(version "2.4.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/fusesource/jansi/archive/"
"jansi-project-" version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/fusesource/jansi")
(commit (string-append "jansi-" version))))
(file-name (git-file-name name version))
(sha256
(base32
"11kh3144i3fzp21dpy8zg52mjmsr214k7km9p8ly0rqk2px0qq2z"))))
"1s6fva06990798b5fyxqzr30zwyj1byq5wrm54j2larcydaryggf"))
(modules '((guix build utils)))
(snippet
;; contains pre-compiled libraries
'(delete-file-recursively
"src/main/resources/org/fusesource/jansi/internal"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "jansi.jar"
#:source-dir "src/main/java"
#:test-dir "src/test"
#:tests? #f; require junit 3
#:phases
(modify-phases %standard-phases
(add-before 'build 'build-native
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "src/main/native"
(for-each
(lambda (cfile)
(let ((cfile (basename cfile))
(ofile (string-append (basename cfile ".c") ".o")))
(invoke ,(cc-for-target) "-c" cfile "-o" ofile
(string-append "-I" (assoc-ref inputs "jdk")
"/include/linux")
"-fPIC" "-O2")))
(find-files "." "\\.c$"))
(apply invoke ,(cc-for-target) "-o" "libjansi.so" "-shared"
(find-files "." "\\.o$")))))
(add-before 'build 'install-native
(lambda _
(let ((dir (string-append "build/classes/org/fusesource/"
"jansi/internal/native/"
,(match (or (%current-target-system) (%current-system))
("i686-linux" "Linux/x86")
("x86_64-linux" "Linux/x86_64")
("armhf-linux" "Linux/armv7")
("aarch64-linux" "Linux/arm64")
("mips64el-linux" "Linux/mips64")
(_ "unknown-kernel")))))
(install-file "src/main/native/libjansi.so" dir))))
(add-before 'build 'copy-resources
(lambda _
(copy-recursively "src/main/resources" "build/classes")))
(replace 'install
(install-from-pom "pom.xml")))))
(home-page "https://fusesource.github.io/jansi/")
(synopsis "Portable ANSI escape sequences")
(description "Jansi is a Java library that allows you to use ANSI escape
sequences to format your console output which works on every platform.")
(license license:asl2.0)))
(define-public java-jansi-1
(package
(inherit java-jansi)
(version "1.16")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/fusesource/jansi")
(commit (string-append "jansi-project-" version))))
(file-name (git-file-name "jansi" version))
(sha256
(base32
"0ikk0x352gh30b42qn1jd89xwsjj0mavrc5kms7fss15bd8vsayx"))))
(arguments
`(#:jar-name "jansi.jar"
#:source-dir "jansi/src/main/java"
@ -12232,12 +12365,7 @@ console output.")
`(("java-jansi-native" ,java-jansi-native)))
(native-inputs
`(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)))
(home-page "https://fusesource.github.io/jansi/")
(synopsis "Portable ANSI escape sequences")
(description "Jansi is a Java library that allows you to use ANSI escape
sequences to format your console output which works on every platform.")
(license license:asl2.0)))
("java-hamcrest-core" ,java-hamcrest-core)))))
(define-public java-jboss-el-api-spec
(package
@ -12600,7 +12728,7 @@ features that bring it on par with the Z shell line editor.")
`(#:jdk ,icedtea-8
,@(package-arguments java-jline)))
(inputs
`(("java-jansi" ,java-jansi)
`(("java-jansi" ,java-jansi-1)
("java-jansi-native" ,java-jansi-native)))
(native-inputs
`(("java-powermock-modules-junit4" ,java-powermock-modules-junit4)

View File

@ -355,7 +355,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The current "stable" kernels. That is, the most recently released major
;; versions that are still supported upstream.
(define-public linux-libre-5.15-version "5.15.6")
(define-public linux-libre-5.15-version "5.15.7")
(define-public linux-libre-5.15-gnu-revision "gnu")
(define deblob-scripts-5.15
(linux-libre-deblob-scripts
@ -365,7 +365,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "04fj1x3zmi310cr3m9hxpi26gdcmwfsqciv5yb6q6rrnqjqs1pc0")))
(define-public linux-libre-5.15-pristine-source
(let ((version linux-libre-5.15-version)
(hash (base32 "1w0plw9rzk2c0g8yxzwj7c6wkq538sy56mx1skmf58wrl83bmsdk")))
(hash (base32 "1caxpqmik6gkhk3437pcgfq6vvlbs962hylgbh64iizd76l5142x")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.15)))
@ -373,7 +373,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The "longterm" kernels — the older releases with long-term upstream support.
;; Here are the support timelines:
;; <https://www.kernel.org/category/releases.html>
(define-public linux-libre-5.10-version "5.10.83")
(define-public linux-libre-5.10-version "5.10.84")
(define-public linux-libre-5.10-gnu-revision "gnu1")
(define deblob-scripts-5.10
(linux-libre-deblob-scripts
@ -383,12 +383,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7")))
(define-public linux-libre-5.10-pristine-source
(let ((version linux-libre-5.10-version)
(hash (base32 "0w4vq8wby3m9f5ryssh6z948m6zj1bjz9x432805dnrxyd1rl9gg")))
(hash (base32 "0g935v0khv0i2qlrwr656hxl28m6zlbclc9rv15nq46xf8fjg5kf")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.10)))
(define-public linux-libre-5.4-version "5.4.163")
(define-public linux-libre-5.4-version "5.4.164")
(define-public linux-libre-5.4-gnu-revision "gnu1")
(define deblob-scripts-5.4
(linux-libre-deblob-scripts
@ -398,12 +398,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-5.4-pristine-source
(let ((version linux-libre-5.4-version)
(hash (base32 "1glh0azkrqdwydvbz9rp3czc5ppb72gq7svl3zbkjc6qfqbzwik2")))
(hash (base32 "0142nic300xjdz9s6w1cp6cyhk2c2wpks9wxzqca6jz4da7k0l9r")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.4)))
(define-public linux-libre-4.19-version "4.19.219")
(define-public linux-libre-4.19-version "4.19.220")
(define-public linux-libre-4.19-gnu-revision "gnu1")
(define deblob-scripts-4.19
(linux-libre-deblob-scripts
@ -413,12 +413,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
(hash (base32 "1nq9228zm24d8azvv6d6r5iw8lfkb7z5lblyhk137mydzdqwsklg")))
(hash (base32 "0q5hrh6q2f2r97nff136db7367p3hn0la2gl7q4knms3g8fis1jq")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
(define-public linux-libre-4.14-version "4.14.256")
(define-public linux-libre-4.14-version "4.14.257")
(define-public linux-libre-4.14-gnu-revision "gnu1")
(define deblob-scripts-4.14
(linux-libre-deblob-scripts
@ -428,12 +428,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version)
(hash (base32 "180s2zmkfxk7af9nnkmfi2cs56af6vwyd21hjcfdxiygjm7j114p")))
(hash (base32 "0jnw02jphvm9zcviwwymxyhq8kd0bk0v1827ninnv6bdy3140izv")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.14)))
(define-public linux-libre-4.9-version "4.9.291")
(define-public linux-libre-4.9-version "4.9.292")
(define-public linux-libre-4.9-gnu-revision "gnu1")
(define deblob-scripts-4.9
(linux-libre-deblob-scripts
@ -443,12 +443,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.9-pristine-source
(let ((version linux-libre-4.9-version)
(hash (base32 "0lwb9mb4s6qnwklygvfsr5ap85k83w1apkbbfdzzacfn9rvpfpdm")))
(hash (base32 "0y3b6qqv6vrh2p5wwv5bicvbqrvxf1y5xm4myy5pk6yp2igws3kd")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.9)))
(define-public linux-libre-4.4-version "4.4.293")
(define-public linux-libre-4.4-version "4.4.294")
(define-public linux-libre-4.4-gnu-revision "gnu1")
(define deblob-scripts-4.4
(linux-libre-deblob-scripts
@ -458,7 +458,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.4-pristine-source
(let ((version linux-libre-4.4-version)
(hash (base32 "1z9hc68v8fvph29l2w3md4734hhgp36sy8mzdlkmdrlkjihq6bvd")))
(hash (base32 "0k0h5m1ng2049d5ggrq4q81vgsfmdpkqla73vg2a3bf2v6ycjmc7")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.4)))

View File

@ -93,6 +93,7 @@
#:use-module (gnu packages sdl)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages statistics)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
@ -2112,7 +2113,7 @@ writing code that contains string literals that contain code themselves.")
(define-public sbcl-slime-swank
(package
(name "sbcl-slime-swank")
(version "2.26")
(version "2.26.1")
(source
(origin
(file-name (git-file-name "slime-swank" version))
@ -2122,7 +2123,7 @@ writing code that contains string literals that contain code themselves.")
(commit (string-append "v" version))))
(sha256
(base32
"0mxb1wnw19v0s72w2wkz5afdlzvpy5nn7pr4vav403qybac0sw5c"))))
"1a25ixb7q4svqabxnhwkk43v47mbsh13qwm7qlazkd3zkr8j3cli"))))
(build-system asdf-build-system/sbcl)
(arguments
'(#:asd-systems '("swank")))
@ -2185,7 +2186,7 @@ With the simplistic tools provided, one may accomplish similar effects as with
Literate Programming, but documentation is generated from code, not vice versa
and there is no support for chunking yet. Code is first, code must look
pretty, documentation is code.")
(home-page "http://quotenil.com/")
(home-page "https://melisgl.github.io/mgl-pax/")
(license license:expat))))
(define-public cl-mgl-pax
@ -12638,25 +12639,28 @@ XML to Lisp structures or s-expressions and back.")
((#:tests? _ #f) #f))))))
(define-public sbcl-geco
(let ((commit "db13c9384491092975f46f6a837ccdc04681a93a")
(revision "1"))
(package
(name "sbcl-geco")
(version "2.1.1")
(version (git-version "2.1.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gpwwjr/GECO")
(commit (string-append "v" version))))
(file-name (git-file-name "geco" version))
(commit commit)))
(file-name (git-file-name "cl-geco" version))
(sha256
(base32 "1rc8a4mk40hjx5qy980hjylv6xxqdbq38hg8c4w30y93abfd519s"))))
(base32 "1ncaf9ab7jz59zmga0p97blsjjb1m6db0qih57wipfhqdb5ylz17"))))
(build-system asdf-build-system/sbcl)
(home-page "http://hiwaay.net/~gpw/geco/geco.html")
(home-page "https://github.com/gpwwjr/GECO")
(synopsis "Genetic algorithm toolkit for Common Lisp")
(description
"GECO (Genetic Evolution through Combination of Objects) is an extensible,
object-oriented framework for prototyping genetic algorithms in Common Lisp.")
(license license:lgpl2.1+)))
"GECO (Genetic Evolution through Combination of Objects) is an
extensible, object-oriented framework for prototyping genetic algorithms in
Common Lisp.")
(license license:lgpl2.0+))))
(define-public cl-geco
(sbcl-package->cl-source-package sbcl-geco))
@ -17890,10 +17894,11 @@ functions allow Lisp programs to explore the web.")
(define-public sbcl-aserve
;; There does not seem to be proper releases.
(let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5"))
(let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5")
(revision "2"))
(package
(name "sbcl-aserve")
(version (git-version "1.2.50" "1" commit))
(version (git-version "1.2.50" revision commit))
(source
(origin
(method git-fetch)
@ -17904,7 +17909,14 @@ functions allow Lisp programs to explore the web.")
(commit commit)))
(file-name (git-file-name "aserve" version))
(sha256
(base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa"))))
(base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa"))
(patches (search-patches
;; Add HTML5 elements to htmlgen.
;; Adapted from https://github.com/franzinc/aserve/ commits:
;; * e47bd763: "rfe12668: add HTML 5 elements to htmlgen"
;; * 7371ce59: "fix bugs in rfe12668 implementation"
"sbcl-aserve-add-HTML-5-elements.patch"
"sbcl-aserve-fix-rfe12668.patch"))))
(build-system asdf-build-system/sbcl)
(arguments
`(#:phases
@ -17925,7 +17937,8 @@ functions allow Lisp programs to explore the web.")
#t)))))
(inputs
`(("acl-compat" ,sbcl-acl-compat)))
(home-page "https://franz.com/support/documentation/current/doc/aserve/aserve.html")
(home-page
"https://franz.com/support/documentation/current/doc/aserve/aserve.html")
(synopsis "AllegroServe, a web server written in Common Lisp")
(description
"The server part of AllegroServe can be used either as a standalone web
@ -19349,6 +19362,225 @@ command in Common Lisp.")
(define-public ecl-which
(sbcl-package->ecl-package sbcl-which))
(define-public sbcl-cl-num-utils
(let ((commit "97a88cd34540acf52e872a82ebfef3da0a34fa12")
(revision "1"))
(package
(name "sbcl-cl-num-utils")
(version (git-version "0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/cl-num-utils")
(commit commit)))
(file-name (git-file-name "cl-num-utils" version))
(sha256
(base32 "15ihsxxs76xnldmqfsbxybckqjwrxwcpphgghiwzr2mnbqjpdqkh"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("anaphora" ,sbcl-anaphora)
("alexandria" ,sbcl-alexandria)
("array-operations" ,sbcl-array-operations)
("cl-slice" ,sbcl-cl-slice)
("let-plus" ,sbcl-let-plus)))
(native-inputs
`(("clunit" ,sbcl-clunit)))
(home-page "https://github.com/tpapp/cl-num-utils")
(synopsis "Numerical utilities for Common Lisp")
(description
"@code{cl-num-utils} implements simple numerical functions for Common
Lisp, including:
@itemize
@item @code{num=}, a comparison operator for floats
@item simple arithmeric functions, like @code{sum} and @code{l2norm}
@item elementwise operations for arrays
@item intervals
@item special matrices and shorthand for their input
@item sample statistics
@item Chebyshev polynomials
@item univariate rootfinding
@end itemize")
(license license:boost1.0))))
(define-public cl-num-utils
(sbcl-package->cl-source-package sbcl-cl-num-utils))
(define-public ecl-cl-num-utils
(sbcl-package->ecl-package sbcl-cl-num-utils))
(define-public sbcl-lla
(let ((commit "ded805d1e9b1493e17b601116ba9bd8a3de3024f")
(revision "1"))
(package
(name "sbcl-lla")
(version (git-version "0.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/lla")
(commit commit)))
(file-name (git-file-name "cl-lla" version))
(sha256
(base32 "0n9vc7dnyjbbsv1n7rd8sylwda5fsdf8f890g4nachanyx0xps9k"))))
(build-system asdf-build-system/sbcl)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/configuration.lisp"
(("\"libblas.so.3gf\"")
(string-append "\"" (assoc-ref inputs "lapack")
"/lib/libblas.so\""))
(("\"liblapack.so.3gf\"")
(string-append "\"" (assoc-ref inputs "lapack")
"/lib/liblapack.so\""))))))))
(inputs
`(("anaphora" ,sbcl-anaphora)
("alexandria" ,sbcl-alexandria)
("cffi" ,sbcl-cffi)
("cl-num-utils" ,sbcl-cl-num-utils)
("cl-slice" ,sbcl-cl-slice)
("lapack" ,lapack)
("let-plus" ,sbcl-let-plus)))
(native-inputs
`(("clunit" ,sbcl-clunit)))
(home-page "https://github.com/tpapp/lla")
(synopsis "Linear algebra library for Common Lisp")
(description
"LLA is a high-level Common Lisp library built on BLAS and LAPACK, but
providing a much more abstract interface with the purpose of freeing the user
from low-level concerns and reducing the number of bugs in numerical code.")
(license license:boost1.0))))
(define-public cl-lla
(sbcl-package->cl-source-package sbcl-lla))
(define-public ecl-lla
(sbcl-package->ecl-package sbcl-lla))
(define-public sbcl-cl-rmath
(let ((commit "f6add1edda31547691d08e36ccf6c17305161aca")
(revision "1"))
(package
(name "sbcl-cl-rmath")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/cl-rmath")
(commit commit)))
(file-name (git-file-name "cl-rmath" version))
(sha256
(base32 "1ld8vbpy10paymx2hn0mcgd21i7cjhdrayln1jx0kayqxm12mmk4"))))
(build-system asdf-build-system/sbcl)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "cl-rmath.lisp"
(("\\(cffi:define-foreign-library librmath" all)
(string-append all "\n"
" (:unix \""
(assoc-ref inputs "librmath")
"/lib/libRmath.so\")"))))))))
(inputs
`(("cffi" ,sbcl-cffi)
("librmath" ,rmath-standalone)))
(home-page "https://github.com/tpapp/cl-rmath")
(synopsis "Common Lisp wrapper for libRmath")
(description
"@code{cl-rmath} is a simple, autogenerated foreign interface for the
standalone R API @code{libRmath}. There has been no effort to provide a
high-level interface for the original library, instead, this library is meant
to serve as a building block for such an interface.")
(license license:boost1.0))))
(define-public cl-rmath
(sbcl-package->cl-source-package sbcl-cl-rmath))
(define-public ecl-cl-rmath
(sbcl-package->ecl-package sbcl-cl-rmath))
(define-public sbcl-cl-random
(let ((commit "5bb65911037f95a4260bd29a594a09df3849f4ea")
(revision "1"))
(package
(name "sbcl-cl-random")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tpapp/cl-random")
(commit commit)))
(file-name (git-file-name "cl-random" version))
(sha256
(base32 "0jn80xphyvyp2v72acr6b8a2f6dw06myr5vrjfl14brsvks7wr89"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)
("anaphora" ,sbcl-anaphora)
("array-operations" ,sbcl-array-operations)
("cl-num-utils" ,sbcl-cl-num-utils)
("cl-rmath" ,sbcl-cl-rmath)
("cl-slice" ,sbcl-cl-slice)
("gsll" ,sbcl-gsll)
("let-plus" ,sbcl-let-plus)
("lla" ,sbcl-lla)))
(native-inputs
`(("clunit" ,sbcl-clunit)))
(home-page "https://github.com/tpapp/cl-random")
(synopsis "Random variates for Common Lisp")
(description
"@code{cl-random} is a library for generating random draws from various
commonly used distributions, and for calculating statistical functions, such as
density, distribution and quantiles for these distributions.")
(license license:expat))))
(define-public cl-random
(sbcl-package->cl-source-package sbcl-cl-random))
(define-public ecl-cl-random
(sbcl-package->ecl-package sbcl-cl-random))
(define-public sbcl-mgl-gpr
(let ((commit "cb6ce51e2f87bf1d589f3703c13eea6e25780afe")
(revision "1"))
(package
(name "sbcl-mgl-gpr")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/melisgl/mgl-gpr")
(commit commit)))
(file-name (git-file-name "cl-mgl-gpr" version))
(sha256
(base32 "0w51dqixh277k6sl8bqvvp1400y6kd1l5h3d9q2f40l9bpxy8gjx"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("cl-random" ,sbcl-cl-random)
("mgl-pax" ,sbcl-mgl-pax)))
(home-page "https://melisgl.github.io/mgl-gpr/")
(synopsis "Common Lisp library of evolutionary algorithms")
(description
"@code{MGL-GPR} is a library of evolutionary algorithms such as
Genetic Programming (evolving typed expressions from a set of operators and
constants) and Differential Evolution.")
(license license:expat))))
(define-public cl-mgl-gpr
(sbcl-package->cl-source-package sbcl-mgl-gpr))
(define-public ecl-mgl-gpr
(sbcl-package->ecl-package sbcl-mgl-gpr))
(define-public sbcl-cl-tld
;; No release.
(let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75"))
@ -19768,6 +20000,36 @@ score. When evaluated, the musical score is rendered to an image.")
(define-public ecl-cmn
(sbcl-package->ecl-package sbcl-cmn))
(define-public sbcl-core-gp
(let ((commit "90ec1c4599a19c5a911be1f703f78d5108aee160")
(revision "1"))
(package
(name "sbcl-core-gp")
(version (git-version "0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jorgetavares/core-gp")
(commit commit)))
(file-name (git-file-name "cl-core-gp" version))
(sha256
(base32 "0nzlb2gwqisa1amlpl4zc5xxph2g3qwhfyaxchci67d31rzws6l3"))))
(build-system asdf-build-system/sbcl)
(home-page "https://github.com/jorgetavares/core-gp")
(synopsis "Common Lisp library for genetic programming")
(description
"@code{core-gp} is a Common Lisp library for genetic programming (GP)
algorithms. It allows standard GP, strongly-typed GP, grammatical evolution as
well as standard genetic algorithms.")
(license license:expat))))
(define-public cl-core-gp
(sbcl-package->cl-source-package sbcl-core-gp))
(define-public ecl-core-gp
(sbcl-package->ecl-package sbcl-core-gp))
(define-public sbcl-data-sift
(let ((commit "fd617d8200cdcc1b87ecf45ab59bb38e8b16ef7e")
(revision "1"))
@ -19854,6 +20116,40 @@ library inspired by @code{cl-data-format-validation} and WTForms validators.")
(define-public ecl-restas
(sbcl-package->ecl-package sbcl-restas))
(define-public sbcl-zsort
(let ((commit "f6724a6fff7662a942195cedb0d7f00da59c74ed")
(revision "1"))
(package
(name "sbcl-zsort")
(version (git-version "0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jorgetavares/zsort")
(commit commit)))
(file-name (git-file-name "cl-zsort" version))
(sha256
(base32 "1vyklyh99712zsll4qi0m4mm8yb1nz04403vl8i57bjv5p5max49"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("alexandria" ,sbcl-alexandria)))
(home-page "https://github.com/jorgetavares/zsort")
(synopsis "Collection of portable sorting algorithms in Common Lisp")
(description
"@code{zsort} is a collection of portable sorting algorithms. Common
Lisp provides the @code{sort} and @code{stable-sort} functions but these can
have different algorithms implemented according to each implementation. Also,
the standard sorting functions might not be the best for a certain situations.
This library aims to provide developers with more options.")
(license license:expat))))
(define-public cl-zsort
(sbcl-package->cl-source-package sbcl-zsort))
(define-public ecl-zsort
(sbcl-package->ecl-package sbcl-zsort))
(define-public sbcl-cl-https-everywhere
;; No release.
;; Don't forget to update the https-everywhere input.

View File

@ -2656,17 +2656,18 @@ replacement.")
(license license:gpl2+)))
(define-public tdlib
(let ((commit "34ba9b21f365b8d3bdc36808c2d665ca5cd128f6"))
(package
(name "tdlib")
(version "1.7.0")
(source (origin
(version "1.7.10")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tdlib/td")
(commit (string-append "v" version))))
(commit commit)))
(sha256
(base32
"0dfir57ljcn98mkg061c5642qb93wh2lm1n4nngpl3na9vvfk75i"))
(base32 "06fbdh1jypz0p1rf6xbpias4kx7xplq9xjd9vz177vwj9icq3wki"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
@ -2697,7 +2698,7 @@ Telegram clients following the official Telegram API. It can be easily used
from almost any programming language with a C-FFI and features first-class
support for high performance Telegram Bot creation.")
(home-page "https://core.telegram.org/tdlib")
(license license:boost1.0)))
(license license:boost1.0))))
(define-public purple-mm-sms
(package

View File

@ -1,36 +1,31 @@
From 865b8c553722a971c68742c2e849e41eb0e2360c Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Thu, 24 Jun 2021 23:43:50 +0800
Subject: [PATCH] Replace code that search path with placeholder for
configuration.
From bf95de21faa623e48bca00d6a2c9b33ab2c5d812 Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Wed, 8 Dec 2021 11:01:31 +0300
Subject: [PATCH] Use absolute path for telega-server-command.
---
telega-server.el | 6 +-----
telega-customize.el | 2 +-
telega-util.el | 2 +-
2 files changed, 2 insertions(+), 6 deletions(-)
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/telega-server.el b/telega-server.el
index 999125d..0fa0817 100644
--- a/telega-server.el
+++ b/telega-server.el
@@ -142,11 +142,7 @@ Otherwise query user about building flags."
(defun telega-server--find-bin ()
"Find telega-server executable.
Raise error if not found."
- (let ((exec-path (cons telega-directory exec-path)))
- (or (executable-find "telega-server")
- (progn (telega-server-build)
- (executable-find "telega-server"))
- (error "`telega-server' not found in exec-path"))))
+ "@TELEGA_SERVER_BIN@")
diff --git a/telega-customize.el b/telega-customize.el
index 0af343f..cc2938c 100644
--- a/telega-customize.el
+++ b/telega-customize.el
@@ -591,7 +591,7 @@ In range [1..3]. Use 1."
:prefix "telega-server-"
:group 'telega)
(defun telega-server-version ()
"Return telega-server version."
-(defcustom telega-server-command "telega-server"
+(defcustom telega-server-command "@TELEGA_SERVER_BIN@"
"Command to run as telega server.
It should be absolute path or binary file searchable in `exec-path'."
:type 'string
diff --git a/telega-util.el b/telega-util.el
index 73a46b1..f53e20a 100644
index 6340c27..01e3cb7 100644
--- a/telega-util.el
+++ b/telega-util.el
@@ -464,7 +464,7 @@ N can't be 0."
@@ -587,7 +587,7 @@ N can't be 0."
(defun telega-etc-file (filename)
"Return absolute path to FILENAME from etc/ directory in telega."
@ -40,5 +35,5 @@ index 73a46b1..f53e20a 100644
(defun telega-link-props (link-type link-to &optional face)
"Generate props for link button openable with `telega-link--button-action'."
--
2.32.0
2.34.0

View File

@ -1,14 +1,24 @@
Test Emacs environment on startup.
From 237ea2471bb6521390bbac174ac2a8a5e9683e4d Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Tue, 7 Dec 2021 16:20:38 +0300
Subject: [PATCH] Test Emacs environment on startup.
Patch by Diego N. Barbato
---
telega.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/telega.el 2020-02-07 17:07:18.549970090 +0100
+++ b/telega.el 2020-02-07 17:10:08.383499765 +0100
@@ -82,6 +82,7 @@
"Start telegramming.
If prefix ARG is given, then will not pop to telega root buffer."
diff --git a/telega.el b/telega.el
index d6b28b5..40854ec 100644
--- a/telega.el
+++ b/telega.el
@@ -181,7 +181,7 @@ can't write to `telega-server-logfile'" logfile-dir)))
Pop to root buffer.
If `\\[universal-argument]' is specified, then do not pop to root buffer."
(interactive "P")
-
+ (telega-test-env t)
(telega--create-hier)
(unless (telega-server-live-p)
;; For multiple accounts setup possibly select (if there is no
;; default account declared) an account to use
(if (and telega-accounts (not (telega-account-current)))
--
2.34.0

View File

@ -0,0 +1,63 @@
From 940679fb75073a59186099e3dd7fb381e727db6b Mon Sep 17 00:00:00 2001
From: Kevin Layer <layer@franz.com>
Date: Thu, 31 Oct 2013 04:27:29 -0700
Subject: [PATCH 1/2] rfe12668: add HTML 5 elements to htmlgen
Add the new elements listed here:
http://www.w3.org/TR/html5-diff/#new-elements
Change-Id: I7f64363751130644caf90ecdd65c13175d77ae97
---
aserve/htmlgen/htmlgen.cl | 38 ++++++++++++++++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/aserve/htmlgen/htmlgen.cl b/aserve/htmlgen/htmlgen.cl
index 59248ef..0c0d6e8 100644
--- a/aserve/htmlgen/htmlgen.cl
+++ b/aserve/htmlgen/htmlgen.cl
@@ -747,6 +747,40 @@
(def-std-html :var t nil)
-(def-std-html :wbr nil nil)
-
(def-std-html :xmp t nil)
+
+;; html 5
+
+(def-std-html :section t nil)
+(def-std-html :article t nil)
+(def-std-html :main t nil)
+(def-std-html :aside t nil)
+(def-std-html :hgroup t nil)
+(def-std-html :header t nil)
+(def-std-html :footer t nil)
+(def-std-html :nav t nil)
+(def-std-html :figure t nil)
+(def-std-html :figcaption t nil)
+
+(def-std-html :video t nil)
+(def-std-html :audio t nil)
+(def-std-html :source t nil)
+(def-std-html :track t nil)
+(def-std-html :embed t nil)
+(def-std-html :mark t nil)
+(def-std-html :progress t nil)
+(def-std-html :meter t nil)
+(def-std-html :time t nil)
+(def-std-html :data t nil)
+(def-std-html :dialog t nil)
+(def-std-html :ruby t nil)
+(def-std-html :rt t nil)
+(def-std-html :rp t nil)
+(def-std-html :bdi t nil)
+(def-std-html :wbr nil nil)
+(def-std-html :canvas t nil)
+(def-std-html :menuitem t nil)
+(def-std-html :details t nil)
+(def-std-html :datalist t nil)
+(def-std-html :keygen t nil)
+(def-std-html :output t nil)
--
2.25.1

View File

@ -0,0 +1,43 @@
From 8110ebd55d5bf659cd40dab2df59d80dafdb367a Mon Sep 17 00:00:00 2001
From: Kevin Layer <layer@franz.com>
Date: Mon, 10 Feb 2014 11:10:42 -0800
Subject: [PATCH 2/2] fix bugs in rfe12668 implementation
The previous commit added :embed and :keygen but they were already
there. Resolve this issue.
Change-Id: Ieb962a12880394e67d973835945005446833fab7
---
aserve/htmlgen/htmlgen.cl | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/aserve/htmlgen/htmlgen.cl b/aserve/htmlgen/htmlgen.cl
index 0c0d6e8..f77d6de 100644
--- a/aserve/htmlgen/htmlgen.cl
+++ b/aserve/htmlgen/htmlgen.cl
@@ -658,7 +658,6 @@
(def-std-html :dt t nil)
(def-std-html :em t nil)
-(def-std-html :embed t nil)
(def-std-html :fieldset t nil)
(def-std-html :font t nil)
@@ -685,7 +684,6 @@
(def-std-html :isindex nil nil)
(def-std-html :kbd t nil)
-(def-std-html :keygen nil nil)
(def-std-html :label t nil)
(def-std-html :layer t nil)
@@ -782,5 +780,5 @@
(def-std-html :menuitem t nil)
(def-std-html :details t nil)
(def-std-html :datalist t nil)
-(def-std-html :keygen t nil)
+(def-std-html :keygen nil nil)
(def-std-html :output t nil)
--
2.25.1

View File

@ -1278,7 +1278,7 @@ python-pypdf2 instead.")
(define-public pdfarranger
(package
(name "pdfarranger")
(version "1.8.0")
(version "1.8.1")
(source
(origin
(method git-fetch)
@ -1287,7 +1287,7 @@ python-pypdf2 instead.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0xfxcwb24rp0kni2b4wdk6fvhqnhd6fh559ag6wdr4sspzkqwdjf"))))
(base32 "1lcmlr7x4143f7wcn0m1ijlvch07nww2qfp3jfnacgy889ijvbfx"))))
(build-system python-build-system)
(arguments
'(#:tests? #f ;no tests

View File

@ -228,25 +228,44 @@ result documents that can be read by tools such as Jenkins or Bamboo.")
(define-public python-vcrpy
(package
(name "python-vcrpy")
(version "2.0.1")
(version "4.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "vcrpy" version))
(sha256
(base32
"0kws7l3hci1dvjv01nxw3805q9v2mwldw58bgl8s90wqism69gjp"))))
(base32 "16gmzxs3lzbgf1828n0q61vbmwyhpvzdlk37x6gdk8n05zr5n2ap"))))
(build-system python-build-system)
(arguments `(#:tests? #f)) ; tests require more packages for python-pytest-httpbin
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? outputs #:allow-other-keys)
(when tests?
(substitute* "tox.ini"
(("AWS_ACCESS_KEY_ID") "PYTHONPATH"))
(setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
;; These tests require network access.
(delete-file "tests/unit/test_stubs.py")
(invoke "pytest" "tests/unit")))))))
(propagated-inputs
`(("python-pyyaml" ,python-pyyaml)
("python-six" ,python-six)
("python-wrapt" ,python-wrapt)
("python-yarl" ,python-yarl)))
(native-inputs
`(("python-mock" ,python-mock)
`(("python-black" ,python-black)
("python-coverage" ,python-coverage)
("python-flake8" ,python-flake8)
("python-flask" ,python-flask)
("python-httplib2" ,python-httplib2)
("python-ipaddress" ,python-ipaddress)
("python-mock" ,python-mock)
("python-pytest" ,python-pytest)
("python-pytest-httpbin" ,python-pytest-httpbin)))
("python-pytest-cov" ,python-pytest-cov)
("python-pytest-httpbin" ,python-pytest-httpbin)
("python-tox" ,python-tox)
("python-urllib3" ,python-urllib3)))
(home-page "https://github.com/kevin1024/vcrpy")
(synopsis "Automatically mock your HTTP interactions")
(description

View File

@ -396,13 +396,13 @@ WSGI. This package includes libraries for implementing ASGI servers.")
(define-public python-aws-sam-translator
(package
(name "python-aws-sam-translator")
(version "1.38.0")
(version "1.40.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "aws-sam-translator" version))
(sha256
(base32
"1djwlsjpbh13m4biglimrm9lq7hmla0k29giay7k3cjsrylxvjhf"))))
"1hq5ggbzcq4k3ks439hki493w4sasgaxns6j5x57xsj822acalmf"))))
(build-system python-build-system)
(arguments
`(;; XXX: Tests are not distributed with the PyPI archive, and would
@ -415,13 +415,12 @@ WSGI. This package includes libraries for implementing ASGI servers.")
;; of dependencies, when it works fine with others.
(substitute* "requirements/base.txt"
(("(.*)(~=[0-9\\.]+)" all package version)
package))
#t)))))
package)))))))
(propagated-inputs
`(("python-boto3" ,python-boto3)
("python-jsonschema" ,python-jsonschema)
("python-six" ,python-six)))
(home-page "https://github.com/awslabs/serverless-application-model")
(home-page "https://github.com/aws/serverless-application-model")
(synopsis "Transform AWS SAM templates into AWS CloudFormation templates")
(description
"AWS SAM Translator is a library that transform @dfn{Serverless Application
@ -496,8 +495,8 @@ emit information from within their applications to the AWS X-Ray service.")
(define-public python-cfn-lint
(package
(name "python-cfn-lint")
(version "0.54.1")
(home-page "https://github.com/aws-cloudformation/cfn-python-lint")
(version "0.54.3")
(home-page "https://github.com/aws-cloudformation/cfn-lint")
(source (origin
(method git-fetch)
(uri (git-reference
@ -506,12 +505,14 @@ emit information from within their applications to the AWS X-Ray service.")
(file-name (git-file-name name version))
(sha256
(base32
"161mzzlpbi85q43kwzrj39qb32l6wg6xhnbbd4z860yrfbymsn87"))))
"106qf19n2k6sdjkb4006aidibd24qqiw901c1613xgjpnyw4dyl6"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key outputs #:allow-other-keys)
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(let ((out (assoc-ref outputs "out")))
;; Remove test for the documentation update scripts
;; to avoid a dependency on 'git'.
@ -519,8 +520,11 @@ emit information from within their applications to the AWS X-Ray service.")
"test/unit/module/maintenance/test_update_documentation.py")
(delete-file
"test/unit/module/maintenance/test_update_resource_specs.py")
(invoke "python" "-m" "unittest" "discover" "-v"
"-s" "test")))))))
(add-installed-pythonpath inputs outputs)
(setenv "PATH" (string-append out "/bin:"
(getenv "PATH")))
(invoke "python" "-m" "unittest" "discover"
"-s" "test"))))))))
(native-inputs
`(("python-pydot" ,python-pydot)
("python-mock" ,python-mock)))
@ -2838,14 +2842,14 @@ supports url redirection and retries, and also gzip and deflate decoding.")
(package
;; Note: updating awscli typically requires updating botocore as well.
(name "awscli")
(version "1.20.64")
(version "1.21.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
"0pl88y70rgwfprgv5gqkc2fcbasc9d0qyffl98l82bsc24d4c8b9"))))
"0fkivwbx4nind5b7l4jhqm5bb9drgqsclcslrg4aggf9rcs4g4s0"))))
(build-system python-build-system)
(arguments
;; FIXME: The 'pypi' release does not contain tests.
@ -3384,10 +3388,11 @@ Betamax that may possibly end up in the main package.")
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; Some of the 'integration' tests require network access or
;; login credentials.
(invoke "nosetests" "--exclude=integration"))))))
(invoke "nosetests" "--exclude=integration")))))))
(native-inputs
`(("python-docutils" ,python-docutils)
("python-mock" ,python-mock)

View File

@ -11416,9 +11416,9 @@ implementations of ASN.1-based codecs and protocols.")
(define-public python2-pyasn1-modules
(package-with-python2 python-pyasn1-modules))
(define-public python2-ipaddress
(define-public python-ipaddress
(package
(name "python2-ipaddress")
(name "python-ipaddress")
(version "1.0.23")
(source (origin
(method url-fetch)
@ -11427,17 +11427,17 @@ implementations of ASN.1-based codecs and protocols.")
(base32
"1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2))
(home-page "https://github.com/phihag/ipaddress")
(synopsis "IP address manipulation library")
(description
"This package provides a fast, lightweight IPv4/IPv6 manipulation library
in Python. This library is used to create, poke at, and manipulate IPv4 and
IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
module to older versions of Python.")
IPv6 addresses and networks.")
(license license:psfl)))
(define-public python2-ipaddress
(package-with-python2 python-ipaddress))
(define-public python-asn1tools
(package
(name "python-asn1tools")
@ -13385,32 +13385,40 @@ text.")
(define-public python-moto
(package
(name "python-moto")
;; XXX: Use a pre-release for compatibility with latest botocore & friends.
(version "1.3.16.dev134")
(version "2.2.12")
(source (origin
(method url-fetch)
(uri (pypi-uri "moto" version))
(sha256
(base32
"1pix0c7zszjwzfy88n1rpih9vkdm25nqcvz93z850xvgwb4v81bd"))))
"0pvay0jp119lzzwf5qj5h6311271yq0w2i6344ds20grpf6g6gz8"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-hardcoded-executable-names
(lambda _
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash-exec (search-input-file inputs "/bin/sh")))
(substitute* "moto/batch/models.py"
(("/bin/sh")
(which "sh")))
(("/bin/sh") bash-exec))
(substitute* (find-files "tests" "\\.py$")
(("#!/bin/bash")
(string-append "#!" (which "bash"))))
#t))
(("#!/bin/bash") (string-append "#!" bash-exec))))))
(replace 'check
(lambda _
(invoke "pytest" "-vv" "-m" "not network"
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(add-installed-pythonpath inputs outputs)
(invoke "pytest" "-vv" "-m" "not network" "-k"
(string-append
;; These tests require Docker.
"-k" "not test_terminate_job \
and not test_invoke_function_from_sqs_exception"))))))
"not test_terminate_job"
" and not test_invoke_function_from_sqs_exception"
" and not test_rotate_secret_lambda_invocations"
;; These tests also require the network.
" and not test_put_record_batch_http_destination"
" and not test_put_record_http_destination"
" and not test_dependencies"
" and not test_cancel_running_job"
" and not test_container_overrides"))))))))
(native-inputs
`(("python-flask" ,python-flask)
("python-flask-cors" ,python-flask-cors)
@ -13418,6 +13426,8 @@ and not test_invoke_function_from_sqs_exception"))))))
("python-parameterized" ,python-parameterized)
("python-pytest" ,python-pytest)
("python-sure" ,python-sure)))
(inputs
`(("bash" ,bash-minimal)))
(propagated-inputs
`(("python-aws-xray-sdk" ,python-aws-xray-sdk)
("python-boto" ,python-boto)
@ -13761,14 +13771,14 @@ This software is unmaintained, and new projects should use @code{boto3} instead.
;; are compatible.
(package
(name "python-botocore")
(version "1.21.64")
(version "1.22.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri "botocore" version))
(sha256
(base32
"0z8cdv3lyr8vw452zqm1r8k4gz4sbzlsqwg6avc3zm6pvajdqc0a"))))
"1z7g2scyzvfq4yj9b4w911k7802ry1v6lqfnwq12l0ak7ywmsvrh"))))
(build-system python-build-system)
(arguments
;; FIXME: Many tests are failing.
@ -13789,7 +13799,7 @@ interface to the Amazon Web Services (AWS) API.")
(define-public python-boto3
(package
(name "python-boto3")
(version "1.18.64")
(version "1.19.11")
(home-page "https://github.com/boto/boto3")
(source (origin
(method git-fetch)
@ -13797,7 +13807,7 @@ interface to the Amazon Web Services (AWS) API.")
(file-name (git-file-name name version))
(sha256
(base32
"02hy80xfyxln5yr43cbrmq3kpkdijv8v228alz1x92y4gghnb8cj"))))
"1wv0ci2z5ywvm63dh4mp64vqyyvkm4qxc8dxv8ncrqiiphpgr9aq"))))
(arguments
`(#:phases
(modify-phases %standard-phases

View File

@ -39,16 +39,22 @@
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages ibus)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages kde)
#:use-module (gnu packages linux)
#:use-module (gnu packages networking)
#:use-module (gnu packages ssh)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
@ -56,7 +62,8 @@
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control))
#:use-module (gnu packages version-control)
#:use-module (gnu packages xorg))
(define-public agate
(package
@ -536,14 +543,6 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
(sha256
(base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s"))))
(build-system cargo-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("curl" ,curl)
("dbus" ,dbus)
("pulseaudio" ,pulseaudio)
("openssl" ,openssl)
("zlib" ,zlib)))
(arguments
`(#:features '("pulseaudio" "libpulse-binding")
#:install-source? #f
@ -573,6 +572,9 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
(("rust-assert-fs" ,rust-assert-fs-1))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enable-unstable-features
(lambda _
(setenv "RUSTC_BOOTSTRAP" "1")))
(add-after 'unpack 'fix-resources-path
(lambda* (#:key outputs #:allow-other-keys)
(let ((resources (string-append %output "/share")))
@ -581,10 +583,38 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
(add-after 'install 'install-resources
(lambda* (#:key outputs #:allow-other-keys)
(copy-recursively "files" (string-append %output "/share"))))
(add-after 'unpack 'enable-unstable-features
(lambda _
(setenv "RUSTC_BOOTSTRAP" "1")
#t)))))
(add-after 'install 'wrap-i3status
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(paths (map
(lambda (input)
(string-append (assoc-ref inputs input) "/bin"))
'("alsa-utils" "coreutils" "curl" "dbus" "ibus" "iproute"
"kdeconnect" "lm-sensors" "pulseaudio"
"openssl"
"setxkbmap" "speedtest-cli" "xdg-utils" "xrandr"
"zlib"))))
(wrap-program (string-append out "/bin/i3status-rs")
`("PATH" prefix ,paths))))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("alsa-utils" ,alsa-utils)
("bash-minimal" ,bash-minimal)
("coreutils" ,coreutils)
("curl" ,curl)
("dbus" ,dbus)
("ibus" ,ibus)
("iproute" ,iproute)
("kdeconnect" ,kdeconnect)
("lm-sensors" ,lm-sensors)
("pulseaudio" ,pulseaudio)
("openssl" ,openssl)
("setxkbmap" ,setxkbmap)
("speedtest-cli" ,speedtest-cli)
("xdg-utils" ,xdg-utils)
("xrandr" ,xrandr)
("zlib" ,zlib)))
(home-page "https://github.com/greshake/i3status-rust")
(synopsis "i3status, written in pure Rust")
(description "@code{i3status-rs} is a feature-rich and resource-friendly
@ -1051,6 +1081,41 @@ show number of files, total lines within those files and code, comments, and
blanks grouped by language.")
(license (list license:expat license:asl2.0))))
(define-public vivid
(package
(name "vivid")
(version "0.7.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "vivid" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "01fds6dm19bqgqydaa6n051v9l4wh9rb5d6sr9akwp2cc0fs43b7"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-ansi-colours" ,rust-ansi-colours-1)
("rust-clap" ,rust-clap-2)
("rust-dirs" ,rust-dirs-3)
("rust-lazy-static" ,rust-lazy-static-1)
("rust-rust-embed" ,rust-rust-embed-5)
("rust-yaml-rust" ,rust-yaml-rust-0.4))))
(home-page "https://github.com/sharkdp/vivid")
(synopsis "LS_COLORS environment variable manager")
(description
"vivid is a generator for the @code{LS_COLORS} environment variable that
controls the colorized output of ls, tree, fd, bfs, dust and many other tools.
It uses a YAML configuration format for the filetype-database and the color
themes. In contrast to @command{dircolors}, the database and the themes are
organized in different files. This allows users to choose and customize color
themes independent from the collection of file extensions. Instead of using
cryptic ANSI escape codes, colors can be specified in the RRGGBB format and
will be translated to either truecolor (24-bit) ANSI codes or 8-bit codes for
older terminal emulators.")
(license (list license:expat license:asl2.0))))
(define-public watchexec
(package
(name "watchexec")

View File

@ -16,6 +16,7 @@
;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -36,7 +37,7 @@
#:use-module (gnu packages)
#:use-module ((guix licenses)
#:select (gpl2+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ asl2.0 bsd-3
cc-by-sa4.0 non-copyleft expat))
cc-by-sa4.0 non-copyleft expat public-domain))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@ -792,6 +793,45 @@ program-point-specific low-level representation selection and code
generation.")
(license gpl2+))))
(define-public s9fes
(package
(name "s9fes")
(version "20181205")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.t3x.org/s9fes/s9fes-" version ".tgz"))
(sha256
(base32 "0ynpl707bc9drwkdpdgvw14bz9zmwd3wffl1k02sxppjl28xm7rf"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
(list (string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key make-flags #:allow-other-keys)
(apply invoke "make" "install-all" make-flags))))
#:tests? #f)) ; No check target.
(inputs
`(("ncurses" ,ncurses)))
(home-page "https://www.t3x.org/s9fes/")
(synopsis "Interpreter for R4RS Scheme")
(description
"Scheme 9 from Empty Space (S9fES) is a mature, portable, and
comprehensible public-domain interpreter for R4RS Scheme offering:
@itemize
@item bignum arithmetics
@item decimal-based real number arithmetics
@item support for low-level Unix programming
@item cursor addressing with Curses
@item basic networking procedures
@item an integrated online help system
@item loads of useful library functions
@end itemize")
(license public-domain)))
(define-public femtolisp
(let ((commit "ec7601076a976f845bc05ad6bd3ed5b8cde58a97")
(revision "2"))

View File

@ -3,7 +3,7 @@
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017 Sou Bunnbu <iyzsong@member.fsf.org>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
@ -34,7 +34,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (gnu packages)
#:use-module ((guix licenses) #:hide (freetype))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@ -43,6 +43,7 @@
#:use-module (guix build-system trivial)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
#:use-module (gnu packages fcitx)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
@ -110,7 +111,7 @@
library designed to provide low level access to audio, keyboard, mouse,
joystick, and graphics hardware.")
(home-page "https://libsdl.org/")
(license lgpl2.1)))
(license license:lgpl2.1)))
(define-public sdl2
(package (inherit sdl)
@ -153,7 +154,7 @@ joystick, and graphics hardware.")
("wayland" ,wayland)
("wayland-protocols" ,wayland-protocols))
(package-inputs sdl)))
(license bsd-3)))
(license license:bsd-3)))
(define-public libmikmod
(package
@ -182,7 +183,7 @@ joystick, and graphics hardware.")
"MikMod is able to play a wide range of module formats, as well as
digital sound files. It can take advantage of particular features of your
system, such as sound redirection over the network.")
(license lgpl2.1)
(license license:lgpl2.1)
(home-page "http://mikmod.sourceforge.net/")))
(define-public sdl-gfx
@ -211,7 +212,7 @@ system, such as sound redirection over the network.")
(description "SDL_gfx provides graphics drawing primitives, rotozoom and
other supporting functions for SDL.")
(home-page "http://www.ferzkopp.net/joomla/software-mainmenu-14/4-ferzkopps-linux-software/19-sdlgfx")
(license zlib)))
(license license:zlib)))
(define-public sdl-image
(package
@ -248,7 +249,7 @@ other supporting functions for SDL.")
supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF,
WEBP, XCF, XPM, and XV.")
(home-page "https://www.libsdl.org/projects/SDL_image/")
(license zlib)))
(license license:zlib)))
(define-public sdl-mixer
(package
@ -303,7 +304,7 @@ and specify it using the @code{SDL_SOUNDFONTS} environment variable. For the
legacy @code{timidity} backend, install a patch set such as @code{freepats}
and set the path to the configuration file with @code{TIMIDITY_CFG}.")
(home-page "https://www.libsdl.org/projects/SDL_mixer/")
(license zlib)))
(license license:zlib)))
(define-public sdl-net
(package
@ -325,7 +326,7 @@ and set the path to the configuration file with @code{TIMIDITY_CFG}.")
(description "SDL_net is a small, cross-platform networking library for
SDL.")
(home-page "https://www.libsdl.org/projects/SDL_net/")
(license zlib)))
(license license:zlib)))
(define-public sdl-pango
(package
@ -371,7 +372,7 @@ SDL.")
(description "This library is a wrapper around the Pango library.
It allows you to use TrueType fonts to render internationalized and
tagged text in SDL applications.")
(license lgpl2.1)))
(license license:lgpl2.1)))
(define-public sdl-ttf
(package
@ -400,7 +401,7 @@ tagged text in SDL applications.")
(synopsis "SDL TrueType font library")
(description "SDL_ttf is a TrueType font rendering library for SDL.")
(home-page "https://www.libsdl.org/projects/SDL_ttf/")
(license zlib)))
(license license:zlib)))
(define* (sdl-union #:optional (packages (list sdl sdl-gfx sdl-net sdl-ttf
sdl-image sdl-mixer)))
@ -546,21 +547,22 @@ directory.")
(define-public guile-sdl
(package
(name "guile-sdl")
(version "0.5.2")
(version "0.5.3")
(source (origin
(method url-fetch)
(uri
(string-append "mirror://gnu/guile-sdl/guile-sdl-"
version ".tar.xz"))
version ".tar.lz"))
(sha256
(base32
"0cjgs012a9922hn6xqwj66w6qmfs3nycnm56hyykx5n3g5p7ag01"))))
"040gyk3n3yp8i30ngdg97n3083g8b6laky2nlh10jqcyjdd550d6"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
`(("lzip" ,lzip)
("pkg-config" ,pkg-config)
;; Required by test suite.
("xorg-server" ,xorg-server)
("libjpeg" ,libjpeg-turbo)))
("libjpeg" ,libjpeg-turbo)
("xorg-server" ,xorg-server)))
(inputs
`(("guile" ,guile-2.2)
("sdl-union" ,(sdl-union))))
@ -621,7 +623,7 @@ directory.")
Layer (SDL). With them, Guile programmers can have easy access to graphics,
sound and device input (keyboards, joysticks, mice, etc.).")
(home-page "https://www.gnu.org/software/guile-sdl/")
(license gpl3+)))
(license license:gpl3+)))
(define-public guile-sdl2
(package
@ -651,7 +653,7 @@ sound and device input (keyboards, joysticks, mice, etc.).")
"Guile-SDL2 provides Guile Scheme bindings for the SDL2 C shared library.
The bindings are written in pure Scheme using Guile's foreign function
interface.")
(license lgpl3+)))
(license license:lgpl3+)))
(define-public guile2.2-sdl2
(package/inherit guile-sdl2
@ -704,4 +706,4 @@ interface.")
"SDL2-CS provides C# bindings for the SDL2 C shared library.
The C# wrapper was written to be used for FNA's platform support. However, this
is written in a way that can be used for any general C# application.")
(license zlib))))
(license license:zlib))))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -22,22 +23,22 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages guile))
(define-public serveez
(package
(name "serveez")
(version "0.2.2")
(version "0.3.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/serveez/serveez-"
version ".tar.xz"))
version ".tar.lz"))
(sha256
(base32
"09a5jh762ps71ivlg7vdlzp3y29ncl3nsad7qbcni78bq2mzwxsc"))))
"0capm8i6fyjvh5rflxkfd07llfaa0kk4i3y836qpld9vzy49q6ky"))))
(build-system gnu-build-system)
(inputs `(("guile" ,guile-2.0)))
(arguments
`(#:configure-flags '("--enable-libserveez-install")
#:phases
@ -48,6 +49,10 @@
(find-files "test" "^t[0-9]{3}$")
(("/bin/sh") (which "sh")))
#t)))))
(native-inputs
`(("lzip" ,lzip)))
(inputs
`(("guile" ,guile-2.2)))
(home-page "https://www.gnu.org/software/serveez/")
(synopsis "Framework for implementing IP-based servers")
(description

View File

@ -55,6 +55,44 @@
#:use-module (gnu packages tmux)
#:use-module (gnu packages vim))
(define-public ascii
(package
(name "ascii")
(version "3.18")
(source (origin
(method url-fetch)
(uri (string-append "http://www.catb.org/~esr/ascii/"
"ascii-" version ".tar.gz"))
(sha256
(base32
"0b87vy06s8s3a8q70pqavsbk4m4ff034sdml2xxa6qfsykaj513j"))))
(build-system gnu-build-system)
(arguments `(#:make-flags
(list (string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'install 'create-directories
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man1 (string-append out "/share/man/man1")))
(mkdir-p bin)
(mkdir-p man1)))))
#:tests? #f))
(home-page "http://www.catb.org/~esr/ascii/")
(synopsis "ASCII name and synonym chart")
(description
"The @code{ascii} utility provides easy conversion between various byte
representations and the American Standard Code for Information Interchange
(ASCII) character table. It knows about a wide variety of hex, binary, octal,
Teletype mnemonic, ISO/ECMA code point, slang names, XML entity names, and
other representations. Given any one on the command line, it will try to
display all others. Called with no arguments it displays a handy small ASCII
chart.")
(license license:bsd-2)))
(define-public boxes
(package
(name "boxes")

View File

@ -10,6 +10,7 @@
;;; Copyright © 20182021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2021 Nikolay Korotkiy <sikmir@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -963,3 +964,31 @@ running a command.")
Single daemon and configuration file. Log to stdout or syslog. No mail
support.")
(license license:expat)))
(define-public sfm
(package
(name "sfm")
(version "0.4")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "git://git.afify.dev/sfm.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0g6k884mggryld0k054sjcj6kpkbca9cvr50w98klszym73yw0sp"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ;no check target
#:make-flags
(list (string-append "CC=" ,(cc-for-target))
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(delete 'configure)))) ;no configure script
(home-page "https://github.com/afify/sfm")
(synopsis "Simple file manager")
(description "sfm is a simple file manager.")
(license license:isc)))

View File

@ -2715,7 +2715,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.")
(define-public stagit
(package
(name "stagit")
(version "0.9.6")
(version "1.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -2724,7 +2724,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.")
(file-name (git-file-name name version))
(sha256
(base32
"0hcf1rmsp9s6jjg1dypq7sa3dqmqg2q3x1kj23rb5gwrsb31vyfj"))))
"0j2242vx5pbwdv79gcjxdbrwii48qphr8gk1lk7szj2irxdql171"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; No tests

View File

@ -695,7 +695,7 @@ is fully configurable and extensible in Common Lisp.")
(define-public lagrange
(package
(name "lagrange")
(version "1.8.2")
(version "1.9.2")
(source
(origin
(method url-fetch)
@ -703,7 +703,7 @@ is fully configurable and extensible in Common Lisp.")
(string-append "https://git.skyjake.fi/skyjake/lagrange/releases/"
"download/v" version "/lagrange-" version ".tar.gz"))
(sha256
(base32 "1wb4gqn32sja2qik04chlcl743arr6c844zczy1a2aad5103cnip"))
(base32 "1j4r2c6f9fqc22f14fjh28s324kfbb9ahf08nv0xlazy1y5g7f6d"))
(modules '((guix build utils)))
(snippet
'(begin

View File

@ -7952,24 +7952,22 @@ solution for any project's interface needs:
(license license:expat)))
(define-public gmnisrv
(let ((commit "32854b79c73b278bf33eb5123abf1c36abdc7c01")
(revision "2"))
(package
(name "gmnisrv")
(version (git-version "0" revision commit))
(version "1.0")
(home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
(source (origin
(source
(origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit commit)))
(commit version)))
(sha256
(base32
"0lbb3ablwkdcgm1cjr1hikr55y8gpl420nh8b8g9wn4abhm2xgr9"))
(base32 "115r1dw9k08r2nvygy8ll21qvsc5kmzi5jcqm7g7r8q8hifxglap"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no check target
`(#:tests? #f ;no check target
#:configure-flags (list "--sysconfdir=/etc"
(string-append "--with-mimedb="
(assoc-ref %build-inputs "mailcap")
@ -7984,7 +7982,7 @@ solution for any project's interface needs:
(synopsis "Simple Gemini protocol server")
(description "gmnisrv is a simple Gemini protocol server written in C.")
(license (list license:gpl3+
license:bsd-3))))) ;; for ini.c and ini.h
license:bsd-3)))) ;; for ini.c and ini.h
(define-public libzim
(package

View File

@ -35,6 +35,8 @@
(define-module (gnu services base)
#:use-module (guix store)
#:use-module (guix deprecation)
#:autoload (guix diagnostics) (warning)
#:autoload (guix i18n) (G_)
#:use-module (gnu services)
#:use-module (gnu services admin)
#:use-module (gnu services shepherd)
@ -53,6 +55,8 @@
#:use-module (gnu packages bash)
#:use-module ((gnu packages base)
#:select (coreutils glibc glibc-utf8-locales))
#:autoload (gnu packages guile-xyz) (guile-netlink)
#:autoload (gnu packages hurd) (hurd)
#:use-module (gnu packages package-management)
#:use-module ((gnu packages gnupg) #:select (guile-gcrypt))
#:use-module (gnu packages linux)
@ -83,17 +87,38 @@
virtual-terminal-service-type
static-networking
static-networking?
static-networking-interface
static-networking-ip
static-networking-netmask
static-networking-gateway
static-networking-addresses
static-networking-links
static-networking-routes
static-networking-requirement
network-address
network-address?
network-address-device
network-address-value
network-address-ipv6?
network-link
network-link?
network-link-name
network-link-type
network-link-arguments
network-route
network-route?
network-route-destination
network-route-source
network-route-device
network-route-ipv6?
network-route-gateway
static-networking-service
static-networking-service-type
%loopback-static-networking
%qemu-static-networking
udev-configuration
udev-configuration?
udev-configuration-rules
@ -2354,72 +2379,267 @@ notably to select, copy, and paste text. The default options use the
(description "Start the @command{kmscon} virtual terminal emulator for the
Linux @dfn{kernel mode setting} (KMS).")))
;;;
;;; Static networking.
;;;
(define (ipv6-address? str)
"Return true if STR denotes an IPv6 address."
(false-if-exception (->bool (inet-pton AF_INET6 str))))
(define-record-type* <static-networking>
static-networking make-static-networking
static-networking?
(interface static-networking-interface)
(ip static-networking-ip)
(netmask static-networking-netmask
(default #f))
(gateway static-networking-gateway ;FIXME: doesn't belong here
(default #f))
(addresses static-networking-addresses) ;list of <network-address>
(links static-networking-links (default '())) ;list of <network-link>
(routes static-networking-routes (default '())) ;list of <network-routes>
(provision static-networking-provision
(default #f))
(default '(networking)))
(requirement static-networking-requirement
(default '()))
(default '(udev)))
(name-servers static-networking-name-servers ;FIXME: doesn't belong here
(default '())))
(define static-networking-shepherd-service
(define-record-type* <network-address>
network-address make-network-address
network-address?
(device network-address-device) ;string--e.g., "en01"
(value network-address-value) ;string--CIDR notation
(ipv6? network-address-ipv6? ;Boolean
(thunked)
(default
(ipv6-address? (cidr->ip (network-address-value this-record))))))
(define-record-type* <network-link>
network-link make-network-link
network-link?
(name network-link-name) ;string--e.g, "v0p0"
(type network-link-type) ;symbol--e.g.,'veth
(arguments network-link-arguments)) ;list
(define-record-type* <network-route>
network-route make-network-route
network-route?
(destination network-route-destination)
(source network-route-source (default #f))
(device network-route-device (default #f))
(ipv6? network-route-ipv6? (thunked)
(default
(or (ipv6-address? (network-route-destination this-record))
(and=> (network-route-gateway this-record)
ipv6-address?))))
(gateway network-route-gateway (default #f)))
(define* (cidr->netmask str #:optional (family AF_INET))
"Given @var{str}, a string in CIDR notation (e.g., \"1.2.3.4/24\"), return
the netmask as a string like \"255.255.255.0\"."
(match (string-split str #\/)
((ip (= string->number bits))
(let ((mask (ash (- (expt 2 bits) 1)
(- (if (= family AF_INET6) 128 32)
bits))))
(inet-ntop family mask)))
(_ #f)))
(define (cidr->ip str)
"Strip the netmask bit of @var{str}, a CIDR-notation IP/netmask address."
(match (string-split str #\/)
((or (ip _) (ip))
ip)))
(define* (ip+netmask->cidr ip netmask #:optional (family AF_INET))
"Return the CIDR notation (a string) for @var{ip} and @var{netmask}, two
@var{family} address strings, where @var{family} is @code{AF_INET} or
@code{AF_INET6}."
(let* ((netmask (inet-pton family netmask))
(bits (logcount netmask)))
(string-append ip "/" (number->string bits))))
(define (static-networking->hurd-pfinet-options config)
"Return command-line options for the Hurd's pfinet translator corresponding
to CONFIG."
(unless (null? (static-networking-links config))
;; XXX: Presumably this is not supported, or perhaps could be approximated
;; by running separate pfinet instances in some cases?
(warning (G_ "network links are currently ignored on GNU/Hurd~%")))
(match (static-networking-addresses config)
((and addresses (first _ ...))
`("--ipv6" "/servers/socket/26"
"--interface" ,(network-address-device first)
,@(append-map (lambda (address)
`(,(if (network-address-ipv6? address)
"--address6"
"--address")
,(cidr->ip (network-address-value address))
,@(match (cidr->netmask (network-address-value address)
(if (network-address-ipv6? address)
AF_INET6
AF_INET))
(#f '())
(mask (list "--netmask" mask)))))
addresses)
,@(append-map (lambda (route)
(match route
(($ <network-route> "default" #f device _ gateway)
(if (network-route-ipv6? route)
`("--gateway6" ,gateway)
`("--gateway" ,gateway)))
(($ <network-route> destination)
(warning (G_ "ignoring network route for '~a'~%")
destination)
'())))
(static-networking-routes config))))))
(define (network-set-up/hurd config)
"Set up networking for the Hurd."
;; The Hurd implements SIOCGIFADDR and other old-style ioctls, but the only
;; way to set up IPv6 is by starting pfinet with the right options.
(if (equal? (static-networking-provision config) '(loopback))
(scheme-file "set-up-pflocal" #~(begin 'nothing-to-do! #t))
(scheme-file "set-up-pfinet"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(ice-9 format))
;; TODO: Do that without forking.
(let ((options '#$(static-networking->hurd-pfinet-options
config)))
(format #t "starting '~a~{ ~s~}'~%"
#$(file-append hurd "/hurd/pfinet")
options)
(apply invoke #$(file-append hurd "/bin/settrans") "-fac"
"/servers/socket/2"
#$(file-append hurd "/hurd/pfinet")
options)))))))
(define (network-tear-down/hurd config)
(scheme-file "tear-down-pfinet"
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
;; Forcefully terminate pfinet. XXX: In theory this
;; should just undo the addresses and routes of CONFIG;
;; this could be done using ioctls like SIOCDELRT, but
;; these are IPv4-only; another option would be to use
;; fsysopts but that seems to crash pfinet.
(invoke #$(file-append hurd "/bin/settrans") "-fg"
"/servers/socket/2")
#f))))
(define network-set-up/linux
(match-lambda
(($ <static-networking> interface ip netmask gateway provision
requirement name-servers)
(($ <static-networking> addresses links routes)
(scheme-file "set-up-network"
(with-extensions (list guile-netlink)
#~(begin
(use-modules (ip addr) (ip link) (ip route))
#$@(map (lambda (address)
#~(begin
(addr-add #$(network-address-device address)
#$(network-address-value address)
#:ipv6?
#$(network-address-ipv6? address))
;; FIXME: loopback?
(link-set #$(network-address-device address)
#:up #t)))
addresses)
#$@(map (match-lambda
(($ <network-link> name type arguments)
#~(link-add #$name #$type
#:type-args '#$arguments)))
links)
#$@(map (lambda (route)
#~(route-add #$(network-route-destination route)
#:device
#$(network-route-device route)
#:ipv6?
#$(network-route-ipv6? route)
#:via
#$(network-route-gateway route)
#:src
#$(network-route-source route)))
routes)
#t))))))
(define network-tear-down/linux
(match-lambda
(($ <static-networking> addresses links routes)
(scheme-file "tear-down-network"
(with-extensions (list guile-netlink)
#~(begin
(use-modules (ip addr) (ip link) (ip route)
(netlink error)
(srfi srfi-34))
(define-syntax-rule (false-if-netlink-error exp)
(guard (c ((netlink-error? c) #f))
exp))
;; Wrap calls in 'false-if-netlink-error' so this
;; script goes as far as possible undoing the effects
;; of "set-up-network".
#$@(map (lambda (route)
#~(false-if-netlink-error
(route-del #$(network-route-destination route)
#:device
#$(network-route-device route)
#:ipv6?
#$(network-route-ipv6? route)
#:via
#$(network-route-gateway route)
#:src
#$(network-route-source route))))
routes)
#$@(map (match-lambda
(($ <network-link> name type arguments)
#~(false-if-netlink-error
(link-del #$name))))
links)
#$@(map (lambda (address)
#~(false-if-netlink-error
(addr-del #$(network-address-device
address)
#$(network-address-value address)
#:ipv6?
#$(network-address-ipv6? address))))
addresses)
#f))))))
(define (static-networking-shepherd-service config)
(match config
(($ <static-networking> addresses links routes
provision requirement name-servers)
(let ((loopback? (and provision (memq 'loopback provision))))
(shepherd-service
(documentation
"Bring up the networking interface using a static IP address.")
(requirement requirement)
(provision (or provision
(list (symbol-append 'networking-
(string->symbol interface)))))
(provision provision)
(start #~(lambda _
;; Return #t if successfully started.
(let* ((addr (inet-pton AF_INET #$ip))
(sockaddr (make-socket-address AF_INET addr 0))
(mask (and #$netmask
(inet-pton AF_INET #$netmask)))
(maskaddr (and mask
(make-socket-address AF_INET
mask 0)))
(gateway (and #$gateway
(inet-pton AF_INET #$gateway)))
(gatewayaddr (and gateway
(make-socket-address AF_INET
gateway 0))))
(configure-network-interface #$interface sockaddr
(logior IFF_UP
#$(if loopback?
#~IFF_LOOPBACK
0))
#:netmask maskaddr)
(when gateway
(let ((sock (socket AF_INET SOCK_DGRAM 0)))
(add-network-route/gateway sock gatewayaddr)
(close-port sock))))))
(load #$(let-system (system target)
(if (string-contains (or target system) "-linux")
(network-set-up/linux config)
(network-set-up/hurd config))))))
(stop #~(lambda _
;; Return #f is successfully stopped.
(let ((sock (socket AF_INET SOCK_STREAM 0)))
(when #$gateway
(delete-network-route sock
(make-socket-address
AF_INET INADDR_ANY 0)))
(set-network-interface-flags sock #$interface 0)
(close-port sock)
#f)))
(load #$(let-system (system target)
(if (string-contains (or target system) "-linux")
(network-tear-down/linux config)
(network-tear-down/hurd config))))))
(respawn? #f))))))
(define (static-networking-shepherd-services networks)
(map static-networking-shepherd-service networks))
(define (static-networking-etc-files interfaces)
"Return a /etc/resolv.conf entry for INTERFACES or the empty list."
(match (delete-duplicates
@ -2438,30 +2658,6 @@ Linux @dfn{kernel mode setting} (KMS).")))
# Generated by 'static-networking-service'.\n"
content))))))))
(define (static-networking-shepherd-services interfaces)
"Return the list of Shepherd services to bring up INTERFACES, a list of
<static-networking> objects."
(define (loopback? service)
(memq 'loopback (shepherd-service-provision service)))
(let ((services (map static-networking-shepherd-service interfaces)))
(match (remove loopback? services)
(()
;; There's no interface other than 'loopback', so we assume that the
;; 'networking' service will be provided by dhclient or similar.
services)
((non-loopback ...)
;; Assume we're providing all the interfaces, and thus, provide a
;; 'networking' service.
(cons (shepherd-service
(provision '(networking))
(requirement (append-map shepherd-service-provision
services))
(start #~(const #t))
(stop #~(const #f))
(documentation "Bring up all the networking interfaces."))
services)))))
(define static-networking-service-type
;; The service type for statically-defined network interfaces.
(service-type (name 'static-networking)
@ -2479,12 +2675,13 @@ with the given IP address, gateway, netmask, and so on. The value for
services of this type is a list of @code{static-networking} objects, one per
network interface.")))
(define* (static-networking-service interface ip
(define-deprecated (static-networking-service interface ip
#:key
netmask gateway provision
;; Most interfaces require udev to be usable.
(requirement '(udev))
(name-servers '()))
static-networking-service-type
"Return a service that starts @var{interface} with address @var{ip}. If
@var{netmask} is true, use it as the network mask. If @var{gateway} is true,
it must be a string specifying the default network gateway.
@ -2495,12 +2692,48 @@ interface of interest. Behind the scenes what it does is extend
to handle."
(simple-service 'static-network-interface
static-networking-service-type
(list (static-networking (interface interface) (ip ip)
(netmask netmask) (gateway gateway)
(provision provision)
(list (static-networking
(addresses
(list (network-address
(device interface)
(value (if netmask
(ip+netmask->cidr ip netmask)
ip))
(ipv6? #f))))
(routes
(if gateway
(list (network-route
(destination "default")
(gateway gateway)
(ipv6? #f)))
'()))
(requirement requirement)
(provision (or provision '(networking)))
(name-servers name-servers)))))
(define %loopback-static-networking
;; The loopback device.
(static-networking
(addresses (list (network-address
(device "lo")
(value "127.0.0.1"))))
(requirement '())
(provision '(loopback))))
(define %qemu-static-networking
;; Networking configuration for QEMU's user-mode network stack (info "(QEMU)
;; Using the user mode network stack").
(static-networking
(addresses (list (network-address
(device "eth0")
(value "10.0.2.15/24"))))
(routes (list (network-route
(destination "default")
(gateway "10.0.2.2"))))
(requirement '())
(provision '(networking))
(name-servers '("10.0.2.3"))))
(define %base-services
;; Convenience variable holding the basic services.
@ -2531,10 +2764,7 @@ to handle."
(tty "tty6")))
(service static-networking-service-type
(list (static-networking (interface "lo")
(ip "127.0.0.1")
(requirement '())
(provision '(loopback)))))
(list %loopback-static-networking))
(syslog-service)
(service urandom-seed-service-type)
(service guix-service-type)

View File

@ -898,23 +898,44 @@ specified, the QEMU default path is used."))
;;; Secrets for guest VMs.
;;;
(define (secret-service-activation port)
"Return an activation snippet that fetches sensitive material at local PORT,
(define (secret-service-shepherd-services port)
"Return a Shepherd service that fetches sensitive material at local PORT,
over TCP. Reboot upon failure."
(with-imported-modules '((gnu build secret-service)
;; This is a Shepherd service, rather than an activation snippet, to make
;; sure it is started once 'networking' is up so it can accept incoming
;; connections.
(list
(shepherd-service
(documentation "Fetch secrets from the host at startup time.")
(provision '(secret-service-client))
(requirement '(loopback networking))
(modules '((gnu build secret-service)
(guix build utils)))
(start (with-imported-modules '((gnu build secret-service)
(guix build utils))
#~(begin
(use-modules (gnu build secret-service))
#~(lambda ()
;; Since shepherd's output port goes to /dev/log, write this
;; message to stderr so it's visible on the Mach console.
(format (current-error-port)
"receiving secrets from the host...~%")
(force-output (current-error-port))
(let ((sent (secret-service-receive-secrets #$port)))
(unless sent
(sleep 3)
(reboot))))))
(stop #~(const #f)))))
(define secret-service-type
(service-type
(name 'secret-service)
(extensions (list (service-extension activation-service-type
secret-service-activation)))
(extensions (list (service-extension shepherd-root-service-type
secret-service-shepherd-services)
;; Make every Shepherd service depend on
;; 'secret-service-client'.
(service-extension user-processes-service-type
(const '(secret-service-client)))))
(description
"This service fetches secret key and other sensitive material over TCP at
boot time. This service is meant to be used by virtual machines (VMs) that

View File

@ -79,11 +79,13 @@
(service hurd-getty-service-type (hurd-getty-configuration
(tty "tty2")))
(service static-networking-service-type
(list (static-networking (interface "lo")
(ip "127.0.0.1")
(requirement '())
(provision '(loopback networking))
(name-servers '("10.0.2.3")))))
(list %loopback-static-networking
;; QEMU user-mode networking. To get "eth0", you need
;; QEMU to emulate a device for which Mach has an
;; in-kernel driver, for instance with:
;; --device rtl8139,netdev=net0 --netdev user,id=net0
%qemu-static-networking))
(syslog-service)
(service guix-service-type
(guix-configuration

View File

@ -408,10 +408,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
;; Loopback device, needed by OpenSSH notably.
(service static-networking-service-type
(list (static-networking (interface "lo")
(ip "127.0.0.1")
(requirement '())
(provision '(loopback)))))
(list %loopback-static-networking))
(service wpa-supplicant-service-type)
(dbus-service)

View File

@ -59,11 +59,8 @@
(packages (append (list ganeti-instance-debootstrap ganeti-instance-guix)
%base-packages))
(services
(append (list (static-networking-service "eth0" "10.0.2.15"
#:netmask "255.255.255.0"
#:gateway "10.0.2.2"
#:name-servers '("10.0.2.3"))
(append (list (service static-networking-service-type
(list %qemu-static-networking))
(service openssh-service-type
(openssh-configuration
(permit-root-login 'prohibit-password)))

View File

@ -4,6 +4,7 @@
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -37,9 +38,101 @@
#:use-module (gnu packages guile)
#:use-module (gnu services shepherd)
#:use-module (ice-9 match)
#:export (%test-inetd %test-openvswitch %test-dhcpd %test-tor %test-iptables
#:export (%test-static-networking
%test-inetd
%test-openvswitch
%test-dhcpd
%test-tor
%test-iptables
%test-ipfs))
;;;
;;; Static networking.
;;;
(define (run-static-networking-test vm)
(define test
(with-imported-modules '((gnu build marionette)
(guix build syscalls))
#~(begin
(use-modules (gnu build marionette)
(guix build syscalls)
(srfi srfi-64))
(define marionette
(make-marionette
'(#$vm "-nic" "user,model=virtio-net-pci")))
(mkdir #$output)
(chdir #$output)
(test-begin "static-networking")
(test-assert "service is up"
(marionette-eval
'(begin
(use-modules (gnu services herd))
(start-service 'networking))
marionette))
(test-assert "network interfaces"
(marionette-eval
'(begin
(use-modules (guix build syscalls))
(network-interface-names))
marionette))
(test-equal "address of eth0"
"10.0.2.15"
(marionette-eval
'(let* ((sock (socket AF_INET SOCK_STREAM 0))
(addr (network-interface-address sock "eth0")))
(close-port sock)
(inet-ntop (sockaddr:fam addr) (sockaddr:addr addr)))
marionette))
(test-equal "netmask of eth0"
"255.255.255.0"
(marionette-eval
'(let* ((sock (socket AF_INET SOCK_STREAM 0))
(mask (network-interface-netmask sock "eth0")))
(close-port sock)
(inet-ntop (sockaddr:fam mask) (sockaddr:addr mask)))
marionette))
(test-equal "eth0 is up"
IFF_UP
(marionette-eval
'(let* ((sock (socket AF_INET SOCK_STREAM 0))
(flags (network-interface-flags sock "eth0")))
(logand flags IFF_UP))
marionette))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))
(gexp->derivation "static-networking" test))
(define %test-static-networking
(system-test
(name "static-networking")
(description "Test the 'static-networking' service.")
(value
(let ((os (marionette-operating-system
(simple-operating-system
(service static-networking-service-type
(list %qemu-static-networking)))
#:imported-modules '((gnu services herd)
(guix combinators)))))
(run-static-networking-test (virtual-machine os))))))
;;;
;;; Inetd.
;;;
(define %inetd-os
;; Operating system with 2 inetd services.
(simple-operating-system
@ -177,9 +270,13 @@ port 7, and a dict service on port 2628."
(define %openvswitch-os
(operating-system
(inherit (simple-operating-system
(static-networking-service "ovs0" "10.1.1.1"
#:netmask "255.255.255.252"
#:requirement '(openvswitch-configuration))
(simple-service 'openswitch-networking
static-networking-service-type
(list (static-networking
(addresses (list (network-address
(value "10.1.1.1/24")
(device "ovs0"))))
(requirement '(openvswitch-configuration)))))
(service openvswitch-service-type)
openvswitch-configuration-service))
;; Ensure the interface name does not change depending on the driver.
@ -188,12 +285,15 @@ port 7, and a dict service on port 2628."
(define (run-openvswitch-test)
(define os
(marionette-operating-system %openvswitch-os
#:imported-modules '((gnu services herd))))
#:imported-modules '((gnu services herd)
(guix build syscalls))))
(define test
(with-imported-modules '((gnu build marionette))
(with-imported-modules '((gnu build marionette)
(guix build syscalls))
#~(begin
(use-modules (gnu build marionette)
(guix build syscalls)
(ice-9 popen)
(ice-9 rdelim)
(srfi srfi-64))
@ -234,11 +334,23 @@ port 7, and a dict service on port 2628."
(srfi srfi-1))
(live-service-running
(find (lambda (live)
(memq 'networking-ovs0
(memq 'networking
(live-service-provision live)))
(current-services))))
marionette))
(test-equal "ovs0 is up"
IFF_UP
(marionette-eval
'(begin
(use-modules (guix build syscalls))
(let* ((sock (socket AF_INET SOCK_STREAM 0))
(flags (network-interface-flags sock "ovs0")))
(close-port sock)
(logand flags IFF_UP)))
marionette))
(test-end))))
(gexp->derivation "openvswitch-test" test))
@ -276,10 +388,15 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
(define %dhcpd-os
(simple-operating-system
(static-networking-service "ens3" "192.168.1.4"
#:netmask "255.255.255.0"
#:gateway "192.168.1.1"
#:name-servers '("192.168.1.2" "192.168.1.3"))
(service static-networking-service-type
(list (static-networking
(addresses (list (network-address
(value "192.168.1.4/24")
(device "ens3"))))
(routes (list (network-route
(destination "default")
(gateway "192.168.1.1"))))
(name-servers '("192.168.1.2" "192.168.1.3")))))
(service dhcpd-service-type dhcpd-v4-configuration)))
(define (run-dhcpd-test)

View File

@ -144,7 +144,9 @@ must contain the original contents of a narinfo file."
(map (lambda (url)
(or (string->uri url)
(string->uri
(string-append cache-url "/" url))))
(if (string-suffix? "/" cache-url)
(string-append cache-url url)
(string-append cache-url "/" url)))))
urls)
compressions
(match file-sizes

View File

@ -270,9 +270,7 @@ ABBREVIATION used to shorten FILE for display."
tasks is performed. Write PREFIX at the beginning of the line."
(define done 0)
(define (report-progress)
(set! done (+ 1 done))
(unless (> done total)
(define (draw-bar)
(let* ((ratio (* 100. (/ done total))))
(erase-current-line port)
(if (string-null? prefix)
@ -282,7 +280,15 @@ tasks is performed. Write PREFIX at the beginning of the line."
(display prefix port)
(display " " port)
(display (progress-bar ratio width) port)))
(force-output port))))
(force-output port)))
(define draw-bar/rate-limited
(rate-limited draw-bar %progress-interval))
(define (report-progress)
(set! done (+ 1 done))
(unless (> done total)
(draw-bar/rate-limited)))
(progress-reporter
(start (lambda ()

View File

@ -35,10 +35,10 @@
#:use-module (gcrypt hash)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-71)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
#:use-module (ice-9 format)
@ -196,13 +196,16 @@ taken since we do not import the archives."
(define (port-sha256* port size)
;; Like 'port-sha256', but limited to SIZE bytes.
(let-values (((out get) (open-sha256-port)))
(let ((out get (open-sha256-port)))
(dump-port* port out size)
(close-port out)
(get)))
(define (archive-contents port)
"Return a list representing the files contained in the nar read from PORT."
"Return a list representing the files contained in the nar read from PORT.
The list is sorted in canonical order--i.e., the order in which entries appear
in the nar."
(reverse
(fold-archive (lambda (file type contents result)
(match type
((or 'regular 'executable)
@ -216,13 +219,15 @@ taken since we do not import the archives."
(cons `(,file ,type ,contents) result))))
'()
port
""))
"")))
(define (store-item-contents item)
"Return a list of files and contents for ITEM in the same format as
'archive-contents'."
(file-system-fold (const #t) ;enter?
(lambda (file stat result) ;leaf
(let loop ((file item))
(define stat
(lstat file))
(define short
(string-drop file (string-length item)))
@ -233,28 +238,26 @@ taken since we do not import the archives."
#o100))
'regular
'executable)))
(cons `(,short ,type
`((,short ,type
,(call-with-input-file file
(cut port-sha256* <> size)))
result)))
(cut port-sha256* <> size))))))
('symlink
(cons `(,short symlink ,(readlink file))
result))))
(lambda (directory stat result) result) ;down
(lambda (directory stat result) result) ;up
(lambda (file stat result) result) ;skip
(lambda (file stat errno result) result) ;error
'()
item
lstat))
`((,short symlink ,(readlink file))))
('directory
(append-map (match-lambda
((or "." "..")
'())
(entry
(loop (string-append file "/" entry))))
;; Traverse entries in canonical order, the same as the
;; order of entries in nars.
(scandir file (const #t) string<?))))))
(define (call-with-nar narinfo proc)
"Call PROC with an input port from which it can read the nar pointed to by
NARINFO."
(let*-values (((uri compression size)
(narinfo-best-uri narinfo))
((port actual-size)
(http-fetch uri)))
(let* ((uri compression size (narinfo-best-uri narinfo))
(port actual-size (http-fetch uri)))
(define reporter
(progress-reporter/file (narinfo-path narinfo)
(and size

View File

@ -156,7 +156,11 @@ indicates that PATH is unavailable at CACHE-URL."
(define (narinfo-request cache-url path)
"Return an HTTP request for the narinfo of PATH at CACHE-URL."
(let* ((base (string->uri cache-url))
;; Ensure BASE has a trailing slash so that REF is correct regardless of
;; whether the user-provided CACHE-URL has a trailing slash.
(let* ((base (string->uri (if (string-suffix? "/" cache-url)
cache-url
(string-append cache-url "/"))))
(ref (build-relative-ref
#:path (string-append (store-path-hash-part path) ".narinfo")))
(url (resolve-uri-reference ref base))