summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi913
-rw-r--r--etc/completion/bash/guix3
-rw-r--r--gnu/bootloader.scm13
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/augeas.scm5
-rw-r--r--gnu/packages/compression.scm4
-rw-r--r--gnu/packages/datamash.scm6
-rw-r--r--gnu/packages/emacs.scm4
-rw-r--r--gnu/packages/engineering.scm122
-rw-r--r--gnu/packages/enlightenment.scm23
-rw-r--r--gnu/packages/fonts.scm42
-rw-r--r--gnu/packages/freedesktop.scm60
-rw-r--r--gnu/packages/games.scm10
-rw-r--r--gnu/packages/gnome.scm114
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/golang.scm10
-rw-r--r--gnu/packages/gstreamer.scm3
-rw-r--r--gnu/packages/guile-wm.scm7
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/image.scm6
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/javascript.scm40
-rw-r--r--gnu/packages/kde.scm9
-rw-r--r--gnu/packages/libreoffice.scm23
-rw-r--r--gnu/packages/linux.scm48
-rw-r--r--gnu/packages/mail.scm4
-rw-r--r--gnu/packages/maths.scm34
-rw-r--r--gnu/packages/mp3.scm5
-rw-r--r--gnu/packages/mpi.scm54
-rw-r--r--gnu/packages/music.scm12
-rw-r--r--gnu/packages/networking.scm8
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/openjpeg-CVE-2017-12982.patch28
-rw-r--r--gnu/packages/patches/qemu-CVE-2017-12809.patch38
-rw-r--r--gnu/packages/photo.scm8
-rw-r--r--gnu/packages/pv.scm4
-rw-r--r--gnu/packages/python.scm71
-rw-r--r--gnu/packages/serialization.scm2
-rw-r--r--gnu/packages/skarnet.scm12
-rw-r--r--gnu/packages/statistics.scm25
-rw-r--r--gnu/packages/valgrind.scm9
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/virtualization.scm14
-rw-r--r--gnu/packages/web.scm41
-rw-r--r--gnu/packages/xdisorg.scm8
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/base.scm3
-rw-r--r--gnu/services/desktop.scm31
-rw-r--r--gnu/services/herd.scm33
-rw-r--r--gnu/services/virtualization.scm492
-rw-r--r--gnu/services/web.scm56
-rw-r--r--gnu/services/xorg.scm202
-rw-r--r--gnu/system/examples/bare-bones.tmpl2
-rw-r--r--gnu/system/examples/desktop.tmpl2
-rw-r--r--gnu/system/examples/lightweight-desktop.tmpl2
-rw-r--r--gnu/system/examples/vm-image.tmpl2
-rw-r--r--gnu/system/install.scm3
-rw-r--r--gnu/tests.scm2
-rw-r--r--gnu/tests/install.scm14
-rw-r--r--gnu/tests/nfs.scm2
-rw-r--r--gnu/tests/virtualization.scm95
-rw-r--r--guix/build/graft.scm22
-rw-r--r--guix/graph.scm16
-rw-r--r--guix/scripts/system.scm42
-rw-r--r--tests/grafts.scm34
-rw-r--r--tests/system.scm4
66 files changed, 2558 insertions, 371 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index bff0788b2f..e8b4d5e082 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -228,6 +228,7 @@ Services
* Continuous Integration:: The Cuirass service.
* Power management Services:: The TLP tool.
* Audio Services:: The MPD.
+* Virtualization Services:: Virtualization services.
* Miscellaneous Services:: Other services.
Defining Services
@@ -7963,9 +7964,13 @@ in particular:
@itemize
@item
-Make sure the @code{grub-configuration} form refers to the device you
-want to install GRUB on. You also need to specify the @code{grub-efi}
-package if you wish to use native UEFI boot.
+Make sure the @code{grub-configuration} form refers to the target you
+want to install GRUB on. It should mention @code{grub-bootloader} if
+you are installing GRUB in the legacy way, or @code{grub-efi-bootloader}
+for newer UEFI systems. For legacy systems, the @code{target} field
+names a device, like @code{/dev/sda}; for UEFI systems it names a path
+to a mounted EFI partition, like @code{/boot/efi}, and do make sure the
+path is actually mounted.
@item
Be sure that your partition labels match the value of their respective
@@ -9104,6 +9109,7 @@ declaration.
* Continuous Integration:: The Cuirass service.
* Power management Services:: The TLP tool.
* Audio Services:: The MPD.
+* Virtualization Services:: Virtualization services.
* Miscellaneous Services:: Other services.
@end menu
@@ -11566,14 +11572,14 @@ This is a list of services that builds upon @var{%base-services} and
adds or adjusts services for a typical ``desktop'' setup.
In particular, it adds a graphical login manager (@pxref{X Window,
-@code{slim-service}}), screen lockers,
-a network management tool (@pxref{Networking
-Services, @code{wicd-service}}), energy and color management services,
-the @code{elogind} login and seat manager, the Polkit privilege service,
-the GeoClue location service, an NTP client (@pxref{Networking
-Services}), the Avahi daemon, and has the name service switch service
-configured to be able to use @code{nss-mdns} (@pxref{Name Service
-Switch, mDNS}).
+@code{slim-service}}), screen lockers, a network management tool
+(@pxref{Networking Services, @code{wicd-service}}), energy and color
+management services, the @code{elogind} login and seat manager, the
+Polkit privilege service, the GeoClue location service, the
+AccountsService daemon that allows authorized users change system
+passwords, an NTP client (@pxref{Networking Services}), the Avahi
+daemon, and has the name service switch service configured to be able to
+use @code{nss-mdns} (@pxref{Name Service Switch, mDNS}).
@end defvr
The @var{%desktop-services} variable can be used as the @code{services}
@@ -11716,6 +11722,19 @@ their default values are:
@end table
@end deffn
+@deffn {Scheme Procedure} accountsservice-service @
+ [#:accountsservice @var{accountsservice}]
+Return a service that runs AccountsService, a system service that can
+list available accounts, change their passwords, and so on.
+AccountsService integrates with PolicyKit to enable unprivileged users
+to acquire the capability to modify their system configuration.
+@uref{https://www.freedesktop.org/wiki/Software/AccountsService/, the
+accountsservice web site} for more information.
+
+The @var{accountsservice} keyword argument is the @code{accountsservice}
+package to expose as a service.
+@end deffn
+
@deffn {Scheme Procedure} polkit-service @
[#:polkit @var{polkit}]
Return a service that runs the
@@ -14000,52 +14019,133 @@ Local accounts with lower values will silently fail to authenticate.
The @code{(gnu services web)} module provides the nginx web server and
also a fastcgi wrapper daemon.
-@deffn {Scheme Procedure} nginx-service [#:nginx nginx] @
- [#:log-directory ``/var/log/nginx''] @
- [#:run-directory ``/var/run/nginx''] @
- [#:server-list '()] @
- [#:upstream-list '()] @
- [#:config-file @code{#f}]
-
-Return a service that runs @var{nginx}, the nginx web server.
-
-The nginx daemon loads its runtime configuration from @var{config-file}.
-Log files are written to @var{log-directory} and temporary runtime data
-files are written to @var{run-directory}. For proper operation, these
-arguments should match what is in @var{config-file} to ensure that the
-directories are created when the service is activated.
-
-As an alternative to using a @var{config-file}, @var{server-list} can be
-used to specify the list of @dfn{server blocks} required on the host and
-@var{upstream-list} can be used to specify a list of @dfn{upstream
-blocks} to configure. For this to work, use the default value for
-@var{config-file}.
-
-At startup, @command{nginx} has not yet read its configuration file, so it
-uses a default file to log error messages. If it fails to load its
-configuration file, that is where error messages are logged. After the
-configuration file is loaded, the default error log file changes as per
-configuration. In our case, startup error messages can be found in
-@file{/var/run/nginx/logs/error.log}, and after configuration in
-@file{/var/log/nginx/error.log}. The second location can be changed with the
-@var{log-directory} configuration option.
+@deffn {Scheme Variable} nginx-service-type
+Service type for the @uref{https://nginx.org/,NGinx} web server. The
+value for this service type is a @code{<nginx-configuration>} record.
-@end deffn
+A simple example configuration is given below.
-@deffn {Scheme Variable} nginx-service-type
-This is type for the nginx web server.
+@example
+(service nginx-service-type
+ (nginx-configuration
+ (server-list
+ (list (nginx-server-configuration
+ (server-name '("www.example.com"))
+ (root "/srv/http/www.example.com")
+ (https-port #f)
+ (ssl-certificate #f)
+ (ssl-certificate-key #f))))))
+@end example
-This service can be extended to add server blocks in addition to the
-default one, as in this example:
+In addition to adding server blocks to the service configuration
+directly, this service can be extended by other services to add server
+blocks, as in this example:
@example
(simple-service 'my-extra-server nginx-service-type
(list (nginx-server-configuration
(https-port #f)
+ (ssl-certificate #f)
+ (ssl-certificate-key #f)
(root "/srv/http/extra-website"))))
@end example
@end deffn
+At startup, @command{nginx} has not yet read its configuration file, so
+it uses a default file to log error messages. If it fails to load its
+configuration file, that is where error messages are logged. After the
+configuration file is loaded, the default error log file changes as per
+configuration. In our case, startup error messages can be found in
+@file{/var/run/nginx/logs/error.log}, and after configuration in
+@file{/var/log/nginx/error.log}. The second location can be changed
+with the @var{log-directory} configuration option.
+
+@deffn {Data Type} nginx-configuration
+This data type represents the configuration for NGinx. Some
+configuration can be done through this and the other provided record
+types, or alternatively, a config file can be provided.
+
+@table @asis
+@item @code{nginx} (default: @code{nginx})
+The nginx package to use.
+
+@item @code{log-directory} (default: @code{"/var/log/nginx"})
+The directory to which NGinx will write log files.
+
+@item @code{run-directory} (default: @code{"/var/run/nginx"})
+The directory in which NGinx will create a pid file, and write temporary
+files.
+
+@item @code{server-list} (default: @code{'()})
+A list of @dfn{server blocks} to create in the generated configuration
+file, the elements should be of type
+@code{<nginx-server-configuration>}.
+
+The following example would setup NGinx to serve @code{www.example.com}
+from the @code{/srv/http/www.example.com} directory, without using
+HTTPS.
+@example
+(service nginx-service-type
+ (nginx-configuration
+ (server-list
+ (list (nginx-server-configuration
+ (server-name '("www.example.com"))
+ (root "/srv/http/www.example.com")
+ (https-port #f)
+ (ssl-certificate #f)
+ (ssl-certificate-key #f))))))
+@end example
+
+@item @code{upstream-list} (default: @code{'()})
+A list of @dfn{upstream blocks} to create in the generated configuration
+file, the elements should be of type
+@code{<nginx-upstream-configuration>}.
+
+Configuring upstreams through the @code{upstream-list} can be useful
+when combined with @code{locations} in the
+@code{<nginx-server-configuration>} records. The following example
+creates a server configuration with one location configuration, that
+will proxy requests to a upstream configuration, which will handle
+requests with two servers.
+
+@example
+(service
+ nginx-service-type
+ (nginx-configuration
+ (server-list
+ (list (nginx-server-configuration
+ (server-name '("www.example.com"))
+ (root "/srv/http/www.example.com")
+ (https-port #f)
+ (ssl-certificate #f)
+ (ssl-certificate-key #f)
+ (locations
+ (list
+ (nginx-location-configuration
+ (uri "/path1")
+ (body '("proxy_pass http://server-proxy;"))))))))
+ (upstream-list
+ (list (nginx-upstream-configuration
+ (name "server-proxy")
+ (servers (list "server1.example.com"
+ "server2.example.com")))))))
+@end example
+
+@item @code{config-file} (default: @code{#f})
+If the @var{config-file} is provided, this will be used, rather than
+generating a configuration file from the provided @code{log-directory},
+@code{run-directory}, @code{server-list} and @code{upstream-list}. For
+proper operation, these arguments should match what is in
+@var{config-file} to ensure that the directories are created when the
+service is activated.
+
+This can be useful if you have an existing configuration file, or it's
+not possible to do what is required through the other parts of the
+nginx-configuration record.
+
+@end table
+@end deffn
+
@deftp {Data Type} nginx-server-configuration
Data type representing the configuration of an nginx server block.
This type has the following parameters:
@@ -15757,6 +15857,713 @@ an absolute path can be specified here.
@end table
@end deftp
+@node Virtualization Services
+@subsubsection Virtualization services
+The @code{(gnu services virtualization)} module provides services for
+the libvirt and virtlog daemons.
+
+@subsubheading Libvirt daemon
+@code{libvirtd} is the server side daemon component of the libvirt
+virtualization management system. This daemon runs on host servers
+and performs required management tasks for virtualized guests.
+
+@deffn {Scheme Variable} libvirt-service-type
+This is the type of the @uref{https://libvirt.org, libvirt daemon}.
+Its value must be a @code{libvirt-configuration}.
+
+@example
+(service libvirt-service-type
+ (libvirt-configuration
+ (unix-sock-group "libvirt")
+ (tls-port "16555")))
+@end example
+@end deffn
+
+@c Auto-generated with (generate-libvirt-documentation)
+Available @code{libvirt-configuration} fields are:
+
+@deftypevr {@code{libvirt-configuration} parameter} package libvirt
+Libvirt package.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} boolean listen-tls?
+Flag listening for secure TLS connections on the public TCP/IP port.
+must set @code{listen} for this to have any effect.
+
+It is necessary to setup a CA and issue server certificates before using
+this capability.
+
+Defaults to @samp{#t}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} boolean listen-tcp?
+Listen for unencrypted TCP connections on the public TCP/IP port. must
+set @code{listen} for this to have any effect.
+
+Using the TCP socket requires SASL authentication by default. Only SASL
+mechanisms which support data encryption are allowed. This is
+DIGEST_MD5 and GSSAPI (Kerberos5)
+
+Defaults to @samp{#f}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string tls-port
+Port for accepting secure TLS connections This can be a port number, or
+service name
+
+Defaults to @samp{"16514"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string tcp-port
+Port for accepting insecure TCP connections This can be a port number,
+or service name
+
+Defaults to @samp{"16509"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string listen-addr
+IP address or hostname used for client connections.
+
+Defaults to @samp{"0.0.0.0"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} boolean mdns-adv?
+Flag toggling mDNS advertisement of the libvirt service.
+
+Alternatively can disable for all services on a host by stopping the
+Avahi daemon.
+
+Defaults to @samp{#f}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string mdns-name
+Default mDNS advertisement name. This must be unique on the immediate
+broadcast network.
+
+Defaults to @samp{"Virtualization Host <hostname>"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string unix-sock-group
+UNIX domain socket group ownership. This can be used to allow a
+'trusted' set of users access to management capabilities without
+becoming root.
+
+Defaults to @samp{"root"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string unix-sock-ro-perms
+UNIX socket permissions for the R/O socket. This is used for monitoring
+VM status only.
+
+Defaults to @samp{"0777"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string unix-sock-rw-perms
+UNIX socket permissions for the R/W socket. Default allows only root.
+If PolicyKit is enabled on the socket, the default will change to allow
+everyone (eg, 0777)
+
+Defaults to @samp{"0770"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string unix-sock-admin-perms
+UNIX socket permissions for the admin socket. Default allows only owner
+(root), do not change it unless you are sure to whom you are exposing
+the access to.
+
+Defaults to @samp{"0777"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string unix-sock-dir
+The directory in which sockets will be found/created.
+
+Defaults to @samp{"/var/run/libvirt"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string auth-unix-ro
+Authentication scheme for UNIX read-only sockets. By default socket
+permissions allow anyone to connect
+
+Defaults to @samp{"polkit"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string auth-unix-rw
+Authentication scheme for UNIX read-write sockets. By default socket
+permissions only allow root. If PolicyKit support was compiled into
+libvirt, the default will be to use 'polkit' auth.
+
+Defaults to @samp{"polkit"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string auth-tcp
+Authentication scheme for TCP sockets. If you don't enable SASL, then
+all TCP traffic is cleartext. Don't do this outside of a dev/test
+scenario.
+
+Defaults to @samp{"sasl"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string auth-tls
+Authentication scheme for TLS sockets. TLS sockets already have
+encryption provided by the TLS layer, and limited authentication is done
+by certificates.
+
+It is possible to make use of any SASL authentication mechanism as well,
+by using 'sasl' for this option
+
+Defaults to @samp{"none"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} optional-list access-drivers
+API access control scheme.
+
+By default an authenticated user is allowed access to all APIs. Access
+drivers can place restrictions on this.
+
+Defaults to @samp{()}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string key-file
+Server key file path. If set to an empty string, then no private key is
+loaded.
+
+Defaults to @samp{""}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string cert-file
+Server key file path. If set to an empty string, then no certificate is
+loaded.
+
+Defaults to @samp{""}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string ca-file
+Server key file path. If set to an empty string, then no CA certificate
+is loaded.
+
+Defaults to @samp{""}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string crl-file
+Certificate revocation list path. If set to an empty string, then no
+CRL is loaded.
+
+Defaults to @samp{""}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} boolean tls-no-sanity-cert
+Disable verification of our own server certificates.
+
+When libvirtd starts it performs some sanity checks against its own
+certificates.
+
+Defaults to @samp{#f}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} boolean tls-no-verify-cert
+Disable verification of client certificates.
+
+Client certificate verification is the primary authentication mechanism.
+Any client which does not present a certificate signed by the CA will be
+rejected.
+
+Defaults to @samp{#f}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} optional-list tls-allowed-dn-list
+Whitelist of allowed x509 Distinguished Name.
+
+Defaults to @samp{()}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} optional-list sasl-allowed-usernames
+Whitelist of allowed SASL usernames. The format for username depends on
+the SASL authentication mechanism.
+
+Defaults to @samp{()}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string tls-priority
+Override the compile time default TLS priority string. The default is
+usually "NORMAL" unless overridden at build time. Only set this is it
+is desired for libvirt to deviate from the global default settings.
+
+Defaults to @samp{"NORMAL"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer max-clients
+Maximum number of concurrent client connections to allow over all
+sockets combined.
+
+Defaults to @samp{5000}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer max-queued-clients
+Maximum length of queue of connections waiting to be accepted by the
+daemon. Note, that some protocols supporting retransmission may obey
+this so that a later reattempt at connection succeeds.
+
+Defaults to @samp{1000}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer max-anonymous-clients
+Maximum length of queue of accepted but not yet authenticated clients.
+Set this to zero to turn this feature off
+
+Defaults to @samp{20}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer min-workers
+Number of workers to start up initially.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer max-workers
+Maximum number of worker threads.
+
+If the number of active clients exceeds @code{min-workers}, then more
+threads are spawned, up to max_workers limit. Typically you'd want
+max_workers to equal maximum number of clients allowed.
+
+Defaults to @samp{20}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer prio-workers
+Number of priority workers. If all workers from above pool are stuck,
+some calls marked as high priority (notably domainDestroy) can be
+executed in this pool.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer max-requests
+Total global limit on concurrent RPC calls.
+
+Defaults to @samp{20}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer max-client-requests
+Limit on concurrent requests from a single client connection. To avoid
+one client monopolizing the server this should be a small fraction of
+the global max_requests and max_workers parameter.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer admin-min-workers
+Same as @code{min-workers} but for the admin interface.
+
+Defaults to @samp{1}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer admin-max-workers
+Same as @code{max-workers} but for the admin interface.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer admin-max-clients
+Same as @code{max-clients} but for the admin interface.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer admin-max-queued-clients
+Same as @code{max-queued-clients} but for the admin interface.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer admin-max-client-requests
+Same as @code{max-client-requests} but for the admin interface.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer log-level
+Logging level. 4 errors, 3 warnings, 2 information, 1 debug.
+
+Defaults to @samp{3}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string log-filters
+Logging filters.
+
+A filter allows to select a different logging level for a given category
+of logs The format for a filter is one of:
+
+@itemize @bullet
+@item
+x:name
+
+@item
+x:+name
+
+@end itemize
+
+where @code{name} is a string which is matched against the category
+given in the @code{VIR_LOG_INIT()} at the top of each libvirt source
+file, e.g., "remote", "qemu", or "util.json" (the name in the filter can
+be a substring of the full category name, in order to match multiple
+similar categories), the optional "+" prefix tells libvirt to log stack
+trace for each message matching name, and @code{x} is the minimal level
+where matching messages should be logged:
+
+@itemize @bullet
+@item
+1: DEBUG
+
+@item
+2: INFO
+
+@item
+3: WARNING
+
+@item
+4: ERROR
+
+@end itemize
+
+Multiple filters can be defined in a single filters statement, they just
+need to be separated by spaces.
+
+Defaults to @samp{"3:remote 4:event"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string log-outputs
+Logging outputs.
+
+An output is one of the places to save logging information The format
+for an output can be:
+
+@table @code
+@item x:stderr
+output goes to stderr
+
+@item x:syslog:name
+use syslog for the output and use the given name as the ident
+
+@item x:file:file_path
+output to a file, with the given filepath
+
+@item x:journald
+output to journald logging system
+
+@end table
+
+In all case the x prefix is the minimal level, acting as a filter
+
+@itemize @bullet
+@item
+1: DEBUG
+
+@item
+2: INFO
+
+@item
+3: WARNING
+
+@item
+4: ERROR
+
+@end itemize
+
+Multiple outputs can be defined, they just need to be separated by
+spaces.
+
+Defaults to @samp{"3:stderr"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer audit-level
+Allows usage of the auditing subsystem to be altered
+
+@itemize @bullet
+@item
+0: disable all auditing
+
+@item
+1: enable auditing, only if enabled on host
+
+@item
+2: enable auditing, and exit if disabled on host.
+
+@end itemize
+
+Defaults to @samp{1}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} boolean audit-logging
+Send audit messages via libvirt logging infrastructure.
+
+Defaults to @samp{#f}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} optional-string host-uuid
+Host UUID. UUID must not have all digits be the same.
+
+Defaults to @samp{""}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} string host-uuid-source
+Source to read host UUID.
+
+@itemize @bullet
+@item
+@code{smbios}: fetch the UUID from @code{dmidecode -s system-uuid}
+
+@item
+@code{machine-id}: fetch the UUID from @code{/etc/machine-id}
+
+@end itemize
+
+If @code{dmidecode} does not provide a valid UUID a temporary UUID will
+be generated.
+
+Defaults to @samp{"smbios"}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer keepalive-interval
+A keepalive message is sent to a client after @code{keepalive_interval}
+seconds of inactivity to check if the client is still responding. If
+set to -1, libvirtd will never send keepalive requests; however clients
+can still send them and the daemon will send responses.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer keepalive-count
+Maximum number of keepalive messages that are allowed to be sent to the
+client without getting any response before the connection is considered
+broken.
+
+In other words, the connection is automatically closed approximately
+after @code{keepalive_interval * (keepalive_count + 1)} seconds since
+the last message received from the client. When @code{keepalive-count}
+is set to 0, connections will be automatically closed after
+@code{keepalive-interval} seconds of inactivity without sending any
+keepalive messages.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer admin-keepalive-interval
+Same as above but for admin interface.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer admin-keepalive-count
+Same as above but for admin interface.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@deftypevr {@code{libvirt-configuration} parameter} integer ovs-timeout
+Timeout for Open vSwitch calls.
+
+The @code{ovs-vsctl} utility is used for the configuration and its
+timeout option is set by default to 5 seconds to avoid potential
+infinite waits blocking libvirt.
+
+Defaults to @samp{5}.
+
+@end deftypevr
+
+@c %end of autogenerated docs
+
+@subsubheading Virtlog daemon
+The virtlogd service is a server side daemon component of libvirt that is
+used to manage logs from virtual machine consoles.
+
+This daemon is not used directly by libvirt client applications, rather it
+is called on their behalf by @code{libvirtd}. By maintaining the logs in a
+standalone daemon, the main @code{libvirtd} daemon can be restarted without
+risk of losing logs. The @code{virtlogd} daemon has the ability to re-exec()
+itself upon receiving @code{SIGUSR1}, to allow live upgrades without downtime.
+
+@deffn {Scheme Variable} virtlog-service-type
+This is the type of the virtlog daemon.
+Its value must be a @code{virtlog-configuration}.
+
+@example
+(service virtlog-service-type
+ (virtlog-configuration
+ (max-clients 1000)))
+@end example
+@end deffn
+
+@deftypevr {@code{virtlog-configuration} parameter} integer log-level
+Logging level. 4 errors, 3 warnings, 2 information, 1 debug.
+
+Defaults to @samp{3}.
+
+@end deftypevr
+
+@deftypevr {@code{virtlog-configuration} parameter} string log-filters
+Logging filters.
+
+A filter allows to select a different logging level for a given category
+of logs The format for a filter is one of:
+
+@itemize @bullet
+@item
+x:name
+
+@item
+x:+name
+
+@end itemize
+
+where @code{name} is a string which is matched against the category
+given in the @code{VIR_LOG_INIT()} at the top of each libvirt source
+file, e.g., "remote", "qemu", or "util.json" (the name in the filter can
+be a substring of the full category name, in order to match multiple
+similar categories), the optional "+" prefix tells libvirt to log stack
+trace for each message matching name, and @code{x} is the minimal level
+where matching messages should be logged:
+
+@itemize @bullet
+@item
+1: DEBUG
+
+@item
+2: INFO
+
+@item
+3: WARNING
+
+@item
+4: ERROR
+
+@end itemize
+
+Multiple filters can be defined in a single filters statement, they just
+need to be separated by spaces.
+
+Defaults to @samp{"3:remote 4:event"}.
+
+@end deftypevr
+
+@deftypevr {@code{virtlog-configuration} parameter} string log-outputs
+Logging outputs.
+
+An output is one of the places to save logging information The format
+for an output can be:
+
+@table @code
+@item x:stderr
+output goes to stderr
+
+@item x:syslog:name
+use syslog for the output and use the given name as the ident
+
+@item x:file:file_path
+output to a file, with the given filepath
+
+@item x:journald
+output to journald logging system
+
+@end table
+
+In all case the x prefix is the minimal level, acting as a filter
+
+@itemize @bullet
+@item
+1: DEBUG
+
+@item
+2: INFO
+
+@item
+3: WARNING
+
+@item
+4: ERROR
+
+@end itemize
+
+Multiple outputs can be defined, they just need to be separated by
+spaces.
+
+Defaults to @samp{"3:stderr"}.
+
+@end deftypevr
+
+@deftypevr {@code{virtlog-configuration} parameter} integer max-clients
+Maximum number of concurrent client connections to allow over all
+sockets combined.
+
+Defaults to @samp{1024}.
+
+@end deftypevr
+
+@deftypevr {@code{virtlog-configuration} parameter} integer max-size
+Maximum file size before rolling over.
+
+Defaults to @samp{2MB}
+
+@end deftypevr
+
+@deftypevr {@code{virtlog-configuration} parameter} integer max-backups
+Maximum number of backup files to keep.
+
+Defaults to @samp{3}
+
+@end deftypevr
+
+
@node Miscellaneous Services
@subsubsection Miscellaneous Services
@@ -16402,11 +17209,15 @@ The bootloader to use, as a @code{bootloader} object. For now
Available bootloaders are described in @code{(gnu bootloader @dots{})}
modules.
-@item @code{device}
-This is a string denoting the boot device. It must be a device name
-understood by the bootloader @command{installer} command, such as
-@code{/dev/sda} or @code{(hd0)} (for GRUB, @pxref{Invoking grub-install,,, grub,
-GNU GRUB Manual}).
+@item @code{target}
+This is a string denoting the target onto which to install the
+bootloader. The exact interpretation depends on the bootloader in
+question; for @code{grub-bootloader}, for example, it should be a device
+name understood by the bootloader @command{installer} command, such as
+@code{/dev/sda} or @code{(hd0)} (for GRUB, @pxref{Invoking
+grub-install,,, grub, GNU GRUB Manual}). For
+@code{grub-efi-bootloader}, it should be the path to a mounted EFI file
+system.
@item @code{menu-entries} (default: @code{()})
A possibly empty list of @code{menu-entry} objects (see below), denoting
@@ -16658,7 +17469,7 @@ files, packages, and so on. It also creates other essential files
needed for the system to operate correctly---e.g., the @file{/etc},
@file{/var}, and @file{/run} directories, and the @file{/bin/sh} file.
-This command also installs bootloader on the device specified in
+This command also installs bootloader on the target specified in
@file{my-os-config}, unless the @option{--no-bootloader} option was
passed.
diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix
index 6a5f281c4f..6b84193dbe 100644
--- a/etc/completion/bash/guix
+++ b/etc/completion/bash/guix
@@ -158,6 +158,9 @@ _guix_complete ()
else
_guix_complete_available_package "$word_at_point"
fi
+ elif _guix_is_command "download"
+ then
+ _guix_complete_file
elif _guix_is_command "system"
then
case $COMP_CWORD in
diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm
index e080b04568..122e350874 100644
--- a/gnu/bootloader.scm
+++ b/gnu/bootloader.scm
@@ -43,7 +43,7 @@
bootloader-configuration
bootloader-configuration?
bootloader-configuration-bootloader
- bootloader-configuration-device
+ bootloader-configuration-target
bootloader-configuration-menu-entries
bootloader-configuration-default-entry
bootloader-configuration-timeout
@@ -107,6 +107,8 @@
(bootloader bootloader-configuration-bootloader) ; <bootloader>
(device bootloader-configuration-device ; string
(default #f))
+ (target %bootloader-configuration-target ; string
+ (default #f))
(menu-entries bootloader-configuration-menu-entries ; list of <boot-parameters>
(default '()))
(default-entry bootloader-configuration-default-entry ; integer
@@ -126,6 +128,15 @@
(additional-configuration bootloader-configuration-additional-configuration ; record
(default #f)))
+(define (bootloader-configuration-target config)
+ (or (%bootloader-configuration-target config)
+ (let ((device (bootloader-configuration-device config)))
+ (when device
+ (issue-deprecation-warning
+ "The 'device' field of bootloader configurations is deprecated."
+ "Use 'target' instead."))
+ device)))
+
;;;
;;; Bootloaders.
diff --git a/gnu/local.mk b/gnu/local.mk
index 0c625469cf..e3daa3c99d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -440,6 +440,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/dns.scm \
%D%/services/kerberos.scm \
%D%/services/lirc.scm \
+ %D%/services/virtualization.scm \
%D%/services/mail.scm \
%D%/services/mcron.scm \
%D%/services/messaging.scm \
@@ -493,6 +494,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/messaging.scm \
%D%/tests/networking.scm \
%D%/tests/ssh.scm \
+ %D%/tests/virtualization.scm \
%D%/tests/web.scm
# Modules that do not need to be compiled.
@@ -881,6 +883,7 @@ dist_patch_DATA = \
%D%/packages/patches/ola-readdir-r.patch \
%D%/packages/patches/openscenegraph-ffmpeg3.patch \
%D%/packages/patches/openexr-missing-samples.patch \
+ %D%/packages/patches/openjpeg-CVE-2017-12982.patch \
%D%/packages/patches/openldap-CVE-2017-9287.patch \
%D%/packages/patches/openocd-nrf52.patch \
%D%/packages/patches/openssl-runpath.patch \
@@ -979,6 +982,7 @@ dist_patch_DATA = \
%D%/packages/patches/qemu-CVE-2017-10911.patch \
%D%/packages/patches/qemu-CVE-2017-11334.patch \
%D%/packages/patches/qemu-CVE-2017-11434.patch \
+ %D%/packages/patches/qemu-CVE-2017-12809.patch \
%D%/packages/patches/qt4-ldflags.patch \
%D%/packages/patches/qtscript-disable-tests.patch \
%D%/packages/patches/quagga-reproducible-build.patch \
diff --git a/gnu/packages/augeas.scm b/gnu/packages/augeas.scm
index 9b320810ca..077105155c 100644
--- a/gnu/packages/augeas.scm
+++ b/gnu/packages/augeas.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,14 +31,14 @@
(define-public augeas
(package
(name "augeas")
- (version "1.8.0")
+ (version "1.8.1")
(source (origin
(method url-fetch)
(uri (string-append "http://download.augeas.net/augeas-"
version ".tar.gz"))
(sha256
(base32
- "1iac5lwi1q10r343ii9v5p2fdplvh06yv9svsi8zz6cd2c2fjp2i"))))
+ "1yf93fqwav1zsl8dpyfkf0g11w05mmfckqy6qsjy5zkklnspbkv5"))))
(build-system gnu-build-system)
;; Marked as "required" in augeas.pc
(propagated-inputs
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index ebb4e407f1..0a97ba7e60 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1281,7 +1281,7 @@ RAR archives.")
(define-public zstd
(package
(name "zstd")
- (version "1.3.0")
+ (version "1.3.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/facebook/zstd/archive/v"
@@ -1289,7 +1289,7 @@ RAR archives.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0j5kf0phx4w4b5x7aqwc10lxi9ix7rxhxk0df37cpdrqni1sdnqg"))
+ "1imddqjhczira626nf3nqmjwj3wb37xcfcwgkjydv2k6fpfbjbri"))
(modules '((guix build utils)))
(snippet
;; Remove non-free source files.
diff --git a/gnu/packages/datamash.scm b/gnu/packages/datamash.scm
index 78ed868fa9..60c9ba795b 100644
--- a/gnu/packages/datamash.scm
+++ b/gnu/packages/datamash.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,7 +28,7 @@
(define-public datamash
(package
(name "datamash")
- (version "1.1.1")
+ (version "1.2")
(source
(origin
(method url-fetch)
@@ -36,7 +36,7 @@
version ".tar.gz"))
(sha256
(base32
- "06w0pc828qsabmrlh7bc2zwc823xzxy89paaf37f6bipsyrij222"))))
+ "15jrv3ly0vgvwwi2qjmhi39n7wrklwifdk961wwfaxyc5jr6zm78"))))
(native-inputs
`(("which" ,which) ;for tests
("perl" ,perl))) ;for help2man
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 1728b5b92d..140a532050 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -3315,14 +3315,14 @@ of its name.")
(define-public emacs-rainbow-mode
(package
(name "emacs-rainbow-mode")
- (version "0.12")
+ (version "0.13")
(source (origin
(method url-fetch)
(uri (string-append
"http://elpa.gnu.org/packages/rainbow-mode-" version ".el"))
(sha256
(base32
- "10a7qs7fvw4qi4vxj9n56j26gjk61bl79dgz4md1d26slb2j1c04"))))
+ "1d3aamx6qgqqpqijwsr02ggwrh67gfink1bir0692alfkm3zdddl"))))
(build-system emacs-build-system)
(home-page "http://elpa.gnu.org/packages/rainbow-mode.html")
(synopsis "Colorize color names in buffers")
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 650ac2b89c..008a96b244 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros.for@openmailbox.org>
+;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,6 +23,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages engineering)
+ #:use-module (srfi srfi-1)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
@@ -32,7 +34,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
- #:use-module (guix build-system cmake)
+ #:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
@@ -59,6 +61,7 @@
#:use-module (gnu packages linux) ;FIXME: for pcb
#:use-module (gnu packages m4)
#:use-module (gnu packages maths)
+ #:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
@@ -70,8 +73,7 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages tex)
#:use-module (gnu packages wxwidgets)
- #:use-module (gnu packages xorg)
- #:use-module (srfi srfi-1))
+ #:use-module (gnu packages xorg))
(define-public librecad
(package
@@ -1013,3 +1015,117 @@ specified in high-level description language into ready-to-compile C code for
the API of spice simulators. Based on transformations specified in XML
language, ADMS transforms Verilog-AMS code into other target languages.")
(license license:gpl3)))
+
+(define-public capstone
+ (package
+ (name "capstone")
+ (version "3.0.5-rc2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/aquynh/capstone/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1cqms9r2p43aiwp5spd84zaccp16ih03r7sjhrv16nddahj0jz2q"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f
+ #:make-flags (list (string-append "PREFIX=" %output)
+ "CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ ;; cstool's Makefile overrides LDFLAGS, so we cannot pass it as a make flag.
+ (add-before 'build 'fix-cstool-ldflags
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "cstool/Makefile"
+ (("LDFLAGS =")
+ (string-append "LDFLAGS = -Wl,-rpath=" (assoc-ref outputs "out")
+ "/lib")))
+ #t)))))
+ (home-page "http://www.capstone-engine.org")
+ (synopsis "Lightweight multi-platform, multi-architecture disassembly framework")
+ (description
+ "Capstone is a lightweight multi-platform, multi-architecture disassembly
+framework. Capstone can disassemble machine code for many supported architectures
+such as x86, x86_64, arm, arm64, mips, ppc, sparc, sysz and xcore. It provides
+bindings for Python, Java, OCaml and more.")
+ (license license:bsd-3)))
+
+;; FIXME: This package has a timestamp embedded in
+;; lib/python3.5/site-packages/capstone/__pycache__/__iti__.cpython-35.pyc
+(define-public python-capstone
+ (package
+ (inherit capstone)
+ (name "python-capstone")
+ (propagated-inputs
+ `(("capstone" ,capstone)))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir-and-fix-setup-py
+ (lambda _
+ (chdir "bindings/python")
+ ;; Do not build the library again, because we already have it.
+ (substitute* "setup.py" ((".* build_libraries.*") ""))
+ ;; This substitution tells python-capstone where to find the
+ ;; library.
+ (substitute* "capstone/__init__.py"
+ (("pkg_resources.resource_filename.*")
+ (string-append "'" (assoc-ref %build-inputs "capstone") "/lib',\n")))
+ #t)))))))
+
+(define-public python2-capstone
+ (package-with-python2 python-capstone))
+
+(define-public radare2
+ (package
+ (name "radare2")
+ (version "1.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://radare.mikelloc.com/get/" version "/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16ggsk40zz6hyvclvqj1r4bh4hb78jf0d6ppry1jk4r0j30wm7cm"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* "libr/asm/p/Makefile"
+ (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))
+ (substitute* "libr/parse/p/Makefile"
+ (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))
+ (substitute* "libr/bin/p/Makefile"
+ (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) "))))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f; tests require git and network access
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'mklibdir
+ (lambda* (#:key inputs #:allow-other-keys)
+ (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
+ #t)))
+ #:configure-flags
+ (list "--with-sysmagic" "--with-syszip" "--with-openssl"
+ "--without-nonpic" "--with-rpath" "--with-syscapstone")
+ #:make-flags
+ (list "CC=gcc")))
+ (inputs
+ `(("openssl" ,openssl)
+ ("zip" ,zip)
+ ("gmp" ,gmp)
+ ("capstone" ,capstone)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://radare.org/")
+ (synopsis "Portable reversing framework")
+ (description
+ "Radare project started as a forensics tool, a scriptable commandline
+hexadecimal editor able to open disk files, but later support for analyzing
+binaries, disassembling code, debugging programs, attaching to remote gdb
+servers, ...")
+ (license license:lgpl3)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index da1a1cf43d..8c25f38aae 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -165,7 +165,7 @@ removable devices or support for multimedia.")
(define-public terminology
(package
(name "terminology")
- (version "1.0.0")
+ (version "1.1.0")
(source (origin
(method url-fetch)
(uri
@@ -173,7 +173,23 @@ removable devices or support for multimedia.")
"terminology/terminology-" version ".tar.xz"))
(sha256
(base32
- "1x4j2q4qqj10ckbka0zaq2r2zm66ff1x791kp8slv1ff7fw45vdz"))))
+ "13rl1k22yf8qrpzdm5nh6ij641fibadr2ww1r7rnz7mbhzj3d4gb"))
+ (modules '((guix build utils)))
+ ;; Remove the bundled fonts.
+ ;; TODO: Remove bundled lz4.
+ (snippet
+ '(begin
+ (delete-file-recursively "data/fonts")
+ (substitute* '("data/Makefile.in" "data/Makefile.am")
+ (("fonts") ""))
+ (substitute* "configure"
+ (("data/fonts/Makefile") "")
+ (("\\\"data/fonts/Makefile") "# \"data/fonts/Makefile"))
+ (substitute* '("data/themes/Makefile.in"
+ "data/themes/Makefile.am"
+ "data/themes/nyanology/Makefile.in"
+ "data/themes/nyanology/Makefile.am")
+ (("-fd \\$\\(top_srcdir\\)/data/fonts") ""))))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -182,7 +198,8 @@ removable devices or support for multimedia.")
;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
(lambda _ (setenv "HOME" "/tmp") #t)))))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ `(("gettext" ,gettext-minimal)
+ ("pkg-config" ,pkg-config)))
(inputs
`(("efl" ,efl)))
(home-page "https://www.enlightenment.org/about-terminology")
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index a83be8522c..69ef743cba 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -49,7 +49,6 @@
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
- #:use-module (gnu packages golang)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -987,7 +986,7 @@ programming. Iosevka is completely generated from its source code.")
Holmes type foundry, released under the same license as the Go programming
language. It includes a set of proportional, sans-serif fonts, and a set of
monospace, slab-serif fonts.")
- (license (package-license go-1.4)))))
+ (license license:bsd-3))))
(define-public font-google-material-design-icons
(package
@@ -1014,45 +1013,6 @@ have been optimized for beautiful display on all common platforms and display
resolutions.")
(license license:asl2.0)))
-(define-public font-mathjax
- (package
- (name "font-mathjax")
- (version "2.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/mathjax/MathJax/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0sbib5lk0jrvbq6s72ag6ss3wjlz5wnk07ddxij1kp96yg3c1d1b"))))
- (build-system trivial-build-system)
- (arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils)
- (ice-9 match))
- (set-path-environment-variable
- "PATH" '("bin") (map (match-lambda
- ((_ . input)
- input))
- %build-inputs))
- (let ((install-directory (string-append %output "/share/fonts/mathjax")))
- (mkdir-p install-directory)
- (zero? (system* "tar" "-C" install-directory "-xvf"
- (assoc-ref %build-inputs "source")
- "MathJax-2.7.1/fonts" "--strip" "2"))))))
- (native-inputs
- `(("gzip" ,gzip)
- ("tar" ,tar)))
- (home-page "https://www.mathjax.org/")
- (synopsis "Fonts for MathJax")
- (description "This package contains the fonts required for MathJax.")
- (license license:asl2.0)))
-
(define-public font-open-dyslexic
(package
(name "font-open-dyslexic")
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 9dbb8c0869..29f98a2356 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2015 Andy Wingo <wingo@pobox.com>
+;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
@@ -645,10 +645,17 @@ message bus.")
(modify-phases %standard-phases
(add-before
'configure 'pre-configure
- (lambda _
- ;; Don't try to create /var/lib/AccoutsService.
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Don't try to create /var/lib/AccountsService.
(substitute* "src/Makefile.in"
(("\\$\\(MKDIR_P\\).*/lib/AccountsService.*") "true"))
+ (let ((shadow (assoc-ref inputs "shadow")))
+ (substitute* '("src/user.c" "src/daemon.c")
+ (("/usr/sbin/usermod") (string-append shadow "/sbin/usermod"))
+ (("/usr/sbin/useradd") (string-append shadow "/sbin/useradd"))
+ (("/usr/sbin/userdel") (string-append shadow "/sbin/userdel"))
+ (("/usr/bin/passwd") (string-append shadow "/bin/passwd"))
+ (("/usr/bin/chage") (string-append shadow "/bin/chage"))))
#t)))))
(native-inputs
`(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
@@ -656,7 +663,8 @@ message bus.")
("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(inputs
- `(("polkit" ,polkit)))
+ `(("shadow" ,shadow)
+ ("polkit" ,polkit)))
(home-page "http://www.freedesktop.org/wiki/Software/AccountsService/")
(synopsis "D-Bus interface for user account query and manipulation")
(description
@@ -1000,3 +1008,47 @@ desktop-file-install: installs a desktop file to the applications directory,
update-desktop-database: updates the database containing a cache of MIME types
handled by desktop files.")
(license license:gpl2+)))
+
+(define-public xdg-user-dirs
+ (package
+ (name "xdg-user-dirs")
+ (version "0.16")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://user-dirs.freedesktop.org/releases/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1rp3c94hxjlfsryvwajklynfnrcvxplhwnjqc7395l89i0nb83vp"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("docbook-xsl" ,docbook-xsl)
+ ("docbook-xml" ,docbook-xml-4.3)
+ ("xsltproc" ,libxslt)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'locate-catalog-files
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
+ "/xml/dtd/docbook"))
+ (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
+ "/xml/xsl/docbook-xsl-"
+ ,(package-version docbook-xsl))))
+ (for-each (lambda (file)
+ (substitute* file
+ (("http://.*/docbookx\\.dtd")
+ (string-append xmldoc "/docbookx.dtd"))))
+ (find-files "man" "\\.xml$"))
+ (substitute* "man/Makefile"
+ (("http://.*/docbook\\.xsl")
+ (string-append xsldoc "/manpages/docbook.xsl")))
+ #t))))))
+ (home-page "https://www.freedesktop.org/wiki/Software/xdg-user-dirs/")
+ (synopsis "Tool to help manage \"well known\" user directories")
+ (description "xdg-user-dirs is a tool to help manage \"well known\" user
+directories, such as the desktop folder or the music folder. It also handles
+localization (i.e. translation) of the file names. Designed to be
+automatically run when a user logs in, xdg-user-dirs can also be run
+manually by a user.")
+ (license license:gpl2)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 7932e841c4..9e7b579907 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -1343,15 +1343,15 @@ either by Infocom or created using the Inform compiler.")
(define-public retroarch
(package
(name "retroarch")
- (version "1.6.3")
+ (version "1.6.7")
(source
(origin
(method url-fetch)
- (uri (string-append "https://github.com/libretro/RetroArch/archive/"
+ (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0a0w2sjizjs20376h7j1gfi0qccr8mhkl1cm6hi0c17hy1493l6d"))))
+ (base32 "13vp5skf95a4fla3dwdk2v48dgnmrvimvp9fgpr1vppb7wfjhbr1"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
@@ -2870,7 +2870,7 @@ Red Eclipse provides fast paced and accessible gameplay.")
(define-public higan
(package
(name "higan")
- (version "103")
+ (version "104")
(source
(origin
(method url-fetch)
@@ -2879,7 +2879,7 @@ Red Eclipse provides fast paced and accessible gameplay.")
version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "013r0lcm0qw8zwavz977mqk2clg80gngkjijr3n0q8snpc1727r7"))
+ (base32 "18by01ir2mvdi9hq571in1hk18gw2bd0ynq4avfs1qj0qra35fqb"))
(patches (search-patches "higan-remove-march-native-flag.patch"))))
(build-system gnu-build-system)
(native-inputs
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 8f7d0a3dad..4d12ab4d59 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -59,6 +59,7 @@
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages build-tools)
#:use-module (gnu packages calendar)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
@@ -99,6 +100,7 @@
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages music)
#:use-module (gnu packages networking)
+ #:use-module (gnu packages ninja)
#:use-module (gnu packages password-utils)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
@@ -5152,10 +5154,20 @@ libxml2.")
(sha256
(base32
"1s2xzrwcjhfb4ra8jrxqfycs1jpv97id0f6idb2h6vjkspxbjy23"))))
- (build-system gnu-build-system)
+ (build-system glib-or-gtk-build-system)
(arguments
'(#:configure-flags
- '("--without-plymouth")
+ `("--without-plymouth"
+ "--disable-systemd-journal"
+ "--localstatedir=/var"
+ ,(string-append "--with-default-path="
+ (string-join '("/run/setuid-programs"
+ "/run/current-system/profile/bin"
+ "/run/current-system/profile/sbin")
+ ":"))
+ ;; Put GDM in bindir so that glib-or-gtk-build-system wraps the
+ ;; XDG_DATA_DIRS so that it finds its schemas.
+ "--sbindir" ,(string-append (assoc-ref %outputs "out") "/bin"))
#:phases
(modify-phases %standard-phases
(add-before
@@ -5173,9 +5185,54 @@ libxml2.")
"libgdm/gdm-user-switching.c")
(("#include <systemd/sd-login\\.h>")
"#include <elogind/sd-login.h>"))
- ;; Avoid checking SYSTEMD using pkg-config.
- (setenv "SYSTEMD_CFLAGS" " ")
- (setenv "SYSTEMD_LIBS" "-lelogind")
+ ;; Check for elogind.
+ (substitute* '("configure")
+ (("libsystemd")
+ "libelogind"))
+ ;; Look for system-installed sessions in
+ ;; /run/current-system/profile/share.
+ (substitute* '("libgdm/gdm-sessions.c"
+ "daemon/gdm-session.c"
+ "daemon/gdm-display.c"
+ "daemon/gdm-launch-environment.c")
+ (("DATADIR \"/x")
+ "\"/run/current-system/profile/share/x")
+ (("DATADIR \"/wayland")
+ "\"/run/current-system/profile/share/wayland")
+ (("DATADIR \"/gnome")
+ "\"/run/current-system/profile/share/gnome"))
+ (substitute* '("daemon/gdm-session.c")
+ (("set_up_session_environment \\(self\\);")
+ (string-append
+ "set_up_session_environment (self);\n"
+ ;; Propagate GDM_X_SERVER environment variable (which is set
+ ;; by the GDM service, as it's a function of what X modules
+ ;; the user decides to have available) down to worker
+ ;; processes.
+ "gdm_session_set_environment_variable (self, \"GDM_X_SERVER\",\n"
+ " g_getenv (\"GDM_X_SERVER\"));\n"
+ ;; FIXME: Really glib should be declaring XDG_CONFIG_DIRS as a
+ ;; variable, but it doesn't do that right now. Anyway
+ ;; /run/current-system/profile/share/gnome-session/sessions/gnome.desktop
+ ;; requires that a number of .desktop files be present, and
+ ;; these special .desktop files are in $XDG_CONFIG_DIRS (which
+ ;; defaults to /etc/xdg if it's not set). Here we need to
+ ;; provide a value such that the GNOME session's requirements
+ ;; are met (provided GNOME is installed of course).
+ "gdm_session_set_environment_variable (self, \"XDG_CONFIG_DIRS\",\n"
+ " \"/run/current-system/profile/etc/xdg\");\n"
+ )))
+ ;; Look for custom GDM conf in /run/current-system.
+ (substitute* '("common/gdm-settings-backend.c")
+ (("GDM_CUSTOM_CONF")
+ "/run/current-system/etc/gdm/custom.conf"))
+ ;; Use service-supplied path to X.
+ (substitute* '("daemon/gdm-server.c")
+ (("\\(X_SERVER X_SERVER_ARG_FORMAT")
+ "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")"))
+ (substitute* '("daemon/gdm-x-session.c")
+ (("X_SERVER")
+ "g_getenv (\"GDM_X_SERVER\")"))
#t)))))
(native-inputs
`(("dconf" ,dconf)
@@ -5799,6 +5856,7 @@ associations for GNOME.")
("pulseaudio" ,pulseaudio)
("shared-mime-info" ,shared-mime-info)
("totem" ,totem)
+ ("xdg-user-dirs" ,xdg-user-dirs)
("yelp" ,yelp)
("zenity" ,zenity)))
(synopsis "The GNU desktop environment")
@@ -6517,7 +6575,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
(define-public gspell
(package
(name "gspell")
- (version "1.4.1")
+ (version "1.4.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -6525,7 +6583,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
name "-" version ".tar.xz"))
(sha256
(base32
- "1ghh1xdzf04mfgb13zqpj88krpa44xv2vbyhm6k017kzrpz8hbs4"))
+ "1683vyyfq3q0ph665jj6id8hnlyid4qxzmqiwpv97gmz8zksg6x5"))
(patches (search-patches "gspell-dash-test.patch"))))
(build-system glib-or-gtk-build-system)
(arguments
@@ -6620,7 +6678,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
(define-public lollypop
(package
(name "lollypop")
- (version "0.9.240")
+ (version "0.9.244")
(source
(origin
(method url-fetch)
@@ -6629,31 +6687,48 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0n1ycmg6dgz1pajs80fwlcbxw3rx1hff1xw6ja67zngm85ydbjvq"))))
+ "0y9nmwrplz4mlvc2badfbyjj97ksn6qqis3rgm8lvp5llsk1583w"))))
+ ;; TODO: Use meson-build-system
(build-system glib-or-gtk-build-system)
(arguments
`(#:imported-modules ((guix build python-build-system)
,@%glib-or-gtk-build-system-modules)
- #:phases (modify-phases %standard-phases
- (add-after 'install 'wrap-program
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
- (wrap-program (string-append out "/bin/lollypop")
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
- #t))
- (add-after 'install 'wrap
- (@@ (guix build python-build-system) wrap)))))
+ #:tests? #f ; no test suite
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; remove post-install script, we update the caches later
+ (substitute* "meson.build"
+ (("meson.add_install_script\\('meson_post_install.py'\\)") ""))
+ (zero?
+ (system* "meson" "builddir" (string-append "--prefix=" out))))))
+ (replace 'install
+ (lambda _ (zero? (system* "ninja" "-C" "builddir" "install"))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program (string-append out "/bin/lollypop")
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+ #t))
+ (add-after 'install 'wrap
+ (@@ (guix build python-build-system) wrap)))))
(native-inputs
`(("intltool" ,intltool)
("itstool" ,itstool)
+ ("ninja" ,ninja)
("pkg-config" ,pkg-config)))
(inputs
`(("gobject-introspection" ,gobject-introspection)
+ ("gst-plugins-base" ,gst-plugins-base)
("gtk+" ,gtk+)
("libnotify" ,libnotify)
("libsecret" ,libsecret)
("libsoup" ,libsoup)
+ ("meson" ,meson)
("python" ,python)
("python-beautifulsoup4" ,python-beautifulsoup4)
("python-gst" ,python-gst)
@@ -6665,7 +6740,6 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
(propagated-inputs
`(;; gst-plugins-base is required to start Lollypop,
;; the others are required to play streaming.
- ("gst-plugins-base" ,gst-plugins-base)
("gst-plugins-good" ,gst-plugins-good)
("gst-plugins-ugly" ,gst-plugins-ugly)))
(home-page "https://gnumdk.github.io/lollypop-web")
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 7ff1a3f6f8..f3fe637b13 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -186,14 +186,14 @@ and support for SSL3 and TLS.")
(define-public gnurl
(package
(name "gnurl")
- (version "7.55.1")
+ (version "7.55.1-3")
(source (origin
(method url-fetch)
(uri (string-append "https://gnunet.org/sites/default/files/"
name "-" version ".tar.bz2"))
(sha256
(base32
- "118vb2mc5ivsbrkqzg40w56raf5jdnx00cfmkh735w0mjfy6wccv"))))
+ "1p2qdh44hgsxjlzh4d3n51xr66cg2z517vpr818flvcrmpq2vxpq"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ; 1.5 MiB of man3 pages
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index e2d1abbbbf..9f3ccc8f69 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -200,11 +200,11 @@ garbage collection, various safety features and in the style of communicating
sequential processes (CSP) concurrent programming features added.")
(license license:bsd-3)))
-(define-public go-1.8
+(define-public go-1.9
(package
(inherit go-1.4)
(name "go")
- (version "1.8.3")
+ (version "1.9")
(source
(origin
(method url-fetch)
@@ -212,7 +212,7 @@ sequential processes (CSP) concurrent programming features added.")
name version ".src.tar.gz"))
(sha256
(base32
- "19lzv4lqixj3v2gjaff0fdbbmgsq5r8lrfd61z2zvp778wjflpaz"))))
+ "14z9azh8pk5cwyl2qdk893j68lk0cca7a9b8k2hpn5pd52825ax4"))))
(arguments
(substitute-keyword-arguments (package-arguments go-1.4)
((#:phases phases)
@@ -243,7 +243,7 @@ sequential processes (CSP) concurrent programming features added.")
;; Add libgcc to runpath
(substitute* "cmd/link/internal/ld/lib.go"
(("!rpath.set") "true"))
- (substitute* "cmd/go/build.go"
+ (substitute* "cmd/go/internal/work/build.go"
(("cgoldflags := \\[\\]string\\{\\}")
(string-append "cgoldflags := []string{"
"\"-rpath=" gcclib "\""
@@ -374,4 +374,4 @@ sequential processes (CSP) concurrent programming features added.")
`(("go" ,go-1.4)
,@(package-native-inputs go-1.4)))))
-(define-public go go-1.8)
+(define-public go go-1.9)
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 97fd52e160..6e43dc9918 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -334,8 +334,7 @@ developers consider to have good quality code and correct functionality.")
;("qtx11extras" ,qtx11extras)
("soundtouch" ,soundtouch)
("x265" ,x265)
- ;("wayland" ,wayland) ; needs gtk+ built with wayland support
- ))
+ ("wayland" ,wayland)))
(home-page "https://gstreamer.freedesktop.org/")
(synopsis "Plugins for the GStreamer multimedia library")
(description
diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm
index a114fd441d..4a484b9de4 100644
--- a/gnu/packages/guile-wm.scm
+++ b/gnu/packages/guile-wm.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Alex ter Weele <alex.ter.weele@gmail.com>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -33,7 +34,8 @@
(version "1.3")
(source (origin
(method url-fetch)
- (uri (string-append "http://www.markwitmer.com/dist/guile-xcb-"
+ (uri (string-append "http://web.archive.org/web/20150803094848/"
+ "http://www.markwitmer.com/dist/guile-xcb-"
version ".tar.gz"))
(sha256
(base32
@@ -68,7 +70,8 @@ dependencies.")
(synopsis "X11 window manager toolkit in Scheme")
(source (origin
(method url-fetch)
- (uri (string-append "http://www.markwitmer.com/dist/guile-wm-"
+ (uri (string-append "http://web.archive.org/web/20161005084324/"
+ "http://www.markwitmer.com/dist/guile-wm-"
version ".tar.gz"))
(sha256
(base32
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index c2f0a24344..f82d4baf24 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -54,7 +54,7 @@
(define-public feh
(package
(name "feh")
- (version "2.19.2")
+ (version "2.19.3")
(home-page "https://feh.finalrewind.org/")
(source (origin
(method url-fetch)
@@ -62,7 +62,7 @@
name "-" version ".tar.bz2"))
(sha256
(base32
- "0v2nwc6sk4vs855a1ncz9vxpzxvs1d5wcjz87rfbypxx7nap2al2"))))
+ "1l3yvv0l0ggwlfyhk84p2g9mrqvzqrg1fgalf88kzppvb9jppjay"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-delete 'configure %standard-phases)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 7be1b195f1..94c683aa9e 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -519,7 +519,8 @@ work.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0yvfghxwfm3dcqr9krkw63pcd76hzkknc3fh7bh11s8qlvjvrpbg"))))
+ "0yvfghxwfm3dcqr9krkw63pcd76hzkknc3fh7bh11s8qlvjvrpbg"))
+ (patches (search-patches "openjpeg-CVE-2017-12982.patch"))))
(build-system cmake-build-system)
(arguments
;; Trying to run `$ make check' results in a no rule fault.
@@ -1127,7 +1128,8 @@ PNG, and performs PNG integrity checks and corrections.")
(native-inputs
`(("nasm" ,nasm)))
(arguments
- '(#:test-target "test"))
+ '(#:test-target "test"
+ #:configure-flags (list "--with-build-date=1970-01-01")))
(home-page "http://www.libjpeg-turbo.org/")
(synopsis "SIMD-accelerated JPEG image handling library")
(description "libjpeg-turbo is a JPEG image codec that accelerates baseline
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index 3bd705fa2f..4056d486fb 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -45,14 +45,14 @@
;; The 7 release series has an incompatible API, while the 6 series is still
;; maintained. Don't update to 7 until we've made sure that the ImageMagick
;; users are ready for the 7-series API.
- (version "6.9.9-7")
+ (version "6.9.9-9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
- "1lwsz9b8clygdppgawv2hsry4aykgmawjlwhg3fj70rndv4a8rw4"))))
+ "0p7jz55zry5r1lv34ymx536fqymvy3iwzwy0kvj53mlmsaad7vjr"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 12f12bf8f1..85017453ff 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -22,7 +22,6 @@
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
- #:use-module (gnu packages fonts)
#:use-module (gnu packages lisp)
#:use-module (guix packages)
#:use-module (guix download)
@@ -30,6 +29,45 @@
#:use-module (guix build-system trivial)
#:use-module (guix build-system minify))
+(define-public font-mathjax
+ (package
+ (name "font-mathjax")
+ (version "2.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/mathjax/MathJax/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0sbib5lk0jrvbq6s72ag6ss3wjlz5wnk07ddxij1kp96yg3c1d1b"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 match))
+ (set-path-environment-variable
+ "PATH" '("bin") (map (match-lambda
+ ((_ . input)
+ input))
+ %build-inputs))
+ (let ((install-directory (string-append %output "/share/fonts/mathjax")))
+ (mkdir-p install-directory)
+ (zero? (system* "tar" "-C" install-directory "-xvf"
+ (assoc-ref %build-inputs "source")
+ "MathJax-2.7.1/fonts" "--strip" "2"))))))
+ (native-inputs
+ `(("gzip" ,gzip)
+ ("tar" ,tar)))
+ (home-page "https://www.mathjax.org/")
+ (synopsis "Fonts for MathJax")
+ (description "This package contains the fonts required for MathJax.")
+ (license license:asl2.0)))
+
(define-public js-mathjax
(package
(inherit font-mathjax)
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index a65a61f96b..2e46a3c924 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -300,9 +300,14 @@ used in KDE development tools Kompare and KDevelop.")
;; KF5AuthConfig.cmake.in contains this already.
(substitute* "processcore/CMakeLists.txt"
(("KAUTH_HELPER_INSTALL_DIR") "KDE_INSTALL_LIBEXECDIR"))))
+ (add-before 'check 'check-setup
+ (lambda _
+ ;; make Qt render "offscreen", required for tests
+ (setenv "QT_QPA_PLATFORM" "offscreen")))
(replace 'check
- (lambda _ ;other tests require a display and therefore fail
- (zero? (system* "ctest" "-R" "chronotest")))))))
+ (lambda _
+ ;; TODO: Fix this failing test-case
+ (zero? (system* "ctest" "-E" "processtest")))))))
(home-page "https://www.kde.org/info/plasma-5.10.4.php")
(synopsis "Network enabled task and system monitoring")
(description "KSysGuard can obtain information on system load and
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 16a8d257d0..cca222b1f8 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -837,6 +837,7 @@ and to return information on pronunciations, meanings and synonyms.")
("libetonyek" ,libetonyek)
("libexttextcat" ,libexttextcat)
("libfreehand" ,libfreehand)
+ ("liblangtag" ,liblangtag)
("libmspub" ,libmspub)
("libmwaw" ,libmwaw)
("libodfgen" ,libodfgen)
@@ -919,15 +920,16 @@ and to return information on pronunciations, meanings and synonyms.")
(substitute* (string-append out src)
(("Exec=libreoffice[0-9]+\\.[0-9]+ ")
(string-append "Exec=" out "/bin/libreoffice "))
- (("Icon=libreoffice[0-9]+\\.[0-9]+")
- "Icon=libreoffice")
+ (("Icon=libreoffice.*")
+ (string-append "Icon=" app "\n"))
(("LibreOffice [0-9]+\\.[0-9]+")
"LibreOffice"))
- (symlink-output src dst)
- (install-file (string-append
+ (symlink-output src dst)))
+ (define (install-appdata app)
+ (install-file (string-append
"sysui/desktop/appstream-appdata/"
"libreoffice-" app ".appdata.xml")
- (string-append out "/share/appdata"))))
+ (string-append out "/share/appdata")))
(symlink-output "/lib/libreoffice/program/soffice"
"/bin/soffice")
(symlink-output "/lib/libreoffice/program/soffice"
@@ -940,16 +942,18 @@ and to return information on pronunciations, meanings and synonyms.")
"workdir/CustomTarget/sysui/share/libreoffice/openoffice.org.xml"
"/share/mime/packages/libreoffice.xml")
(for-each install-desktop-file
+ '("base" "calc" "draw" "impress" "writer"
+ "math" "startcenter"))
+ (for-each install-appdata
'("base" "calc" "draw" "impress" "writer"))
- (mkdir-p (string-append out "/share/icons"))
+ (mkdir-p (string-append out "/share/icons/hicolor"))
(copy-recursively "sysui/desktop/icons/hicolor"
- (string-append out "/share/icons/")))
+ (string-append out "/share/icons/hicolor")))
#t)))
#:configure-flags
(list
"--enable-release-build"
"--enable-verbose"
- "--without-parallelism" ; otherwise the build fails
"--disable-fetch-external" ; disable downloads
"--with-system-libs" ; enable all --with-system-* flags
(string-append "--with-boost-libdir="
@@ -969,8 +973,7 @@ and to return information on pronunciations, meanings and synonyms.")
"--disable-firebird-sdbc" ; embedded firebird
"--disable-gltf"
"--without-doxygen"
- "--disable-gtk3"
- "--disable-liblangtag")))
+ "--disable-gtk3")))
(home-page "https://www.libreoffice.org/")
(synopsis "Office suite")
(description "LibreOffice is a comprehensive office suite. It contains
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index e271ef6b11..d454b08029 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -367,8 +367,8 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
-(define %linux-libre-version "4.12.8")
-(define %linux-libre-hash "1p4ah15qs94id2yj6lhp6abdycvgp7lvn3ccsfs7f6n34hdij0cm")
+(define %linux-libre-version "4.12.9")
+(define %linux-libre-hash "1wpsqhaab91l1wdbsxq8pdwrdx3a603zr5zjxbzdsx99pr6iypra")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@@ -377,14 +377,14 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
(define-public linux-libre-4.9
- (make-linux-libre "4.9.44"
- "0a92bsb5d0pyhyn5ypc8ashwxixhivdadvikcpv31376j842fmj2"
+ (make-linux-libre "4.9.45"
+ "0qdwn2m3iynbjyszkq4hlx891s1b83p9nr1v7vdb20fs4n2cbl9s"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.83"
- "1fv3j0w0v82aa9s9n4a4qyrxc5bpq2ag9riawlabx57a380x1n62"
+ (make-linux-libre "4.4.84"
+ "00lp3471mvwpq5062cynaakjn7bjpylmg1d1wwmhh6fdknd2h1kz"
%intel-compatible-systems
#:configuration-file kernel-config))
@@ -3222,6 +3222,42 @@ repair and easy administration.")
from the btrfs-progs package. It is meant to be used in initrds.")
(license (package-license btrfs-progs))))
+(define-public f2fs-tools
+ (package
+ (name "f2fs-tools")
+ (version "1.8.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://git.kernel.org/cgit/linux/kernel/git/jaegeuk"
+ "/f2fs-tools.git/snapshot/" name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1bir9ladb58ijlcvrjrq1fb1xv5ys50zdjaq0yzliib0apsyrnyl"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'bootstrap
+ (lambda _
+ (zero? (system* "autoreconf" "-vif")))))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("libuuid" ,util-linux)))
+ (home-page "https://f2fs.wiki.kernel.org/")
+ (synopsis "Userland tools for f2fs")
+ (description
+ "F2FS, the Flash-Friendly File System, is a modern file system
+designed to be fast and durable on flash devices such as solid-state
+disks and SD cards. This package provides the userland utilities.")
+ ;; The formatting utility, libf2fs and include/f2fs_fs.h is dual
+ ;; GPL2/LGPL2.1, everything else is GPL2 only. See 'COPYING'.
+ (license (list license:gpl2 license:lgpl2.1))))
+
(define-public freefall
(package
(name "freefall")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index cc76a93ed0..3b0f12b764 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1090,7 +1090,7 @@ facilities for checking incoming mail.")
(define-public dovecot
(package
(name "dovecot")
- (version "2.2.31")
+ (version "2.2.32")
(source
(origin
(method url-fetch)
@@ -1098,7 +1098,7 @@ facilities for checking incoming mail.")
(version-major+minor version) "/"
name "-" version ".tar.gz"))
(sha256 (base32
- "18bnwgn6hshbmr79g21sngkrmydji6bzb948a3b2i0bl0w4y8jq3"))))
+ "0bmwyvi1crmrca2knvknsf517x53w7gxrclwyrvrhddgw98j22qn"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 537157fca6..c3c2191a94 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3179,26 +3179,38 @@ as equations, scalars, vectors, and matrices.")
(sha256
(base32
"032a5lvji2liwmc25jv52bdrhimqflvqbpg77ccaq1jykhiivbmf"))))
- (build-system gnu-build-system)
+ (build-system cmake-build-system)
(arguments
- `(#:test-target "test"
+ `(#:configure-flags
+ (list "-DBUILD_PYTHON_BINDINGS=true"
+ "-DINSTALL_PYTHON_BINDINGS=true"
+ (string-append "-DCMAKE_INSTALL_PYTHON_PKG_DIR="
+ %output
+ "/lib/python2.7/site-packages")
+ (string-append "-DCMAKE_INSTALL_LIBDIR="
+ %output
+ "/lib"))
+
#:phases
(modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-before 'configure 'bootstrap
+ (lambda _
(zero?
- (system* "python" "scripts/mk_make.py"
- (string-append "--prefix="
- (assoc-ref outputs "out"))))))
- (add-after 'configure 'change-dir
+ (system* "python" "contrib/cmake/bootstrap.py" "create"))))
+ (add-before 'check 'make-test-z3
(lambda _
- (chdir "build")
- #t)))))
+ ;; Build the test suite executable.
+ (zero? (system* "make" "test-z3" "-j"
+ (number->string (parallel-job-count))))))
+ (replace 'check
+ (lambda _
+ ;; Run all the tests that don't require arguments.
+ (zero? (system* "./test-z3" "/a")))))))
(native-inputs
`(("python" ,python-2)))
(synopsis "Theorem prover")
(description "Z3 is a theorem prover and @dfn{satisfiability modulo
-theories} (SMT) solver. It provides a C/C++ API.")
+theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
(home-page "https://github.com/Z3Prover/z3")
(license license:expat)))
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 73e767faec..9330179f96 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -114,8 +115,12 @@ versions of ID3v2.")
(sha256
(base32
"0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))
+ (modules '((guix build utils)))
+ ;; Don't use bundled zlib
+ (snippet '(delete-file-recursively "zlib"))
(patches (search-patches "id3lib-CVE-2007-4460.patch"))))
(build-system gnu-build-system)
+ (inputs `(("zlib" ,zlib)))
(arguments
`(#:phases
(alist-cons-before
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index d6423aa6fc..93157e2692 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -122,7 +122,6 @@ bind processes, and much more.")
(base32
"142s1vny9gllkq336yafxayjgcirj2jv0ddabj879jgya7hyr2d0"))))
(build-system gnu-build-system)
- (outputs '("out" "static"))
(inputs
`(("hwloc" ,hwloc "lib")
("gfortran" ,gfortran)
@@ -133,20 +132,33 @@ bind processes, and much more.")
`(("pkg-config" ,pkg-config)
("perl" ,perl)))
(arguments
- `(#:configure-flags `("--enable-static"
+ `(#:configure-flags `("--enable-builtin-atomics"
- "--enable-mpi-thread-multiple"
- "--enable-builtin-atomics"
-
- "--enable-mpi-ext=all"
- "--with-devel-headers"
+ "--enable-mpi-ext=affinity" ;cr doesn't work
"--enable-memchecker"
"--with-sge"
+
+ ;; VampirTrace is obsoleted by scorep and disabling
+ ;; it reduces the closure size considerably.
+ "--disable-vt"
+
,(string-append "--with-valgrind="
(assoc-ref %build-inputs "valgrind"))
,(string-append "--with-hwloc="
(assoc-ref %build-inputs "hwloc")))
#:phases (modify-phases %standard-phases
+ (add-before 'build 'remove-absolute
+ ;; Remove compiler absolute file names (OPAL_FC_ABSOLUTE
+ ;; etc.) to reduce the closure size. See
+ ;; <https://lists.gnu.org/archive/html/guix-devel/2017-07/msg00388.html>
+ ;; and
+ ;; <https://www.mail-archive.com/users@lists.open-mpi.org//msg31397.html>.
+ (lambda _
+ (substitute* '("orte/tools/orte-info/param.c"
+ "oshmem/tools/oshmem_info/param.c"
+ "ompi/tools/ompi_info/param.c")
+ (("_ABSOLUTE") ""))
+ #t))
(add-before 'build 'scrub-timestamps ;reproducibility
(lambda _
(substitute* '("ompi/tools/ompi_info/param.c"
@@ -158,20 +170,6 @@ bind processes, and much more.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(for-each delete-file (find-files out "config.log"))
- #t)))
- (add-after 'install 'move-static-libraries
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Move 19 MiB of static libraries to 'static'.
- (let* ((out (assoc-ref outputs "out"))
- (static (assoc-ref outputs "static"))
- (lib (string-append out "/lib"))
- (slib (string-append static "/lib")))
- (mkdir-p slib)
- (for-each (lambda (file)
- (rename-file
- file
- (string-append slib "/" (basename file))))
- (find-files lib "\\.a$"))
#t))))))
(home-page "http://www.open-mpi.org")
(synopsis "MPI-3 implementation")
@@ -184,3 +182,17 @@ best MPI library available. Open MPI offers advantages for system and
software vendors, application developers and computer science researchers.")
;; See file://LICENSE
(license bsd-2)))
+
+(define-public openmpi-thread-multiple
+ (package
+ (inherit openmpi)
+ (name "openmpi-thread-multiple")
+ (arguments
+ (substitute-keyword-arguments (package-arguments openmpi)
+ ((#:configure-flags flags)
+ `(cons "--enable-mpi-thread-multiple" ,flags))))
+ (description " This version of Open@tie{}MPI has an implementation of
+@code{MPI_Init_thread} that provides @code{MPI_THREAD_MULTIPLE}. This won't
+work correctly with all transports (such as @code{openib}), and the
+performance is generally worse than the vanilla @code{openmpi} package, which
+only provides @code{MPI_THREAD_FUNNELED}.")))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 29ab50fc4c..56e6d26493 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1699,7 +1699,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
(define-public zynaddsubfx
(package
(name "zynaddsubfx")
- (version "3.0.1")
+ (version "3.0.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1707,7 +1707,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
version "/zynaddsubfx-" version ".tar.bz2"))
(sha256
(base32
- "1qijvlbv41lnqaqbp6gh1i42xzf1syviyxz8wr39xbz55cw7y0d8"))))
+ "09mr23lqc51r7gskry5b7hk84pghdpgn1s4vnrzvx7xpa21gvplm"))))
(build-system cmake-build-system)
(arguments
`(#:phases
@@ -1745,7 +1745,7 @@ capabilities, custom envelopes, effects, etc.")
(define-public yoshimi
(package
(name "yoshimi")
- (version "1.5.1.1")
+ (version "1.5.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/yoshimi/"
@@ -1753,7 +1753,7 @@ capabilities, custom envelopes, effects, etc.")
"/yoshimi-" version ".tar.bz2"))
(sha256
(base32
- "1gjanmbn08x11iz4bjlkx3m66x0yk401ddkz8fqkj7y3p5ih1kna"))))
+ "0sns35pyw2f74xrv1fxiyf9g9415kvh2rrbdjd60hsiv584nlari"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; there are no tests
@@ -2180,13 +2180,13 @@ detailed track info including timbre, pitch, rhythm and loudness information.
(define-public python-pylast
(package
(name "python-pylast")
- (version "1.6.0")
+ (version "1.9.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "pylast" version))
(sha256
(base32
- "0bml11gfkxqd3i2jxkn5k2xllc4rvxjcyhs8an05gcyy1zp2bwvb"))))
+ "190c6sicc80v21wbbwbq771nqmxw4r6aqmxs22ndj177rc2l275f"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; FIXME: Requires unpackaged python-flaky.
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index c329c463f3..b786b63c20 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -444,7 +444,7 @@ and up to 1 Mbit/s downstream.")
(define-public whois
(package
(name "whois")
- (version "5.2.17")
+ (version "5.2.18")
(source
(origin
(method url-fetch)
@@ -452,7 +452,7 @@ and up to 1 Mbit/s downstream.")
name "_" version ".tar.xz"))
(sha256
(base32
- "0r4np8gaxhy9c0v795dc4dhxms9zak31vd378sb1h7jpixkqax95"))))
+ "1mcpgj18n1xppvlhjqzpj05yr5z48bym9bd88k10fwgkmwk0spf3"))))
(build-system gnu-build-system)
;; TODO: unbundle mkpasswd binary + its po files.
(arguments
@@ -705,7 +705,7 @@ allows for heavy scripting.")
(define-public perl-net-dns
(package
(name "perl-net-dns")
- (version "1.06")
+ (version "1.12")
(source
(origin
(method url-fetch)
@@ -715,7 +715,7 @@ allows for heavy scripting.")
".tar.gz"))
(sha256
(base32
- "07m5331132h9xkh1i6jv9d80f571yva27iqa31aq4sm31iw7nn53"))))
+ "1zy16idzc96n20fm9976qapz89n3f44xpylhs5cvfgyyg7z03zr5"))))
(build-system perl-build-system)
(inputs
`(("perl-digest-hmac" ,perl-digest-hmac)))
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 179fa7ed32..db04a5704e 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -45,7 +45,7 @@
(define-public parallel
(package
(name "parallel")
- (version "20170722")
+ (version "20170822")
(source
(origin
(method url-fetch)
@@ -53,7 +53,7 @@
version ".tar.bz2"))
(sha256
(base32
- "117g50bx1kcbrqix0f1539z5rzhvgsni2wddjv939wcxkrdb1idx"))))
+ "0j4i0dfbk1i37mcdl7l5ynsldp8biqnbm32sm0cl26by0nivyjc9"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/patches/openjpeg-CVE-2017-12982.patch b/gnu/packages/patches/openjpeg-CVE-2017-12982.patch
new file mode 100644
index 0000000000..3929a73570
--- /dev/null
+++ b/gnu/packages/patches/openjpeg-CVE-2017-12982.patch
@@ -0,0 +1,28 @@
+http://openwall.com/lists/oss-security/2017/08/21/1
+https://github.com/uclouvain/openjpeg/commit/baf0c1ad4572daa89caa3b12985bdd93530f0dd7.patch
+
+From baf0c1ad4572daa89caa3b12985bdd93530f0dd7 Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Mon, 14 Aug 2017 17:26:58 +0200
+Subject: [PATCH] bmp_read_info_header(): reject bmp files with biBitCount == 0
+ (#983)
+
+---
+ src/bin/jp2/convertbmp.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/bin/jp2/convertbmp.c b/src/bin/jp2/convertbmp.c
+index b49e7a080..2715fdf24 100644
+--- a/src/bin/jp2/convertbmp.c
++++ b/src/bin/jp2/convertbmp.c
+@@ -392,6 +392,10 @@ static OPJ_BOOL bmp_read_info_header(FILE* IN, OPJ_BITMAPINFOHEADER* header)
+
+ header->biBitCount = (OPJ_UINT16)getc(IN);
+ header->biBitCount |= (OPJ_UINT16)((OPJ_UINT32)getc(IN) << 8);
++ if (header->biBitCount == 0) {
++ fprintf(stderr, "Error, invalid biBitCount %d\n", 0);
++ return OPJ_FALSE;
++ }
+
+ if (header->biSize >= 40U) {
+ header->biCompression = (OPJ_UINT32)getc(IN);
diff --git a/gnu/packages/patches/qemu-CVE-2017-12809.patch b/gnu/packages/patches/qemu-CVE-2017-12809.patch
new file mode 100644
index 0000000000..e40a14b4e0
--- /dev/null
+++ b/gnu/packages/patches/qemu-CVE-2017-12809.patch
@@ -0,0 +1,38 @@
+http://openwall.com/lists/oss-security/2017/08/21/2
+https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg01850.html
+
+The block backend changed in a way that flushing empty CDROM drives now
+crashes. Amend IDE to avoid doing so until the root problem can be
+addressed for 2.11.
+
+Original patch by John Snow <address@hidden>.
+
+Reported-by: Kieron Shorrock <address@hidden>
+Signed-off-by: Stefan Hajnoczi <address@hidden>
+---
+ hw/ide/core.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/hw/ide/core.c b/hw/ide/core.c
+index 0b48b64d3a..bea39536b0 100644
+--- a/hw/ide/core.c
++++ b/hw/ide/core.c
+@@ -1063,7 +1063,15 @@ static void ide_flush_cache(IDEState *s)
+ s->status |= BUSY_STAT;
+ ide_set_retry(s);
+ block_acct_start(blk_get_stats(s->blk), &s->acct, 0, BLOCK_ACCT_FLUSH);
+- s->pio_aiocb = blk_aio_flush(s->blk, ide_flush_cb, s);
++
++ if (blk_bs(s->blk)) {
++ s->pio_aiocb = blk_aio_flush(s->blk, ide_flush_cb, s);
++ } else {
++ /* XXX blk_aio_flush() crashes when blk_bs(blk) is NULL, remove this
++ * temporary workaround when blk_aio_*() functions handle NULL blk_bs.
++ */
++ ide_flush_cb(s, 0);
++ }
+ }
+
+ static void ide_cfata_metadata_inquiry(IDEState *s)
+--
+2.13.3
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 7cfbe2ffbe..2378acd975 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -65,16 +65,16 @@
(define-public libraw
(package
(name "libraw")
- (version "0.17.2")
+ (version "0.18.2")
(source (origin
(method url-fetch)
- (uri (string-append "http://www.libraw.org/data/LibRaw-"
+ (uri (string-append "https://www.libraw.org/data/LibRaw-"
version ".tar.gz"))
(sha256
(base32
- "0p6imxpsfn82i0i9w27fnzq6q6gwzvb9f7sygqqakv36fqnc9c4j"))))
+ "1imby9x88pjx4ad1frdi3bfb8dw90ccyj5pb6w3i6i0iijrnndnf"))))
(build-system gnu-build-system)
- (home-page "http://www.libraw.org")
+ (home-page "https://www.libraw.org")
(synopsis "Raw image decoder")
(description
"LibRaw is a library for reading RAW files obtained from digital photo
diff --git a/gnu/packages/pv.scm b/gnu/packages/pv.scm
index 59a0853a0e..db6c3dd669 100644
--- a/gnu/packages/pv.scm
+++ b/gnu/packages/pv.scm
@@ -25,7 +25,7 @@
(define-public pv
(package
(name "pv")
- (version "1.6.0")
+ (version "1.6.6")
(source
(origin
(method url-fetch)
@@ -33,7 +33,7 @@
version ".tar.bz2"))
(sha256
(base32
- "13gg6r84pkvznpd1l11qw1jw9yna40gkgpni256khyx21m785khf"))))
+ "1wbk14xh9rfypiwyy68ssl8dliyji30ly70qki1y2xx3ywszk3k0"))))
(build-system gnu-build-system)
(home-page "https://www.ivarch.com/programs/pv.shtml")
(synopsis "Pipeline progress indicator")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 102b69cae6..6fe83b2a8b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -806,14 +806,14 @@ NetCDF files can also be read and modified. Python-HDF4 is a fork of
(define-public python-h5py
(package
(name "python-h5py")
- (version "2.6.0")
+ (version "2.7.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "h5py" version))
(sha256
(base32
- "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
+ "0433sdv6xc9p7v1xs1gvbxp7p152ywi3nplgjb258q9fvw9469br"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; no test target
@@ -855,14 +855,14 @@ concepts.")
(define-public python-netcdf4
(package
(name "python-netcdf4")
- (version "1.2.7")
+ (version "1.2.9")
(source
(origin
(method url-fetch)
(uri (pypi-uri "netCDF4" version))
(sha256
(base32
- "1fllizmnpw0zkzzm4j9pgamarlzfn3kmv9zrm0w65q1y31h9ni0c"))))
+ "1h6jq338amlbk0ilzvjyl7cck80i0bah9a5spn9in71vy2qxm7i5"))))
(build-system python-build-system)
(native-inputs
`(("python-cython" ,python-cython)))
@@ -3477,7 +3477,7 @@ and is very extensible.")
(define-public python-scikit-learn
(package
(name "python-scikit-learn")
- (version "0.18.1")
+ (version "0.19.0")
(source
(origin
(method url-fetch)
@@ -3487,7 +3487,7 @@ and is very extensible.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1hwswckdmd27f7k1jvwdc0m4mqrgxl2s245yq1scq34v124bjqgq"))))
+ "0g7q4ri75mj93wpa9bp83a3jmrf3dm5va9h7k4zkbcxr6bgqka15"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -5230,6 +5230,53 @@ cluster without needing to write any wrapper code yourself.")
(define-public python2-gridmap
(package-with-python2 python-gridmap))
+(define-public python-honcho
+ (package
+ (name "python-honcho")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/nickstenning/honcho/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0zizn61n5z5hq421hkypk9pw8s6fpxw30f4hsg7k4ivwzy3gjw9j"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest-3.0)
+ ("python-mock" ,python-mock)
+ ("python-tox" ,python-tox)
+ ("which" ,which))) ;for tests
+ (propagated-inputs
+ `(("python-jinja2" ,python-jinja2)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ ;; fix honcho path in testsuite
+ (substitute* "tests/conftest.py"
+ (("'honcho'") (string-append "'" (assoc-ref outputs "out")
+ "/bin/honcho" "'")))
+ ;; It's easier to run tests after install.
+ ;; Make installed package available for running the tests
+ (add-installed-pythonpath inputs outputs)
+ (zero? (system* "py.test" "-v")))))))
+ (home-page "https://github.com/nickstenning/honcho")
+ (synopsis "Manage Procfile-based applications")
+ (description
+ "A Procfile is a file which describes how to run an application
+consisting of serveral processes. honcho starts all listed processes.
+The output of all running processes is collected by honcho and
+displayed.")
+ (license license:expat)))
+
+(define-public python2-honcho
+ (package-with-python2 python-honcho))
+
(define-public python-pexpect
(package
(name "python-pexpect")
@@ -13932,7 +13979,7 @@ parse many formal languages.")
(define-public python2-cliapp
(package
(name "python2-cliapp")
- (version "1.20160724")
+ (version "1.20170823")
(source
(origin
(method url-fetch)
@@ -13941,7 +13988,7 @@ parse many formal languages.")
version ".tar.gz"))
(sha256
(base32
- "025cyi75vxyghbm4hav8dz4fzwksshddavy9g9fwr440awcvw74f"))))
+ "1i9gik0xrj6jmi95s5w988jl1y265baz5xm5pbqdyvsh8h9ln6yq"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2))
@@ -13958,7 +14005,7 @@ iterating over input files.")
(define-public python2-ttystatus
(package
(name "python2-ttystatus")
- (version "0.32")
+ (version "0.35")
(source
(origin
(method url-fetch)
@@ -13967,7 +14014,7 @@ iterating over input files.")
version ".tar.gz"))
(sha256
(base32
- "0b5g889jj23r2w1hi300cdldx6jvspanp0ybf5n1qvdvl150aamf"))))
+ "0vivqbw7ddhsq1zj3g9cvvv4f0phl0pis2smsnwcr2szz2fk3hl6"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2))
@@ -15566,14 +15613,14 @@ address is valid and really exists.")
(define-public python-marshmallow
(package
(name "python-marshmallow")
- (version "3.0.0b2")
+ (version "3.0.0b3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "marshmallow" version))
(sha256
(base32
- "11bnpvfdbczr74177p295zbkdrax2cahvbj5bqhhlprgz2xxi5d9"))))
+ "07mcrij1yvk85lvgx44wwr9pc80xryghvlgayb057g1cazcypysd"))))
(build-system python-build-system)
(propagated-inputs
`(("python-dateutil" ,python-dateutil)
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 3994191bd2..8032e3181d 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -249,6 +249,8 @@ that implements both the msgpack and msgpack-rpc specifications.")
(base32
"1vk6pjh0f5k6jwk2sszb9z5169whmiha9ainbdpa1arxlkq7v3b6"))))
(build-system cmake-build-system)
+ (arguments
+ '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
(inputs
`(("boost" ,boost)))
(native-inputs
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index 37e09d8642..5a46b0db64 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Claes Wallin <claes.wallin@greatsinodevelopment.com>
;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
+;;; Copyright © 2017 Z. Ren <zren@dlut.edu.cn>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -39,7 +40,16 @@
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-force-devr") ; do not analyze /dev/random
- #:tests? #f)) ; no tests exist
+ #:tests? #f ; no tests exist
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'reproducible
+ (lambda _
+ ;; Sort source files deterministically so that the *.a
+ ;; and *.so files are reproducible.
+ (substitute* "Makefile"
+ (("\\$\\(ALL_SRCS:%.c=%.o\\)")
+ "$(sort $(ALL_SRCS:%.c=%.o))"))
+ #t)))))
(home-page "http://skarnet.org/software/skalibs/")
(synopsis "Platform abstraction libraries for skarnet.org software")
(description
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 685042240a..ad3032e2ec 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -126,11 +126,12 @@ be output in text, PostScript, PDF or HTML.")
"PKG_BUILT_STAMP=1970-01-01")
#:phases
(modify-phases %standard-phases
- ;; FIXME: see bug #28157.
- (add-before 'configure 'patch-which
+ (add-before 'configure 'do-not-compress-serialized-files
(lambda* (#:key inputs #:allow-other-keys)
- (substitute* "src/library/base/R/unix/system.unix.R"
- (("@WHICH@") "which"))
+ ;; This ensures that Guix can detect embedded store references;
+ ;; see bug #28157 for details.
+ (substitute* "src/library/base/makebasedb.R"
+ (("compress = TRUE") "compress = FALSE"))
#t))
(add-before 'configure 'patch-uname
(lambda* (#:key inputs #:allow-other-keys)
@@ -250,10 +251,8 @@ be output in text, PostScript, PDF or HTML.")
("libxt" ,libxt)
("pcre" ,pcre)
("readline" ,readline)
+ ("which" ,which)
("zlib" ,zlib)))
- ;; FIXME: By default Sys.which embeds a reference to "which", but this
- ;; reference is not detected by Guix (see bug #28157).
- (propagated-inputs `(("which" ,which)))
(native-search-paths
(list (search-path-specification
(variable "R_LIBS_SITE")
@@ -269,6 +268,18 @@ publication-quality data plots. A large amount of 3rd-party packages are
available, greatly increasing its breadth and scope.")
(license license:gpl3+)))
+(define-public rmath-standalone
+ (package (inherit r-minimal)
+ (name "rmath-standalone")
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'chdir
+ (lambda _ (chdir "src/nmath/standalone/") #t)))))
+ (synopsis "Standalone R math library")
+ (description
+ "This package provides the R math library as an independent package.")))
+
(define-public r-boot
(package
(name "r-boot")
diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm
index 5f2bef16df..611a9a0558 100644
--- a/gnu/packages/valgrind.scm
+++ b/gnu/packages/valgrind.scm
@@ -41,6 +41,8 @@
"18bnrw9b1d55wi1wnl68n25achsp9w48n51n1xw4fwjjnaal7jk7"))
(patches (search-patches "valgrind-enable-arm.patch"))))
(build-system gnu-build-system)
+ (outputs '("doc" ;16 MB
+ "out"))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -53,6 +55,13 @@
(("obj:/lib") "obj:*/lib")
(("obj:/usr/X11R6/lib") "obj:*/lib")
(("obj:/usr/lib") "obj:*/lib"))
+ #t)))
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((orig (format #f "~a/share/doc" (assoc-ref outputs "out")))
+ (dest (format #f "~a/share" (assoc-ref outputs "doc"))))
+ (mkdir-p dest)
+ (rename-file orig dest)
#t))))))
(inputs `(;; GDB is needed to provide a sane default for `--db-command'.
("gdb" ,gdb)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 2057307a30..4ce2a8f401 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1121,7 +1121,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
- (version "2017.08.18")
+ (version "2017.08.23")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@@ -1129,7 +1129,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
- "1mn3wi31k62c6drpplzp2irygjhiwprj5k7w4m0g8m4bgfdjgx57"))))
+ "1vq0r37ynnj2hx0ssh3hycg4wzhwch5pphq76swfz76r1klnrich"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index ab364cd1fb..d06c55bd57 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -87,7 +87,8 @@
"qemu-CVE-2017-10806.patch"
"qemu-CVE-2017-10911.patch"
"qemu-CVE-2017-11334.patch"
- "qemu-CVE-2017-11434.patch"))
+ "qemu-CVE-2017-11434.patch"
+ "qemu-CVE-2017-12809.patch"))
(sha256
(base32
"08mhfs0ndbkyqgw7fjaa9vjxf4dinrly656f6hjzvmaz7hzc677h"))))
@@ -361,7 +362,16 @@ manage system or application containers.")
(lambda _
(zero? (system* "make" "install"
"sysconfdir=/tmp/etc"
- "localstatedir=/tmp/var")))))))
+ "localstatedir=/tmp/var"))))
+ (add-after 'install 'wrap-libvirtd
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-program (string-append out "/sbin/libvirtd")
+ `("PATH" = (,(string-append (assoc-ref inputs "iproute")
+ "/sbin")
+ ,(string-append (assoc-ref inputs "qemu")
+ "/bin"))))
+ #t))))))
(inputs
`(("libxml2" ,libxml2)
("gnutls" ,gnutls)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index ccba7ce7e6..64d6874001 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -73,6 +73,7 @@
#:use-module (gnu packages gnuzilla)
#:use-module (gnu packages gperf)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages java)
#:use-module (gnu packages javascript)
#:use-module (gnu packages image)
#:use-module (gnu packages libidn)
@@ -306,6 +307,42 @@ such as high performance, preforking, signal support, superdaemon awareness,
and UNIX socket support.")
(license l:perl-license)))
+(define-public icedtea-web
+ (package
+ (name "icedtea-web")
+ (version "1.6.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://icedtea.wildebeest.org/download/source/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "004kwrngyxxlrlzby4vzxjr0xcyngcdc9dfgnvi61ffnjr006ryf"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--disable-plugin" ;NPAPI plugins are obsolete nowadays.
+ (string-append "BIN_BASH=" (assoc-ref %build-inputs "bash")
+ "/bin/bash")
+ (string-append "--with-jdk-home=" (assoc-ref %build-inputs "jdk")))))
+ (outputs '("out" "doc"))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("zip" ,zip)))
+ (inputs
+ `(("gtk+" ,gtk+)
+ ("jdk" ,icedtea "jdk")))
+ (home-page "http://icedtea.classpath.org/wiki/IcedTea-Web")
+ (synopsis "Java Web Start")
+ (description
+ "IcedTea-Web is an implementation of the @dfn{Java Network Launching
+Protocol}, also known as Java Web Start. This package provides tools and
+libraries for working with JNLP applets.")
+ ;; The program is mainly GPL2+, with some individual files under LGPL2.1+
+ ;; or dual licenses.
+ (license l:gpl2+)))
+
(define-public jansson
(package
(name "jansson")
@@ -4763,7 +4800,7 @@ command-line arguments or read from stdin.")
(define-public python-internetarchive
(package
(name "python-internetarchive")
- (version "1.6.0")
+ (version "1.7.1")
(source
(origin
(method url-fetch)
@@ -4772,7 +4809,7 @@ command-line arguments or read from stdin.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "00v1489rv1ydcihwbdl7sqpcpmm98b9kqqlfggr32k0ndmv7ivas"))))
+ "1lj4r0y67mwjns2gcjvw0y7m5x0vqir2iv7s4q2y93492azli1qh"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; 11 tests of 105 fail to mock "requests".
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 565e6e8927..edb70a37a8 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -451,7 +451,7 @@ of the screen selected by mouse.")
(define-public slop
(package
(name "slop")
- (version "7.3.48")
+ (version "7.3.49")
(source (origin
(method url-fetch)
(uri (string-append
@@ -460,7 +460,7 @@ of the screen selected by mouse.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "14igmf6a6vwx75gjnj10497n04klc35dvq87id8g9jn9rd3m6n25"))))
+ "0gxi174vi13ldjaf776s2jcdyy379lnwwml29nk1bkzj5d5gpghm"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; no "check" target
@@ -484,7 +484,7 @@ selection's dimensions to stdout.")
(define-public maim
(package
(name "maim")
- (version "5.4.66")
+ (version "5.4.68")
(source (origin
(method url-fetch)
(uri (string-append
@@ -493,7 +493,7 @@ selection's dimensions to stdout.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "077aww1fab3ihzxdybxpdh0h3d7fbgpvsm9q92byfb2ig32viyfa"))))
+ "0f54s7csrxjd5r9anqqa92diwmzdplpws3llmbr6g3c0l6bp8815"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; no "check" target
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 1c458831da..2ae87a60b7 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5876,7 +5876,7 @@ basic eye-candy effects.")
(define-public xpra
(package
(name "xpra")
- (version "2.0.3")
+ (version "2.1.1")
(source
(origin
(method url-fetch)
@@ -5884,7 +5884,7 @@ basic eye-candy effects.")
version ".tar.xz"))
(sha256
(base32
- "1f2mkbgjslfivh5xq5xbab1cn6jjyc1d104f692f3s0dnhq7dafa"))))
+ "0fgdddhafxnpjlw5nhfyfyimxp43hdn4yhp1vbsjrz3ypfsfhxq7"))))
(build-system python-build-system)
(inputs `(("ffmpeg", ffmpeg)
("flac", flac)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index e28e0d7ac5..54bd9ca2fb 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1220,6 +1220,9 @@ Service Switch}, for an example."
# Don't log private authentication messages!
*.info;mail.none;authpriv.none /var/log/messages
+ # Like /var/log/messages, but also including \"debug\"-level logs.
+ *.debug;mail.none;authpriv.none /var/log/debug
+
# Same, in a different place.
*.info;mail.none;authpriv.none /dev/tty12
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 50a561bf51..0509bd8a44 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -73,6 +73,9 @@
elogind-service
elogind-service-type
+ accountsservice-service-type
+ accountsservice-service
+
gnome-desktop-configuration
gnome-desktop-configuration?
gnome-desktop-service
@@ -705,6 +708,33 @@ when they log out."
;;;
+;;; AccountsService service.
+;;;
+
+(define %accountsservice-activation
+ #~(begin
+ (use-modules (guix build utils))
+ (mkdir-p "/var/lib/AccountsService")))
+
+(define accountsservice-service-type
+ (service-type (name 'accountsservice)
+ (extensions
+ (list (service-extension activation-service-type
+ (const %accountsservice-activation))
+ (service-extension dbus-root-service-type list)
+ (service-extension polkit-service-type list)))))
+
+(define* (accountsservice-service #:key (accountsservice accountsservice))
+ "Return a service that runs AccountsService, a system service that
+can list available accounts, change their passwords, and so on.
+AccountsService integrates with PolicyKit to enable unprivileged users to
+acquire the capability to modify their system configuration.
+@uref{https://www.freedesktop.org/wiki/Software/AccountsService/, the
+accountsservice web site} for more information."
+ (service accountsservice-service-type accountsservice))
+
+
+;;;
;;; GNOME desktop service.
;;;
@@ -783,6 +813,7 @@ with the administrator's password."
(wicd-service)
(udisks-service)
(upower-service)
+ (accountsservice-service)
(colord-service)
(geoclue-service)
(polkit-service)
diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm
index e16d51b9d0..5c894af6fd 100644
--- a/gnu/services/herd.scm
+++ b/gnu/services/herd.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -136,7 +136,8 @@ does not denote an error."
(define* (invoke-action service action arguments cont)
"Invoke ACTION on SERVICE with ARGUMENTS. On success, call CONT with the
-result. Otherwise return #f."
+list of results (one result per instance with the name SERVICE). Otherwise
+return #f."
(with-shepherd sock
(write `(shepherd-command (version 0)
(action ,action)
@@ -186,30 +187,34 @@ of pairs."
"Return the list of currently defined Shepherd services, represented as
<live-service> objects. Return #f if the list of services could not be
obtained."
- (with-shepherd-action 'root ('status) services
- (match services
- ((('service ('version 0 _ ...) _ ...) ...)
- (map (lambda (service)
- (alist-let* service (provides requires running)
- (live-service provides requires running)))
- services))
- (x
- #f))))
+ (with-shepherd-action 'root ('status) results
+ ;; We get a list of results, one for each service with the name 'root'.
+ ;; In practice there's only one such service though.
+ (match results
+ ((services _ ...)
+ (match services
+ ((('service ('version 0 _ ...) _ ...) ...)
+ (map (lambda (service)
+ (alist-let* service (provides requires running)
+ (live-service provides requires running)))
+ services))
+ (x
+ #f))))))
(define (unload-service service)
"Unload SERVICE, a symbol name; return #t on success."
(with-shepherd-action 'root ('unload (symbol->string service)) result
- result))
+ (first result)))
(define (%load-file file)
"Load FILE in the Shepherd."
(with-shepherd-action 'root ('load file) result
- result))
+ (first result)))
(define (eval-there exp)
"Eval EXP in the Shepherd."
(with-shepherd-action 'root ('eval (object->string exp)) result
- result))
+ (first result)))
(define (load-services files)
"Load and register the services from FILES, where FILES contain code that
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
new file mode 100644
index 0000000000..845cdb07ba
--- /dev/null
+++ b/gnu/services/virtualization.scm
@@ -0,0 +1,492 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Ryan Moe <ryan.moe@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services virtualization)
+ #:use-module (gnu services)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu services base)
+ #:use-module (gnu services dbus)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu system shadow)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages virtualization)
+ #:use-module (guix records)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (ice-9 match)
+
+ #:export (libvirt-configuration
+ libvirt-service-type
+ virtlog-service-type))
+
+(define (uglify-field-name field-name)
+ (let ((str (symbol->string field-name)))
+ (string-join
+ (string-split (string-delete #\? str) #\-)
+ "_")))
+
+(define (quote-val val)
+ (string-append "\"" val "\""))
+
+(define (serialize-field field-name val)
+ (format #t "~a = ~a\n" (uglify-field-name field-name) val))
+
+(define (serialize-string field-name val)
+ (serialize-field field-name (quote-val val)))
+
+(define (serialize-boolean field-name val)
+ (serialize-field field-name (if val 1 0)))
+
+(define (serialize-integer field-name val)
+ (serialize-field field-name val))
+
+(define (build-opt-list val)
+ (string-append
+ "["
+ (string-join (map quote-val val) ",")
+ "]"))
+
+(define optional-list? list?)
+(define optional-string? string?)
+
+(define (serialize-list field-name val)
+ (serialize-field field-name (build-opt-list val)))
+
+(define (serialize-optional-list field-name val)
+ (if (null? val)
+ (format #t "# ~a = []\n" (uglify-field-name field-name))
+ (serialize-list field-name val)))
+
+(define (serialize-optional-string field-name val)
+ (if (string-null? val)
+ (format #t "# ~a = \"\"\n" (uglify-field-name field-name))
+ (serialize-string field-name val)))
+
+(define-configuration libvirt-configuration
+ (libvirt
+ (package libvirt)
+ "Libvirt package.")
+ (listen-tls?
+ (boolean #t)
+ "Flag listening for secure TLS connections on the public TCP/IP port.
+must set @code{listen} for this to have any effect.
+
+It is necessary to setup a CA and issue server certificates before
+using this capability.")
+ (listen-tcp?
+ (boolean #f)
+ "Listen for unencrypted TCP connections on the public TCP/IP port.
+must set @code{listen} for this to have any effect.
+
+Using the TCP socket requires SASL authentication by default. Only
+SASL mechanisms which support data encryption are allowed. This is
+DIGEST_MD5 and GSSAPI (Kerberos5)")
+ (tls-port
+ (string "16514")
+ "Port for accepting secure TLS connections This can be a port number,
+or service name")
+ (tcp-port
+ (string "16509")
+ "Port for accepting insecure TCP connections This can be a port number,
+or service name")
+ (listen-addr
+ (string "0.0.0.0")
+ "IP address or hostname used for client connections.")
+ (mdns-adv?
+ (boolean #f)
+ "Flag toggling mDNS advertisement of the libvirt service.
+
+Alternatively can disable for all services on a host by
+stopping the Avahi daemon.")
+ (mdns-name
+ (string (string-append "Virtualization Host " (gethostname)))
+ "Default mDNS advertisement name. This must be unique on the
+immediate broadcast network.")
+ (unix-sock-group
+ (string "root")
+ "UNIX domain socket group ownership. This can be used to
+allow a 'trusted' set of users access to management capabilities
+without becoming root.")
+ (unix-sock-ro-perms
+ (string "0777")
+ "UNIX socket permissions for the R/O socket. This is used
+for monitoring VM status only.")
+ (unix-sock-rw-perms
+ (string "0770")
+ "UNIX socket permissions for the R/W socket. Default allows
+only root. If PolicyKit is enabled on the socket, the default
+will change to allow everyone (eg, 0777)")
+ (unix-sock-admin-perms
+ (string "0777")
+ "UNIX socket permissions for the admin socket. Default allows
+only owner (root), do not change it unless you are sure to whom
+you are exposing the access to.")
+ (unix-sock-dir
+ (string "/var/run/libvirt")
+ "The directory in which sockets will be found/created.")
+ (auth-unix-ro
+ (string "polkit")
+ "Authentication scheme for UNIX read-only sockets. By default
+socket permissions allow anyone to connect")
+ (auth-unix-rw
+ (string "polkit")
+ "Authentication scheme for UNIX read-write sockets. By default
+socket permissions only allow root. If PolicyKit support was compiled
+into libvirt, the default will be to use 'polkit' auth.")
+ (auth-tcp
+ (string "sasl")
+ "Authentication scheme for TCP sockets. If you don't enable SASL,
+then all TCP traffic is cleartext. Don't do this outside of a dev/test
+scenario.")
+ (auth-tls
+ (string "none")
+ "Authentication scheme for TLS sockets. TLS sockets already have
+encryption provided by the TLS layer, and limited authentication is
+done by certificates.
+
+It is possible to make use of any SASL authentication mechanism as
+well, by using 'sasl' for this option")
+ (access-drivers
+ (optional-list '())
+ "API access control scheme.
+
+By default an authenticated user is allowed access to all APIs. Access
+drivers can place restrictions on this.")
+ (key-file
+ (string "")
+ "Server key file path. If set to an empty string, then no private key
+is loaded.")
+ (cert-file
+ (string "")
+ "Server key file path. If set to an empty string, then no certificate
+is loaded.")
+ (ca-file
+ (string "")
+ "Server key file path. If set to an empty string, then no CA certificate
+is loaded.")
+ (crl-file
+ (string "")
+ "Certificate revocation list path. If set to an empty string, then no
+CRL is loaded.")
+ (tls-no-sanity-cert
+ (boolean #f)
+ "Disable verification of our own server certificates.
+
+When libvirtd starts it performs some sanity checks against its own
+certificates.")
+ (tls-no-verify-cert
+ (boolean #f)
+ "Disable verification of client certificates.
+
+Client certificate verification is the primary authentication mechanism.
+Any client which does not present a certificate signed by the CA
+will be rejected.")
+ (tls-allowed-dn-list
+ (optional-list '())
+ "Whitelist of allowed x509 Distinguished Name.")
+ (sasl-allowed-usernames
+ (optional-list '())
+ "Whitelist of allowed SASL usernames. The format for username
+depends on the SASL authentication mechanism.")
+ (tls-priority
+ (string "NORMAL")
+ "Override the compile time default TLS priority string. The
+default is usually \"NORMAL\" unless overridden at build time.
+Only set this is it is desired for libvirt to deviate from
+the global default settings.")
+ (max-clients
+ (integer 5000)
+ "Maximum number of concurrent client connections to allow
+over all sockets combined.")
+ (max-queued-clients
+ (integer 1000)
+ "Maximum length of queue of connections waiting to be
+accepted by the daemon. Note, that some protocols supporting
+retransmission may obey this so that a later reattempt at
+connection succeeds.")
+ (max-anonymous-clients
+ (integer 20)
+ "Maximum length of queue of accepted but not yet authenticated
+clients. Set this to zero to turn this feature off")
+ (min-workers
+ (integer 5)
+ "Number of workers to start up initially.")
+ (max-workers
+ (integer 20)
+ "Maximum number of worker threads.
+
+If the number of active clients exceeds @code{min-workers},
+then more threads are spawned, up to max_workers limit.
+Typically you'd want max_workers to equal maximum number
+of clients allowed.")
+ (prio-workers
+ (integer 5)
+ "Number of priority workers. If all workers from above
+pool are stuck, some calls marked as high priority
+(notably domainDestroy) can be executed in this pool.")
+ (max-requests
+ (integer 20)
+ "Total global limit on concurrent RPC calls.")
+ (max-client-requests
+ (integer 5)
+ "Limit on concurrent requests from a single client
+connection. To avoid one client monopolizing the server
+this should be a small fraction of the global max_requests
+and max_workers parameter.")
+ (admin-min-workers
+ (integer 1)
+ "Same as @code{min-workers} but for the admin interface.")
+ (admin-max-workers
+ (integer 5)
+ "Same as @code{max-workers} but for the admin interface.")
+ (admin-max-clients
+ (integer 5)
+ "Same as @code{max-clients} but for the admin interface.")
+ (admin-max-queued-clients
+ (integer 5)
+ "Same as @code{max-queued-clients} but for the admin interface.")
+ (admin-max-client-requests
+ (integer 5)
+ "Same as @code{max-client-requests} but for the admin interface.")
+ (log-level
+ (integer 3)
+ "Logging level. 4 errors, 3 warnings, 2 information, 1 debug.")
+ (log-filters
+ (string "3:remote 4:event")
+ "Logging filters.
+
+A filter allows to select a different logging level for a given category
+of logs
+The format for a filter is one of:
+@itemize
+@item x:name
+
+@item x:+name
+@end itemize
+
+where @code{name} is a string which is matched against the category
+given in the @code{VIR_LOG_INIT()} at the top of each libvirt source
+file, e.g., \"remote\", \"qemu\", or \"util.json\" (the name in the
+filter can be a substring of the full category name, in order
+to match multiple similar categories), the optional \"+\" prefix
+tells libvirt to log stack trace for each message matching
+name, and @code{x} is the minimal level where matching messages should
+be logged:
+
+@itemize
+@item 1: DEBUG
+@item 2: INFO
+@item 3: WARNING
+@item 4: ERROR
+@end itemize
+
+Multiple filters can be defined in a single filters statement, they just
+need to be separated by spaces.")
+ (log-outputs
+ (string "3:stderr")
+ "Logging outputs.
+
+An output is one of the places to save logging information
+The format for an output can be:
+
+@table @code
+@item x:stderr
+output goes to stderr
+
+@item x:syslog:name
+use syslog for the output and use the given name as the ident
+
+@item x:file:file_path
+output to a file, with the given filepath
+
+@item x:journald
+output to journald logging system
+@end table
+
+In all case the x prefix is the minimal level, acting as a filter
+
+@itemize
+@item 1: DEBUG
+@item 2: INFO
+@item 3: WARNING
+@item 4: ERROR
+@end itemize
+
+Multiple outputs can be defined, they just need to be separated by spaces.")
+ (audit-level
+ (integer 1)
+ "Allows usage of the auditing subsystem to be altered
+
+@itemize
+@item 0: disable all auditing
+@item 1: enable auditing, only if enabled on host
+@item 2: enable auditing, and exit if disabled on host.
+@end itemize
+")
+ (audit-logging
+ (boolean #f)
+ "Send audit messages via libvirt logging infrastructure.")
+ (host-uuid
+ (optional-string "")
+ "Host UUID. UUID must not have all digits be the same.")
+ (host-uuid-source
+ (string "smbios")
+ "Source to read host UUID.
+
+@itemize
+
+@item @code{smbios}: fetch the UUID from @code{dmidecode -s system-uuid}
+
+@item @code{machine-id}: fetch the UUID from @code{/etc/machine-id}
+
+@end itemize
+
+If @code{dmidecode} does not provide a valid UUID a temporary UUID
+will be generated.")
+ (keepalive-interval
+ (integer 5)
+ "A keepalive message is sent to a client after
+@code{keepalive_interval} seconds of inactivity to check if
+the client is still responding. If set to -1, libvirtd will
+never send keepalive requests; however clients can still send
+them and the daemon will send responses.")
+ (keepalive-count
+ (integer 5)
+ "Maximum number of keepalive messages that are allowed to be sent
+to the client without getting any response before the connection is
+considered broken.
+
+In other words, the connection is automatically
+closed approximately after
+@code{keepalive_interval * (keepalive_count + 1)} seconds since the last
+message received from the client. When @code{keepalive-count} is
+set to 0, connections will be automatically closed after
+@code{keepalive-interval} seconds of inactivity without sending any
+keepalive messages.")
+ (admin-keepalive-interval
+ (integer 5)
+ "Same as above but for admin interface.")
+ (admin-keepalive-count
+ (integer 5)
+ "Same as above but for admin interface.")
+ (ovs-timeout
+ (integer 5)
+ "Timeout for Open vSwitch calls.
+
+The @code{ovs-vsctl} utility is used for the configuration and
+its timeout option is set by default to 5 seconds to avoid
+potential infinite waits blocking libvirt."))
+
+(define* (libvirt-conf-file config)
+ "Return a libvirtd config file."
+ (plain-file "libvirtd.conf"
+ (with-output-to-string
+ (lambda ()
+ (serialize-configuration config libvirt-configuration-fields)))))
+
+(define %libvirt-accounts
+ (list (user-group (name "libvirt") (system? #t))))
+
+(define (%libvirt-activation config)
+ (let ((sock-dir (libvirt-configuration-unix-sock-dir config)))
+ #~(begin
+ (use-modules (guix build utils))
+ (mkdir-p #$sock-dir))))
+
+
+(define (libvirt-shepherd-service config)
+ (let* ((config-file (libvirt-conf-file config))
+ (libvirt (libvirt-configuration-libvirt config)))
+ (list (shepherd-service
+ (documentation "Run the libvirt daemon.")
+ (provision '(libvirtd))
+ (start #~(make-forkexec-constructor
+ (list (string-append #$libvirt "/sbin/libvirtd")
+ "-f" #$config-file)))
+ (stop #~(make-kill-destructor))))))
+
+(define libvirt-service-type
+ (service-type (name 'libvirt)
+ (extensions
+ (list
+ (service-extension polkit-service-type
+ (compose list libvirt-configuration-libvirt))
+ (service-extension profile-service-type
+ (compose list
+ libvirt-configuration-libvirt))
+ (service-extension activation-service-type
+ %libvirt-activation)
+ (service-extension shepherd-root-service-type
+ libvirt-shepherd-service)
+ (service-extension account-service-type
+ (const %libvirt-accounts))))
+ (default-value (libvirt-configuration))))
+
+
+(define-record-type* <virtlog-configuration>
+ virtlog-configuration make-virtlog-configuration
+ virtlog-configuration?
+ (libvirt virtlog-configuration-libvirt
+ (default libvirt))
+ (log-level virtlog-configuration-log-level
+ (default 3))
+ (log-filters virtlog-configuration-log-filters
+ (default "3:remote 4:event"))
+ (log-outputs virtlog-configuration-log-outputs
+ (default "3:syslog:virtlogd"))
+ (max-clients virtlog-configuration-max-clients
+ (default 1024))
+ (max-size virtlog-configuration-max-size
+ (default 2097152)) ;; 2MB
+ (max-backups virtlog-configuration-max-backups
+ (default 3)))
+
+(define* (virtlogd-conf-file config)
+ "Return a virtlogd config file."
+ (plain-file "virtlogd.conf"
+ (string-append
+ "log_level = " (number->string (virtlog-configuration-log-level config)) "\n"
+ "log_filters = \"" (virtlog-configuration-log-filters config) "\"\n"
+ "log_outputs = \"" (virtlog-configuration-log-outputs config) "\"\n"
+ "max_clients = " (number->string (virtlog-configuration-max-clients config)) "\n"
+ "max_size = " (number->string (virtlog-configuration-max-size config)) "\n"
+ "max_backups = " (number->string (virtlog-configuration-max-backups config)) "\n")))
+
+(define (virtlogd-shepherd-service config)
+ (let* ((config-file (virtlogd-conf-file config))
+ (libvirt (virtlog-configuration-libvirt config)))
+ (list (shepherd-service
+ (documentation "Run the virtlog daemon.")
+ (provision '(virtlogd))
+ (start #~(make-forkexec-constructor
+ (list (string-append #$libvirt "/sbin/virtlogd")
+ "-f" #$config-file)))
+ (stop #~(make-kill-destructor))))))
+
+(define virtlog-service-type
+ (service-type (name 'virtlogd)
+ (extensions
+ (list
+ (service-extension shepherd-root-service-type
+ virtlogd-shepherd-service)))
+ (default-value (virtlog-configuration))))
+
+(define (generate-libvirt-documentation)
+ (generate-documentation
+ `((libvirt-configuration ,libvirt-configuration-fields))
+ 'libvirt-configuration))
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index cc7adeb5e4..18278502e4 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -30,16 +30,47 @@
#:use-module (guix gexp)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
- #:export (nginx-configuration
+ #:export (<nginx-configuration>
+ nginx-configuration
nginx-configuration?
+ nginx-configuartion-nginx
+ nginx-configuration-log-directory
+ nginx-configuration-run-directory
+ nginx-configuration-server-blocks
+ nginx-configuration-upstream-blocks
+ nginx-configuration-file
+
+ <nginx-server-configuration>
nginx-server-configuration
nginx-server-configuration?
+ nginx-server-configuration-http-port
+ nginx-server-configuartion-https-port
+ nginx-server-configuration-server-name
+ nginx-server-configuration-root
+ nginx-server-configuration-locations
+ nginx-server-configuration-index
+ nginx-server-configuration-ssl-certificate
+ nginx-server-configuration-ssl-certificate-key
+ nginx-server-configuration-server-tokens?
+
+ <nginx-upstream-configuration>
nginx-upstream-configuration
nginx-upstream-configuration?
+ nginx-upstream-configuration-name
+ nginx-upstream-configuration-servers
+
+ <nginx-location-configuration>
nginx-location-configuration
nginx-location-configuration?
+ nginx-location-configuration-uri
+ nginx-location-configuration-body
+
+ <nginx-named-location-configuration>
nginx-named-location-configuration
nginx-named-location-configuration?
+ nginx-named-location-configuration-name
+ nginx-named-location-configuration-body
+
nginx-service
nginx-service-type
@@ -293,26 +324,9 @@ of index files."
(inherit config)
(server-blocks
(append (nginx-configuration-server-blocks config)
- servers)))))))
-
-(define* (nginx-service #:key (nginx nginx)
- (log-directory "/var/log/nginx")
- (run-directory "/var/run/nginx")
- (server-list '())
- (upstream-list '())
- (config-file #f))
- "Return a service that runs NGINX, the nginx web server.
-
-The nginx daemon loads its runtime configuration from CONFIG-FILE, stores log
-files in LOG-DIRECTORY, and stores temporary runtime files in RUN-DIRECTORY."
- (service nginx-service-type
- (nginx-configuration
- (nginx nginx)
- (log-directory log-directory)
- (run-directory run-directory)
- (server-blocks server-list)
- (upstream-blocks upstream-list)
- (file config-file))))
+ servers)))))
+ (default-value
+ (nginx-configuration))))
(define-record-type* <fcgiwrap-configuration> fcgiwrap-configuration
make-fcgiwrap-configuration
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 5bae8c18e1..5a8ee6cd40 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -1,4 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;;
@@ -22,14 +23,17 @@
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (gnu system pam)
+ #:use-module (gnu services dbus)
#:use-module ((gnu packages base) #:select (canonical-package))
#:use-module (gnu packages guile)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gl)
#:use-module (gnu packages display-managers)
#:use-module (gnu packages gnustep)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages admin)
#:use-module (gnu packages bash)
+ #:use-module (gnu system shadow)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix packages)
@@ -41,6 +45,7 @@
#:use-module (ice-9 match)
#:export (xorg-configuration-file
%default-xorg-modules
+ xorg-wrapper
xorg-start-command
xinitrc
@@ -53,7 +58,11 @@
screen-locker
screen-locker?
screen-locker-service-type
- screen-locker-service))
+ screen-locker-service
+
+ gdm-configuration
+ gdm-service-type
+ gdm-service))
;;; Commentary:
;;;
@@ -184,36 +193,51 @@ in @var{modules}."
files)
#t))))
-(define* (xorg-start-command #:key
- (guile (canonical-package guile-2.0))
- (configuration-file (xorg-configuration-file))
- (modules %default-xorg-modules)
- (xorg-server xorg-server))
+(define* (xorg-wrapper #:key
+ (guile (canonical-package guile-2.0))
+ (configuration-file (xorg-configuration-file))
+ (modules %default-xorg-modules)
+ (xorg-server xorg-server))
"Return a derivation that builds a @var{guile} script to start the X server
from @var{xorg-server}. @var{configuration-file} is the server configuration
file or a derivation that builds it; when omitted, the result of
-@code{xorg-configuration-file} is used.
-
-Usually the X server is started by a login manager."
+@code{xorg-configuration-file} is used. The resulting script should be used
+in place of @code{/usr/bin/X}."
(define exp
;; Write a small wrapper around the X server.
#~(begin
(setenv "XORG_DRI_DRIVER_PATH" (string-append #$mesa "/lib/dri"))
(setenv "XKB_BINDIR" (string-append #$xkbcomp "/bin"))
- (apply execl (string-append #$xorg-server "/bin/X")
- (string-append #$xorg-server "/bin/X") ;argv[0]
- "-logverbose" "-verbose"
- "-xkbdir" (string-append #$xkeyboard-config "/share/X11/xkb")
- "-config" #$configuration-file
- "-configdir" #$(xorg-configuration-directory modules)
- "-nolisten" "tcp" "-terminate"
+ (let ((X (string-append #$xorg-server "/bin/X")))
+ (apply execl X X
+ "-xkbdir" (string-append #$xkeyboard-config "/share/X11/xkb")
+ "-config" #$configuration-file
+ "-configdir" #$(xorg-configuration-directory modules)
+ (cdr (command-line))))))
+
+ (program-file "X-wrapper" exp))
- ;; Note: SLiM and other display managers add the
- ;; '-auth' flag by themselves.
- (cdr (command-line)))))
+(define* (xorg-start-command #:key
+ (guile (canonical-package guile-2.0))
+ (configuration-file (xorg-configuration-file))
+ (modules %default-xorg-modules)
+ (xorg-server xorg-server))
+ "Return a derivation that builds a @code{startx} script in which a number of
+X modules are available. See @code{xorg-wrapper} for more details on the
+arguments. The result should be used in place of @code{startx}."
+ (define X
+ (xorg-wrapper #:guile guile
+ #:configuration-file configuration-file
+ #:modules modules
+ #:xorg-server xorg-server))
+ (define exp
+ ;; Write a small wrapper around the X server.
+ #~(apply execl #$X #$X ;; Second #$X is for argv[0].
+ "-logverbose" "-verbose" "-nolisten" "tcp" "-terminate"
+ (cdr (command-line))))
- (program-file "start-xorg" exp))
+ (program-file "startx" exp))
(define* (xinitrc #:key
(guile (canonical-package guile-2.0))
@@ -459,4 +483,142 @@ makes the good ol' XlockMore usable."
(file-append package "/bin/" program)
allow-empty-passwords?)))
+(define %gdm-accounts
+ (list (user-group (name "gdm") (system? #t))
+ (user-account
+ (name "gdm")
+ (group "gdm")
+ (system? #t)
+ (comment "GNOME Display Manager user")
+ (home-directory "/var/lib/gdm")
+ (shell (file-append shadow "/sbin/nologin")))))
+
+(define-record-type* <gdm-configuration>
+ gdm-configuration make-gdm-configuration
+ gdm-configuration?
+ (gdm gdm-configuration-gdm (default gdm))
+ (allow-empty-passwords? gdm-configuration-allow-empty-passwords? (default #t))
+ (allow-root? gdm-configuration-allow-root? (default #t))
+ (auto-login? gdm-configuration-auto-login? (default #f))
+ (default-user gdm-configuration-default-user (default #f))
+ (x-server gdm-configuration-x-server))
+
+(define (gdm-etc-service config)
+ (define gdm-configuration-file
+ (mixed-text-file "gdm-custom.conf"
+ "[daemon]\n"
+ "#User=gdm\n"
+ "#Group=gdm\n"
+ (if (gdm-configuration-auto-login? config)
+ (string-append
+ "AutomaticLoginEnable=true\n"
+ "AutomaticLogin="
+ (or (gdm-configuration-default-user config)
+ (error "missing default user for auto-login"))
+ "\n")
+ (string-append
+ "AutomaticLoginEnable=false\n"
+ "#AutomaticLogin=\n"))
+ "#TimedLoginEnable=false\n"
+ "#TimedLogin=\n"
+ "#TimedLoginDelay=0\n"
+ "#InitialSetupEnable=true\n"
+ ;; Enable me once X is working.
+ "WaylandEnable=false\n"
+ "\n"
+ "[debug]\n"
+ "Enable=true\n"
+ "\n"
+ "[security]\n"
+ "#DisallowTCP=true\n"
+ "#AllowRemoteAutoLogin=false\n"))
+ `(("gdm" ,(file-union
+ "gdm"
+ `(("custom.conf" ,gdm-configuration-file))))))
+
+(define (gdm-pam-service config)
+ "Return a PAM service for @command{gdm}."
+ (list
+ (pam-service
+ (inherit (unix-pam-service "gdm-autologin"))
+ (auth (list (pam-entry
+ (control "[success=ok default=1]")
+ (module (file-append (gdm-configuration-gdm config)
+ "/lib/security/pam_gdm.so")))
+ (pam-entry
+ (control "sufficient")
+ (module "pam_permit.so")))))
+ (pam-service
+ (inherit (unix-pam-service "gdm-launch-environment"))
+ (auth (list (pam-entry
+ (control "required")
+ (module "pam_permit.so")))))
+ (unix-pam-service
+ "gdm-password"
+ #:allow-empty-passwords? (gdm-configuration-allow-empty-passwords? config)
+ #:allow-root? (gdm-configuration-allow-root? config))))
+
+(define (gdm-shepherd-service config)
+ (list (shepherd-service
+ (documentation "Xorg display server (GDM)")
+ (provision '(xorg-server))
+ (requirement '(dbus-system user-processes host-name udev))
+ ;; While this service isn't working properly, turn off auto-start.
+ (auto-start? #f)
+ (start #~(lambda ()
+ (fork+exec-command
+ (list #$(file-append (gdm-configuration-gdm config)
+ "/bin/gdm"))
+ #:environment-variables
+ (list (string-append
+ "GDM_X_SERVER="
+ #$(gdm-configuration-x-server config))))))
+ (stop #~(make-kill-destructor))
+ (respawn? #t))))
+
+(define gdm-service-type
+ (service-type (name 'gdm)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ gdm-shepherd-service)
+ (service-extension account-service-type
+ (const %gdm-accounts))
+ (service-extension pam-root-service-type
+ gdm-pam-service)
+ (service-extension etc-service-type
+ gdm-etc-service)
+ (service-extension dbus-root-service-type
+ (compose list gdm-configuration-gdm))))))
+
+;; This service isn't working yet; it gets as far as starting to run the
+;; greeter from gnome-shell but doesn't get any further. It is here because
+;; it doesn't hurt anyone and perhaps it inspires someone to fix it :)
+(define* (gdm-service #:key (gdm gdm)
+ (allow-empty-passwords? #t)
+ (x-server (xorg-wrapper)))
+ "Return a service that spawns the GDM graphical login manager, which in turn
+starts the X display server with @var{X}, a command as returned by
+@code{xorg-wrapper}.
+
+@cindex X session
+
+GDM automatically looks for session types described by the @file{.desktop}
+files in @file{/run/current-system/profile/share/xsessions} and allows users
+to choose a session from the log-in screen using @kbd{F1}. Packages such as
+@var{xfce}, @var{sawfish}, and @var{ratpoison} provide @file{.desktop} files;
+adding them to the system-wide set of packages automatically makes them
+available at the log-in screen.
+
+In addition, @file{~/.xsession} files are honored. When available,
+@file{~/.xsession} must be an executable that starts a window manager
+and/or other X clients.
+
+When @var{allow-empty-passwords?} is true, allow logins with an empty
+password."
+ (service gdm-service-type
+ (gdm-configuration
+ (gdm gdm)
+ (allow-empty-passwords? allow-empty-passwords?)
+ (x-server x-server))))
+
;;; xorg.scm ends here
diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl
index a10ee6e7fe..459d241885 100644
--- a/gnu/system/examples/bare-bones.tmpl
+++ b/gnu/system/examples/bare-bones.tmpl
@@ -14,7 +14,7 @@
;; the label of the target root file system.
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
- (device "/dev/sdX")))
+ (target "/dev/sdX")))
(file-systems (cons (file-system
(device "my-root")
(title 'label)
diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl
index 3cfbd9add6..2131d1f18f 100644
--- a/gnu/system/examples/desktop.tmpl
+++ b/gnu/system/examples/desktop.tmpl
@@ -15,7 +15,7 @@
;; is the label of the target root file system.
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
- (device "/dev/sdX")))
+ (target "/dev/sdX")))
;; Specify a mapped device for the encrypted root partition.
;; The UUID is that returned by 'cryptsetup luksUUID'.
diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl
index 127ceb4dc5..fb7cfebf6d 100644
--- a/gnu/system/examples/lightweight-desktop.tmpl
+++ b/gnu/system/examples/lightweight-desktop.tmpl
@@ -15,7 +15,7 @@
;; Partition mounted on /boot/efi.
(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
- (device "/boot/efi")))
+ (target "/boot/efi")))
;; Assume the target root file system is labelled "my-root".
(file-systems (cons* (file-system
diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl
index 57ac71c535..056b439c5f 100644
--- a/gnu/system/examples/vm-image.tmpl
+++ b/gnu/system/examples/vm-image.tmpl
@@ -26,7 +26,7 @@ partprobe, and then 2) resizing the filesystem with resize2fs.\n"))
;; Assuming /dev/sdX is the target hard disk, and "my-root" is
;; the label of the target root file system.
- (bootloader (grub-configuration (device "/dev/sda")
+ (bootloader (grub-configuration (target "/dev/sda")
(terminal-outputs '(console))))
(file-systems (cons (file-system
(device "my-root")
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 6837385daf..7f6ffe9582 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -299,8 +299,7 @@ Use Alt-F2 for documentation.
(host-name "gnu")
(timezone "Europe/Paris")
(locale "en_US.utf8")
- (bootloader (grub-configuration
- (device "/dev/sda")))
+ (bootloader (grub-configuration (target "/dev/sda")))
(file-systems
;; Note: the disk image build code overrides this root file system with
;; the appropriate one.
diff --git a/gnu/tests.scm b/gnu/tests.scm
index 2886a982f4..97b9cc5107 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -206,7 +206,7 @@ the system under test."
(timezone "Europe/Berlin")
(locale "en_US.UTF-8")
- (bootloader (grub-configuration (device "/dev/sdX")))
+ (bootloader (grub-configuration (target "/dev/sdX")))
(file-systems (cons (file-system
(device "my-root")
(title 'label)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 22e4181ab1..866bf885ce 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -59,7 +59,7 @@
(timezone "Europe/Paris")
(locale "en_US.UTF-8")
- (bootloader (grub-configuration (device "/dev/vdb")))
+ (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(file-systems (cons (file-system
(device "my-root")
@@ -98,7 +98,7 @@
(bootloader (bootloader-configuration
(bootloader extlinux-bootloader-gpt)
- (device "/dev/vdb")))
+ (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(file-systems (cons (file-system
(device "my-root")
@@ -326,7 +326,7 @@ per %test-installed-os, this test is expensive in terms of CPU and storage.")
(timezone "Europe/Paris")
(locale "en_US.utf8")
- (bootloader (grub-configuration (device "/dev/vdb")))
+ (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(file-systems (cons* (file-system
(device "my-root")
@@ -384,7 +384,7 @@ partition. In particular, home directories must be correctly created (see
(timezone "Europe/Paris")
(locale "en_US.UTF-8")
- (bootloader (grub-configuration (device "/dev/vdb")))
+ (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(file-systems (cons* (file-system
(device "root-fs")
@@ -460,7 +460,7 @@ where /gnu lives on a separate partition.")
(timezone "Europe/Paris")
(locale "en_US.utf8")
- (bootloader (grub-configuration (device "/dev/vdb")))
+ (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(initrd (lambda (file-systems . rest)
;; Add a kernel module for RAID-0 (aka. "stripe").
@@ -543,7 +543,7 @@ by 'mdadm'.")
(timezone "Europe/Paris")
(locale "en_US.UTF-8")
- (bootloader (grub-configuration (device "/dev/vdb")))
+ (bootloader (grub-configuration (target "/dev/vdb")))
;; Note: Do not pass "console=ttyS0" so we can use our passphrase prompt
;; detection logic in 'enter-luks-passphrase'.
@@ -670,7 +670,7 @@ build (current-guix) and then store a couple of full system images.")
(timezone "Europe/Paris")
(locale "en_US.UTF-8")
- (bootloader (grub-configuration (device "/dev/vdb")))
+ (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(file-systems (cons (file-system
(device "my-root")
diff --git a/gnu/tests/nfs.scm b/gnu/tests/nfs.scm
index 2e666b2c08..889f578d01 100644
--- a/gnu/tests/nfs.scm
+++ b/gnu/tests/nfs.scm
@@ -41,7 +41,7 @@
(timezone "Europe/Berlin")
(locale "en_US.UTF-8")
- (bootloader (grub-configuration (device "/dev/sdX")))
+ (bootloader (grub-configuration (target "/dev/sdX")))
(file-systems %base-file-systems)
(users %base-user-accounts)
(packages (cons*
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm
new file mode 100644
index 0000000000..c2939355b2
--- /dev/null
+++ b/gnu/tests/virtualization.scm
@@ -0,0 +1,95 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu tests virtualization)
+ #:use-module (gnu tests)
+ #:use-module (gnu system)
+ #:use-module (gnu system file-systems)
+ #:use-module (gnu system vm)
+ #:use-module (gnu services)
+ #:use-module (gnu services dbus)
+ #:use-module (gnu services networking)
+ #:use-module (gnu services virtualization)
+ #:use-module (gnu packages virtualization)
+ #:use-module (guix gexp)
+ #:use-module (guix store)
+ #:export (%test-libvirt))
+
+(define %libvirt-os
+ (simple-operating-system
+ (dhcp-client-service)
+ (dbus-service)
+ (polkit-service)
+ (service libvirt-service-type)))
+
+(define (run-libvirt-test)
+ "Run tests in %LIBVIRT-OS."
+ (define os
+ (marionette-operating-system
+ %libvirt-os
+ #:imported-modules '((gnu services herd)
+ (guix combinators))))
+
+ (define vm
+ (virtual-machine
+ (operating-system os)
+ (port-forwardings '())))
+
+ (define test
+ (with-imported-modules '((gnu build marionette))
+ #~(begin
+ (use-modules (srfi srfi-11) (srfi srfi-64)
+ (gnu build marionette))
+
+ (define marionette
+ (make-marionette (list #$vm)))
+
+ (mkdir #$output)
+ (chdir #$output)
+
+ (test-begin "libvirt")
+
+ (test-assert "service running"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd))
+ (match (start-service 'libvirtd)
+ (#f #f)
+ (('service response-parts ...)
+ (match (assq-ref response-parts 'running)
+ ((pid) (number? pid))))))
+ marionette))
+
+ (test-eq "fetch version"
+ 0
+ (marionette-eval
+ `(begin
+ (system* ,(string-append #$libvirt "/bin/virsh")
+ "-c" "qemu:///system" "version"))
+ marionette))
+
+ (test-end)
+ (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+ (gexp->derivation "libvirt-test" test))
+
+(define %test-libvirt
+ (system-test
+ (name "libvirt")
+ (description "Connect to the running LIBVIRT service.")
+ (value (run-libvirt-test))))
diff --git a/guix/build/graft.scm b/guix/build/graft.scm
index 16df169ec7..3dce486adf 100644
--- a/guix/build/graft.scm
+++ b/guix/build/graft.scm
@@ -164,15 +164,19 @@ bytevectors to the same value."
;; not to unget bytes that have already been written, because
;; that would cause them to be written again from the next
;; buffer. In practice, this case occurs when a replacement is
- ;; made near the end of the buffer.
- (let* ((unwritten (- end written))
- (unget-size (if (= end request-size)
- (min hash-length unwritten)
- 0))
- (write-size (- unwritten unget-size)))
- (put-bytevector output buffer written write-size)
- (unget-bytevector input buffer (+ written write-size)
- unget-size)
+ ;; made near or beyond the end of the buffer. When REPLACEMENT
+ ;; went beyond END, we consume the extra bytes from INPUT.
+ (begin
+ (if (> written end)
+ (get-bytevector-n! input buffer 0 (- written end))
+ (let* ((unwritten (- end written))
+ (unget-size (if (= end request-size)
+ (min hash-length unwritten)
+ 0))
+ (write-size (- unwritten unget-size)))
+ (put-bytevector output buffer written write-size)
+ (unget-bytevector input buffer (+ written write-size)
+ unget-size)))
(loop)))))))))
(define (rename-matching-files directory mapping)
diff --git a/guix/graph.scm b/guix/graph.scm
index 5b650f5448..d7fd5f3e4b 100644
--- a/guix/graph.scm
+++ b/guix/graph.scm
@@ -1,7 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,7 +22,6 @@
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix sets)
- #:use-module (guix packages)
#:use-module (rnrs io ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
@@ -172,9 +170,9 @@ typically returned by 'node-edges' or 'node-back-edges'."
name))
(define (emit-epilogue port)
(display "\n}\n" port))
-(define (emit-node id node port)
+(define (emit-node id label port)
(format port " \"~a\" [label = \"~a\", shape = box, fontname = Helvetica];~%"
- id (package-full-name node)))
+ id label))
(define (emit-edge id1 id2 port)
(format port " \"~a\" -> \"~a\" [color = ~a];~%"
id1 id2 (pop-color id1)))
@@ -215,11 +213,11 @@ var nodes = {},
(format port "</script><script type=\"text/javascript\" src=\"~a\"></script></body></html>"
(search-path %load-path "graph.js")))
-(define (emit-d3js-node id node port)
+(define (emit-d3js-node id label port)
(format port "\
nodes[\"~a\"] = {\"id\": \"~a\", \"label\": \"~a\", \"index\": nodeArray.length};
nodeArray.push(nodes[\"~a\"]);~%"
- id id (package-full-name node) id))
+ id id label id))
(define (emit-d3js-edge id1 id2 port)
(format port "links.push({\"source\": \"~a\", \"target\": \"~a\"});~%"
@@ -243,9 +241,9 @@ nodeArray.push(nodes[\"~a\"]);~%"
(define (emit-cypher-epilogue port)
(format port ""))
-(define (emit-cypher-node id node port)
+(define (emit-cypher-node id label port)
(format port "MERGE (p:Package { id: ~s }) SET p.name = ~s;~%"
- id (package-name node)))
+ id label ))
(define (emit-cypher-edge id1 id2 port)
(format port "MERGE (a:Package { id: ~s });~%" id1)
@@ -298,7 +296,7 @@ true, draw reverse arrows."
(ids (mapm %store-monad
node-identifier
dependencies)))
- (emit-node id head port)
+ (emit-node id (node-label head) port)
(for-each (lambda (dependency dependency-id)
(if reverse-edges?
(emit-edge dependency-id id port)
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 5a2811e75b..8793c40925 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -150,7 +150,7 @@ TARGET, and register them."
(define* (install-bootloader installer-drv
#:key
bootcfg bootcfg-file
- device target)
+ target)
"Call INSTALLER-DRV with error handling, in %STORE-MONAD."
(with-monad %store-monad
(let* ((gc-root (string-append target %gc-roots-directory
@@ -169,7 +169,7 @@ TARGET, and register them."
(when install
(save-load-path-excursion (primitive-load install)))))
(delete-file temp-gc-root)
- (leave (G_ "failed to install bootloader on device ~a '~a'~%") install device))
+ (leave (G_ "failed to install bootloader ~a~%") install))
;; Register bootloader config file as a GC root so that its dependencies
;; (background image, font, etc.) are not reclaimed.
@@ -179,13 +179,12 @@ TARGET, and register them."
(define* (install os-drv target
#:key (log-port (current-output-port))
bootloader-installer install-bootloader?
- bootcfg bootcfg-file
- device)
+ bootcfg bootcfg-file)
"Copy the closure of BOOTCFG, which includes the output of OS-DRV, to
directory TARGET. TARGET must be an absolute directory name since that's what
'guix-register' expects.
-When INSTALL-BOOTLOADER? is true, install bootloader on DEVICE, using BOOTCFG."
+When INSTALL-BOOTLOADER? is true, install bootloader using BOOTCFG."
(define (maybe-copy to-copy)
(with-monad %store-monad
(if (string=? target "/")
@@ -227,7 +226,6 @@ the ownership of '~a' may be incorrect!~%")
(install-bootloader bootloader-installer
#:bootcfg bootcfg
#:bootcfg-file bootcfg-file
- #:device device
#:target target)))))
@@ -457,12 +455,11 @@ STORE is an open connection to the store."
(mbegin %store-monad
(show-what-to-build* drvs)
(built-derivations drvs)
- ;; Only install bootloader configuration file. Thus, no installer
- ;; nor device is provided here.
+ ;; Only install bootloader configuration file. Thus, no installer is
+ ;; provided here.
(install-bootloader #f
#:bootcfg bootcfg
#:bootcfg-file bootcfg-file
- #:device #f
#:target target))))))
@@ -615,17 +612,16 @@ and TARGET arguments."
(define* (perform-action action os
#:key install-bootloader?
dry-run? derivations-only?
- use-substitutes? device target
+ use-substitutes? bootloader-target target
image-size file-system-type full-boot?
(mappings '())
(gc-root #f))
"Perform ACTION for OS. INSTALL-BOOTLOADER? specifies whether to install
-bootloader; DEVICE is the target devices for bootloader; TARGET is the target
-root directory; IMAGE-SIZE is the size of the image to be built, for the
-'vm-image' and 'disk-image' actions.
-The root filesystem is created as a FILE-SYSTEM-TYPE filesystem.
-FULL-BOOT? is used for the 'vm' action;
-it determines whether to boot directly to the kernel or to the bootloader.
+bootloader; BOOTLOADER-TAGET is the target for the bootloader; TARGET is the
+target root directory; IMAGE-SIZE is the size of the image to be built, for
+the 'vm-image' and 'disk-image' actions. The root filesystem is created as a
+FILE-SYSTEM-TYPE filesystem. FULL-BOOT? is used for the 'vm' action; it
+determines whether to boot directly to the kernel or to the bootloader.
When DERIVATIONS-ONLY? is true, print the derivation file name(s) without
building anything.
@@ -665,7 +661,7 @@ output when building a system derivation, such as a disk image."
(target (or target "/")))
(bootloader-installer-derivation installer
bootloader-package
- device target)))
+ bootloader-target target)))
;; For 'init' and 'reconfigure', always build BOOTCFG, even if
;; --no-bootloader is passed, because we then use it as a GC root.
@@ -697,7 +693,6 @@ output when building a system derivation, such as a disk image."
(install-bootloader bootloader-installer
#:bootcfg bootcfg
#:bootcfg-file bootcfg-file
- #:device device
#:target "/"))))
((init)
(newline)
@@ -707,8 +702,7 @@ output when building a system derivation, such as a disk image."
#:install-bootloader? install-bootloader?
#:bootcfg bootcfg
#:bootcfg-file bootcfg-file
- #:bootloader-installer bootloader-installer
- #:device device))
+ #:bootloader-installer bootloader-installer))
(else
;; All we had to do was to build SYS and maybe register an
;; indirect GC root.
@@ -900,8 +894,9 @@ resulting from command-line parsing."
(target (match args
((first second) second)
(_ #f)))
- (device (and bootloader?
- (bootloader-configuration-device
+ (bootloader-target
+ (and bootloader?
+ (bootloader-configuration-target
(operating-system-bootloader os)))))
(with-store store
@@ -934,7 +929,8 @@ resulting from command-line parsing."
(_ #f))
opts)
#:install-bootloader? bootloader?
- #:target target #:device device
+ #:target target
+ #:bootloader-target bootloader-target
#:gc-root (assoc-ref opts 'gc-root)))))
#:system system))))
diff --git a/tests/grafts.scm b/tests/grafts.scm
index 08f05c0f75..abb074d628 100644
--- a/tests/grafts.scm
+++ b/tests/grafts.scm
@@ -28,7 +28,9 @@
#:use-module (gnu packages bootstrap)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-64)
- #:use-module (rnrs io ports))
+ #:use-module (rnrs bytevectors)
+ #:use-module (rnrs io ports)
+ #:use-module (ice-9 vlist))
(define %store
(open-connection-for-tests))
@@ -442,4 +444,34 @@
(and (file-exists? (string-append out "/p2/replacement"))
(file-exists? (string-append out "/p2/p1/replacement")))))))
+(define buffer-size
+ ;; Must be equal to REQUEST-SIZE in 'replace-store-references'.
+ (expt 2 20))
+
+(test-equal "replace-store-references, <http://bugs.gnu.org/28212>"
+ (string-append (make-string (- buffer-size 47) #\a)
+ "/gnu/store/" (make-string 32 #\8)
+ "-SoMeTHiNG"
+ (list->string (map integer->char (iota 77 33))))
+
+ ;; Create input data where the right-hand-size of the dash ("-something"
+ ;; here) goes beyond the end of the internal buffer of
+ ;; 'replace-store-references'.
+ (let* ((content (string-append (make-string (- buffer-size 47) #\a)
+ "/gnu/store/" (make-string 32 #\7)
+ "-something"
+ (list->string
+ (map integer->char (iota 77 33)))))
+ (replacement (alist->vhash
+ `((,(make-string 32 #\7)
+ . ,(string->utf8 (string-append
+ (make-string 32 #\8)
+ "-SoMeTHiNG")))))))
+ (call-with-output-string
+ (lambda (output)
+ ((@@ (guix build graft) replace-store-references)
+ (open-input-string content) output
+ replacement
+ "/gnu/store")))))
+
(test-end)
diff --git a/tests/system.scm b/tests/system.scm
index ca34409be9..a661544a5f 100644
--- a/tests/system.scm
+++ b/tests/system.scm
@@ -36,7 +36,7 @@
(host-name "komputilo")
(timezone "Europe/Berlin")
(locale "en_US.utf8")
- (bootloader (grub-configuration (device "/dev/sdX")))
+ (bootloader (grub-configuration (target "/dev/sdX")))
(file-systems (cons %root-fs %base-file-systems))
(users %base-user-accounts)))
@@ -51,7 +51,7 @@
(host-name "komputilo")
(timezone "Europe/Berlin")
(locale "en_US.utf8")
- (bootloader (grub-configuration (device "/dev/sdX")))
+ (bootloader (grub-configuration (target "/dev/sdX")))
(mapped-devices (list %luks-device))
(file-systems (cons (file-system
(inherit %root-fs)