diff options
91 files changed, 4373 insertions, 959 deletions
diff --git a/Makefile.am b/Makefile.am index 324674a60e..af6870cf67 100644 --- a/Makefile.am +++ b/Makefile.am @@ -86,6 +86,8 @@ MODULES = \ guix/derivations.scm \ guix/grafts.scm \ guix/inferior.scm \ + guix/describe.scm \ + guix/channels.scm \ guix/gnu-maintenance.scm \ guix/self.scm \ guix/upstream.scm \ diff --git a/NEWS b/NEWS index ae8a8cbca0..891eb9e57a 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ #+STARTUP: content hidestars Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -10,6 +11,16 @@ Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> Please send Guix bug reports to bug-guix@gnu.org. +* Changes since 0.15.0 + +** Package management + +*** ‘guix import pypi’ has a new ‘--recursive’ option +*** ‘guix import hackage’ has a new ‘--recursive’ option +*** ‘guix import stackage’ has a new ‘--recursive’ option +The short option for ‘--lts-version’ is now ‘-l’ (used to be ‘-r’). + + * Changes in 0.15.0 (since 0.14.0) ** Package management diff --git a/build-aux/compile-as-derivation.scm b/build-aux/compile-as-derivation.scm index 59a84b1415..d945a8c79c 100644 --- a/build-aux/compile-as-derivation.scm +++ b/build-aux/compile-as-derivation.scm @@ -20,13 +20,20 @@ (use-modules (srfi srfi-26)) -;; Add ~/.config/guix/latest to the search path. -(add-to-load-path - (and=> (or (getenv "XDG_CONFIG_HOME") - (and=> (getenv "HOME") - (cut string-append <> "/.config"))) - (cute string-append <> "/guix/current/share/guile/site/" - (effective-version)))) +;; Add ~/.config/guix/current to the search path. +(eval-when (expand load eval) + (and=> (or (getenv "XDG_CONFIG_HOME") + (and=> (getenv "HOME") + (cut string-append <> "/.config/guix/current"))) + (lambda (current) + (set! %load-path + (cons (string-append current "/share/guile/site/" + (effective-version)) + %load-path)) + (set! %load-compiled-path + (cons (string-append current "/lib/guile/" (effective-version) + "/site-ccache") + %load-compiled-path))))) (use-modules (guix) (guix ui) (guix git-download) diff --git a/build-aux/update-NEWS.scm b/build-aux/update-NEWS.scm index 2e8f68c9a8..a9dffef1d2 100644 --- a/build-aux/update-NEWS.scm +++ b/build-aux/update-NEWS.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -128,11 +128,10 @@ paragraph." (define (main . args) (match args ((news-file data-directory) - ;; Don't browse things listed in the user's $GUIX_PACKAGE_PATH. Here we - ;; assume that the last item in (%package-module-path) is the distro - ;; directory. + ;; Don't browse things listed in the user's $GUIX_PACKAGE_PATH and + ;; in external channels. (parameterize ((%package-module-path - (list (last (%package-module-path))))) + %default-package-module-path)) (define (package-file version) (string-append data-directory "/packages-" version ".txt")) diff --git a/doc/guix.texi b/doc/guix.texi index d2d278df47..307f915dbb 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -146,17 +146,18 @@ Package Management * Packages with Multiple Outputs:: Single source package, multiple outputs. * Invoking guix gc:: Running the garbage collector. * Invoking guix pull:: Fetching the latest Guix and distribution. +* Channels:: Customizing the package collection. * Invoking guix pack:: Creating software bundles. * Invoking guix archive:: Exporting and importing store files. Substitutes -* Official Substitute Server:: One particular source of substitutes. -* Substitute Server Authorization:: How to enable or disable substitutes. -* Substitute Authentication:: How Guix verifies substitutes. -* Proxy Settings:: How to get substitutes via proxy. -* Substitution Failure:: What happens when substitution fails. -* On Trusting Binaries:: How can you trust that binary blob? +* Official Substitute Server:: One particular source of substitutes. +* Substitute Server Authorization:: How to enable or disable substitutes. +* Substitute Authentication:: How Guix verifies substitutes. +* Proxy Settings:: How to get substitutes via proxy. +* Substitution Failure:: What happens when substitution fails. +* On Trusting Binaries:: How can you trust that binary blob? Programming Interface @@ -202,7 +203,7 @@ GNU Distribution * System Installation:: Installing the whole operating system. * System Configuration:: Configuring the operating system. -* Documentation:: Browsing software user manuals. +* Documentation:: Browsing software user manuals. * Installing Debugging Files:: Feeding the debugger. * Security Updates:: Deploying security fixes quickly. * Package Modules:: Packages from the programmer's viewpoint. @@ -264,7 +265,7 @@ Services * Audio Services:: The MPD. * Virtualization Services:: Virtualization services. * Version Control Services:: Providing remote access to Git repositories. -* Game Services:: Game servers. +* Game Services:: Game servers. * Miscellaneous Services:: Other services. Defining Services @@ -1694,6 +1695,7 @@ guix package -i emacs-guix * Packages with Multiple Outputs:: Single source package, multiple outputs. * Invoking guix gc:: Running the garbage collector. * Invoking guix pull:: Fetching the latest Guix and distribution. +* Channels:: Customizing the package collection. * Invoking guix pack:: Creating software bundles. * Invoking guix archive:: Exporting and importing store files. @end menu @@ -2276,12 +2278,12 @@ pre-built package binaries, but source tarballs, for instance, which also result from derivation builds, can be available as substitutes. @menu -* Official Substitute Server:: One particular source of substitutes. -* Substitute Server Authorization:: How to enable or disable substitutes. -* Substitute Authentication:: How Guix verifies substitutes. -* Proxy Settings:: How to get substitutes via proxy. -* Substitution Failure:: What happens when substitution fails. -* On Trusting Binaries:: How can you trust that binary blob? +* Official Substitute Server:: One particular source of substitutes. +* Substitute Server Authorization:: How to enable or disable substitutes. +* Substitute Authentication:: How Guix verifies substitutes. +* Proxy Settings:: How to get substitutes via proxy. +* Substitution Failure:: What happens when substitution fails. +* On Trusting Binaries:: How can you trust that binary blob? @end menu @node Official Substitute Server @@ -2746,7 +2748,8 @@ the distribution currently available on your local machine. To update that distribution, along with the Guix tools, you must run @command{guix pull}: the command downloads the latest Guix source code and package descriptions, and deploys it. Source code is downloaded from a -@uref{https://git-scm.com, Git} repository. +@uref{https://git-scm.com, Git} repository, by default the official +GNU@tie{}Guix repository, though this can be customized. On completion, @command{guix package} will use packages and package versions from this just-retrieved copy of Guix. Not only that, but all @@ -2821,20 +2824,23 @@ but it supports the following options: Produce verbose output, writing build logs to the standard error output. @item --url=@var{url} -Download Guix from the Git repository at @var{url}. - -@vindex GUIX_PULL_URL -By default, the source is taken from its canonical Git repository at -@code{gnu.org}, for the stable branch of Guix. To use a different source, -set the @code{GUIX_PULL_URL} environment variable. - -@item --commit=@var{commit} -Deploy @var{commit}, a valid Git commit ID represented as a hexadecimal -string. - -@item --branch=@var{branch} -Deploy the tip of @var{branch}, the name of a Git branch available on -the repository at @var{url}. +@itemx --commit=@var{commit} +@itemx --branch=@var{branch} +Download code from the specified @var{url}, at the given @var{commit} (a valid +Git commit ID represented as a hexadecimal string), or @var{branch}. + +@cindex @file{channels.scm}, configuration file +@cindex configuration file for channels +These options are provided for convenience, but you can also specify your +configuration in the @file{~/.config/guix/channels.scm} file or using the +@option{--channels} option (see below). + +@item --channels=@var{file} +@itemx -C @var{file} +Read the list of channels from @var{file} instead of +@file{~/.config/guix/channels.scm}. @var{file} must contain Scheme code that +evaluates to a list of channel objects. @xref{Channels}, for more +information. @item --list-generations[=@var{pattern}] @itemx -l [@var{pattern}] @@ -2848,9 +2854,180 @@ Use the bootstrap Guile to build the latest Guix. This option is only useful to Guix developers. @end table +The @dfn{channel} mechanism allows you to instruct @command{guix pull} which +repository and branch to pull from, as well as @emph{additional} repositories +containing package modules that should be deployed. @xref{Channels}, for more +information. + In addition, @command{guix pull} supports all the common build options (@pxref{Common Build Options}). +@node Channels +@section Channels + +@cindex channels +@cindex @file{channels.scm}, configuration file +@cindex configuration file for channels +@cindex @command{guix pull}, configuration file +@cindex configuration of @command{guix pull} +Guix and its package collection are updated by running @command{guix pull} +(@pxref{Invoking guix pull}). By default @command{guix pull} downloads and +deploys Guix itself from the official GNU@tie{}Guix repository. This can be +customized by defining @dfn{channels} in the +@file{~/.config/guix/channels.scm} file. A channel specifies a URL and branch +of a Git repository to be deployed, and @command{guix pull} can be instructed +to pull from one or more channels. In other words, channels can be used to +@emph{customize} and to @emph{extend} Guix, as we will see below. + +@subsection Using a Custom Guix Channel + +The channel called @code{guix} specifies where Guix itself---its command-line +tools as well as its package collection---should be downloaded. For instance, +suppose you want to update from your own copy of the Guix repository at +@code{example.org}, and specifically the @code{super-hacks} branch, you can +write in @code{~/.config/guix/channels.scm} this specification: + +@lisp +;; Tell 'guix pull' to use my own repo. +(list (channel + (name 'guix) + (url "https://example.org/my-guix.git") + (branch "super-hacks"))) +@end lisp + +@noindent +From there on, @command{guix pull} will fetch code from the @code{super-hacks} +branch of the repository at @code{example.org}. + +@subsection Specifying Additional Channels + +@cindex extending the package collection (channels) +@cindex personal packages (channels) +@cindex channels, for personal packages +You can also specify @emph{additional channels} to pull from. Let's say you +have a bunch of custom package variants or personal packages that you think +would make little sense to contribute to the Guix project, but would like to +have these packages transparently available to you at the command line. You +would first write modules containing those package definitions (@pxref{Package +Modules}), maintain them in a Git repository, and then you and anyone else can +use it as an additional channel to get packages from. Neat, no? + +@c What follows stems from discussions at +@c <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22629#134> as well as +@c earlier discussions on guix-devel@gnu.org. +@quotation Warning +Before you, dear user, shout---``woow this is @emph{soooo coool}!''---and +publish your personal channel to the world, we would like to share a few words +of caution: + +@itemize +@item +Before publishing a channel, please consider contributing your package +definitions to Guix proper (@pxref{Contributing}). Guix as a project is open +to free software of all sorts, and packages in Guix proper are readily +available to all Guix users and benefit from the project's quality assurance +process. + +@item +When you maintain package definitions outside Guix, we, Guix developers, +consider that @emph{the compatibility burden is on you}. Remember that +package modules and package definitions are just Scheme code that uses various +programming interfaces (APIs). We want to remain free to change these APIs to +keep improving Guix, possibly in ways that break your channel. We never +change APIs gratuitously, but we will @emph{not} commit to freezing APIs +either. + +@item +Corollary: if you're using an external channel and that channel breaks, please +@emph{report the issue to the channel authors}, not to the Guix project. +@end itemize + +You've been warned! Having said this, we believe external channels are a +practical way to exert your freedom to augment Guix' package collection and to +share your improvements, which are basic tenets of +@uref{https://www.gnu.org/philosophy/free-sw.html, free software}. Please +email us at @email{guix-devel@@gnu.org} if you'd like to discuss this. +@end quotation + +Once you have a Git repository containing your own package modules, you can +write @code{~/.config/guix/channels.scm} to instruct @command{guix pull} to +pull from your personal channel @emph{in addition} to the default Guix +channel(s): + +@vindex %default-channels +@lisp +;; Add my personal packages to those Guix provides. +(cons (channel + (name 'my-personal-packages) + (url "https://example.org/personal-packages.git")) + %default-channels) +@end lisp + +@noindent +Note that the snippet above is (as always!) Scheme code; we use @code{cons} to +add a channel the list of channels that the variable @code{%default-channels} +is bound to (@pxref{Pairs, @code{cons} and lists,, guile, GNU Guile Reference +Manual}). With this file in place, @command{guix pull} builds not only Guix +but also the package modules from your own repository. The result in +@file{~/.config/guix/current} is the union of Guix with your own package +modules: + +@example +$ guix pull --list-generations +@dots{} +Generation 19 Aug 27 2018 16:20:48 + guix d894ab8 + repository URL: https://git.savannah.gnu.org/git/guix.git + branch: master + commit: d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300 + my-personal-packages dd3df5e + repository URL: https://example.org/personal-packages.git + branch: master + commit: dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb + 11 new packages: my-gimp, my-emacs-with-cool-features, @dots{} + 4 packages upgraded: emacs-racket-mode@@0.0.2-2.1b78827, @dots{} +@end example + +@noindent +The output of @command{guix pull} above shows that Generation@tie{}19 includes +both Guix and packages from the @code{my-personal-packages} channel. Among +the new and upgraded packages that are listed, some like @code{my-gimp} and +@code{my-emacs-with-cool-features} might come from +@code{my-personal-packages}, while others come from the Guix default channel. + +@subsection Replicating Guix + +@cindex pinning, channels +@cindex replicating Guix +@cindex reproducibility, of Guix +The @command{guix pull --list-generations} output above shows precisely which +commits were used to build this instance of Guix. We can thus replicate it, +say, on another machine, by providing a channel specification in +@file{~/.config/guix/channels.scm} that is ``pinned'' to these commits: + +@lisp +;; Deploy specific commits of my channels of interest. +(list (channel + (name 'guix) + (url "https://git.savannah.gnu.org/git/guix.git") + (commit "d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300")) + (channel + (name 'my-personal-packages) + (url "https://example.org/personal-packages.git") + (branch "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb"))) +@end lisp + +At this point the two machines run the @emph{exact same Guix}, with access to +the @emph{exact same packages}. The output of @command{guix build gimp} on +one machine will be exactly the same, bit for bit, as the output of the same +command on the other machine. It also means both machines have access to all +the source code of Guix and, transitively, to all the source code of every +package it defines. + +This gives you super powers, allowing you to track the provenance of binary +artifacts with very fine grain, and to reproduce software environments at +will---some sort of ``meta reproducibility'' capabilities, if you will. + @node Invoking guix pack @section Invoking @command{guix pack} @@ -3431,9 +3608,9 @@ more information on how to test package definitions, and @ref{Invoking guix lint}, for information on how to check a definition for style conformance. @vindex GUIX_PACKAGE_PATH -Lastly, @pxref{Package Modules}, for information +Lastly, @pxref{Channels}, for information on how to extend the distribution by adding your own package definitions -to @code{GUIX_PACKAGE_PATH}. +in a ``channel''. Finally, updating the package definition to a new upstream version can be partly automated by the @command{guix refresh} command @@ -6255,8 +6432,8 @@ and that of Vim. If you are using a Guix Git checkout (@pxref{Building from Git}), or have created your own packages on @code{GUIX_PACKAGE_PATH} -(@pxref{Defining Packages}), you will be able to edit the package -recipes. Otherwise, you will be able to examine the read-only recipes +(@pxref{Package Modules}), you will be able to edit the package +recipes. In other cases, you will be able to examine the read-only recipes for packages currently in the store. @@ -6442,6 +6619,14 @@ package: guix import pypi itsdangerous @end example +@table @code +@item --recursive +@itemx -r +Traverse the dependency graph of the given upstream package recursively +and generate package expressions for all those packages that are not yet +in Guix. +@end table + @item gem @cindex gem Import metadata from @uref{https://rubygems.org/, @@ -6699,9 +6884,14 @@ Specific command-line options are: @itemx -t Do not include dependencies required only by the test suites. @item --lts-version=@var{version} -@itemx -r @var{version} +@itemx -l @var{version} @var{version} is the desired LTS release version. If omitted the latest release is used. +@item --recursive +@itemx -r +Traverse the dependency graph of the given upstream package recursively +and generate package expressions for all those packages that are not yet +in Guix. @end table The command below imports metadata for the @code{HTTP} Haskell package @@ -8363,7 +8553,7 @@ For information on porting to other architectures or kernels, @menu * System Installation:: Installing the whole operating system. * System Configuration:: Configuring the operating system. -* Documentation:: Browsing software user manuals. +* Documentation:: Browsing software user manuals. * Installing Debugging Files:: Feeding the debugger. * Security Updates:: Deploying security fixes quickly. * Package Modules:: Packages from the programmer's viewpoint. @@ -8402,7 +8592,7 @@ available. @menu * Limitations:: What you can expect. * Hardware Considerations:: Supported hardware. -* USB Stick and DVD Installation:: Preparing the installation medium. +* USB Stick and DVD Installation:: Preparing the installation medium. * Preparing for Installation:: Networking, partitioning, etc. * Proceeding with the Installation:: The real thing. * Installing GuixSD in a VM:: GuixSD playground. @@ -10083,7 +10273,7 @@ declaration. * Audio Services:: The MPD. * Virtualization Services:: Virtualization services. * Version Control Services:: Providing remote access to Git repositories. -* Game Services:: Game servers. +* Game Services:: Game servers. * Miscellaneous Services:: Other services. @end menu @@ -11450,16 +11640,57 @@ detailed discussion of each configuration field. @end deftp @cindex Tor -@deffn {Scheme Procedure} tor-service [@var{config-file}] [#:tor @var{tor}] -Return a service to run the @uref{https://torproject.org, Tor} anonymous -networking daemon. +@defvr {Scheme Variable} tor-service-type +This is the type for a service that runs the @uref{https://torproject.org, +Tor} anonymous networking daemon. The service is configured using a +@code{<tor-configuration>} record. By default, the Tor daemon runs as the +@code{tor} unprivileged user, which is a member of the @code{tor} group. -The daemon runs as the @code{tor} unprivileged user. It is passed -@var{config-file}, a file-like object, with an additional @code{User tor} line -and lines for hidden services added via @code{tor-hidden-service}. Run -@command{man tor} for information about the configuration file. +@end defvr + +@deffn {Scheme Procedure} tor-service [@var{config-file}] [#:tor @var{tor}] +This procedure is deprecated and will be removed in a future release. Return +a service of the @code{tor-service-type} type. @var{config-file} and +@var{tor} have the same meaning as in @code{<tor-configuration>}. @end deffn +@deftp {Data Type} tor-configuration +@table @asis +@item @code{tor} (default: @code{tor}) +The package that provides the Tor daemon. This package is expected to provide +the daemon at @file{bin/tor} relative to its output directory. The default +package is the @uref{https://www.torproject.org, Tor Project's} +implementation. + +@item @code{config-file} (default: @code{(plain-file "empty" "")}) +The configuration file to use. It will be appended to a default configuration +file, and the final configuration file will be passed to @code{tor} via its +@code{-f} option. This may be any ``file-like'' object (@pxref{G-Expressions, +file-like objects}). See @code{man tor} for details on the configuration file +syntax. + +@item @code{hidden-services} (default: @code{'()}) +The list of @code{<hidden-service>} records to use. For any hidden service +you include in this list, appropriate configuration to enable the hidden +service will be automatically added to the default configuration file. You +may conveniently create @code{<hidden-service>} records using the +@code{tor-hidden-service} procedure described below. + +@item @code{socks-socket-type} (default: @code{'tcp}) +The default socket type that Tor should use for its SOCKS socket. This must +be either @code{'tcp} or @code{'unix}. If it is @code{'tcp}, then by default +Tor will listen on TCP port 9050 on the loopback interface (i.e., localhost). +If it is @code{'unix}, then Tor will listen on the UNIX domain socket +@file{/var/run/tor/socks-sock}, which will be made writable by members of the +@code{tor} group. + +If you want to customize the SOCKS socket in more detail, leave +@code{socks-socket-type} at its default value of @code{'tcp} and use +@code{config-file} to override the default by providing your own +@code{SocksPort} option. +@end table +@end deftp + @cindex hidden service @deffn {Scheme Procedure} tor-hidden-service @var{name} @var{mapping} Define a new Tor @dfn{hidden service} called @var{name} and implementing @@ -11741,6 +11972,12 @@ Additional authorized keys can be specified @i{via} Note that this does @emph{not} interfere with the use of @file{~/.ssh/authorized_keys}. + +@item @code{log-level} (default: @code{'info}) +This is a symbol specifying the logging level: @code{quiet}, @code{fatal}, +@code{error}, @code{info}, @code{verbose}, @code{debug}, etc. See the man +page for @file{sshd_config} for the full list of level names. + @end table @end deftp @@ -13302,7 +13539,7 @@ Users need to be in the @code{lp} group to access the D-Bus service. The @code{(gnu services sound)} module provides a service to configure the Advanced Linux Sound Architecture (ALSA) system, which making PulseAudio the -prefered ALSA output driver. +preferred ALSA output driver. @deffn {Scheme Variable} alsa-service-type This is the type for the @uref{https://alsa-project.org/, Advanced Linux Sound @@ -17188,7 +17425,7 @@ When true, don't read the hostnames in /etc/hosts. @item @code{port} (default: @code{53}) The port to listen on. Setting this to zero completely disables DNS -funtion, leaving only DHCP and/or TFTP. +responses, leaving only DHCP and/or TFTP functions. @item @code{local-service?} (default: @code{#t}) Accept DNS queries only from hosts whose address is on a local subnet, @@ -17216,6 +17453,114 @@ When false, disable negative caching. @end table @end deftp +@subsubheading ddclient Service + +@cindex ddclient +The ddclient service described below runs the ddclient daemon, which takes +care of automatically updating DNS entries for service providers such as +@uref{https://dyn.com/dns/, Dyn}. + +The following example show instantiates the service with its default +configuration: + +@example +(service ddclient-service-type) +@end example + +Note that ddclient needs to access credentials that are stored in a +@dfn{secret file}, by default @file{/etc/ddclient/secrets} (see +@code{secret-file} below.) You are expected to create this file manually, in +an ``out-of-band'' fashion (you @emph{could} make this file part of the +service configuration, for instance by using @code{plain-file}, but it will be +world-readable @i{via} @file{/gnu/store}.) See the examples in the +@file{share/ddclient} directory of the @code{ddclient} package. + +@c %start of fragment + +Available @code{ddclient-configuration} fields are: + +@deftypevr {@code{ddclient-configuration} parameter} package ddclient +The ddclient package. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} integer daemon +The period after which ddclient will retry to check IP and domain name. + +Defaults to @samp{300}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} boolean syslog +Use syslog for the output. + +Defaults to @samp{#t}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} string mail +Mail to user. + +Defaults to @samp{"root"}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} string mail-failure +Mail failed update to user. + +Defaults to @samp{"root"}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} string pid +The ddclient PID file. + +Defaults to @samp{"/var/run/ddclient/ddclient.pid"}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} boolean ssl +Enable SSL support. + +Defaults to @samp{#t}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} string user +Specifies the user name or ID that is used when running ddclient +program. + +Defaults to @samp{"ddclient"}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} string group +Group of the user who will run the ddclient program. + +Defaults to @samp{"ddclient"}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} string secret-file +Secret file which will be appended to @file{ddclient.conf} file. This +file contains credentials for use by ddclient. You are expected to +create it manually. + +Defaults to @samp{"/etc/ddclient/secrets.conf"}. + +@end deftypevr + +@deftypevr {@code{ddclient-configuration} parameter} list extra-options +Extra options will be appended to @file{ddclient.conf} file. + +Defaults to @samp{()}. + +@end deftypevr + + +@c %end of fragment + + @node VPN Services @subsubsection VPN Services @cindex VPN (virtual private network) @@ -22473,16 +22818,24 @@ name and module name must match. For instance, the @code{(my-packages emacs)} module must be stored in a @file{my-packages/emacs.scm} file relative to the load path specified with @option{--load-path} or @code{GUIX_PACKAGE_PATH}. @xref{Modules and the File System,,, -guile, GNU Guile Reference Manual}, for details.}. These package definitions -will not be visible by default. Users can invoke commands such as -@command{guix package} and @command{guix build} with the -@code{-e} option so that they know where to find the package. Better -yet, they can use the -@code{-L} option of these commands to make those modules visible -(@pxref{Invoking guix build, @code{--load-path}}), or define the -@code{GUIX_PACKAGE_PATH} environment variable. This environment -variable makes it easy to extend or customize the distribution and is -honored by all the user interfaces. +guile, GNU Guile Reference Manual}, for details.}. There are two ways to make +these package definitions visible to the user interfaces: + +@enumerate +@item +By adding the directory containing your package modules to the search path +with the @code{-L} flag of @command{guix package} and other commands +(@pxref{Common Build Options}), or by setting the @code{GUIX_PACKAGE_PATH} +environment variable described below. + +@item +By defining a @dfn{channel} and configuring @command{guix pull} so that it +pulls from it. A channel is essentially a Git repository containing package +modules. @xref{Channels}, for more information on how to define and use +channels. +@end enumerate + +@code{GUIX_PACKAGE_PATH} works similarly to other search path variables: @defvr {Environment Variable} GUIX_PACKAGE_PATH This is a colon-separated list of directories to search for additional diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm index ae141b6f54..2d81175041 100644 --- a/gnu/build/linux-modules.scm +++ b/gnu/build/linux-modules.scm @@ -136,7 +136,7 @@ and normalizing it." (define (find-module-file directory module) "Lookup module NAME under DIRECTORY, and return its absolute file name. NAME can be a file name with or without '.ko', or it can be a module name. -Return #f if it could not be found. +Raise an error if it could not be found. Module names can differ from file names in interesting ways; for instance, module names usually (always?) use underscores as the inter-word separator, @@ -162,7 +162,7 @@ whereas file names often, but not always, use hyphens. Examples: ((file) file) (() - #f) + (error "kernel module not found" module directory)) ((_ ...) (error "several modules by that name" module directory)))) diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm index bb018fc9c1..f94eab5cc0 100644 --- a/gnu/build/marionette.scm +++ b/gnu/build/marionette.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,7 @@ marionette-eval wait-for-file wait-for-tcp-port + wait-for-unix-socket marionette-control marionette-screen-text wait-for-screen-text @@ -214,6 +216,29 @@ MARIONETTE. Raise an error on failure." ('failure (error "nobody's listening on port" port)))) +(define* (wait-for-unix-socket file-name marionette + #:key (timeout 20)) + "Wait for up to TIMEOUT seconds for FILE-NAME, a Unix domain socket, to +accept connections in MARIONETTE. Raise an error on failure." + (match (marionette-eval + `(begin + (let ((sock (socket PF_UNIX SOCK_STREAM 0))) + (let loop ((i 0)) + (catch 'system-error + (lambda () + (connect sock AF_UNIX ,file-name) + 'success) + (lambda args + (if (< i ,timeout) + (begin + (sleep 1) + (loop (+ 1 i))) + 'failure)))))) + marionette) + ('success #t) + ('failure + (error "nobody's listening on unix domain socket" file-name)))) + (define (marionette-control command marionette) "Run COMMAND in the QEMU monitor of MARIONETTE. COMMAND is a string such as \"sendkey ctrl-alt-f1\" or \"screendump foo.ppm\" (info \"(qemu-doc) @@ -222,7 +247,8 @@ pcsys_monitor\")." (($ <marionette> _ _ monitor) (display command monitor) (newline monitor) - (wait-for-monitor-prompt monitor)))) + ;; The "quit" command terminates QEMU immediately, with no output. + (unless (string=? command "quit") (wait-for-monitor-prompt monitor))))) (define* (marionette-screen-text marionette #:key diff --git a/gnu/local.mk b/gnu/local.mk index 806a5f3c2a..21f0482847 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -213,6 +213,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/guile-wm.scm \ %D%/packages/gv.scm \ %D%/packages/gxmessage.scm \ + %D%/packages/hardware.scm \ %D%/packages/haskell.scm \ %D%/packages/haskell-check.scm \ %D%/packages/haskell-crypto.scm \ @@ -650,6 +651,7 @@ dist_patch_DATA = \ %D%/packages/patches/doc++-segfault-fix.patch \ %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \ %D%/packages/patches/doxygen-test.patch \ + %D%/packages/patches/dropbear-CVE-2018-15599.patch \ %D%/packages/patches/dvd+rw-tools-add-include.patch \ %D%/packages/patches/elfutils-tests-ptrace.patch \ %D%/packages/patches/elogind-glibc-2.27.patch \ @@ -793,6 +795,8 @@ dist_patch_DATA = \ %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \ %D%/packages/patches/gzdoom-search-in-installed-share.patch \ %D%/packages/patches/handbrake-pkg-config-path.patch \ + %D%/packages/patches/haskell-mode-unused-variables.patch \ + %D%/packages/patches/haskell-mode-make-check.patch \ %D%/packages/patches/hdf4-architectures.patch \ %D%/packages/patches/hdf4-reproducibility.patch \ %D%/packages/patches/hdf4-shared-fortran.patch \ @@ -999,7 +1003,6 @@ dist_patch_DATA = \ %D%/packages/patches/ola-readdir-r.patch \ %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch \ %D%/packages/patches/opencascade-oce-glibc-2.26.patch \ - %D%/packages/patches/openexr-missing-samples.patch \ %D%/packages/patches/openfoam-4.1-cleanup.patch \ %D%/packages/patches/openldap-CVE-2017-9287.patch \ %D%/packages/patches/openocd-nrf52.patch \ @@ -1123,6 +1126,7 @@ dist_patch_DATA = \ %D%/packages/patches/ruby-concurrent-test-arm.patch \ %D%/packages/patches/ruby-rack-ignore-failing-test.patch \ %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\ + %D%/packages/patches/rust-1.19-mrustc.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rxvt-unicode-escape-sequences.patch \ diff --git a/gnu/packages.scm b/gnu/packages.scm index 7b954769e9..532297239d 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -30,6 +30,7 @@ #:select ((package-name->name+version . hyphen-separated-name->name+version))) #:autoload (guix profiles) (packages->manifest) + #:use-module (guix describe) #:use-module (ice-9 vlist) #:use-module (ice-9 match) #:use-module (srfi srfi-1) @@ -46,6 +47,7 @@ %auxiliary-files-path %bootstrap-binaries-path %package-module-path + %default-package-module-path fold-packages @@ -130,22 +132,31 @@ for system '~a'") ("gnu/packages.scm" gnu/) ("guix.scm")))) +(define %default-package-module-path + ;; Default search path for package modules. + `((,%distro-root-directory . "gnu/packages"))) + (define %package-module-path ;; Search path for package modules. Each item must be either a directory ;; name or a pair whose car is a directory and whose cdr is a sub-directory ;; to narrow the search. (let* ((not-colon (char-set-complement (char-set #\:))) (environment (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "") - not-colon))) - ;; Automatically add items from $GUIX_PACKAGE_PATH to Guile's search path. - (for-each (lambda (directory) - (set! %load-path (cons directory %load-path)) - (set! %load-compiled-path - (cons directory %load-compiled-path))) - environment) + not-colon)) + (channels (package-path-entries))) + ;; Automatically add channels and items from $GUIX_PACKAGE_PATH to Guile's + ;; search path. For historical reasons, $GUIX_PACKAGE_PATH goes to the + ;; front; channels go to the back so that they don't override Guix' own + ;; modules. + (set! %load-path + (append environment %load-path channels)) + (set! %load-compiled-path + (append environment %load-compiled-path channels)) (make-parameter - (append environment `((,%distro-root-directory . "gnu/packages")))))) + (append environment + %default-package-module-path + channels)))) (define %patch-path ;; Define it after '%package-module-path' so that '%load-path' contains user diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index c9230c3295..8807ab18b5 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -963,7 +963,7 @@ system administrator.") (define-public sudo (package (name "sudo") - (version "1.8.24") + (version "1.8.25") (source (origin (method url-fetch) (uri @@ -973,7 +973,7 @@ system administrator.") version ".tar.gz"))) (sha256 (base32 - "1s2v49n905wf3phmdnaa6v1dwck2lrcin0flg85z7klf35x5b25l")) + "0hfw6pcwjvv1vvnhb4n1p210306jm4npz99p9cfhbd33yrhhzkwx")) (modules '((guix build utils))) (snippet '(begin @@ -2750,3 +2750,81 @@ support forum. It runs with the @code{/exec} command in most IRC clients.") (description "@code{pscircle} visualizes Linux processes in the form of a radial tree.") (license license:gpl2+))) + +(define-public python-pyudev + (package + (name "python-pyudev") + (version "0.21.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pyudev" version)) + (sha256 + (base32 + "0arz0dqp75sszsmgm6vhg92n1lsx91ihddx3m944f4ah0487ljq9")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; Tests require /sys + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-ctypes-udev + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((eudev (assoc-ref inputs "eudev"))) + (substitute* "src/pyudev/core.py" + (("'udev'") + (string-append "'" eudev "/lib/libudev.so'"))) + (substitute* "src/pyudev/_ctypeslib/utils.py" + ;; Use absolute paths instead of keys. + (("= find_library") "= ")) + #t)))))) + (inputs + `(("eudev" ,eudev))) + (native-inputs + `(("python-docutils" ,python-docutils) + ("python-hypothesis" ,python-hypothesis) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-sphinx" ,python-sphinx))) + (home-page "http://pyudev.readthedocs.org/") + (synopsis "Python udev binding") + (description "This package provides @code{udev} bindings for Python.") + (license license:lgpl2.1))) + +(define-public solaar + (package + (name "solaar") + (version "0.9.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pwr/Solaar.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "085mfa13dap3wqik1dqlad0d7kff4rv7j4ljh99c7l8nhczkqgwm")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-prefix-detection + (lambda _ + (substitute* "setup.py" + (("'--prefix' in sys\\.argv") + "len([x.startswith('--prefix=') for x in sys.argv]) > 0")) + #t)) + (replace 'build + (lambda _ + (invoke "python" "setup.py" "build"))) + (add-before 'check 'setenv-PATH + (lambda _ + (setenv "PYTHONPATH" (string-append "lib:" (getenv "PYTHONPATH"))) + #t))))) + (propagated-inputs + `(("python-pygobject" ,python-pygobject) + ("python-pyudev" ,python-pyudev))) + (home-page "https://smxi.org/docs/inxi.htm") + (synopsis "Linux devices manager for the Logitech Unifying Receiver") + (description "This package provides tools to manage clients of the +Logitech Unifying Receiver.") + (license license:gpl2))) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index f7f831918b..e731569ae1 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -324,7 +324,7 @@ engineers, musicians, soundtrack editors and composers.") (build-system gnu-build-system) (inputs `(("wxwidgets" ,wxwidgets) - ("gtk" ,gtk+) + ("gtk+" ,gtk+) ("alsa-lib" ,alsa-lib) ("jack" ,jack-1) ("expat" ,expat) @@ -410,6 +410,15 @@ engineers, musicians, soundtrack editors and composers.") (("../lib-src/portmidi/porttime/porttime.h") "porttime.h")) (substitute* "src/prefs/MidiIOPrefs.cpp" (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")) + #t)) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (wrap-program (string-append (assoc-ref outputs "out") + "/bin/audacity") + ;; For GtkFileChooserDialog. + `("GSETTINGS_SCHEMA_DIR" = + (,(string-append (assoc-ref inputs "gtk+") + "/share/glib-2.0/schemas")))) #t))) ;; The test suite is not "well exercised" according to the developers, ;; and fails with various errors. See @@ -1740,11 +1749,10 @@ included are the command line utilities @code{send_osc} and @code{dump_osc}.") #t))))) ;; Required by lilv-0.pc. (propagated-inputs - `(("serd" ,serd) + `(("lv2" ,lv2) + ("serd" ,serd) ("sord" ,sord) ("sratom" ,sratom))) - (inputs - `(("lv2" ,lv2))) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://drobilla.net/software/lilv/") diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index b36bb74f6f..bd4a177ecd 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -67,7 +67,7 @@ (define-public duplicity (package (name "duplicity") - (version "0.7.18") + (version "0.7.18.1") (source (origin (method url-fetch) @@ -77,7 +77,7 @@ version ".tar.gz")) (sha256 (base32 - "1qlika4l1k1nx8zr657ihcy0yzr1c1cdnjlbs325l5krvc3zbc5b")))) + "17c0203y5qz9w8iyhs26l44qf6a1vp26b5ykz1ypdr2kv6g02df9")))) (build-system python-build-system) (native-inputs `(("util-linux" ,util-linux) ; setsid command, for the tests @@ -99,21 +99,12 @@ #:test-target "test" #:phases (modify-phases %standard-phases - (add-before 'build 'patch-source + (add-before 'build 'use-store-file-names (lambda* (#:key inputs #:allow-other-keys) - ;; Embed gpg store name. (substitute* "duplicity/gpginterface.py" (("self.call = 'gpg'") (string-append "self.call = '" (assoc-ref inputs "gnupg") "/bin/gpg'"))) - ;; This matches up with an unreleased upstream fix, it should be - ;; removed when the package is updated. - ;; https://bazaar.launchpad.net/~duplicity-team/duplicity/0.8-series/revision/1308 - (substitute* "duplicity/gpg.py" - (("--no-secmem-warning'\\)") - "--no-secmem-warning') - gnupg.options.extra_args.append('--ignore-mdc-error')")) - (substitute* '("testing/functional/__init__.py" "testing/overrides/bin/lftp") (("/bin/sh") (which "sh"))) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index cb3c4bc1fd..f60fc4c84c 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> +;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -3601,7 +3602,7 @@ experiments and provide highly stable thresholds based on reproducibility.") (define-public jellyfish (package (name "jellyfish") - (version "2.2.7") + (version "2.2.10") (source (origin (method url-fetch) (uri (string-append "https://github.com/gmarcais/Jellyfish/" @@ -3609,7 +3610,7 @@ experiments and provide highly stable thresholds based on reproducibility.") "/jellyfish-" version ".tar.gz")) (sha256 (base32 - "1a1iwq9pq54k2m9ypvwl5s0bqfl64gwh9dx5af9i382ajas2016q")))) + "1k4pc3fvv6w1km2yph4m5sd78fbxp21d6xyzgmy0gjihzc6mb249")))) (build-system gnu-build-system) (outputs '("out" ;for library "ruby" ;for Ruby bindings @@ -3646,8 +3647,8 @@ DNA sequences. It outputs its k-mer counts in a binary format, which can be translated into a human-readable text format using the @code{jellyfish dump} command, or queried for specific k-mers with @code{jellyfish query}.") (home-page "http://www.genome.umd.edu/jellyfish.html") - ;; From their website: JELLYFISH runs on 64-bit Intel-compatible processors - (supported-systems '("x86_64-linux")) + ;; JELLYFISH seems to be 64-bit only. + (supported-systems '("x86_64-linux" "aarch64-linux" "mips64el-linux")) ;; The combined work is published under the GPLv3 or later. Individual ;; files such as lib/jsoncpp.cpp are released under the Expat license. (license (list license:gpl3+ license:expat)))) @@ -13458,3 +13459,102 @@ conversions, region filtering, FASTA sequence extraction and more.") spliced (back-spliced) sequencing reads, indicative of circular RNA (circRNA) in RNA-seq data.") (license license:gpl3)))) + +(define-public python-scanpy + (package + (name "python-scanpy") + (version "1.2.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "scanpy" version)) + (sha256 + (base32 + "1ak7bxms5a0yvf65prppq2g38clkv7c7jnjbnfpkh3xxv7q512jz")))) + (build-system python-build-system) + (propagated-inputs + `(("python-anndata" ,python-anndata) + ("python-igraph" ,python-igraph) + ("python-numba" ,python-numba) + ("python-joblib" ,python-joblib) + ("python-natsort" ,python-natsort) + ("python-networkx" ,python-networkx) + ("python-statsmodels" ,python-statsmodels) + ("python-scikit-learn" ,python-scikit-learn) + ("python-matplotlib" ,python-matplotlib) + ("python-pandas" ,python-pandas) + ("python-scipy" ,python-scipy) + ("python-seaborn" ,python-seaborn) + ("python-h5py" ,python-h5py) + ("python-tables" ,python-tables))) + (home-page "http://github.com/theislab/scanpy") + (synopsis "Single-Cell Analysis in Python.") + (description "Scanpy is a scalable toolkit for analyzing single-cell gene +expression data. It includes preprocessing, visualization, clustering, +pseudotime and trajectory inference and differential expression testing. The +Python-based implementation efficiently deals with datasets of more than one +million cells.") + (license license:bsd-3))) + +(define-public gffcompare + (let ((commit "be56ef4349ea3966c12c6397f85e49e047361c41") + (revision "1")) + (package + (name "gffcompare") + (version (git-version "0.10.15" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gpertea/gffcompare/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cp5qpxdhw4mxpya5dld8wi3jk00zyklm6rcri426wydinrnfmkg")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'copy-gclib-source + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "../gclib") + (copy-recursively + (assoc-ref inputs "gclib-source") "../gclib") + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (install-file "gffcompare" bin) + #t)))))) + (native-inputs + `(("gclib-source" ; see 'README.md' of gffcompare + ,(let ((commit "54917d0849c1e83cfb057b5f712e5cb6a35d948f") + (revision "1") + (name "gclib") + (version (git-version "0.10.3" revision commit))) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gpertea/gclib/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0b51lc0b8syrv7186fd7n8f15rwnf264qgfmm2palrwks1px24mr"))))))) + (home-page "https://github.com/gpertea/gffcompare/") + (synopsis "Tool for comparing or classifing transcripts of RNA-Seq") + (description + "@code{gffcompare} is a tool that can: +@enumerate +@item compare and evaluate the accuracy of RNA-Seq transcript assemblers +(Cufflinks, Stringtie); +@item collapse (merge) duplicate transcripts from multiple GTF/GFF3 files (e.g. +resulted from assembly of different samples); +@item classify transcripts from one or multiple GTF/GFF3 files as they relate to +reference transcripts provided in a annotation file (also in GTF/GFF3 format). +@end enumerate") + (license + (list + license:expat ;license for gffcompare + license:artistic2.0))))) ;license for gclib diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm index cb05fb83fc..6af6877423 100644 --- a/gnu/packages/certs.scm +++ b/gnu/packages/certs.scm @@ -76,7 +76,7 @@ (define-public nss-certs (package (name "nss-certs") - (version "3.38") + (version "3.39") (source (origin (method url-fetch) (uri (let ((version-with-underscores @@ -87,7 +87,7 @@ "nss-" version ".tar.gz"))) (sha256 (base32 - "0qigcy3d169cf67jzv3rbai0m6dn34vp8h2z696mz4yn10y3sr1c")))) + "0jw6qlfl2g47hhx056nvnj6h92bk3sn46hy3ig61a911dzblvrkb")))) (build-system gnu-build-system) (outputs '("out")) (native-inputs diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index ddd532528f..e3edff50a5 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -269,7 +269,7 @@ problem, and shows the differences.") (define-public cmocka (package (name "cmocka") - (version "1.1.1") + (version "1.1.2") (source (origin (method url-fetch) (uri (string-append "https://cmocka.org/files/" @@ -277,10 +277,10 @@ problem, and shows the differences.") version ".tar.xz")) (sha256 (base32 - "1283zi9qf5613g8iadm1fxmjh4rzxqd5np2j3lcpgairf25g8bph")))) + "1p9b6ccv939wjsgapn7wx24xw278awsw9h81lm0g4zw257hx276i")))) (build-system cmake-build-system) (arguments - `(#:tests? #f)) ; No test target + `(#:tests? #f)) ; no test target (home-page "https://cmocka.org/") (synopsis "Unit testing framework for C") (description "Cmocka is a unit testing framework for C with support for diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 0160e42f6a..d591e6a884 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -236,7 +236,7 @@ as ordering relation.") (build-system cmake-build-system) (synopsis "JSON parser and printer library for C++") (description "JSON for Modern C++ is a C++ JSON library that provides -intutive syntax and trivial integration.") +intuitive syntax and trivial integration.") (license license:expat))) (define-public xtl diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index eb6bf9c38b..016d1b1e41 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -4944,3 +4944,47 @@ developers to generate user interfaces easy to maintain.") models. The methods employed are applicable to virtually any predictive model and make comparisons between different methodologies straightforward.") (license license:gpl2+))) + +(define-public r-infotheo + (package + (name "r-infotheo") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "infotheo" version)) + (sha256 + (base32 + "18xacczfq3z3xpy434js4nf3l19lczngzd0lq26wh22pvg1yniwv")))) + (build-system r-build-system) + (home-page "http://homepage.meyerp.com/software") + (synopsis "Information-theoretic measures") + (description + "This package implements various measures of information theory based on +several entropy estimators.") + (license license:gpl3+))) + +(define-public r-abcoptim + (package + (name "r-abcoptim") + (version "0.15.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "ABCoptim" version)) + (sha256 + (base32 "1ih0xk88qhsmpvnxf56041wx5sk8as2f4f2gdnpnwdym9mbr9n4b")))) + (properties `((upstream-name . "ABCoptim"))) + (build-system r-build-system) + (propagated-inputs `(("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/gvegayon/ABCoptim/") + (synopsis "Optimization of Artificial Bee Colony algorithm") + (description + "Artificial Bee Colony (ABC) is one of the most recently defined algorithms by Dervis +Karaboga in 2005, motivated by the intelligent behavior of honey bees. It is as +simple as Particle Swarm Optimization (PSO) and Differential Evolution (DE) +algorithms, and uses only common control parameters such as colony size and +maximum cycle number. The @code{r-abcoptim} implements the Artificial bee +colony optimization algorithm @url{http://mf.erciyes.edu.tr/abc/pub/tr06_2005.pdf}. + This version is a work-in-progress and is written in R code.") + (license license:expat))) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index ae6150b0ab..e070ef61ac 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -40,6 +40,7 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages gnupg) #:use-module (gnu packages image) + #:use-module (gnu packages kerberos) #:use-module (gnu packages libbsd) #:use-module (gnu packages libffi) #:use-module (gnu packages linux) @@ -277,7 +278,7 @@ the wrong hands.") (define-public keyutils (package (name "keyutils") - (version "1.5.10") + (version "1.5.11") (source (origin (method url-fetch) @@ -286,9 +287,9 @@ the wrong hands.") version ".tar.bz2")) (sha256 (base32 - "1dmgjcf7mnwc6h72xkvpaqpzxw8vmlnsmzz0s27pg0giwzm3sp0i")) + "1ddig6j5xjyk6g9l2wlqc7k1cgvryxdqbsv3c9rk1p3f42448n0i")) (modules '((guix build utils))) - ;; Create relative symbolic links instead of absolute ones to /lib/* + ;; Create relative symbolic links instead of absolute ones to /lib/*. (snippet '(begin (substitute* "Makefile" (("\\$\\(LNS\\) \\$\\(LIBDIR\\)/") "$(LNS) ")) @@ -306,6 +307,8 @@ the wrong hands.") "MANDIR=/share/man" "SHAREDIR=/share/keyutils") #:test-target "test")) + (inputs + `(("mit-krb5" ,mit-krb5))) (home-page "https://people.redhat.com/dhowells/keyutils/") (synopsis "Linux key management utilities") (description diff --git a/gnu/packages/dico.scm b/gnu/packages/dico.scm index b374a9b996..a85987d9b1 100644 --- a/gnu/packages/dico.scm +++ b/gnu/packages/dico.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. @@ -37,14 +37,14 @@ (define-public dico (package (name "dico") - (version "2.5") + (version "2.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/dico/dico-" version ".tar.xz")) (sha256 (base32 - "0szm3z4xvq0pjj8kxl4paq63byamf281kzn1la0cdm5ngavypxxq")))) + "0zmi041gv5nd5fmyzgdrgrsy2pvjaq9p8dvvhxwi842hiyng5b7i")))) (build-system gnu-build-system) (arguments '(#:configure-flags (list (string-append "--with-guile-site-dir=" %output @@ -62,7 +62,7 @@ `(("m4" ,m4) ;used at run time ("pcre" ,pcre) ("python" ,python-2) - ("guile" ,guile-2.0) + ("guile" ,guile-2.2) ("gsasl" ,gsasl) ("groff" ,groff) ("readline" ,readline) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index a095d0cd4f..206f9c71bb 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -337,14 +337,14 @@ and can dramatically shorten the lifespan of the drive if left unchecked.") (define-public gparted (package (name "gparted") - (version "0.31.0") + (version "0.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gparted/gparted/gparted-" version "/gparted-" version ".tar.gz")) (sha256 - (base32 "1fh7rpgb4xxdhgyjsirb83zvjfc5mfngb8a1pjbv7r6r6jj4jyrv")))) + (base32 "1fjp4c8jc0kjbbih1x1vs9v40d9lncma642kflnmy0bixxnvh7df")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; tests require a network connection diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 8665356f5c..8f0c564f88 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -646,7 +646,11 @@ only a handful of functions that are not resource-specific.") "https://github.com/haskell/haskell-mode/archive/v" version ".tar.gz")) (sha256 - (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h")))) + (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h")) + (patches + (search-patches ; backport test failure fixes + "haskell-mode-unused-variables.patch" + "haskell-mode-make-check.patch")))) (inputs `(("emacs-el-search" ,emacs-el-search) ; for tests ("emacs-stream" ,emacs-stream))) ; for tests @@ -686,12 +690,11 @@ only a handful of functions that are not resource-specific.") (_ "")) inputs))) (substitute* (find-files "." "\\.el") (("/bin/sh") sh)) - (substitute* "tests/haskell-code-conventions.el" - ;; Function name recently changed in "emacs-el-search". - (("el-search--search-pattern") "el-search-forward") - ;; Don't contact home. - (("\\(when \\(>= emacs-major-version 25\\)") - "(require 'el-search) (when nil")) + ;; embed filename to fix test failure + (let ((file "tests/haskell-cabal-tests.el")) + (substitute* file + (("\\(buffer-file-name\\)") + (format #f "(or (buffer-file-name) ~s)" file)))) #t))) (replace 'install @@ -1722,6 +1725,32 @@ management tasks from Emacs. To begin with, run @code{M-x guix-about} or @code{M-x guix-help} command.") (license license:gpl3+))) +(define-public emacs-build-farm + (package + (name "emacs-build-farm") + (version "0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/alezost-emacs/build-farm") + (commit "fa7fa54901416fc5c216a5014394cbd73a61efc6"))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1zw3pivma6cv9j7k7qm02jd6wnxmsc1v2mjcssd50im99zzrqflh")))) + (build-system emacs-build-system) + (propagated-inputs + `(("bui" ,emacs-bui) + ("magit-popup" ,emacs-magit-popup))) + (home-page "https://gitlab.com/alezost-emacs/build-farm") + (synopsis "Emacs interface for Hydra and Cuirass build farms") + (description + "This Emacs package provides an interface for Hydra and +Cuirass (build farms used by Nix and Guix). It allows you to look at +various data related to the build farm projects, jobsets, builds and +evaluations. The entry point is @code{M-x build-farm} command.") + (license license:gpl3+))) + (define-public emacs-d-mode (package (name "emacs-d-mode") @@ -8977,7 +9006,7 @@ continue.") (define-public emacs-elisp-refs (package (name "emacs-elisp-refs") - (version "1.2") + (version "1.3") (source (origin (method url-fetch) @@ -8986,14 +9015,15 @@ continue.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0fj6wphwrvbslw46w7wgdk3b4bfr312ygj3lbgr9qw63lpqw26nl")))) + "02nzcn3v14n7mp7q32j5r4wdlpsw3zixzh6cf0cdyarfir6dly3p")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) ("emacs-f" ,emacs-f) ("emacs-list-utils" ,emacs-list-utils) ("emacs-loop" ,emacs-loop) - ("emacs-s" ,emacs-s))) + ("emacs-s" ,emacs-s) + ("emacs-shut-up" ,emacs-shut-up))) (home-page "https://github.com/Wilfred/elisp-refs") (synopsis "Find callers of elisp functions or macros") (description "Find references to functions, macros or variables. Unlike a @@ -9537,11 +9567,12 @@ duplicate hook and function names further into a single declarative call.") "0rf2rnzg82pdqch041yyx3f9ddixffkk9s2ydzg8hwy66sg3385n")))) (build-system emacs-build-system) (home-page "https://github.com/Malabarba/fancy-narrow/releases") - (synopsis "Immitate narrow-to-region with more eye-candy") - (description "Unlike narrow-to-region, which completely hides text outside -the narrowed region, this package simply deemphasizes the text, makes it -readonly, and makes it unreachable. This leads to a much more natural -feeling, where the region stays static (instead of being brutally moved to a + (synopsis "Imitate @code{narrow-to-region} with more eye candy") + (description + "Unlike @code{narrow-to-region}, which completely hides text outside +the narrowed region, this package simply de-emphasizes the text, makes it +read-only, and makes it unreachable. This leads to a much more natural +feeling where the region stays static (instead of being brutally moved to a blank slate) and is clearly highlighted with respect to the rest of the buffer.") (license license:gpl2+))) @@ -9633,7 +9664,7 @@ downloading manager for Emacs.") (define-public emacs-helpful (package (name "emacs-helpful") - (version "0.1") + (version "0.13") (source (origin (method url-fetch) (uri (string-append @@ -9642,7 +9673,7 @@ downloading manager for Emacs.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "16dx566qzrjj0bf43lnw7h1qlvgs94brqplamw8kppp2ylr72qs9")))) + "11kj04y1fa3vnw2991cyqf6adz6bb3hlrdkvypjnmpb0s64q64b6")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-elisp-refs" ,emacs-elisp-refs))) @@ -10027,7 +10058,7 @@ perform regression test for packages that provide font-lock rules.") (license license:gpl3+)))) (define-public emacs-racket-mode - (let ((commit "add0190d3c9bdad25fee57f8efd0460c9a45c2ec") + (let ((commit "92c33487f6c707880ac3f6169e7ea65ddffd1463") (revision "1")) (package (name "emacs-racket-mode") @@ -10042,7 +10073,7 @@ perform regression test for packages that provide font-lock rules.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0bf6s4nqjfacij20x9vppdnq8fq1bf53cch6p4g8xqcqri3ms4jw")))) + "19q6ym10gj2xdzzcgh3wdbq1xv8cv7nlrhv2b0bjvvdjzhiki472")))) (build-system emacs-build-system) (arguments `(#:include '("\\.el$" "\\.rkt$"))) diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index 141423d7bf..8e68c676ef 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -1055,7 +1055,7 @@ emulation community. It provides highly accurate emulation.") (define-public retroarch (package (name "retroarch") - (version "1.7.3") + (version "1.7.4") (source (origin (method url-fetch) @@ -1063,7 +1063,7 @@ emulation community. It provides highly accurate emulation.") version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1si78dbwbsq4i0r42q94nmlpaxdyqch113nxavdprf4vc1224356")))) + (base32 "0h6y2hpjg4b470jvn9ghwp0k3a527sbb6xhia17frlm9w9v5028w")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no tests @@ -1175,7 +1175,7 @@ play them on systems for which they were never designed!") (define-public mame (package (name "mame") - (version "0.200") + (version "0.201") (source (origin (method git-fetch) @@ -1185,7 +1185,7 @@ play them on systems for which they were never designed!") (file-name (git-file-name name version)) (sha256 (base32 - "0ddw8635hdm21lgpf13k1vhfywy3460rwciv93vrqmpkq2dvpmib")) + "00whiig4ld3d4fkl34q48vlf28ygvvp5g7fp0rb5n31ymhl4kajk")) (modules '((guix build utils))) (snippet ;; Remove bundled libraries. @@ -1211,17 +1211,6 @@ play them on systems for which they were never designed!") #:tests? #f ;no test in regular release #:phases (modify-phases %standard-phases - ;; Add missing include lines for "fmin" and "ceil" functions. - ;; Reported upstream. Will be fixed in 0.201. - (add-after 'unpack 'add-missing-include - (lambda _ - (substitute* "src/devices/cpu/mips/mips3.cpp" - (("#include \"ps2vu.h\"" all) - (string-append all "\n#include <cmath>"))) - (substitute* "src/devices/cpu/mips/ps2vif1.cpp" - (("#include \"ps2vif1.h\"" all) - (string-append all "\n#include <cmath>"))) - #t)) (delete 'configure) (add-after 'build 'build-documentation (lambda _ (invoke "make" "-C" "docs" "man" "info"))) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 3b433a1bfe..d53b25cff9 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1101,7 +1101,7 @@ language, ADMS transforms Verilog-AMS code into other target languages.") (setenv "LDFLAGS" (string-append "-Wl,-rpath=" (assoc-ref outputs "out") "/lib")) #t))))) - (home-page "http://www.capstone-engine.org") + (home-page "https://www.capstone-engine.org") (synopsis "Lightweight multi-platform, multi-architecture disassembly framework") (description "Capstone is a lightweight multi-platform, multi-architecture disassembly diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index cff5ab14a9..40a5ec1cf4 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -62,7 +62,7 @@ (define-public efl (package (name "efl") - (version "1.20.7") + (version "1.21.0") (source (origin (method url-fetch) (uri (string-append @@ -70,7 +70,7 @@ version ".tar.xz")) (sha256 (base32 - "1zkn5ix81xck3n84dxvkjh4alwc6zj8x989d0zqi5c6ppijvgadh")))) + "0jxfrcz2aq1synxzd6sh9nhxz7fg9qgz0idr8zj6gaiplmwbwrby")))) (outputs '("out" ; 49 MB "include")) ; 17 MB (build-system gnu-build-system) @@ -312,35 +312,36 @@ embedded systems.") (define-public python-efl (package (name "python-efl") - (version "1.20.0") + (version "1.21.0") (source (origin (method url-fetch) - (uri (list - (pypi-uri "python-efl" version) - (string-append "http://download.enlightenment.org/rel/bindings/" - "python/python-efl-" version ".tar.gz"))) + (uri (string-append "http://download.enlightenment.org/rel/bindings/" + "python/python-efl-" version ".tar.xz")) (sha256 (base32 - "1680pgpf501nhbc9arm0nfj6rpcw17aryh0pgmmmszxlgpifpdzy")))) + "08x2cv8hnf004c3711250wrax21ffj5y8951pvk77h98als4pq47")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases - (replace 'build - (lambda _ - (zero? - (system* "env" "ENABLE_CYTHON=1" "python" "setup.py" "build")))) + (replace 'build + (lambda _ + (setenv "ENABLE_CYTHON" "1") + (invoke "python" "setup.py" "build"))) (add-before 'build 'set-flags - (lambda _ - (setenv "CFLAGS" - (string-append "-I" (assoc-ref %build-inputs "python-dbus") - "/include/dbus-1.0")) - #t)) + (lambda _ + (setenv "CFLAGS" + (string-append "-I" (assoc-ref %build-inputs "python-dbus") + "/include/dbus-1.0")) + #t)) (add-before 'check 'set-environment (lambda _ ;; Some tests require write access to HOME. (setenv "HOME" "/tmp") + ;; These tests try to connect to the internet. + (delete-file "tests/ecore/test_09_file_download.py") + (delete-file "tests/ecore/test_11_con.py") #t))))) (native-inputs `(("pkg-config" ,pkg-config) @@ -421,3 +422,50 @@ and in creating applications based on the Enlightenment Foundation Library suite "Simple PDF viewer based on the Enlightenment Foundation Libraries.") (home-page "https://github.com/kaihu/lekha") (license license:gpl3+))) + +(define-public ephoto + (package + (name "ephoto") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (list (string-append "http://www.smhouston.us/stuff/ephoto-" + version ".tar.xz") + (string-append "https://download.enlightenment.org/rel/" + "apps/ephoto/ephoto-" version ".tar.xz"))) + (sha256 + (base32 + "04kli43sfsy6s660g13pjc0kjmgdcmq8m4qh02vvpcwv60mf9mgz")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-home-directory + ;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2 + (lambda _ (setenv "HOME" "/tmp") #t))))) + (native-inputs + `(("check" ,check) + ("pkg-config" ,pkg-config))) + (inputs + `(("efl" ,efl))) + (home-page "http://smhouston.us/ephoto/") + (synopsis "EFL image viewer/editor/manipulator/slideshow creator") + (description "Ephoto is an image viewer and editor written using the +@dfn{Enlightenment Foundation Libraries} (EFL). It focuses on simplicity and ease +of use, while taking advantage of the speed and small footprint the EFL provide. + +Ephoto’s features include: +@enumerate +@item Browsing the filesystem and displaying images in an easy to use grid view. +@item Browsing images in a single image view format. +@item Viewing images in a slideshow. +@item Editing your image with features such as cropping, auto enhance, +blurring, sharpening, brightness/contrast/gamma adjustments, hue/saturation/value +adjustments, and color level adjustment. +@item Applying artistic filters to your image such as black and white and old photo. +@item Drag And Drop along with file operations to easy maintain your photo directories. +@end enumerate\n") + (license (list + license:bsd-2 ; Ephoto's thumbnailing code + license:bsd-3)))) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 2cbd4854ec..28bfb28f49 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -335,7 +335,7 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.") (package (inherit electrum) (name "electron-cash") - (version "3.3") + (version "3.3.1") (source (origin (method url-fetch) @@ -346,7 +346,7 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.") ".tar.gz")) (sha256 (base32 - "1x487hyacdm1qhik1mhfimr4jwcwz7sgsbkh11awrb6j19sxdxym")) + "1jdy89rfdwc2jadx3rqj5yvynpcn90cx6482ax9f1cj9gfxp9j2b")) (modules '((guix build utils))) (snippet '(begin @@ -664,23 +664,38 @@ Ledger Blue/Nano S.") (define-public python-trezor (package (name "python-trezor") - (version "0.7.16") + (version "0.10.2") (source (origin (method url-fetch) (uri (pypi-uri "trezor" version)) (sha256 (base32 - "055kii56wgwadl5z911s59ya2fnsqzk3n5i19s2hb9sv2by6knvb")))) + "138k6zsqqpb46k3rcpyslm9q7yq5i6k4myvr9n425jnkadf4vfjd")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Default tests run device-specific tests which fail, only run specific tests. + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (invoke "python" "-m" "pytest" "--pyarg" "trezorlib.tests.unit_tests") + (invoke "python" "-m" "pytest" "-m" "slow_cosi" "--pyarg" "trezorlib.tests.unit_tests") + ))))) (propagated-inputs - `(("python-ecdsa" ,python-ecdsa) + `(("python-click" ,python-click) + ("python-ecdsa" ,python-ecdsa) ("python-hidapi" ,python-hidapi) + ("python-libusb1" ,python-libusb1) ("python-mnemonic" ,python-mnemonic) ("python-protobuf" ,python-protobuf) - ("python-requests" ,python-requests))) + ("python-pyblake2" ,python-pyblake2) + ("python-requests" ,python-requests) + ("python-typing" ,python-typing))) (native-inputs - `(("python-pyqt" ,python-pyqt))) ; Tests + `(("python-mock" ,python-mock) ; Tests + ("python-pyqt" ,python-pyqt) ; Tests + ("python-pytest" ,python-pytest))) ; Tests (home-page "https://github.com/trezor/python-trezor") (synopsis "Python library for communicating with TREZOR Hardware Wallet") (description "@code{trezor} is a Python library for communicating with diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 8d66317ce7..86f2877f82 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1037,23 +1037,18 @@ of use.") (license license:expat))) (define-public openmw - ;; XXX The current version does not support qt 5.11, but the upcoming - ;; version (0.44) will do. - (let ((commit "5bc073603e8c7887e015a0ef41b4cefd6e688aaf") - (revision "1")) (package (name "openmw") - (version (git-version "0.43" revision commit)) + (version "0.44.0") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/OpenMW/openmw.git") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) + (method url-fetch) + (uri + (string-append "https://github.com/OpenMW/openmw/archive/" + name "-" version ".tar.gz")) (sha256 (base32 - "1sp4n3f1syvv0iz7n72wh226fyc0jh98cg8bvs574jvvqx6qn851")))) + "03fgm2f2r7y0aqlgp038pdlnllgvm3jimrp968p4nhz1sffvjzcy")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; No test target @@ -1080,7 +1075,7 @@ the 2002 open-world RPG Morrowind. The engine comes with its own editor, called OpenMW-CS which allows the user to edit or create their own original games.") (home-page "https://openmw.org") - (license license:gpl3)))) + (license license:gpl3))) (define-public godot (package diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 0142fc8ed2..728f763806 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -793,6 +793,46 @@ role, and your gender.") (license:fsdg-compatible "https://nethack.org/common/license.html")))) +(define-public pipewalker + (package + (name "pipewalker") + (version "0.9.4") + (source + (origin + (method url-fetch) + (uri (string-append "http://downloads.sourceforge.net/pipewalker/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--docdir=" (assoc-ref %outputs "out") + "/share/doc/" ,name "-" ,version)) + #:phases + (modify-phases %standard-phases + (add-after 'configure 'patch-docdir + ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that. + (lambda _ + (substitute* "Makefile" + (("(pkgdocdatadir = ).*" _ assignment) + (string-append assignment "$(docdir)\n"))) + #t))))) + (inputs + `(("libpng" ,libpng) + ("mesa" ,mesa) + ("sdl" ,sdl))) + (home-page "http://pipewalker.sourceforge.net/") + (synopsis "Logical tile puzzle") + (description + "PipeWalker is a simple puzzle game with many diffent themes: connect all +computers to one network server, bring water from a source to the taps, etc. +The underlying mechanism is always the same: you must turn each tile in the +grid in the right direction to combine all components into a single circuit. +Every puzzle has a complete solution, although there may be more than one.") + (license license:gpl3+))) + (define-public prboom-plus (package (name "prboom-plus") @@ -2430,7 +2470,7 @@ Transport Tycoon Deluxe.") (define openrct2-objects (package (name "openrct2-objects") - (version "1.0.2") + (version "1.0.6") (source (origin (method url-fetch) @@ -2439,7 +2479,7 @@ Transport Tycoon Deluxe.") (file-name (string-append name "-" version ".zip")) (sha256 (base32 - "1z92afhbv13j1ig6fz0x8w9vdmfchssv16vwwhb0vj40pn1g1rwy")))) + "00kfy95zx6g4ldr6br5p7bwkwfx6pw9v78fd3rvghjnwyvf5fhki")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -2471,7 +2511,7 @@ Transport Tycoon Deluxe.") (define-public openrct2 (package (name "openrct2") - (version "0.2.0") + (version "0.2.1") (source (origin (method url-fetch) @@ -2479,7 +2519,7 @@ Transport Tycoon Deluxe.") version ".tar.gz")) (sha256 (base32 - "1yrbjra27n2xxb1x47v962lc3qi8gwm5ws4f97952nvn533zrwxz")) + "1fxzk037xphpyk7vv5jfrcz739zrj86p43pnf5gjjv9rjxwv7m8f")) (file-name (string-append name "-" version ".tar.gz")))) (build-system cmake-build-system) (arguments diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index 56553a6745..c374695524 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm @@ -94,7 +94,7 @@ most common applications of GD involve website development.") (define-public perl-gd (package (name "perl-gd") - (version "2.68") + (version "2.69") (source (origin (method url-fetch) @@ -102,7 +102,7 @@ most common applications of GD involve website development.") "GD-" version ".tar.gz")) (sha256 (base32 - "0p2ya641nl5cvcqgw829xgabh835qijfd6vq2ba12862946xx8va")))) + "0palmq7l42fibqxhrabnjm7di4q8kciq9323902d717x3i4jvc6x")))) (build-system perl-build-system) (inputs `(("fontconfig" ,fontconfig) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 12ecb8ba65..8dff95fc70 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -787,7 +787,7 @@ programming langauage. It also contains the utility (define-public appstream-glib (package (name "appstream-glib") - (version "0.7.10") + (version "0.7.12") (source (origin (method url-fetch) (uri (string-append "https://people.freedesktop.org/~hughsient/" @@ -795,7 +795,7 @@ programming langauage. It also contains the utility "appstream-glib-" version ".tar.xz")) (sha256 (base32 - "08bs0hnkvdzqv9pakv1y4c4ph77rmzjq22g760w20sv7vs63nia3")))) + "1jcb2bggcic3iczr2hn8zp8a3c2hl1xjij0aawr7kwqmzh9b3jms")))) (build-system meson-build-system) (native-inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm index 38f9e8187a..a56bc09e61 100644 --- a/gnu/packages/gnu-pw-mgr.scm +++ b/gnu/packages/gnu-pw-mgr.scm @@ -30,7 +30,7 @@ (define-public gnu-pw-mgr (package (name "gnu-pw-mgr") - (version "2.3.3") + (version "2.4.2") (source (origin (method url-fetch) @@ -38,7 +38,7 @@ version ".tar.xz")) (sha256 (base32 - "04xh38j7l0sfnb01kp05xc908pvqfc0lph94k7n9bi46zy3qy7ma")))) + "1yvdzc5w37qrjrkby5699ygj9bhkvgi3zk9k9jcjry1j6b7wdl17")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 1da48bfa66..0cd9818326 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -220,14 +220,14 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.2.9") + (version "2.2.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "0r11mx8nkh7ysrnshs560amha5csx8zcaggb5kxcksx1zymyly32")))) + "05f9804g72pffdxgvxjmjzkfcpjg1x221g9rwcr8fi51hrxd77br")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index b6bf89a75b..77a74a0ec4 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -323,7 +323,7 @@ in C/C++.") (define-public nspr (package (name "nspr") - (version "4.19") + (version "4.20") (source (origin (method url-fetch) (uri (string-append @@ -331,7 +331,7 @@ in C/C++.") version "/src/nspr-" version ".tar.gz")) (sha256 (base32 - "0agpv3f17h8kmzi0ifibaaxc1k3xc0q61wqw3l6r2xr2z8bmkn9f")))) + "0vjms4j75zvv5b2siyafg7hh924ysx2cwjad8spzp7x87n8n929c")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) @@ -359,7 +359,7 @@ in the Mozilla clients.") (define-public nss (package (name "nss") - (version "3.38") + (version "3.39") (source (origin (method url-fetch) (uri (let ((version-with-underscores @@ -370,7 +370,7 @@ in the Mozilla clients.") "nss-" version ".tar.gz"))) (sha256 (base32 - "0qigcy3d169cf67jzv3rbai0m6dn34vp8h2z696mz4yn10y3sr1c")) + "0jw6qlfl2g47hhx056nvnj6h92bk3sn46hy3ig61a911dzblvrkb")) ;; Create nss.pc and nss-config. (patches (search-patches "nss-pkgconfig.patch" "nss-increase-test-timeout.patch")))) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 6632c9a1a3..9c2869c12b 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -228,14 +228,15 @@ many more.") (define-public ilmbase (package (name "ilmbase") - (version "2.2.1") + (version "2.3.0") (source (origin (method url-fetch) - (uri (string-append "mirror://savannah/openexr/ilmbase-" + (uri (string-append "https://github.com/openexr/openexr/releases" + "/download/v" version "/ilmbase-" version ".tar.gz")) (sha256 (base32 - "17k0hq19wplx9s029kjrq6c51x2ryrfmaavcappkd0g67gk0dhna")) + "0qiq5bqq9rxhqjiym2k36sx4vq8adgrz6xf6qwizi9bqm78phsa5")) (patches (search-patches "ilmbase-fix-tests.patch")))) (build-system gnu-build-system) (home-page "http://www.openexr.com/") @@ -319,29 +320,22 @@ graphics.") (define-public openexr (package (name "openexr") - (version "2.2.1") + (version "2.3.0") (source (origin (method url-fetch) - (uri (string-append "mirror://savannah/openexr/openexr-" + (uri (string-append "https://github.com/openexr/openexr/releases" + "/download/v" version "/openexr-" version ".tar.gz")) (sha256 (base32 - "1kdf2gqznsdinbd5vcmqnif442nyhdf9l7ckc51410qm2gv5m6lg")) + "19jywbs9qjvsbkvlvzayzi81s976k53wg53vw4xj66lcgylb6v7x")) (modules '((guix build utils))) (snippet '(begin (substitute* (find-files "." "tmpDir\\.h") (("\"/var/tmp/\"") "\"/tmp/\"")) - - ;; Install 'ImfStdIO.h'. Reported at - ;; <https://lists.nongnu.org/archive/html/openexr-devel/2016-06/msg00001.html> - ;; and <https://github.com/openexr/openexr/pull/184>. - (substitute* "IlmImf/Makefile.in" - (("ImfIO\\.h") - "ImfIO.h ImfStdIO.h")) - #t)) - (patches (search-patches "openexr-missing-samples.patch")))) + #t)))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm index 9dcebe9832..127b476ef3 100644 --- a/gnu/packages/gsasl.scm +++ b/gnu/packages/gsasl.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,14 +34,14 @@ (define-public libntlm (package (name "libntlm") - (version "1.4") + (version "1.5") (source (origin (method url-fetch) - (uri (string-append "http://www.nongnu.org/libntlm/releases/" + (uri (string-append "https://www.nongnu.org/libntlm/releases/" "libntlm-" version ".tar.gz")) (sha256 (base32 - "129532iiip2cjr5h03bgz184v64v27sfm1r70v3ms4yk65gdf5c4")))) + "1gcvv7f9rggpxay81qv6kw5hr6gd4qiyzkbwhzz02fx9jvv9kmsk")))) (build-system gnu-build-system) (synopsis "Library that implements NTLM authentication") (description diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm new file mode 100644 index 0000000000..f77336e504 --- /dev/null +++ b/gnu/packages/hardware.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages hardware) + #:use-module (gnu packages compression) + #:use-module (gnu packages glib) + #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages)) + +;; This is a module for packages related to physical hardware that don't (yet) +;; have a more specific home like gps.scm, security-token.scm, &c. + +(define-public ddcutil + (package + (name "ddcutil") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.ddcutil.com/tarballs/" + name "-" version ".tar.gz")) + (sha256 + (base32 "1b4bm3zhk5vnad6fxf0mn8nrlj3fngifl7nzxgxw0n56hlv7ccv0")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("eudev" ,eudev) + ("glib" ,glib) + ("libdrm" ,libdrm) ; enhanced diagnostics + ("libusb" ,libusb) ; support USB monitors + ("libx11" ,libx11) ; enhanced diagnostics + ("libxrandr" ,libxrandr) + ("zlib" ,zlib))) + (home-page "https://www.ddcutil.com/") + (synopsis "Control external monitor settings") + (description + "ddcutil can query and modify most external monitors' settings, such as +brightness, colour levels, and input sources. Generally speaking, any setting +that can be changed by pressing buttons on the monitor can be modified by +ddcutil. + +ddcutil communicates directly with monitors implementing the Monitor Control +Command Set (@dfn{MCCS}). It usually does so through the the Display Data +Channel Command Interface (@dfn{DDC/CI}) protocol on the I2C bus, but can also +communicate over USB as per the USB Monitor Control Class Specification. + +One particular use case is in colour profile management. Monitor calibration +is relative to the monitor colour settings currently in effect, e.g. red gain. +ddcutil allows colour-related settings to be saved at the time a monitor is +calibrated, and restored when the calibration is applied.") + (license (list license:bsd-3 ; FindDDCUtil.cmake + license:gpl2+)))) ; everything else + +(define-public msr-tools + (package + (name "msr-tools") + (version "1.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://01.org/sites/default/files/downloads/" + name "/" name "-" version ".zip")) + (sha256 + (base32 "07hxmddg0l31kjfmaq84ni142lbbvgq6391r8bd79wpm819pnigr")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "sbindir=" (assoc-ref %outputs "out") "/sbin")) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-before 'install 'create-output-directory + (lambda* (#:key outputs #:allow-other-keys) + ;; 'make install' assumes that sbindir exists. + (let* ((out (assoc-ref outputs "out")) + (sbin (string-append out "/sbin"))) + (mkdir-p sbin) + #t)))) + #:tests? #f)) ; no test suite + (native-inputs + `(("unzip" ,unzip))) + ;; These registers and the CPUID instruction only exist on (most) x86 chips. + (supported-systems (list "i686-linux" "x86_64-linux")) + (home-page "https://01.org/msr-tools/") + (synopsis "Read and write Model-Specific Registers (@dfn{MSR})") + (description + "The MSR Tools project provides console utilities to directly access the +Model-Specific Registers (@dfn{MSR}s) and CPU ID of Intel-compatible processors: + +@itemize +@item @command{cpuid}: show identification and feature information of any CPU +@item @command{rdmsr}: read MSRs from any CPU or all CPUs +@item @command{wrmsr}: write to MSRs on any CPU or all CPUs +@end itemize + +These tools can be used to query and modify certain low-level CPU parameters, +such as the Turbo Boost ratio and Thermal Design Power (@dfn{TDP}) limits. + +MSR addresses differ (greatly) between processors, and any such modification can +be dangerous and may void your CPU or system board's warranty.") + (license license:gpl2))) ; cpuid.c is gpl2, {rd,wr}msr.c are gpl2+ diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 7d7d85f951..a07bb049a2 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -34,6 +34,7 @@ (define-module (gnu packages haskell) #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages bootstrap) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -322,7 +323,7 @@ top of CLISP.") interactive environment for the functional language Haskell.") (license license:bsd-3))) -(define-public ghc-8 +(define-public ghc-8.0 (package (name "ghc") (version "8.0.2") @@ -434,7 +435,131 @@ interactive environment for the functional language Haskell.") interactive environment for the functional language Haskell.") (license license:bsd-3))) -(define-public ghc ghc-8) +(define-public ghc-8 + (package (inherit ghc-8.0) + (name "ghc") + (version "8.4.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.haskell.org/ghc/dist/" + version "/" name "-" version "-src.tar.xz")) + (sha256 + (base32 "1mk046vb561j75saz05rghhbkps46ym5aci4264dwc2qk3dayixf")))) + (inputs + `(("gmp" ,gmp) + ("ncurses" ,ncurses) + ("libffi" ,libffi) + ("target-binutils" ,binutils) + ("target-gcc" ,gcc) + ("target-ld-wrapper" ,(make-ld-wrapper "ld-wrapper" + #:binutils binutils)))) + (native-inputs + `(("perl" ,perl) + ("python" ,python) ; for tests + ("ghostscript" ,ghostscript) ; for tests + ;; GHC 8.4.3 is built with GHC 8. + ("ghc-bootstrap" ,ghc-8.0) + ("ghc-testsuite" + ,(origin + (method url-fetch) + (uri (string-append + "https://www.haskell.org/ghc/dist/" + version "/" name "-" version "-testsuite.tar.xz")) + (sha256 + (base32 + "1z55b1z0m3plqd2d1ks6w5wvx7igm7zsk3i4v7cms003z0as0hzz")))))) + (arguments + `(#:test-target "test" + ;; We get a smaller number of test failures by disabling parallel test + ;; execution. + #:parallel-tests? #f + + ;; The DSOs use $ORIGIN to refer to each other, but (guix build + ;; gremlin) doesn't support it yet, so skip this phase. + #:validate-runpath? #f + + ;; Don't pass --build=<triplet>, because the configure script + ;; auto-detects slightly different triplets for --host and --target and + ;; then complains that they don't match. + #:build #f + + #:configure-flags + (list + (string-append "--with-gmp-libraries=" + (assoc-ref %build-inputs "gmp") "/lib") + (string-append "--with-gmp-includes=" + (assoc-ref %build-inputs "gmp") "/include") + "--with-system-libffi" + (string-append "--with-ffi-libraries=" + (assoc-ref %build-inputs "libffi") "/lib") + (string-append "--with-ffi-includes=" + (assoc-ref %build-inputs "libffi") "/include") + (string-append "--with-curses-libraries=" + (assoc-ref %build-inputs "ncurses") "/lib") + (string-append "--with-curses-includes=" + (assoc-ref %build-inputs "ncurses") "/include")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-testsuite + (lambda* (#:key inputs #:allow-other-keys) + (invoke "tar" "xvf" + (assoc-ref inputs "ghc-testsuite") + "--strip-components=1") + #t)) + (add-after 'unpack-testsuite 'fix-shell-wrappers + (lambda _ + (substitute* '("driver/ghci/ghc.mk" + "utils/mkdirhier/ghc.mk" + "rules/shell-wrapper.mk") + (("echo '#!/bin/sh'") + (format #f "echo '#!~a'" (which "sh")))) + #t)) + ;; This is necessary because the configure system no longer uses + ;; “AC_PATH_” but “AC_CHECK_”, setting the variables to just the + ;; plain command names. + (add-before 'configure 'set-target-programs + (lambda* (#:key inputs #:allow-other-keys) + (let ((binutils (assoc-ref inputs "target-binutils")) + (gcc (assoc-ref inputs "target-gcc")) + (ld-wrapper (assoc-ref inputs "target-ld-wrapper"))) + (setenv "CC" (string-append gcc "/bin/gcc")) + (setenv "CXX" (string-append gcc "/bin/g++")) + (setenv "LD" (string-append ld-wrapper "/bin/ld")) + (setenv "NM" (string-append binutils "/bin/nm")) + (setenv "RANLIB" (string-append binutils "/bin/ranlib")) + (setenv "STRIP" (string-append binutils "/bin/strip")) + ;; The 'ar' command does not follow the same pattern. + (setenv "fp_prog_ar" (string-append binutils "/bin/ar")) + #t))) + (add-before 'build 'fix-references + (lambda _ + (substitute* '("testsuite/timeout/Makefile" + "testsuite/timeout/timeout.py" + "testsuite/timeout/timeout.hs" + "testsuite/tests/programs/life_space_leak/life.test" + ;; libraries + "libraries/process/System/Process/Posix.hs" + "libraries/process/tests/process001.hs" + "libraries/process/tests/process002.hs" + "libraries/unix/cbits/execvpe.c") + (("/bin/sh") (which "sh")) + (("/bin/ls") (which "ls")) + (("/bin/rm") "rm")) + #t)) + (add-before 'build 'fix-environment + (lambda _ + (unsetenv "GHC_PACKAGE_PATH") + (setenv "CONFIG_SHELL" (which "bash")) + #t))))) + (native-search-paths (list (search-path-specification + (variable "GHC_PACKAGE_PATH") + (files (list + (string-append "lib/ghc-" version))) + (file-pattern ".*\\.conf\\.d$") + (file-type 'directory)))))) + +(define-public ghc ghc-8.0) (define-public ghc-hostname (package diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index 3a9e88ad08..75517caf6b 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; @@ -26,6 +26,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages lisp) + #:use-module (gnu packages readline) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -412,7 +413,7 @@ external server.") (define-public mujs (package (name "mujs") - (version "1.0.3") + (version "1.0.4") (source (origin (method git-fetch) (uri (git-reference @@ -421,14 +422,16 @@ external server.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "15ml3rzjl44lqdb1yxipdh8bhh0rvk2g6w6sjv667q8xywijwqv8")))) + "1ly0yybs66nk63517kg4dmdc7dbikhqqqf2r2kvccgzzvv6k0vs8")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases - (delete 'configure)) ; no configure + (delete 'configure)) ; no configure #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")) (string-append "CC=gcc")) - #:tests? #f)) ; no tests + #:tests? #f)) ; no tests + (inputs + `(("readline" ,readline))) (home-page "https://artifex.com/mujs/") (synopsis "JavaScript interpreter written in C") (description "MuJS is a lightweight Javascript interpreter designed for diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index 7dc2cf37fe..5295a356a2 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -75,7 +75,7 @@ (define-public extra-cmake-modules (package (name "extra-cmake-modules") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -84,21 +84,13 @@ name "-" version ".tar.xz")) (sha256 (base32 - "1ml6s3ssr5izm3vnzlg5gn2nkcbz5l5nmapvyr4ml7n0089b43a3")))) + "07pdgjyrxniacqcfvrzw8ij3kasx5pkbq38k6491qbhzfm8vi7y0")))) (build-system cmake-build-system) (native-inputs `(("qtbase" ,qtbase))) ; For tests (needs qmake) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'post-5.42.0-release-fix - ;; FIXME: Remove for > 5.42.0 - ;; ECMToolchainAndroidTest doesn't exist anymore - ;; https://cgit.kde.org/extra-cmake-modules.git/commit?id=30f31c46d8caf4 - (lambda _ - (substitute* "tests/CMakeLists.txt" - (("^add_test_macro\\(ECMToolchainAndroidTest dummy\\)") "")) - #t)) (add-after 'unpack 'fix-lib-path (lambda _ ;; Always install into /lib and not into /lib64. @@ -283,7 +275,7 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.") (define-public attica (package (name "attica") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -292,8 +284,16 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.") name "-" version ".tar.xz")) (sha256 (base32 - "0icjsk5sbri6nwybb2301wc6ysc1h4p35rxqp0adifyksq8akyxd")))) + "1iqclahs9yzyjnkzbzr8hl9j6q8m2djdm6mix92xwrakgirnl3gn")))) (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-network-tests + (lambda _ + ;; These tests require network access. + (substitute* "autotests/CMakeLists.txt" + ((".*providertest.cpp") ""))))))) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) (inputs @@ -315,7 +315,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/") (define-public bluez-qt (package (name "bluez-qt") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -324,7 +324,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/") name "-" version ".tar.xz")) (sha256 (base32 - "0pbb0nn70hbsnp9q8jvqr3s85gh4bnnh1mp8xfkia2hp4c63ws9f")))) + "0mgnq7w52ksr8b7ys2f1m3irnviy011bsaggh489fjy0xlzk5ard")))) (build-system cmake-build-system) (native-inputs `(("dbus" ,dbus) @@ -348,7 +348,7 @@ Bluetooth stack. It is used by the KDE Bluetooth stack, BlueDevil.") (define-public breeze-icons (package (name "breeze-icons") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -357,7 +357,7 @@ Bluetooth stack. It is used by the KDE Bluetooth stack, BlueDevil.") name "-" version ".tar.xz")) (sha256 (base32 - "0mrj0b022yfy669qqby09k4ij6aqyky23gpnjcp85df9saq0x44r")))) + "178620hhqlv6dl8qal2bmiw55s8b3p4h16q8cgkmq5q5i59nzcph")))) (build-system cmake-build-system) (arguments `(#:phases @@ -388,7 +388,7 @@ It is the default icon theme for the KDE Plasma 5 desktop.") (define-public kapidox (package (name "kapidox") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -397,7 +397,7 @@ It is the default icon theme for the KDE Plasma 5 desktop.") name "-" version ".tar.xz")) (sha256 (base32 - "0izyd66p5403gl09l7irzy97mb9b14n4zyjrwap800zjlpwh41pz")))) + "09jph3hvasqx1ia0l7is9brc08nxvh9qmg8564nh5cmqaxdwj559")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; has no test target @@ -430,7 +430,7 @@ documentation.") (define-public karchive (package (name "karchive") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -439,7 +439,7 @@ documentation.") name "-" version ".tar.xz")) (sha256 (base32 - "1vq2ngdxmdl6hzjwdcrv66ban8v9s5jiqwy1mgdqv4ak14l31qbi")))) + "1p1gwqda2bsjdysp4ggwdsldbasyfl075xn3wchqyakdv2bdzmn0")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -464,7 +464,7 @@ GZip format, via a subclass of QIODevice.") (define-public kcodecs (package (name "kcodecs") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -473,7 +473,7 @@ GZip format, via a subclass of QIODevice.") name "-" version ".tar.xz")) (sha256 (base32 - "0b19z432r9dnyjknvwffhcmrg969yhydjvy4qrkrf22026f4smwc")))) + "07va63gsfjrc5ha9rdli923cwyzxpb3v8xgf1zfhw75cfkgda3nz")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -500,7 +500,7 @@ Internet).") (define-public kconfig (package (name "kconfig") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -509,7 +509,7 @@ Internet).") name "-" version ".tar.xz")) (sha256 (base32 - "08gg0d20c09j7hyxm8ydpzk2yf30c87g9ag7a9nfykrmi6cqirdq")))) + "0cb3crnlr8hr5npq3ykfxqd4yckmkykzrrizfs89ryhmznc2ngsf")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -567,7 +567,7 @@ propagate their changes to their respective configuration files.") (define-public kcoreaddons (package (name "kcoreaddons") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -576,7 +576,7 @@ propagate their changes to their respective configuration files.") name "-" version ".tar.xz")) (sha256 (base32 - "17qv7r6z72mm9a0hyx5dgk90ikhhgm41bkvnq2hjal0py2lsnrs9")))) + "00s22jvbwav20cidnp8v9fgc6pqbp4wnqkb2spv18mjhg4pv3bqj")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -607,7 +607,7 @@ many more.") (define-public kdbusaddons (package (name "kdbusaddons") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -616,7 +616,7 @@ many more.") name "-" version ".tar.xz")) (sha256 (base32 - "1613pc3r70jnzvpwm1xjdbdsmcpx28jwvcs2qq9swlywr5qr9hbd")) + "1fnmrrffp3kfwyjfzqkzlizflpyqgzbjljb51ppmdypcq8wy9ibh")) (patches (search-patches "kdbusaddons-kinit-file-name.patch")))) (build-system cmake-build-system) (native-inputs @@ -652,7 +652,7 @@ as well as an API to create KDED modules.") (define-public kdnssd (package (name "kdnssd") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -661,7 +661,7 @@ as well as an API to create KDED modules.") name "-" version ".tar.xz")) (sha256 (base32 - "1k1rz62h3mafliik5n0k98dc56b5v2v6qyqj40696mcyc2d1yvll")))) + "1n61id2x1iianshg8g6fw389mqihz4h8sj9hnng7cdg4csh72ffr")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -680,7 +680,7 @@ infrastructure.") (define-public kguiaddons (package (name "kguiaddons") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -689,7 +689,7 @@ infrastructure.") name "-" version ".tar.xz")) (sha256 (base32 - "193i8b4f13dkgp88m3pk9wzi0dhx7qmsnmpizxia3457gg016wn7")))) + "1zkjd3l5pyvvilcc9lbdgqaxnpvh586yf0cndl90h3x89hy1d4xk")))) (build-system cmake-build-system) ;; TODO: Build packages for the Python bindings. Ideally this will be ;; done for all versions of python guix supports. Requires python, @@ -718,7 +718,7 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.") (define-public ki18n (package (name "ki18n") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -727,7 +727,7 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.") name "-" version ".tar.xz")) (sha256 (base32 - "1rpriflb2a48j94zxgh63l6rzq4nlnlkvy89ns1vkdw42bnqrjx9")))) + "1i4rdrxann45zl6fkmfd1b96q52g0mpc5x19fx9h80crapkm8jjz")))) (build-system cmake-build-system) (propagated-inputs `(("gettext" ,gettext-minimal) @@ -761,7 +761,7 @@ translation scripting.") (define-public kidletime (package (name "kidletime") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -770,7 +770,7 @@ translation scripting.") name "-" version ".tar.xz")) (sha256 (base32 - "019r41r28pcrcn1kwxsll53za705jkc9n23b6sr2lplgjk05bcxh")))) + "1fd02anlmaa0hnnp5q1s9973m3asy56qppwq1va1g6ga3csv3wrv")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -792,7 +792,7 @@ or user activity.") ;; plasma-framework which is tier 3. (package (name "kirigami") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -801,7 +801,7 @@ or user activity.") "kirigami2-" version ".tar.xz")) (sha256 (base32 - "11gqn7amp0r9bgh8ldgisfc2lrkzkn5mq2a1madf24nvjbkvqnqv")))) + "1wan9h7kvjzvyzfjfjd512lxiac5prhs493xjqwxgags6kxwglaz")))) (properties `((upstream-name . "kirigami2"))) (build-system cmake-build-system) (native-inputs @@ -841,7 +841,7 @@ of applications that follow the Kirigami Human Interface Guidelines.") (define-public kitemmodels (package (name "kitemmodels") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -850,7 +850,7 @@ of applications that follow the Kirigami Human Interface Guidelines.") name "-" version ".tar.xz")) (sha256 (base32 - "0mcdzdqwmvf9pwirsrnjbhrgqphnfmanbl9zij4qsmin8n866mhc")))) + "1frha301540js45mrxiw034m9b2rwsa56xphkqn6cm4jmn48qdjg")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -900,7 +900,7 @@ model to observers (define-public kitemviews (package (name "kitemviews") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -909,7 +909,7 @@ model to observers name "-" version ".tar.xz")) (sha256 (base32 - "1j1q0b08f8mnfc3r2a7rplyb2nv9f0aq5a3fxskinvg70c6y248w")))) + "1aj605q2p72w4rb9i0f2xb93bn5xfjq9sl5i4h6rqflcvvy7qpdp")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -935,7 +935,7 @@ to flat and hierarchical lists.") (define-public kplotting (package (name "kplotting") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -944,7 +944,7 @@ to flat and hierarchical lists.") name "-" version ".tar.xz")) (sha256 (base32 - "109b9grshrwralyp8ilkbf1k0akaggygqh6wafqdf0ris0ps13l9")))) + "13fzqqkyxs4ja6n5yb9lc5jx4qpsmrbsiihnwrgj3lhpzhlr91n0")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -970,7 +970,7 @@ pixel units.") (define-public ksyntaxhighlighting (package (name "ksyntaxhighlighting") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -979,7 +979,7 @@ pixel units.") "syntax-highlighting-" version ".tar.xz")) (sha256 (base32 - "1iwiym50859jki4x41rfdmbd14jiq5lr2hdg46pjkyw17njdjd60")))) + "17rkgzkfiz5dv0xr67na7ikqszgwjnf2gc11b2h47qdsr7pgx95v")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1019,7 +1019,7 @@ integration with a custom editor as well as a ready-to-use (define-public kwayland (package (name "kwayland") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1028,7 +1028,7 @@ integration with a custom editor as well as a ready-to-use name "-" version ".tar.xz")) (sha256 (base32 - "0wr6ygppahxsx3dh71h2wmybv7z7iyqdv7wn80cxb0mp4zpyinh7")))) + "0d95l2i3j1xxkc15n57w4rhf3di02zna4zzn4gap9qdhfxlfbqi6")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1058,7 +1058,7 @@ represented by a QPoint or a QSize.") (define-public kwidgetsaddons (package (name "kwidgetsaddons") - (version "5.42.1") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1067,7 +1067,7 @@ represented by a QPoint or a QSize.") name "-" version ".tar.xz")) (sha256 (base32 - "0h0vfrfl5zi01fpvmd825kazzlyawz3i66qrfkymdrnvqmfzcmlg")))) + "1frgqz9njbc81pfy6gl6p0hyh1977lg31ynrx5wy7lg7fwaxwl92")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1105,7 +1105,7 @@ configuration pages, message boxes, and password requests.") (define-public kwindowsystem (package (name "kwindowsystem") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1114,7 +1114,7 @@ configuration pages, message boxes, and password requests.") name "-" version ".tar.xz")) (sha256 (base32 - "15k6x0f93qxka3mz7qfzak2ibdd88q77pz6akil8s3g41zsg2dqv")))) + "175rzwrjndhawyy4x11lbihdr1r9gwxmxjpbz4x06hlz4g50wffp")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1170,7 +1170,7 @@ lower level classes for interaction with the X Windowing System.") (define-public modemmanager-qt (package (name "modemmanager-qt") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1179,7 +1179,7 @@ lower level classes for interaction with the X Windowing System.") name "-" version ".tar.xz")) (sha256 (base32 - "0q6qzn60z55h0gyc9xwdfaq45mjpk3zrr6d4qqjjfkqsr3866sfx")))) + "1wf3v552vbr4kh2d770zn3yn0q3bqjqbfrvnf813mnld7961m7p2")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1208,7 +1208,7 @@ messages.") (define-public networkmanager-qt (package (name "networkmanager-qt") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1217,7 +1217,7 @@ messages.") name "-" version ".tar.xz")) (sha256 (base32 - "03hhvx8d52mfgbhd4gn0vhsk9k1fv1pvq24ixxdgs2mw44v884xq")))) + "16pnd52m9srcb2ml3vc3kd9k1yak5rq09yci39qp7z5jbdy7jk2z")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1247,7 +1247,7 @@ which are used in DBus communication.") (define-public oxygen-icons (package (name "oxygen-icons") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1256,7 +1256,7 @@ which are used in DBus communication.") name "5" "-" version ".tar.xz")) (sha256 (base32 - "0pnav9h0xmvbaamzpcyznjjv25slz8maszshx7sj7h07b5a23x46")))) + "0llx06sr36cd6vgkgm3jw6k4cv1cfx3r6x6lmb477wpahis0n75g")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1272,7 +1272,7 @@ which are used in DBus communication.") (define-public prison (package (name "prison") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) @@ -1280,7 +1280,7 @@ which are used in DBus communication.") (version-major+minor version) "/" name "-" version ".tar.xz")) (sha256 - (base32 "0bhg2fjdwsv7mk16jh1nc3miwggz1dl9l99l2f20xvi75hn7rryg")))) + (base32 "0dppz9x6k84sl0aiyjlh3xigqgda64r8mij3bzxcdkv2wbc4ld9d")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1297,7 +1297,7 @@ provides uniform access to generation of barcodes with data.") (define-public qqc2-desktop-style (package (name "qqc2-desktop-style") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1306,7 +1306,7 @@ provides uniform access to generation of barcodes with data.") name "-" version ".tar.xz")) (sha256 (base32 - "1arlfhcshfs11pgf87jzjgln1p711zlx0v0q014740mbzb9g5wnk")))) + "1vbms7b8x1y7yh8im8dv1q3wwl3j2x4r47yqg86f28grw2r2n2zj")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1331,7 +1331,7 @@ feel.") (define-public solid (package (name "solid") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1340,7 +1340,7 @@ feel.") name "-" version ".tar.xz")) (sha256 (base32 - "10lr8paaq6vaiqn833kzcdc3kkyv8j9fdchy7h8pvi9ajjjwq0lq")))) + "1p7rdmf2f8520xc7zp7wxlcizyyjfxwq5mf95qsfpwc4dl0c43gp")))) (build-system cmake-build-system) (arguments `(#:phases @@ -1370,7 +1370,7 @@ system.") (define-public sonnet (package (name "sonnet") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1379,7 +1379,7 @@ system.") name "-" version ".tar.xz")) (sha256 (base32 - "1r3amddmy0nm8klw0jzvb8bl1l9hkrx50d8j0zq2lbjy36h3yliw")))) + "0m5pmka1hwjsg3c3qvx087z3fjrfw0ayk7ylgjls5iwd39kkl1b3")))) (build-system cmake-build-system) (arguments `(#:phases @@ -1407,7 +1407,7 @@ ASpell and HUNSPELL.") (define-public threadweaver (package (name "threadweaver") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1416,7 +1416,7 @@ ASpell and HUNSPELL.") name "-" version ".tar.xz")) (sha256 (base32 - "1isqlpnfxzxyz7mdm7yfrafgnx09mcndicdgdw3mi4r4misbrrbn")))) + "099bs429p71dzrqy25z61rvn48w3b73p7yag4q69jnxcpj0qcyz7")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1437,7 +1437,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way." (define-public kactivities (package (name "kactivities") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1446,7 +1446,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way." name "-" version ".tar.xz")) (sha256 (base32 - "0z0ac426npq99s1b8yzrqkjjjc34nbxlpw8pw388yj7fa41hw21r")))) + "117f3zrdbs0pa10wn7vy691n02m01h6x4pm8m1q3f4pjm0k4kqim")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1482,7 +1482,7 @@ with other frameworks.") (define-public kauth (package (name "kauth") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1491,7 +1491,7 @@ with other frameworks.") name "-" version ".tar.xz")) (sha256 (base32 - "04kqb2hhr9lkpkxiaqlnyk0kmk6p89z5fgp5i5g83hsi8maz7swi")))) + "0qg3zwg3kfx2snmvsw4ixr0qds7bd7992dxggvi9dcny7dm9q0n8")))) (build-system cmake-build-system) (native-inputs `(("dbus" ,dbus) @@ -1529,7 +1529,7 @@ utilities.") (define-public kcompletion (package (name "kcompletion") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1538,7 +1538,7 @@ utilities.") name "-" version ".tar.xz")) (sha256 (base32 - "0yqci2v0dk5v1mz4n3gca599a7mpihy563zc6sl8hsa30ld8li0f")))) + "16br6wnqzndk8v41im23h2ww4hypi2i1qfg6m9c49mpxflgmspbi")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1565,7 +1565,7 @@ integrated it into your application's other widgets.") (define-public kcrash (package (name "kcrash") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1574,7 +1574,7 @@ integrated it into your application's other widgets.") name "-" version ".tar.xz")) (sha256 (base32 - "049y0xdyw37y0qid3d3plj8szfys5gw98j7lhcakiini8mn5cins")))) + "0xmr9rrl0xahpnq1rw4bbar1nbr21x2bk4hhv79la6dsg9ha25b3")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1600,7 +1600,7 @@ application crashes.") (define-public kdoctools (package (name "kdoctools") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1609,7 +1609,7 @@ application crashes.") name "-" version ".tar.xz")) (sha256 (base32 - "1bby3avdllch1mji0mxzcix8q5yir5a0i6wpjs5lwckv1glh6kmz")))) + "1dmpk453s71ls0q8hgpqqd5dcr7zlimf5wykizcy2wn7p77gzsgl")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1657,7 +1657,7 @@ from DocBook files.") (define-public kfilemetadata (package (name "kfilemetadata") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1666,7 +1666,7 @@ from DocBook files.") name "-" version ".tar.xz")) (sha256 (base32 - "03wk38q3sq354ykz9dwbgykn73ldf94ryx6hxvpr66bq3a59jmwz")))) + "045k1mgn8kg0qfsr5sl1499nzhzmbcvrqc205pmq6sh4r14nvk80")))) (build-system cmake-build-system) (arguments `(#:phases @@ -1709,7 +1709,7 @@ by applications to write metadata.") (define-public kimageformats (package (name "kimageformats") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1718,7 +1718,7 @@ by applications to write metadata.") name "-" version ".tar.xz")) (sha256 (base32 - "1k67yrmszx7azjzrg478rimbz991lghx4d6dmg22p6dknajd78a6")))) + "1q7019gbk59fwampna1ayjvw016c0q79hmldpaqh3xa9sh082wy4")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1763,7 +1763,7 @@ formats.") (define-public kjobwidgets (package (name "kjobwidgets") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1772,7 +1772,7 @@ formats.") name "-" version ".tar.xz")) (sha256 (base32 - "1m3csdl7wh18ywv5p0qpbjpixvflgjcq3yvk3vlvh0sxxlwcz8k4")))) + "04i5cvbxii7n0jr3ai1dh44miqbdkxb6an5w8s7qvkv0xmkml35g")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1791,7 +1791,7 @@ asynchronous jobs.") (define-public knotifications (package (name "knotifications") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1800,7 +1800,7 @@ asynchronous jobs.") name "-" version ".tar.xz")) (sha256 (base32 - "0awmwypmd104vhaj2v9k83niflxj26d4mbl6mzfcj75lgka6kffc")))) + "10481j2irlqhqd16xi412xbglnyjl0ndanlv9s0d3fxirs95zdd9")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1837,7 +1837,7 @@ covers feedback and persistent events.") (define-public kpackage (package (name "kpackage") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1846,7 +1846,7 @@ covers feedback and persistent events.") name "-" version ".tar.xz")) (sha256 (base32 - "10amhh07x8d0jkyylb19cyzjs71k8dq1y8isfahqzb2kd43vijqa")))) + "1xbfjwxb4gff8gg0hs5m9s0jcnzqk27rs2jr71g5ckhvs5psnkcd")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1875,7 +1875,7 @@ were traditional plugins.") (define-public kpty (package (name "kpty") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1884,7 +1884,7 @@ were traditional plugins.") name "-" version ".tar.xz")) (sha256 (base32 - "07s16zxs03ixy7yxy9fda83yqhcgqzx42gnvwjwkyc8q05njmma6")))) + "1pnj07079l6gkz6171fcvljh0dcdy9s77p1q0l9nnkknjbr102pg")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1912,7 +1912,7 @@ and communicating with them using a pty.") (define-public kunitconversion (package (name "kunitconversion") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1921,7 +1921,7 @@ and communicating with them using a pty.") name "-" version ".tar.xz")) (sha256 (base32 - "0219pna4l3vvhyf5acsc87n48jzdnws6kwyhaiy3hy1pzrilv32l")))) + "11jnqz218rga3f4ppf1d927c7qhh2qpghwjpsrnrxdkz5nrvnf79")))) (build-system cmake-build-system) (arguments `(#:phases @@ -1955,7 +1955,7 @@ gallons).") (define-public baloo (package (name "baloo") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -1964,7 +1964,7 @@ gallons).") name "-" version ".tar.xz")) (sha256 (base32 - "18yknkcls1ypsp8n5l254bhlffiq4as5w1wgcjzhnf49cacys8nl")))) + "0xj12v0k58sr3snxyj4vx7dqhinrvk6qm0ikymscqgbmw9ijwxph")))) (build-system cmake-build-system) (propagated-inputs `(("kcoreaddons" ,kcoreaddons) @@ -2019,7 +2019,7 @@ maintaining an index of the contents of your files.") (define-public kactivities-stats (package (name "kactivities-stats") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2028,7 +2028,7 @@ maintaining an index of the contents of your files.") name "-" version ".tar.xz")) (sha256 (base32 - "0si70hayf4brr83jzdjdsfvp8nc1sb7vdk0q532liafhf8hw9mq8")))) + "129z2m5330j0l1nw8g3qjib60xmx54c6d2g9vnp4w8z0agnihs5f")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2049,7 +2049,7 @@ by which applications, and what documents have been linked to which activity.") (define-public kbookmarks (package (name "kbookmarks") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2058,7 +2058,7 @@ by which applications, and what documents have been linked to which activity.") name "-" version ".tar.xz")) (sha256 (base32 - "08q413mr5ib04gwnqznvm9vkkfmnh16rgf6rqdvclnci9w7ml5x2")))) + "0clmfdcc1fc98q3vbfjf8x140a6df88ixhz0mny3dpv1wcr5cz53")))) (build-system cmake-build-system) (propagated-inputs `(("kwidgetsaddons" ,kwidgetsaddons))) @@ -2092,7 +2092,7 @@ using the XBEL format.") (define-public kcmutils (package (name "kcmutils") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2101,7 +2101,7 @@ using the XBEL format.") name "-" version ".tar.xz")) (sha256 (base32 - "1q67b0m6w3xvm22kq8b0b0rib1jzf25gf6dz7h286987zfbbs5n7")))) + "0xv899p9f0hj6hd089mhn910qn66bihzpaa11ikrhbimckw8g19q")))) (build-system cmake-build-system) (propagated-inputs `(("kconfigwidgets" ,kconfigwidgets) @@ -2131,7 +2131,7 @@ KCModules can be created with the KConfigWidgets framework.") (define-public kconfigwidgets (package (name "kconfigwidgets") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2140,7 +2140,7 @@ KCModules can be created with the KConfigWidgets framework.") name "-" version ".tar.xz")) (sha256 (base32 - "191zm24q2n001b65hcnfh2639k4iqhxwdmgdw29php3n2648xq4z")))) + "1nqcrqr67m3kvq2r83x45zcdghk12bas9fp0s43s68imrhy5xikz")))) (build-system cmake-build-system) (propagated-inputs `(("kauth" ,kauth) @@ -2174,7 +2174,7 @@ their settings.") (define-public kdeclarative (package (name "kdeclarative") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2183,7 +2183,7 @@ their settings.") name "-" version ".tar.xz")) (sha256 (base32 - "1w604jy6vg2247vggz0ivl7wy2h5iapkz2z86mah3aw99f7dqa22")))) + "0kgawb8wfx4snk2ckwxj0hmpgcvq3k1zpsxqdawi4cmsy4bxzfs9")))) (build-system cmake-build-system) (propagated-inputs `(("kconfig" ,kconfig) @@ -2237,7 +2237,7 @@ that offer bindings to some of the Frameworks.") (define-public kded (package (name "kded") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2246,7 +2246,7 @@ that offer bindings to some of the Frameworks.") name "-" version ".tar.xz")) (sha256 (base32 - "0w25dl4pnvby28gz0yvij32vi9n3p8si4nm4x45j7zsi2cb70j4l")))) + "1l6hs3spbs3618jwg3n7r3hrrkqxmmd43f0km8849x4641p72zyc")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2270,7 +2270,7 @@ started on demand.") (define-public kdesignerplugin (package (name "kdesignerplugin") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2279,7 +2279,7 @@ started on demand.") name "-" version ".tar.xz")) (sha256 (base32 - "004axa1fkj954d65x7l9z8dmw04209hb368rwa4gjzb8naf13ib6")))) + "0hj4ng0i22rvw4kl0irhqhww3kvn4c0pncn38w1j5vim4gxv0xcd")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -2321,7 +2321,7 @@ ini-style description files.") (define-public kdesu (package (name "kdesu") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2330,7 +2330,7 @@ ini-style description files.") name "-" version ".tar.xz")) (sha256 (base32 - "0402p1h7wifk6sppg7ca9w0zfjllbhc1j5gsxj7ypq55g94np7hx")))) + "1gwvby51qqbkrs2vjpnplxr6m6xa5ddfdjs1iygh8kpqsh8a765k")))) (build-system cmake-build-system) (propagated-inputs `(("kpty" ,kpty))) @@ -2352,7 +2352,7 @@ with su and ssh respectively.") (define-public kdewebkit (package (name "kdewebkit") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2361,7 +2361,7 @@ with su and ssh respectively.") name "-" version ".tar.xz")) (sha256 (base32 - "1csd4p996im7ygxc5rfdkzgdpngjgzyqakj12rl9rnfbsd15i8kb")))) + "05idyw94ayjh7qdia9pnjmx29r5lsch421kv8h5ivr7ixcbrgk6n")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2384,7 +2384,7 @@ engine WebKit via QtWebKit.") (define-public kemoticons (package (name "kemoticons") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2393,7 +2393,7 @@ engine WebKit via QtWebKit.") name "-" version ".tar.xz")) (sha256 (base32 - "0f6an1bwxnga41a2b35b2pdcni4p0hh76k4jvanl3g046v07f2wr")))) + "0mz9hkhnprjbrfq54mqcvj8w87h025785m1bas80brsqzvni5krn")))) (build-system cmake-build-system) (propagated-inputs `(("kservice" ,kservice))) @@ -2425,7 +2425,7 @@ emoticons coming from different providers.") (define-public kglobalaccel (package (name "kglobalaccel") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2434,7 +2434,7 @@ emoticons coming from different providers.") name "-" version ".tar.xz")) (sha256 (base32 - "0nlza73i0qd79yhwhpnvgbh2xa9lvd1n2xg25p3bvfzwidcfdxg6")))) + "1fk7wazfwr7smqiym3phm5yvw6cmiczag52y1vad8fgb3izd6zhl")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -2469,7 +2469,7 @@ window does not need focus for them to be activated.") (define-public kiconthemes (package (name "kiconthemes") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2478,7 +2478,7 @@ window does not need focus for them to be activated.") name "-" version ".tar.xz")) (sha256 (base32 - "1nbxxpf8bv835xl35b17rk8s3zs110bh31078kqqh7dhvwzlxic7")))) + "1f7pk6smi2f0mm7jkrw5ymmkhd9gi8vnmppyblp1v3pvmy571c2m")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -2516,7 +2516,7 @@ in applications using the KDE Frameworks.") (define-public kinit (package (name "kinit") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2525,7 +2525,7 @@ in applications using the KDE Frameworks.") name "-" version ".tar.xz")) (sha256 (base32 - "05vpac41pw1n8y58l2z08vyknzv950x8dxxw66dnymm2v31w07ia")))) + "1rq9b59gdgcpvwd694l8h55sqahpdaky0n7ag5psjlfn5myf1d95")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -2563,7 +2563,7 @@ makes starting KDE applications faster and reduces memory consumption.") (define-public kio (package (name "kio") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2572,7 +2572,7 @@ makes starting KDE applications faster and reduces memory consumption.") name "-" version ".tar.xz")) (sha256 (base32 - "1526a89x11ank55dp3rfp7xd04w8x7prjg3y6i7n2q9nabwhw7gc")))) + "0rrsg3g1b204cdp58vxd5dig1ggwyvk1382p1c86vn6w8qbrq27k")))) (build-system cmake-build-system) (propagated-inputs `(("kbookmarks" ,kbookmarks) @@ -2655,7 +2655,7 @@ KIO enabled infrastructure.") (define-public knewstuff (package (name "knewstuff") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2664,7 +2664,7 @@ KIO enabled infrastructure.") name "-" version ".tar.xz")) (sha256 (base32 - "0i2gmyp67xzf2m5wnv7v574q3gsp1yxfflv1jgl0wy57vchwn9g6")))) + "1vhcl2z9rcqg8390l1cwn3yyi1n17pn6mn8fsplp25qhzimb8bmk")))) (build-system cmake-build-system) (propagated-inputs `(("attica" ,attica) @@ -2712,7 +2712,7 @@ specification.") (define-public knotifyconfig (package (name "knotifyconfig") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2721,7 +2721,7 @@ specification.") name "-" version ".tar.xz")) (sha256 (base32 - "1h07bjj71611v6912m5ajli6qszh9w925zqbk3vih8rn6pd2s3mc")))) + "09v4aq5x98sqg2awhw0n0y0rnjkr77kbf51xij0fiykd4llp9lfa")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2754,7 +2754,7 @@ notifications which can be embedded in your application.") (define-public kparts (package (name "kparts") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2763,7 +2763,7 @@ notifications which can be embedded in your application.") name "-" version ".tar.xz")) (sha256 (base32 - "1mb5gp2ckmmrb4ym7cqvyl81wnp7cryk85gmizl7cnn69svlf40h")))) + "0zdz0byj0gsbgb007y8x37w8yf1gkw6dsp2s9bbdc4w6h9ipdj2k")))) (build-system cmake-build-system) (propagated-inputs `(("kio" ,kio) @@ -2807,7 +2807,7 @@ widgets with a user-interface defined in terms of actions.") (define-public kpeople (package (name "kpeople") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2816,7 +2816,7 @@ widgets with a user-interface defined in terms of actions.") name "-" version ".tar.xz")) (sha256 (base32 - "050km3rpx58acx2341si46lxc2hywa59m8rwd849c2dnsxw3w1hm")))) + "0i5pd1d2jphsvpc3dpdw28dsdal1qrnnrx3k6qx4wax3f8ph5khv")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2850,7 +2850,7 @@ to easily extend the contacts collection.") (define-public krunner (package (name "krunner") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2859,7 +2859,7 @@ to easily extend the contacts collection.") name "-" version ".tar.xz")) (sha256 (base32 - "0xh9kss67l09am1ilsr9zyx1yhlmaq3g9x60hw0sx7h7wrl6zsw6")))) + "02l5gch9hpag1q5ixnb541g7m9lx25pbggldpa8zykp63apyca19")))) (build-system cmake-build-system) (propagated-inputs `(("plasma-framework" ,plasma-framework))) @@ -2919,7 +2919,7 @@ typed.") (define-public kservice (package (name "kservice") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2928,7 +2928,7 @@ typed.") name "-" version ".tar.xz")) (sha256 (base32 - "0z8zfpd00ndvkm1klp8l4mrcksshhyg280zgmg3gffz5rgh3gwri")))) + "1wwb6c6m8f3b16p47adkc05rrlszvvym7ckks5xp08s58pk1dm8z")))) (build-system cmake-build-system) (propagated-inputs `(("kconfig" ,kconfig) @@ -2964,7 +2964,7 @@ types or handled by application specific code.") (define-public ktexteditor (package (name "ktexteditor") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -2973,7 +2973,7 @@ types or handled by application specific code.") name "-" version ".tar.xz")) (sha256 (base32 - "020y3j6vm15sfpiwainr3qsx9i93j15mrvq523wmbmdj1z36yrh2")))) + "14iss8svx49vav0h2kg8vhv8g5hg4ky30s7049csfwz7xhp7jmcj")))) (build-system cmake-build-system) (propagated-inputs `(("kparts" ,kparts))) @@ -3044,7 +3044,7 @@ library.") (define-public ktextwidgets (package (name "ktextwidgets") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -3053,7 +3053,7 @@ library.") name "-" version ".tar.xz")) (sha256 (base32 - "088azbv95ycwxmxxw4l63i2l14fmn8l473pb4djh2mvz1ypfqayk")))) + "14gclshmpwmfwkp2hzlnf823pjjmknd9q0gdclsh3yy268c2rsw1")))) (build-system cmake-build-system) (propagated-inputs `(("ki18n" ,ki18n) @@ -3091,7 +3091,7 @@ It supports rich text as well as plain text.") (define-public kwallet (package (name "kwallet") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -3100,7 +3100,7 @@ It supports rich text as well as plain text.") name "-" version ".tar.xz")) (sha256 (base32 - "1kv3v7593srfn0wd7qp4rhvb30rxp7d2qmlwi0n4nc9s6v59pabn")))) + "13bmks9jb3yhp6clv25qkqkrvbhfyk9z16laxsv79jdd82lxgn1z")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -3133,7 +3133,7 @@ the passwords on KDE work spaces.") (define-public kxmlgui (package (name "kxmlgui") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -3142,7 +3142,7 @@ the passwords on KDE work spaces.") name "-" version ".tar.xz")) (sha256 (base32 - "0kfxjx8wrhkys5bydnv84nqxc2jqvv92zb2l6zpi0km5ggmia5y0")))) + "0wsgs5ya3wnc5cryi1r9i30sq8dnnhh15p02skdjlhwjfvdhxmfa")))) (build-system cmake-build-system) (propagated-inputs `(("kconfig" ,kconfig) @@ -3185,7 +3185,7 @@ descriptions for integrating actions from plugins.") (define-public kxmlrpcclient (package (name "kxmlrpcclient") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -3194,7 +3194,7 @@ descriptions for integrating actions from plugins.") name "-" version ".tar.xz")) (sha256 (base32 - "0ciip27ilsfk9s3gslpbi06v8i6ipdbmcig2jf43z3amsxpq0ncn")))) + "0l4jnvn7s77jkvd2z44mz24mfzcw499plms79j21pjryc88drh06")))) (build-system cmake-build-system) (propagated-inputs `(("kio" ,kio))) @@ -3228,7 +3228,7 @@ setUrl, setUserAgent and call.") (define-public plasma-framework (package (name "plasma-framework") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -3237,7 +3237,7 @@ setUrl, setUserAgent and call.") name "-" version ".tar.xz")) (sha256 (base32 - "079c8h0lmbkfr3srj5m8a40b50kyrxbgmy1n66329l8js9xrvaah")))) + "1yrccbkdpnfbgn7fzpmzzxm5c7fhkv1vqygq1f96r30fia0cj5jv")))) (build-system cmake-build-system) (propagated-inputs `(("kpackage" ,kpackage) @@ -3324,7 +3324,7 @@ script engines.") (define-public kde-frameworkintegration (package (name "kde-frameworkintegration") - (version "5.42.0") + (version "5.49.0") (source (origin (method url-fetch) (uri (string-append @@ -3333,7 +3333,7 @@ script engines.") "frameworkintegration-" version ".tar.xz")) (sha256 (base32 - "17fyny3c5chv7bipr19ayfjmd1amp2nms4ba5r7mwjp97xkphry7")))) + "1ni4jrny630zf3zwmqbm8z7dqgiar58992lylfv7kspdg5crcgfx")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index 1d14e4b820..aa5be6b515 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -236,7 +236,7 @@ plugins, as well as code to create plugins, or complete applications.") (define-public krita (package (name "krita") - (version "4.0.1") + (version "4.1.1") (source (origin (method url-fetch) (uri (string-append @@ -245,7 +245,7 @@ plugins, as well as code to create plugins, or complete applications.") "/" name "-" version ".tar.gz")) (sha256 (base32 - "0k55ybvna40dx4fqygnix7bnhjaanak3ckb108hny2k7sspy62pc")))) + "1qz9bjvnwa5gc2b0063i2p72jq6y1b6kgqdj39599acp7ws11asw")))) (build-system cmake-build-system) (arguments `(#:tests? #f @@ -316,7 +316,7 @@ plugins, as well as code to create plugins, or complete applications.") ("fftw" ,fftw) ("gsl" ,gsl) ("poppler-qt5" ,poppler-qt5) - ("libraw" ,libraw) + ("libraw" ,libraw-0.18) ("libtiff" ,libtiff) ("perl" ,perl) ("ilmbase" ,ilmbase) @@ -329,23 +329,6 @@ illustrators, matte and texture artists, and the VFX industry. Notable features include brush stabilizers, brush engines and wrap-around mode.") (license license:gpl2+))) -;; Krita 3 and 4's file formats are incompatible, so we are keeping Krita 3 -;; for now. -(define-public krita-3 - (package - (inherit krita) - (name "krita") - (version "3.3.3") - (source (origin - (inherit (package-source krita)) - (uri (string-append - "mirror://kde/stable/krita/" - (version-prefix version 3) - "/" name "-" version ".tar.gz")) - (sha256 - (base32 - "0pc6hnakkqy81x5b5ncivaps6hqv43i50sjwgi3i3cz9j8rlxh5y")))))) - (define-public kholidays (package (name "kholidays") @@ -418,7 +401,7 @@ used in KDE development tools Kompare and KDevelop.") (define-public libksysguard (package (name "libksysguard") - (version "5.11.5") + (version "5.13.4") (source (origin (method url-fetch) @@ -426,7 +409,7 @@ used in KDE development tools Kompare and KDevelop.") "/libksysguard-" version ".tar.xz")) (sha256 (base32 - "0f2py4zkqzpxxf3mqaij0q8ka0v3nschj17dv6rbzzmr5mjv825f")))) + "0k8q5bxk9zyv7c3nny1c399v8acqs618nw39q20pj2qdijl9ibvh")))) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) ("pkg-config" ,pkg-config))) @@ -468,7 +451,7 @@ used in KDE development tools Kompare and KDevelop.") (lambda _ ;; TODO: Fix this failing test-case (zero? (system* "ctest" "-E" "processtest"))))))) - (home-page "https://www.kde.org/info/plasma-5.11.5.php") + (home-page "https://www.kde.org/info/plasma-5.13.4.php") (synopsis "Network enabled task and system monitoring") (description "KSysGuard can obtain information on system load and manage running processes. It obtains this information by interacting diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 696544c368..14f23db888 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -29,6 +29,7 @@ ;;; Copyright © 2017 Dave Love <fx@gnu.org> ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr> ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org> +;;; Copyright © 2018 Manuel Graf <graf@init.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -445,8 +446,8 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.152" - "082aajyr363ca95pxlg9iascf5d7k2gbw9ggsbsa1hj6nhspsxw6" + (make-linux-libre "4.4.153" + "195vzkkmjiicqfzd38hgf381rlz665rl06abzf8cww0gbnzvrf72" %intel-compatible-systems #:configuration-file kernel-config)) @@ -3615,10 +3616,52 @@ The following service daemons are also provided: license:cc0 ; most files in ccan/ license:bsd-3)))) ; providers/hfi1verbs are dual GPL2/BSD-3 +(define-public perftest + (package + (name "perftest") + (version "4.2-0.8") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/linux-rdma/perftest/releases/download/V" + version "/perftest-" version ".g0e24e67.tar.gz")) + (sha256 + (base32 "1r3pxn7cx3grb8myb4q1b0pk447pc06cifd0v7ym13xw00372dlx")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-header-paths + (lambda _ + (substitute* '("src/raw_ethernet_fs_rate.c" + "src/raw_ethernet_resources.c" + "src/raw_ethernet_resources.h" + "src/raw_ethernet_send_burst_lat.c" + "src/raw_ethernet_send_bw.c" + "src/raw_ethernet_send_lat.c") + (("/usr/include/netinet/ip.h") "netinet/ip.h")) + #t))))) + (inputs `(("rdma-core" ,rdma-core))) + (home-page "https://github.com/linux-rdma/perftest/") + (synopsis "Open Fabrics Enterprise Distribution (OFED) Performance Tests") + (description "This is a collection of tests written over uverbs intended for +use as a performance micro-benchmark. The tests may be used for hardware or +software tuning as well as for functional testing. + +The collection contains a set of bandwidth and latency benchmark such as: +@enumerate +@item Send - @code{ib_send_bw} and @code{ib_send_lat} +@item RDMA Read - @code{ib_read_bw} and @code{ib_read_lat} +@item RDMA Write - @code{ib_write_bw} and @code{ib_wriet_lat} +@item RDMA Atomic - @code{ib_atomic_bw} and @code{ib_atomic_lat} +@item Native Ethernet (when working with MOFED2) - @code{raw_ethernet_bw}, @code{raw_ethernet_lat} +@end enumerate") + (license license:gpl2))) + (define-public rng-tools (package (name "rng-tools") - (version "6.3.1") + (version "6.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/nhorman/rng-tools/" @@ -3626,7 +3669,7 @@ The following service daemons are also provided: (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "04p7wvcm389s21y9mq8ss6z2szxi4nfrfixzwqjkq2qciz705i4s")))) + "005krksl8iz37l5p1nx8apl1yg7q78yrsb6inby31d2g5ck8nnwa")))) (build-system gnu-build-system) (arguments `(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB. diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index add7f1b40c..cd710bcb79 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com> -;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> @@ -30,6 +30,7 @@ #:use-module (guix utils) #: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 gcc) #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker @@ -380,3 +381,53 @@ code analysis tools.") (patches (list (search-patch "llvm-for-extempore.patch"))))) ;; Extempore refuses to build on architectures other than x86_64 (supported-systems '("x86_64-linux")))) + +(define-public python-llvmlite + (package + (name "python-llvmlite") + (version "0.24.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "llvmlite" version)) + (sha256 + (base32 + "01zwjlc3c5mhrwmv4b73zgbskwqps9ly0nrh54bbj1f1l72f839j")))) + (build-system python-build-system) + (inputs + `(("llvm" + ,(package + (inherit llvm) + (source (origin + (inherit (package-source llvm)) + (patches + (list + (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com/numba/" + "llvmlite/v" version "/conda-recipes/" + "D47188-svml.patch")) + (sha256 + (base32 + "0mrj24jvkv3hjcmyg98zmvmyl1znlh2j63rdr69f6g7s96d2pfv1"))) + (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com/numba/" + "llvmlite/v" version "/conda-recipes/" + "twine_cfg_undefined_behavior.patch")) + (sha256 + (base32 + "07h71n2m1mn9zcfgw04zglffknplb233zqbcd6pckq0wygkrxflp"))) + (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com/numba/" + "llvmlite/v" version "/conda-recipes/" + "0001-Transforms-Add-missing-header-for-InstructionCombini.patch")) + (sha256 + (base32 + "1pp0z9696l6j4dwz7ypjrm4vvkj0d3mlf1g8zmiyk08akw5lz0cb"))))))))))) + (home-page "http://llvmlite.pydata.org") + (synopsis "Wrapper around basic LLVM functionality") + (description + "This package provides a Python binding to LLVM for use in Numba.") + (license license:bsd-3))) diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index 9a0d8e957d..19938fa93c 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -5,6 +5,8 @@ ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018 Ison111 <ison111@protonmail.com> +;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,17 +26,21 @@ (define-module (gnu packages lxde) #:use-module (gnu packages) #:use-module (gnu packages autotools) + #:use-module (gnu packages bash) #:use-module (gnu packages docbook) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages image-viewers) #:use-module (gnu packages linux) + #:use-module (gnu packages lsof) #:use-module (gnu packages openbox) #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) #:use-module (gnu packages text-editors) + #:use-module (gnu packages video) #:use-module (gnu packages wm) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -230,6 +236,48 @@ with freedesktop.org standard.") (home-page "https://lxde.org") (license license:gpl2+))) +(define-public spacefm + ;; SpaceFM is based on PCManFM. + (package + (name "spacefm") + (version "1.0.6") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/IgnorantGuru/spacefm/archive/" + version ".tar.gz")) + (sha256 + (base32 + "1jg7xfyr7kihjnalxp8wxyb9qjk8hqf5l36rp3s0lvkpmpyakppy")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (inputs `(("bash" ,bash) + ("gtk+" ,gtk+) + ("eudev" ,eudev) + ("desktop-file-utils" ,desktop-file-utils) + ("shared-mime-info" ,shared-mime-info) + ("ffmpegthumbnailer" ,ffmpegthumbnailer) + ("jmtpfs" ,jmtpfs) + ("lsof" ,lsof) + ("udisks" ,udisks))) + (arguments + `(#:configure-flags (list (string-append "--with-bash-path=" + (assoc-ref %build-inputs "bash") + "/bin/bash") + (string-append "--sysconfdir=" + (assoc-ref %outputs "out") + "/etc")))) + (home-page "http://ignorantguru.github.io/spacefm/") + (synopsis "Multi-panel tabbed file manager") + (description "SpaceFM is a graphical, multi-panel, tabbed file manager +based on PCManFM with built-in virtual file system, udev-based device manager, +customizable menu system, and Bash integration.") + + ;; The combination is GPLv3+ but src/exo is under LGPLv3+. + (license license:gpl3+))) + (define-public lxmenu-data (package (name "lxmenu-data") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index d1c1c096e5..4944dd7622 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -706,9 +706,9 @@ attachments, create new maildirs, and so on.") ("python2-pygpgme" ,python2-pygpgme) ("python2-notmuch" ,python2-notmuch))) (home-page "https://github.com/pazz/alot") - (synopsis "Commandline MUA using notmuch") + (synopsis "Command-line MUA using @code{notmuch}") (description - "Alot is an experimental terminal mail user agent (MUA) based on + "Alot is an experimental terminal mail user agent (@dfn{MUA}) based on @code{notmuch} mail. It is written in Python using the @code{urwid} toolkit.") (license gpl3+))) @@ -1011,7 +1011,7 @@ compresses it.") (define-public claws-mail (package (name "claws-mail") - (version "3.17.0") + (version "3.17.1") (source (origin (method url-fetch) (uri (string-append @@ -1019,7 +1019,7 @@ compresses it.") ".tar.xz")) (sha256 (base32 - "119y6q9p8zwm2xqlbkgqd119a529kjqlyldmb4h940z6c2qyjhqm")))) + "1wknxbwyzm5xjh3cqmddcxmvp1rkp301qga5n5rgfi7vcd0myyvm")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("bogofilter" ,bogofilter) @@ -2596,3 +2596,29 @@ processes mailboxes based on the results. It can be used to delete, copy, move, flag, etc. messages residing in mailboxes at the same or different mail servers. The 4rev1 and 4 versions of IMAP are supported.") (license license:expat))) + +(define-public urlscan + (package + (name "urlscan") + (version "0.9.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "urlscan" version)) + (sha256 + (base32 + "133f28bisr4xj0nihpwpil8dyadss62mp8qgqdyzd676hg9xjfyc")))) + (build-system python-build-system) + (propagated-inputs + `(("python-urwid" ,python-urwid))) + (home-page "https://github.com/firecat53/urlscan") + (synopsis "View/select the URLs in an email message or file") + (description + "Urlscan is a small program that is designed to integrate with the +@code{mutt} mailreader to allow you to easily launch a Web browser for URLs +contained in email messages. It parses an email message or file and scans it +for URLs and email addresses. It then displays the URLs and their context +within the message, and allows you to choose one or more URLs to send to your +Web browser. Alternatively, it send a list of all URLs to stdout. It is a +replacement for the @code{urlview} program.") + (license gpl2))) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 3d571e8cc9..50c0a320e0 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -459,7 +459,7 @@ computing convex hulls.") (define-public arpack-ng (package (name "arpack-ng") - (version "3.5.0") + (version "3.6.2") (home-page "https://github.com/opencollab/arpack-ng") (source (origin @@ -468,13 +468,8 @@ computing convex hulls.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0f8jx3fifmj9qdp289zr7r651y1q48k1jya859rqxq62mvis7xsh")))) + "16jrvdl0gh78rrfnvrcxwys4slwfh6qmwwjhfc9d6vwrvq184g37")))) (build-system gnu-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'autoreconf - (lambda _ - (invoke "autoreconf" "-vfi")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -2049,12 +2044,12 @@ programming problems.") (define-public r-pracma (package (name "r-pracma") - (version "2.1.4") + (version "2.1.5") (source (origin (method url-fetch) (uri (cran-uri "pracma" version)) (sha256 - (base32 "1ygm81i7mqvh229dp9935djjyb120p3bqvaf4k572sa4q63fzjhc")))) + (base32 "18cv7c2gvagbmggfbsy2xk9bpn47izd0qrmqnc3q7afvj6pr6nf9")))) (build-system r-build-system) (propagated-inputs `(("r-quadprog" ,r-quadprog))) @@ -3517,7 +3512,7 @@ set.") (define-public hypre (package (name "hypre") - (version "2.11.0") + (version "2.14.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/LLNL/hypre/archive/" @@ -3525,7 +3520,7 @@ set.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0q69ia0jivzcr8p049dn3mg8yjpn6nwq4sw9iqac8vr63vi54l6m")) + "0v515i73bvaz378h5465b1dy9v2gf924zy2q94cpq4qqarawvkqh")) (modules '((guix build utils))) (snippet '(begin @@ -3533,7 +3528,7 @@ set.") ;; substitute the tarball creation time. (substitute* "src/utilities/HYPRE_utilities.h" (("Date Compiled: .*$") - "Date Compiled: Mar 28 2016 20:19:59 +0000\"\n")) + "Date Compiled: Apr 11 2018 16:24:59 +0000\"\n")) #t)))) (build-system gnu-build-system) (outputs '("out" ;6.1 MiB of headers and libraries diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index b03cb8f03a..42a0847b7a 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -548,14 +548,14 @@ simultaneously and therefore appear under the same nickname on IRC.") (define-public python-nbxmpp (package (name "python-nbxmpp") - (version "0.6.6") + (version "0.6.7") (source (origin (method url-fetch) (uri (pypi-uri "nbxmpp" version)) (sha256 (base32 - "0bp60syqc3qp2i28phvadxlpwizjbr6bxw4m363p9yn5fl687qnh")))) + "0fas4iawjfdmkz8vr042wpq6b2qispi6fy35g4a62jw50jb1saav")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; no tests @@ -873,7 +873,7 @@ protocols.") (define-public c-toxcore (package (name "c-toxcore") - (version "0.2.6") + (version "0.2.7") (source (origin (method url-fetch) @@ -882,7 +882,7 @@ protocols.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "04b3ifkj64yy06vph0hlq24mw9fh24zmq1qdf40fmj24vvgfmjpl")))) + "1lcw979zakyb5kzy8yfk87js3bzfz3k2jxidda6ga6ljdnqdpxmy")))) (arguments `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable ; for now. @@ -1565,7 +1565,7 @@ using ncurses and libmesode, inspired by Irssi.") (define-public libircclient (package (name "libircclient") - (version "1.9") + (version "1.10") (source (origin (method url-fetch) @@ -1573,7 +1573,7 @@ using ncurses and libmesode, inspired by Irssi.") version "/libircclient-" version ".tar.gz")) (sha256 (base32 - "0r60i76jh4drjh2jgp5sx71chagqllmkaq49zv67nrhqwvp9ghw1")))) + "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl))) @@ -1584,8 +1584,7 @@ using ncurses and libmesode, inspired by Irssi.") "--enable-shared" "--enable-ipv6" "--enable-openssl") - ;; no test suite - #:tests? #f)) + #:tests? #f)) ; no test suite (home-page "https://www.ulduzsoft.com/libircclient/") (synopsis "Library implementing the client IRC protocol") (description "Libircclient is a library which implements the client IRC diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm index fae62d5493..12d736a76a 100644 --- a/gnu/packages/monitoring.scm +++ b/gnu/packages/monitoring.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,18 +30,25 @@ #:use-module (guix build-system python) #:use-module (guix build-system gnu) #:use-module (guix build-system go) + #:use-module (guix utils) #:use-module (gnu packages admin) #:use-module (gnu packages base) + #:use-module (gnu packages curl) #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages databases) #:use-module (gnu packages django) #:use-module (gnu packages gd) #:use-module (gnu packages image) #:use-module (gnu packages mail) + #:use-module (gnu packages networking) + #:use-module (gnu packages libevent) + #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages python) #:use-module (gnu packages python-web) - #:use-module (gnu packages time)) + #:use-module (gnu packages time) + #:use-module (gnu packages tls)) (define-public nagios (package @@ -138,6 +146,79 @@ etc. via a Web interface. Features include: @end itemize\n") (license license:gpl2))) +(define-public zabbix-agentd + (package + (name "zabbix-agentd") + (version "3.4.11") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/zabbix/ZABBIX%20Latest%20Stable/" version + "/zabbix-" version ".tar.gz")) + (sha256 + (base32 + "0qxgf6hx7ibhjmxd2sxizkjc8df4c9d31wz5hhql409ws98qf173")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--enable-agent" + (string-append "--with-iconv=" + (assoc-ref %build-inputs "libiconv")) + (string-append "--with-libpcre=" + (assoc-ref %build-inputs "pcre"))))) + (inputs + `(("libiconv" ,libiconv) + ("pcre" ,pcre))) + (home-page "https://www.zabbix.com/") + (synopsis "Distributed monitoring solution (client-side agent)") + (description "This package provides a distributed monitoring +solution (client-side agent)") + (license license:gpl2))) + +(define-public zabbix-server + (package + (inherit zabbix-agentd) + (name "zabbix-server") + (arguments + (substitute-keyword-arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-frontend + (lambda* (#:key outputs #:allow-other-keys) + (let* ((php (string-append (assoc-ref outputs "out") + "/share/zabbix/php")) + (front-end-conf (string-append php "/conf")) + (etc (string-append php "/etc"))) + (mkdir-p php) + (copy-recursively "./frontends/php" php) + (rename-file front-end-conf + (string-append front-end-conf "-example")) + (symlink "/etc/zabbix" front-end-conf))))) + ,@(package-arguments zabbix-agentd)) + ((#:configure-flags flags) + `(cons* "--enable-server" + "--with-postgresql" + (string-append "--with-libevent=" + (assoc-ref %build-inputs "libevent")) + "--with-net-snmp" + (string-append "--with-gnutls=" + (assoc-ref %build-inputs "gnutls")) + "--with-libcurl" + ,flags)))) + (inputs + `(("curl" ,curl) + ("libevent" ,libevent) + ("gnutls" ,gnutls) + ("postgresql" ,postgresql) + ("zlib" ,zlib) + ("net-snmp" ,net-snmp) + ("curl" ,curl) + ,@(package-inputs zabbix-agentd))) + (synopsis "Distributed monitoring solution (server-side)") + (description "This package provides a distributed monitoring +solution (server-side)"))) + (define-public darkstat (package (name "darkstat") diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index edffcfce96..ba21e5da2b 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -3685,7 +3685,7 @@ specification and header.") (define-public rosegarden (package (name "rosegarden") - (version "17.04") + (version "18.06") (source (origin (method url-fetch) (uri (string-append @@ -3693,7 +3693,7 @@ specification and header.") version "/rosegarden-" version ".tar.bz2")) (sha256 (base32 - "1khfcj22asdhjh0jvhkqsz200wgmigkhsrcz09ffia5hqm0n32lq")))) + "04qc80sqb2ji42pq3mayhvqqn39hlxzymsywpbpzfpchr19chxx7")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DUSE_QT5=1") ; "-DCMAKE_BUILD_TYPE=Release" @@ -3747,6 +3747,7 @@ specification and header.") ;; Tests create files in $HOME/.local/share/rosegarden . (mkdir-p "/tmp/foo") (setenv "HOME" "/tmp/foo") + (setenv "XDG_RUNTIME_DIR" "/tmp/foo") #t))))) (inputs `(("alsa-lib" ,alsa-lib) @@ -3773,7 +3774,7 @@ sequencer") (description "Rosegarden is a music composition and editing environment based around a MIDI sequencer that features a rich understanding of music notation and includes basic support for digital audio.") - (home-page "http://www.rosegardenmusic.com/") + (home-page "https://www.rosegardenmusic.com/") (license license:gpl2))) (define-public patchmatrix diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 943bcecb86..61c0ad7fba 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -2013,7 +2013,9 @@ Features: (list (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib") - "--with-logfile=/var/log/snmpd.log") + "--with-logfile=/var/log/snmpd.log" + (string-append "--with-openssl=" + (assoc-ref %build-inputs "openssl"))) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-tests diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm index 42cedd1544..d32e696438 100644 --- a/gnu/packages/opencl.scm +++ b/gnu/packages/opencl.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,7 +58,7 @@ (uri (git-reference (url "https://github.com/KhronosGroup/OpenCL-Headers.git") (commit commit))) - (file-name (string-append name "-" commit)) + (file-name (git-file-name name version)) (sha256 (base32 "176ydpbyws5nr4av6hf8p41pkhc0rc4m4vrah9w6gp2fw2i32838")))) @@ -102,15 +103,15 @@ programming.") (package (name "opencl-clhpp") (version "2.0.10") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/KhronosGroup/OpenCL-CLHPP/archive/v" - version ".tar.gz")) - (sha256 - (base32 - "0awg6yznbz3h285kmnd47fykx2qa34a07sr4x1657yn3jmi4a9zs")) - (file-name (string-append name "-" version ".tar.gz")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KhronosGroup/OpenCL-CLHPP.git") + (commit (string-append "v" version)))) + (sha256 + (base32 "0h5kpg5cl8wzfnqmv6i26aig2apv06ffm9p3rh35938n9r8rladm")) + (file-name (git-file-name name version)))) (native-inputs `(("python" ,python-wrapper))) (propagated-inputs @@ -124,7 +125,7 @@ programming.") (string-append "-DCMAKE_INSTALL_PREFIX=" (assoc-ref %outputs "out") "/include"))) - ;; regression tests requires a lot more dependencies + ;; The regression tests require a lot more dependencies. #:tests? #f)) (build-system cmake-build-system) (home-page "http://github.khronos.org/OpenCL-CLHPP/") @@ -174,15 +175,15 @@ Loader as provided by this package.") (package (name "clinfo") (version "2.2.18.04.06") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/Oblomov/clinfo/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0v7cy01irwdgns6lzaprkmm0502pp5a24zhhffydxz1sgfjj2w7p")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Oblomov/clinfo.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0y2q0lz5yzxy970b7w7340vp4fl25vndahsyvvrywcrn51ipgplx")))) (build-system gnu-build-system) (native-inputs `(("opencl-headers" ,opencl-headers))) @@ -216,22 +217,21 @@ the system.") (package (name "beignet") (version "1.3.2") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/intel/beignet/archive/Release_v" - version - ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "18r0lq3dkd4yn6bxa45s2lrr9cjbg70nr2nn6xablvgqwzw0jb0r")) - (patches (search-patches "beignet-correct-file-names.patch")) - (modules '((guix build utils))) - (snippet - ;; There's a suspicious .isa binary file under kernels/. - ;; Remove it. - '(for-each delete-file (find-files "." "\\.isa$"))))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/intel/beignet.git") + (commit (string-append "Release_v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0lpv3lvi2vrmzb8blflrpbd3jgin76zqmz6jcv17vn9mylqdrfnd")) + (patches (search-patches "beignet-correct-file-names.patch")) + (modules '((guix build utils))) + (snippet + ;; There's a suspicious .isa binary file under kernels/. + ;; Remove it. + '(for-each delete-file (find-files "." "\\.isa$"))))) (native-inputs `(("pkg-config" ,pkg-config) ("python" ,python))) (inputs `(("clang@3.7" ,clang-3.7) @@ -295,15 +295,15 @@ back-end for the LLVM compiler framework.") (package (name "pocl") (version "1.1") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/pocl/pocl/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0lrw3hlb0w53xzmrf2hvbda406l70ar4gyadflvlkj4879lx138y")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pocl/pocl.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1z3sqn20ddv1030adchpzs65qng436gc2mb99p213mkh95jkh1l5")))) (build-system cmake-build-system) (native-inputs `(("libltdl" ,libltdl) @@ -323,12 +323,6 @@ back-end for the LLVM compiler framework.") (assoc-ref %build-inputs "libc") "/lib")) #:phases (modify-phases %standard-phases - (add-after 'install 'remove-headers - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (delete-file-recursively - (string-append out "/include")) - #t))) (add-before 'check 'set-HOME (lambda _ (setenv "HOME" "/tmp") diff --git a/gnu/packages/patches/dropbear-CVE-2018-15599.patch b/gnu/packages/patches/dropbear-CVE-2018-15599.patch new file mode 100644 index 0000000000..a474552cd2 --- /dev/null +++ b/gnu/packages/patches/dropbear-CVE-2018-15599.patch @@ -0,0 +1,240 @@ +Fix CVE-2018-15599: + +http://lists.ucc.gu.uwa.edu.au/pipermail/dropbear/2018q3/002108.html +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-15599 + +Patch copied from upstream source repository: + +https://github.com/mkj/dropbear/commit/52adbb34c32d3e2e1bcdb941e20a6f81138b8248 + +From 52adbb34c32d3e2e1bcdb941e20a6f81138b8248 Mon Sep 17 00:00:00 2001 +From: Matt Johnston <matt@ucc.asn.au> +Date: Thu, 23 Aug 2018 23:43:12 +0800 +Subject: [PATCH] Wait to fail invalid usernames + +--- + auth.h | 6 +++--- + svr-auth.c | 19 +++++-------------- + svr-authpam.c | 26 ++++++++++++++++++++++---- + svr-authpasswd.c | 27 ++++++++++++++------------- + svr-authpubkey.c | 11 ++++++++++- + 5 files changed, 54 insertions(+), 35 deletions(-) + +diff --git a/auth.h b/auth.h +index da498f5b..98f54683 100644 +--- a/auth.h ++++ b/auth.h +@@ -37,9 +37,9 @@ void recv_msg_userauth_request(void); + void send_msg_userauth_failure(int partial, int incrfail); + void send_msg_userauth_success(void); + void send_msg_userauth_banner(const buffer *msg); +-void svr_auth_password(void); +-void svr_auth_pubkey(void); +-void svr_auth_pam(void); ++void svr_auth_password(int valid_user); ++void svr_auth_pubkey(int valid_user); ++void svr_auth_pam(int valid_user); + + #if DROPBEAR_SVR_PUBKEY_OPTIONS_BUILT + int svr_pubkey_allows_agentfwd(void); +diff --git a/svr-auth.c b/svr-auth.c +index c19c0901..edde86bc 100644 +--- a/svr-auth.c ++++ b/svr-auth.c +@@ -149,10 +149,8 @@ void recv_msg_userauth_request() { + if (methodlen == AUTH_METHOD_PASSWORD_LEN && + strncmp(methodname, AUTH_METHOD_PASSWORD, + AUTH_METHOD_PASSWORD_LEN) == 0) { +- if (valid_user) { +- svr_auth_password(); +- goto out; +- } ++ svr_auth_password(valid_user); ++ goto out; + } + } + #endif +@@ -164,10 +162,8 @@ void recv_msg_userauth_request() { + if (methodlen == AUTH_METHOD_PASSWORD_LEN && + strncmp(methodname, AUTH_METHOD_PASSWORD, + AUTH_METHOD_PASSWORD_LEN) == 0) { +- if (valid_user) { +- svr_auth_pam(); +- goto out; +- } ++ svr_auth_pam(valid_user); ++ goto out; + } + } + #endif +@@ -177,12 +173,7 @@ void recv_msg_userauth_request() { + if (methodlen == AUTH_METHOD_PUBKEY_LEN && + strncmp(methodname, AUTH_METHOD_PUBKEY, + AUTH_METHOD_PUBKEY_LEN) == 0) { +- if (valid_user) { +- svr_auth_pubkey(); +- } else { +- /* pubkey has no failure delay */ +- send_msg_userauth_failure(0, 0); +- } ++ svr_auth_pubkey(valid_user); + goto out; + } + #endif +diff --git a/svr-authpam.c b/svr-authpam.c +index 05e4f3e5..d201bc96 100644 +--- a/svr-authpam.c ++++ b/svr-authpam.c +@@ -178,13 +178,14 @@ pamConvFunc(int num_msg, + * Keyboard interactive would be a lot nicer, but since PAM is synchronous, it + * gets very messy trying to send the interactive challenges, and read the + * interactive responses, over the network. */ +-void svr_auth_pam() { ++void svr_auth_pam(int valid_user) { + + struct UserDataS userData = {NULL, NULL}; + struct pam_conv pamConv = { + pamConvFunc, + &userData /* submitted to pamvConvFunc as appdata_ptr */ + }; ++ const char* printable_user = NULL; + + pam_handle_t* pamHandlep = NULL; + +@@ -204,12 +205,23 @@ void svr_auth_pam() { + + password = buf_getstring(ses.payload, &passwordlen); + ++ /* We run the PAM conversation regardless of whether the username is valid ++ in case the conversation function has an inherent delay. ++ Use ses.authstate.username rather than ses.authstate.pw_name. ++ After PAM succeeds we then check the valid_user flag too */ ++ + /* used to pass data to the PAM conversation function - don't bother with + * strdup() etc since these are touched only by our own conversation + * function (above) which takes care of it */ +- userData.user = ses.authstate.pw_name; ++ userData.user = ses.authstate.username; + userData.passwd = password; + ++ if (ses.authstate.pw_name) { ++ printable_user = ses.authstate.pw_name; ++ } else { ++ printable_user = "<invalid username>"; ++ } ++ + /* Init pam */ + if ((rc = pam_start("sshd", NULL, &pamConv, &pamHandlep)) != PAM_SUCCESS) { + dropbear_log(LOG_WARNING, "pam_start() failed, rc=%d, %s", +@@ -242,7 +254,7 @@ void svr_auth_pam() { + rc, pam_strerror(pamHandlep, rc)); + dropbear_log(LOG_WARNING, + "Bad PAM password attempt for '%s' from %s", +- ses.authstate.pw_name, ++ printable_user, + svr_ses.addrstring); + send_msg_userauth_failure(0, 1); + goto cleanup; +@@ -253,12 +265,18 @@ void svr_auth_pam() { + rc, pam_strerror(pamHandlep, rc)); + dropbear_log(LOG_WARNING, + "Bad PAM password attempt for '%s' from %s", +- ses.authstate.pw_name, ++ printable_user, + svr_ses.addrstring); + send_msg_userauth_failure(0, 1); + goto cleanup; + } + ++ if (!valid_user) { ++ /* PAM auth succeeded but the username isn't allowed in for another reason ++ (checkusername() failed) */ ++ send_msg_userauth_failure(0, 1); ++ } ++ + /* successful authentication */ + dropbear_log(LOG_NOTICE, "PAM password auth succeeded for '%s' from %s", + ses.authstate.pw_name, +diff --git a/svr-authpasswd.c b/svr-authpasswd.c +index bdee2aa1..69c7d8af 100644 +--- a/svr-authpasswd.c ++++ b/svr-authpasswd.c +@@ -48,22 +48,14 @@ static int constant_time_strcmp(const char* a, const char* b) { + + /* Process a password auth request, sending success or failure messages as + * appropriate */ +-void svr_auth_password() { ++void svr_auth_password(int valid_user) { + + char * passwdcrypt = NULL; /* the crypt from /etc/passwd or /etc/shadow */ + char * testcrypt = NULL; /* crypt generated from the user's password sent */ +- char * password; ++ char * password = NULL; + unsigned int passwordlen; +- + unsigned int changepw; + +- passwdcrypt = ses.authstate.pw_passwd; +- +-#ifdef DEBUG_HACKCRYPT +- /* debugging crypt for non-root testing with shadows */ +- passwdcrypt = DEBUG_HACKCRYPT; +-#endif +- + /* check if client wants to change password */ + changepw = buf_getbool(ses.payload); + if (changepw) { +@@ -73,12 +65,21 @@ void svr_auth_password() { + } + + password = buf_getstring(ses.payload, &passwordlen); +- +- /* the first bytes of passwdcrypt are the salt */ +- testcrypt = crypt(password, passwdcrypt); ++ if (valid_user) { ++ /* the first bytes of passwdcrypt are the salt */ ++ passwdcrypt = ses.authstate.pw_passwd; ++ testcrypt = crypt(password, passwdcrypt); ++ } + m_burn(password, passwordlen); + m_free(password); + ++ /* After we have got the payload contents we can exit if the username ++ is invalid. Invalid users have already been logged. */ ++ if (!valid_user) { ++ send_msg_userauth_failure(0, 1); ++ return; ++ } ++ + if (testcrypt == NULL) { + /* crypt() with an invalid salt like "!!" */ + dropbear_log(LOG_WARNING, "User account '%s' is locked", +diff --git a/svr-authpubkey.c b/svr-authpubkey.c +index aa6087c9..ff481c87 100644 +--- a/svr-authpubkey.c ++++ b/svr-authpubkey.c +@@ -79,7 +79,7 @@ static int checkfileperm(char * filename); + + /* process a pubkey auth request, sending success or failure message as + * appropriate */ +-void svr_auth_pubkey() { ++void svr_auth_pubkey(int valid_user) { + + unsigned char testkey; /* whether we're just checking if a key is usable */ + char* algo = NULL; /* pubkey algo */ +@@ -102,6 +102,15 @@ void svr_auth_pubkey() { + keybloblen = buf_getint(ses.payload); + keyblob = buf_getptr(ses.payload, keybloblen); + ++ if (!valid_user) { ++ /* Return failure once we have read the contents of the packet ++ required to validate a public key. ++ Avoids blind user enumeration though it isn't possible to prevent ++ testing for user existence if the public key is known */ ++ send_msg_userauth_failure(0, 0); ++ goto out; ++ } ++ + /* check if the key is valid */ + if (checkpubkey(algo, algolen, keyblob, keybloblen) == DROPBEAR_FAILURE) { + send_msg_userauth_failure(0, 0); diff --git a/gnu/packages/patches/haskell-mode-make-check.patch b/gnu/packages/patches/haskell-mode-make-check.patch new file mode 100644 index 0000000000..a4d4d525f2 --- /dev/null +++ b/gnu/packages/patches/haskell-mode-make-check.patch @@ -0,0 +1,35 @@ +Copied from upstream repository. +Hunk #2 is removed since it cannot be applied and it is not needed. + +From 7cead7137bf54851c1b7df5a3854351296d21276 Mon Sep 17 00:00:00 2001 +From: Vasantha Ganesh K <vasanthaganesh.k@tuta.io> +Date: Thu, 22 Jun 2017 23:38:40 +0530 +Subject: [PATCH] removed `check-conventions' from make + +--- + Makefile | 7 +- + tests/haskell-code-conventions.el | 165 ------------------------------ + 2 files changed, 1 insertion(+), 171 deletions(-) + delete mode 100644 tests/haskell-code-conventions.el + +diff --git a/Makefile b/Makefile +index b2c89d6..aa907c5 100644 +--- a/Makefile ++++ b/Makefile +@@ -79,12 +79,7 @@ build-$(EMACS_VERSION)/build-flag : build-$(EMACS_VERSION) $(patsubst %.el,build + check-%: tests/%-tests.el + $(BATCH) -l "$<" -f ert-run-tests-batch-and-exit; + +-check: compile $(AUTOLOADS) check-ert check-conventions +- +-check-conventions : +- $(BATCH) -l tests/haskell-code-conventions.el \ +- -f haskell-check-conventions-batch-and-exit +- @echo "conventions are okay" ++check: compile $(AUTOLOADS) check-ert + + check-ert: $(ELCHECKS) + $(BATCH) --eval "(when (= emacs-major-version 24) \ +-- +2.18.0 + diff --git a/gnu/packages/patches/haskell-mode-unused-variables.patch b/gnu/packages/patches/haskell-mode-unused-variables.patch new file mode 100644 index 0000000000..b175fae28c --- /dev/null +++ b/gnu/packages/patches/haskell-mode-unused-variables.patch @@ -0,0 +1,44 @@ +Copied verbatim from upstream repository. + +From cee22450ee30e79952f594796721dc6b17798ee6 Mon Sep 17 00:00:00 2001 +From: Sascha Wilde <wilde@sha-bang.de> +Date: Fri, 23 Sep 2016 15:35:59 +0200 +Subject: [PATCH] Removed unused lexical variables. + +--- + haskell-lexeme.el | 3 +-- + haskell-process.el | 4 +--- + 2 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/haskell-lexeme.el b/haskell-lexeme.el +index 4256a79..b832560 100644 +--- a/haskell-lexeme.el ++++ b/haskell-lexeme.el +@@ -138,8 +138,7 @@ When match is successful, match-data will contain: + (match-text 2) - whole qualified identifier + (match-text 3) - unqualified part of identifier + (match-text 4) - closing backtick" +- (let ((begin (point)) +- (match-data-old (match-data)) ++ (let ((match-data-old (match-data)) + first-backtick-start + last-backtick-start + qid-start +diff --git a/haskell-process.el b/haskell-process.el +index b4efba2..4f3f859 100644 +--- a/haskell-process.el ++++ b/haskell-process.el +@@ -160,9 +160,7 @@ HPTYPE is the result of calling `'haskell-process-type`' function." + (defun haskell-process-log (msg) + "Effective append MSG to the process log (if enabled)." + (when haskell-process-log +- (let* ((append-to (get-buffer-create "*haskell-process-log*")) +- (windows (get-buffer-window-list append-to t t)) +- move-point-in-windows) ++ (let* ((append-to (get-buffer-create "*haskell-process-log*"))) + (with-current-buffer append-to + ;; point should follow insertion so that it stays at the end + ;; of the buffer +-- +2.18.0 + diff --git a/gnu/packages/patches/netsurf-message-timestamp.patch b/gnu/packages/patches/netsurf-message-timestamp.patch new file mode 100644 index 0000000000..8df9dbf8f7 --- /dev/null +++ b/gnu/packages/patches/netsurf-message-timestamp.patch @@ -0,0 +1,11 @@ +--- netsurf-3.8/utils/split-messages.pl.orig 1969-12-31 18:00:00.000000000 -0600 ++++ netsurf-3.8/utils/split-messages.pl 2018-08-30 00:18:58.158367530 -0500 +@@ -238,7 +238,7 @@ + + if( $opt{gzip} ) + { +- $ofh = new IO::Compress::Gzip( $ofh, AutoClose => 1, -Level => 9 ); ++ $ofh = new IO::Compress::Gzip( $ofh, AutoClose => 1, -Level => 9, Time => 0 ); + } + + return $ofh; diff --git a/gnu/packages/patches/netsurf-system-utf8proc.patch b/gnu/packages/patches/netsurf-system-utf8proc.patch index 654d45d017..a2ee52ca05 100644 --- a/gnu/packages/patches/netsurf-system-utf8proc.patch +++ b/gnu/packages/patches/netsurf-system-utf8proc.patch @@ -17,23 +17,23 @@ Work around upstream's lack of a pkg-config file and update API. # Optional libraries with pkgconfig ---- netsurf-3.6/utils/idna.c -+++ netsurf-3.6/utils/idna.c -@@ -26,7 +26,7 @@ - #include <stdint.h> +--- netsurf-3.8/utils/idna.c ++++ netsurf-3.8/utils/idna.c +@@ -27,7 +27,7 @@ #include <stdlib.h> #include <string.h> + #include <sys/types.h> -#include <libutf8proc/utf8proc.h> +#include <utf8proc.h> - #include "utils/errors.h" - #include "utils/idna.h" ---- netsurf-3.7/test/Makefile 2017-10-15 08:39:24.000000000 -0500 -+++ netsurf-3.7/test/Makefile 2017-11-05 11:14:46.219013218 -0600 -@@ -139,14 +139,14 @@ - -D_XOPEN_SOURCE=600 \ + #include "netsurf/inttypes.h" + +--- netsurf-3.8/test/Makefile ++++ netsurf-3.8/test/Makefile +@@ -142,14 +142,15 @@ -Itest -Iinclude -Icontent/handlers -Ifrontends -I. -I.. \ -Dnsgtk \ + $(SAN_FLAGS) \ - $(shell pkg-config --cflags libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) \ + $(shell pkg-config --cflags libcurl libparserutils libwapcaplet libdom libnsutils) \ $(LIB_CFLAGS) @@ -43,7 +43,8 @@ Work around upstream's lack of a pkg-config file and update API. TESTLDFLAGS := -L$(TESTROOT) \ - $(shell pkg-config --libs libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) -lz \ -+ $(shell pkg-config --libs libcurl libparserutils libwapcaplet libdom libnsutils) -lz -lutf8proc \ ++ $(shell pkg-config --libs libcurl libparserutils libwapcaplet libdom libnsutils) \ ++ $(LDFLAGS) \ + $(SAN_FLAGS) \ $(LIB_LDFLAGS)\ $(COV_LDFLAGS) - diff --git a/gnu/packages/patches/openexr-missing-samples.patch b/gnu/packages/patches/openexr-missing-samples.patch deleted file mode 100644 index 16cc9bb625..0000000000 --- a/gnu/packages/patches/openexr-missing-samples.patch +++ /dev/null @@ -1,23 +0,0 @@ -This patch comments out tests that rely on files that are missing -from the source tarball. - ---- openexr-2.2.0/IlmImfTest/testSampleImages.cpp 2015-02-25 16:19:21.565105625 +0100 -+++ openexr-2.2.0/IlmImfTest/testSampleImages.cpp 2015-02-25 16:21:46.394128206 +0100 -@@ -162,16 +162,6 @@ testSampleImages (const std::string&) - compareImages (ILM_IMF_TEST_IMAGEDIR "comp_b44.exr", - ILM_IMF_TEST_IMAGEDIR "comp_b44_piz.exr"); - -- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwaa_v1.exr", -- ILM_IMF_TEST_IMAGEDIR "comp_dwaa_piz.exr"); -- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwaa_v2.exr", -- ILM_IMF_TEST_IMAGEDIR "comp_dwaa_piz.exr"); -- -- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwab_v1.exr", -- ILM_IMF_TEST_IMAGEDIR "comp_dwab_piz.exr"); -- compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwab_v2.exr", -- ILM_IMF_TEST_IMAGEDIR "comp_dwab_piz.exr"); -- - - cout << "ok\n" << endl; - } - diff --git a/gnu/packages/patches/rust-1.19-mrustc.patch b/gnu/packages/patches/rust-1.19-mrustc.patch new file mode 100644 index 0000000000..261162172e --- /dev/null +++ b/gnu/packages/patches/rust-1.19-mrustc.patch @@ -0,0 +1,28 @@ +See https://github.com/thepowersgang/mrustc/archive/v0.8.0.tar.gz + +--- rustc-1.19.0-src-orig/src/libcore/intrinsics.rs ++++ rustc-1.19.0-src/src/libcore/intrinsics.rs +@@ -678,5 +678,9 @@ + pub fn min_align_of_val<T: ?Sized>(_: &T) -> usize; + ++ /// Obtain the length of a slice pointer ++ #[cfg(rust_compiler="mrustc")] ++ pub fn mrustc_slice_len<T>(pointer: *const [T]) -> usize; ++ + /// Gets a static string slice containing the name of a type. + pub fn type_name<T: ?Sized>() -> &'static str; + +--- rustc-1.19.0-src-orig/src/libcore/slice/mod.rs ++++ rustc-1.19.0-src/src/libcore/slice/mod.rs +@@ -413,6 +413,8 @@ + #[inline] + fn len(&self) -> usize { +- unsafe { +- mem::transmute::<&[T], Repr<T>>(self).len +- } ++ #[cfg(not(rust_compiler="mrustc"))] ++ let rv = unsafe { mem::transmute::<&[T], Repr<T>>(self).len }; ++ #[cfg(rust_compiler="mrustc")] ++ let rv = unsafe { ::intrinsics::mrustc_slice_len(self) }; ++ rv + } diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 47d5d8bbb2..761c5987b0 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -7593,7 +7593,7 @@ renaming exports, if they try to use them.") (define-public perl-sub-identify (package (name "perl-sub-identify") - (version "0.10") + (version "0.14") (source (origin (method url-fetch) @@ -7601,7 +7601,7 @@ renaming exports, if they try to use them.") "Sub-Identify-" version ".tar.gz")) (sha256 (base32 - "087fjcg6w576w47i1slj6mjfd3gl1b0airgddmn3prn0nff6nn2m")))) + "0vxdxyfh6037xy88ic7500wydzmsxldhp95n8bld2kaihqh2g386")))) (build-system perl-build-system) (home-page "https://metacpan.org/release/Sub-Identify") (synopsis "Retrieve names of code references") diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 3fd3d0854b..7bdf04cb49 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -95,6 +95,18 @@ cameras (CRW/CR2, NEF, RAF, DNG, and others).") ;; both two licensing modes for your changes/additions." (license (list license:lgpl2.1 license:cddl1.0)))) +(define-public libraw-0.18 + (package (inherit libraw) + (name "libraw") + (version "0.18.12") + (source (origin + (method url-fetch) + (uri (string-append "https://www.libraw.org/data/LibRaw-" + version ".tar.gz")) + (sha256 + (base32 + "1m2khr2cij8z6lawgbmdksjn14fpnjsy8ad4qahnpqapm1slsxap")))))) + (define-public libexif (package (name "libexif") diff --git a/gnu/packages/printers.scm b/gnu/packages/printers.scm index f8890cb7f1..dff9ed3010 100644 --- a/gnu/packages/printers.scm +++ b/gnu/packages/printers.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,7 +19,7 @@ (define-module (gnu packages printers) #:use-module (guix packages) - #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages libusb) @@ -32,15 +33,15 @@ (package (name "robocut") (version "1.0.11") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/Timmmm/robocut/archive/v" - version ".tar.gz")) - (sha256 - (base32 - "0nmr1plq1f6sarxwqwy4vzbxkljlx8y4xalm7r05vx4lrdai5pad")) - (file-name (string-append name "-" version ".tar.gz")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Timmmm/robocut.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0dp9cssyik63yvkk35s51v94a873x751iqg93qzd8dpqkmz5z8gn")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 36c5b0ea93..ed04de7547 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -99,6 +99,7 @@ #:use-module (gnu packages libevent) #:use-module (gnu packages libffi) #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) #:use-module (gnu packages machine-learning) #:use-module (gnu packages man) #:use-module (gnu packages maths) @@ -3363,14 +3364,14 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. (define-public python-matplotlib (package (name "python-matplotlib") - (version "2.2.2") + (version "2.2.3") (source (origin (method url-fetch) (uri (pypi-uri "matplotlib" version)) (sha256 (base32 - "1s6dv225w3k4fv52h8lfjc7qq5y56i9755ayx0mz48ddi99fzisd")))) + "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk")))) (build-system python-build-system) (propagated-inputs ; the following packages are all needed at run time `(("python-cycler" ,python-cycler) @@ -3398,7 +3399,8 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc. ;; object. For this reason we need to import both libraries. ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo ("python-pycairo" ,python-pycairo) - ("python-pyqt" ,python-pyqt) + ;; XXX: qtwebkit cannot be built reliably. + ("python-pyqt" ,python-pyqt-without-qtwebkit) ("python-cairocffi" ,python-cairocffi))) (inputs `(("libpng" ,libpng) @@ -3649,6 +3651,18 @@ functions.") (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-broken-tests + (lambda _ + (substitute* "scipy/sparse/linalg/dsolve/tests/test_linsolve.py" + (("^( +)def test_threads_parallel\\(self\\):" m indent) + (string-append indent + "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + m))) + (substitute* "scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py" + (("^def test_parallel_threads\\(\\):" m) + (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + m))) + #t)) (add-before 'build 'configure-openblas (lambda* (#:key inputs #:allow-other-keys) (call-with-output-file "site.cfg" @@ -7267,7 +7281,7 @@ applications.") (description "With apipkg you can control the exported namespace of a Python package and greatly reduce the number of imports for your users. It is a small pure Python module that works on virtually all Python versions.") - (home-page "https://bitbucket.org/hpk42/apipkg") + (home-page "https://github.com/pytest-dev/apipkg") (license license:expat))) (define-public python2-apipkg @@ -13821,3 +13835,112 @@ Let's Encrypt.") development that supports command line argument parsing, command string validation testing and application logic.") (license license:expat))) + +;; Make sure to upgrade python-llvmlite in (gnu packages llvm) together with +;; python-numba. They have a very unflexible relationship. +(define-public python-numba + (package + (name "python-numba") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "numba" version)) + (sha256 + (base32 + "1bibvkwga1v8293i9ivl469d8bzgabn3vgr2ig7c1i68v8frsx07")))) + (build-system python-build-system) + (arguments + `(#:modules ((guix build utils) + (guix build python-build-system) + (ice-9 ftw) + (srfi srfi-1) + (srfi srfi-26)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-proprietary-features + (lambda _ + (setenv "NUMBA_DISABLE_HSA" "1") + (setenv "NUMBA_DISABLE_CUDA" "1") + #t)) + (add-after 'unpack 'remove-failing-tests + (lambda _ + ;; FIXME: these tests fail for unknown reasons: + ;; test_non_writable_pycache, test_non_creatable_pycache, and + ;; test_frozen (all in numba.tests.test_dispatcher.TestCache). + (substitute* "numba/tests/test_dispatcher.py" + (("def test(_non_writable_pycache)" _ m) + (string-append "def guix_skip" m)) + (("def test(_non_creatable_pycache)" _ m) + (string-append "def guix_skip" m)) + (("def test(_frozen)" _ m) + (string-append "def guix_skip" m))) + + ;; These tests fail because we don't run the tests from the build + ;; directory: test_setup_py_distutils, test_setup_py_setuptools + ;; They ar in numba.tests.test_pycc.TestDistutilsSupport. + (substitute* "numba/tests/test_pycc.py" + (("def test(_setup_py_distutils|_setup_py_setuptools)" _ m) + (string-append "def guix_skip" m))) + #t)) + (replace 'check + (lambda _ + (let ((cwd (getcwd))) + (setenv "PYTHONPATH" + (string-append cwd "/build/" + (find (cut string-prefix? "lib" <>) + (scandir (string-append cwd "/build"))) + ":" + (getenv "PYTHONPATH"))) + ;; Something is wrong with the PYTHONPATH when running the + ;; tests from the build directory, as it complains about not being + ;; able to import certain modules. + (with-directory-excursion "/tmp" + (invoke "python3" "-m" "numba.runtests" "-v" "-m"))) + #t))))) + (propagated-inputs + `(("python-llvmlite" ,python-llvmlite) + ("python-numpy" ,python-numpy) + ("python-singledispatch" ,python-singledispatch))) + ;; Needed for tests. + (inputs + `(("python-jinja2" ,python-jinja2) + ("python-pygments" ,python-pygments))) + (home-page "https://numba.pydata.org") + (synopsis "Compile Python code using LLVM") + (description "Numba gives you the power to speed up your applications with +high performance functions written directly in Python. With a few +annotations, array-oriented and math-heavy Python code can be just-in-time +compiled to native machine instructions, similar in performance to C, C++ and +Fortran, without having to switch languages or Python interpreters. + +Numba works by generating optimized machine code using the LLVM compiler +infrastructure at import time, runtime, or statically (using the included pycc +tool).") + (license license:bsd-3))) + +(define-public python-anndata + (package + (name "python-anndata") + (version "0.6.9") + (source + (origin + (method url-fetch) + (uri (pypi-uri "anndata" version)) + (sha256 + (base32 + "1fh461xyyc7pcrjfgd013bdc2alf53r46ss3gfw3431mbb1gappi")))) + (build-system python-build-system) + (propagated-inputs + `(("python-h5py" ,python-h5py) + ("python-natsort" ,python-natsort) + ("python-pandas" ,python-pandas) + ("python-scipy" ,python-scipy))) + (home-page "https://github.com/theislab/anndata") + (synopsis "Annotated data for data analysis pipelines") + (description "Anndata is a package for simple (functional) high-level APIs +for data analysis pipelines. In this context, it provides an efficient, +scalable way of keeping track of data together with learned annotations and +reduces the code overhead typically encountered when using a mostly +object-oriented library such as @code{scikit-learn}.") + (license license:bsd-3))) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index affba14e98..7d1a4ca585 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -1834,6 +1834,15 @@ framework. The bindings are implemented as a set of Python modules and contain over 620 classes.") (license license:gpl3))) +;; XXX: This is useful because qtwebkit does not build reliably at this time. +;; Ultimately, it would be nicer to have a more modular set of python-pyqt-* +;; packages that could be used together. +(define-public python-pyqt-without-qtwebkit + (package (inherit python-pyqt) + (name "python-pyqt-without-qtwebkit") + (inputs + (alist-delete "qtwebkit" (package-inputs python-pyqt))))) + (define-public python2-pyqt (package (inherit python-pyqt) (name "python2-pyqt") diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm index 3f501a0736..c9d9e8a359 100644 --- a/gnu/packages/regex.scm +++ b/gnu/packages/regex.scm @@ -29,7 +29,7 @@ (define-public re2 (package (name "re2") - (version "2018-08-01") + (version "2018-09-01") (home-page "https://github.com/google/re2") (source (origin (method url-fetch) @@ -37,7 +37,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0lmpc3cb9bvc27fp27jacx6qjn176v8z8p7k70byc092q68mr6bw")))) + "0hygr88hvy7if1i45m5r6x60zf73439j2fwzw7wwcw9gb01v690l")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 908dfd5751..616b86934d 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -37,6 +37,7 @@ #:use-module (gnu packages java) #:use-module (gnu packages libffi) #:use-module (gnu packages maths) + #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages python) #:use-module (gnu packages ragel) @@ -193,6 +194,25 @@ a focus on simplicity and productivity.") (("/bin/sh") (which "sh"))) #t))))))) +(define-public ruby-concurrent + (package + (name "ruby-concurrent") + (version "1.0.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "concurrent-ruby" version)) + (sha256 + (base32 + "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/ruby-concurrency/concurrent-ruby") + (synopsis "Concurrency tools for Ruby") + (description "This gem provides concurrency tools for Ruby. It provides +a library of common thread-safe types and data-structures as well as abstractions +for concurrency and communication between threads.") + (license license:expat))) + (define-public ruby-highline (package (name "ruby-highline") @@ -262,16 +282,17 @@ packaging native C and Java extensions in Ruby.") (define-public ruby-i18n (package (name "ruby-i18n") - (version "0.7.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (rubygems-uri "i18n" version)) (sha256 (base32 - "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758")))) + "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; no tests + (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent))) (synopsis "Internationalization library for Ruby") (description "Ruby i18n is an internationalization and localization solution for Ruby programs. It features translation and localization, @@ -3013,17 +3034,28 @@ you about the changes.") (home-page "https://github.com/guard/listen") (license license:expat))) +(define-public ruby-listen-3.0 + (package + (inherit ruby-listen) + (version "3.0.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "listen" version)) + (sha256 + (base32 + "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i")))))) + (define-public ruby-activesupport (package (name "ruby-activesupport") - (version "5.1.4") + (version "5.2.1") (source (origin (method url-fetch) (uri (rubygems-uri "activesupport" version)) (sha256 (base32 - "0sgf4rsfr7jcaqsx0wwzx4l4k9xsjlwv0mzl08pxiyp1qzyx8scr")))) + "0ziy6xk31k4fs115cdkba1ys4i8nzcyri7a2jig7nx7k5h7li6l2")))) (build-system ruby-build-system) (arguments `(#:phases @@ -4658,7 +4690,7 @@ binary-to-text encoding. The main modern use of Ascii85 is in PostScript and (define-public ruby-ttfunk (package (name "ruby-ttfunk") - (version "1.4.0") + (version "1.5.1") (source (origin (method url-fetch) @@ -4669,12 +4701,18 @@ binary-to-text encoding. The main modern use of Ascii85 is in PostScript and (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6")))) + "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5")))) (build-system ruby-build-system) (arguments `(#:test-target "spec" #:phases (modify-phases %standard-phases + (add-before 'build 'remove-ssh + (lambda _ + ;; remove dependency on an ssh key pair that doesn't exist + (substitute* "ttfunk.gemspec" + (("spec.signing_key.*") "")) + #t)) (add-before 'check 'remove-rubocop (lambda _ ;; remove rubocop as a dependency as not needed for testing @@ -4682,10 +4720,11 @@ binary-to-text encoding. The main modern use of Ascii85 is in PostScript and (("spec.add_development_dependency\\('rubocop'.*") "")) (substitute* "Rakefile" (("require 'rubocop/rake_task'") "") - (("Rubocop::RakeTask.new") "")) + (("RuboCop::RakeTask.new") "")) #t))))) (native-inputs `(("ruby-rspec" ,ruby-rspec) + ("ruby-yard" ,ruby-yard) ("bundler" ,bundler))) (synopsis "Font metrics parser for the Prawn PDF generator") (description @@ -5070,3 +5109,821 @@ programs running in the background, in Ruby.") (sha256 (base32 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p")))))) + +(define-public ruby-public-suffix + (package + (name "ruby-public-suffix") + (version "3.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "public_suffix" version)) + (sha256 + (base32 + "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l")))) + (build-system ruby-build-system) + (arguments + ;; Tests require network + `(#:tests? #f)) + (home-page "https://simonecarletti.com/code/publicsuffix-ruby/") + (synopsis "Domain name parser") + (description "The gem @code{public_suffix} is a domain name parser, +written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix +is one under which Internet users can (or historically could) directly +register names. Some examples of public suffixes are @code{.com}, +@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of +all known public suffixes.") + (license license:expat))) + +(define-public ruby-addressable + (package + (name "ruby-addressable") + (version "2.5.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "addressable" version)) + (sha256 + (base32 + "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-public-suffix" ,ruby-public-suffix))) + (arguments + ;; No test target + `(#:tests? #f)) + (home-page "https://github.com/sporkmonger/addressable") + (synopsis "Alternative URI implementation") + (description "Addressable is a replacement for the URI implementation that +is part of Ruby's standard library. It more closely conforms to RFC 3986, +RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.") + (license license:asl2.0))) + +(define-public ruby-colorator + (package + (name "ruby-colorator") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "colorator" version)) + (sha256 + (base32 + "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72")))) + (build-system ruby-build-system) + (arguments + ;; No test target + `(#:tests? #f)) + (home-page "http://octopress.org/colorator/") + (synopsis "Terminal color library") + (description "Colorator is a Ruby gem that helps you colorize your text +for the terminal.") + (license license:expat))) + +(define-public ruby-command-line-reporter + (package + (name "ruby-command-line-reporter") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "command_line_reporter" version)) + (sha256 + (base32 + "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a")))) + (build-system ruby-build-system) + (arguments + ;; No Rakefile + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-dependencies + (lambda _ + (substitute* ".gemspec" + ;; colored is unmaintained + (("colored") "colorator") + ;; colorator version + (("= 1.2") "= 1.1")) + #t))))) + (propagated-inputs `(("ruby-colorator" ,ruby-colorator))) + (home-page "https://github.com/wbailey/command_line_reporter") + (synopsis "Report production while executing Ruby scripts") + (description "This gem provides a DSL that makes it easy to write reports +of various types in ruby. It eliminates the need to litter your source with +puts statements, instead providing a more readable, expressive interface to +your application.") + (license license:asl2.0))) + +(define-public ruby-command-line-reporter-3 + (package + (inherit ruby-command-line-reporter) + (version "3.3.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "command_line_reporter" version)) + (sha256 + (base32 + "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71")))))) + +(define-public ruby-rdoc + (package + (name "ruby-rdoc") + (version "6.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rdoc" version)) + (sha256 + (base32 + "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (home-page "https://ruby.github.io/rdoc/") + (synopsis "HTML and command-line documentation utility") + (description "RDoc produces HTML and command-line documentation for Ruby +projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying +documentation from the command-line.") + (license license:gpl2+))) + +(define-public ruby-sass-listen + (package + (name "ruby-sass-listen") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sass-listen" version)) + (sha256 + (base32 + "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df")))) + (build-system ruby-build-system) + (arguments + ;; No test target + `(#:tests? #f)) + (propagated-inputs + `(("ruby-rb-fsevent" ,ruby-rb-fsevent) + ("ruby-rb-inotify" ,ruby-rb-inotify))) + (home-page "https://github.com/sass/listen") + (synopsis "File modification notification library") + (description "The Listen gem listens to file modifications and notifies you +about the changes.") + (license license:expat))) + +(define-public ruby-terminfo + (package + (name "ruby-terminfo") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-terminfo" version)) + (sha256 + (base32 + "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "test" + ;; Rakefile requires old packages and would need modification to + ;; work with current software. + #:tests? #f)) + (inputs + `(("ncurses" ,ncurses))) + (native-inputs + `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks) + ("ruby-rdoc" ,ruby-rdoc))) + (home-page "http://www.a-k-r.org/ruby-terminfo/") + (synopsis "Terminfo binding for Ruby") + (description "Ruby-terminfo provides terminfo binding for Ruby.") + (license license:bsd-3))) + +(define-public ruby-diffy + (package + (name "ruby-diffy") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "diffy" version)) + (sha256 + (base32 + "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (native-inputs + `(("ruby-rspec" ,ruby-rspec))) + (home-page "https://github.com/samg/diffy") + (synopsis "Convenient diffing in ruby") + (description "Diffy provides a convenient way to generate a diff from two +strings or files.") + (license license:expat))) + +(define-public ruby-sass-spec + (package + (name "ruby-sass-spec") + (version "3.5.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/sass/sass-spec/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3) + ("ruby-diffy" ,ruby-diffy) + ("ruby-terminfo" ,ruby-terminfo))) + (arguments + ;; No Rakefile + `(#:tests? #f)) + (home-page "https://github.com/sass/sass-spec") + (synopsis "Test suite for Sass") + (description "Sass Spec is a test suite for Sass. Test cases are all in +the @file{spec} directory.") + (license license:expat))) + +(define-public ruby-sass + (package + (name "ruby-sass") + (version "3.5.7") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sass" version)) + (sha256 + (base32 + "1sy7xsbgpcy90j5ynbq967yplffp74pvph3r8ivn2sv2b44q6i61")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-sass-listen" ,ruby-sass-listen))) + (native-inputs + `(("ruby-sass-spec" ,ruby-sass-spec))) + (home-page "http://sass-lang.com/") + (synopsis "CSS extension language") + (description "Sass is a CSS extension language. It extends CSS with +features that don't exist yet like variables, nesting, mixins and inheritance.") + (license license:expat))) + +(define-public ruby-jekyll-sass-converter + (package + (name "ruby-jekyll-sass-converter") + (version "1.5.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-sass-converter" version)) + (sha256 + (base32 + "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-sass" ,ruby-sass))) + (arguments + ;; No rakefile + `(#:tests? #f)) + (home-page "https://github.com/jekyll/jekyll-sass-converter") + (synopsis "Sass converter for Jekyll") + (description "This gem provide built-in support for the Sass converter +in Jekyll.") + (license license:expat))) + +(define-public ruby-jekyll-watch + (package + (name "ruby-jekyll-watch") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-watch" version)) + (sha256 + (base32 + "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-listen-3.0" ,ruby-listen-3.0))) + (arguments + ;; No rakefile + `(#:tests? #f)) + (home-page "https://github.com/jekyll/jekyll-watch") + (synopsis "Jekyll auto-rebuild support") + (description "This gems add the @code{--watch} switch to the jekyll CLI +interface. It allows Jekyll to rebuild your site when a file changes.") + (license license:expat))) + +(define-public ruby-parallel + (package + (name "ruby-parallel") + (version "1.12.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "parallel" version)) + (sha256 + (base32 + "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/grosser/parallel") + (synopsis "Parallel processing in Ruby") + (description "Parallel allows you to run any code in parallel Processes +(to use all CPUs) or Threads(to speedup blocking operations). It is best +suited for map-reduce or e.g. parallel downloads/uploads.") + (license license:expat))) + +(define-public ruby-cane + (package + (name "ruby-cane") + (version "3.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cane" version)) + (sha256 + (base32 + "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/square/cane") + (propagated-inputs + `(("ruby-parallel" ,ruby-parallel))) + (synopsis "Code quality threshold checking") + (description "Cane fails your build if code quality thresholds are not met.") + (license license:asl2.0))) + +(define-public ruby-morecane + (package + (name "ruby-morecane") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "morecane" version)) + (sha256 + (base32 + "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771")))) + (build-system ruby-build-system) + (home-page "https://github.com/yob/morecane") + (arguments `(#:tests? #f)); No rakefile + (propagated-inputs + `(("ruby-parallel" ,ruby-parallel))) + (synopsis "Extra checks for cane") + (description "The cane gem provides a great framework for running quality +checks over your ruby project as part of continuous integration build. It +comes with a few checks out of the box, but also provides an API for loading +custom checks. This gem provides a set of additional checks.") + (license license:expat))) + +(define-public ruby-pdf-reader + (package + (name "ruby-pdf-reader") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pdf-reader" version)) + (sha256 + (base32 + "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec")) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec) + ("ruby-cane" ,ruby-cane) + ("ruby-morecane" ,ruby-morecane))) + (propagated-inputs + `(("ruby-afm" ,ruby-afm) + ("ruby-ascii85" ,ruby-ascii85) + ("ruby-hashery" ,ruby-hashery) + ("ruby-rc4" ,ruby-rc4) + ("ruby-ttfunk" ,ruby-ttfunk))) + (home-page "https://github.com/yob/pdf-reader") + (synopsis "PDF parser in Ruby") + (description "The PDF::Reader library implements a PDF parser conforming as +much as possible to the PDF specification from Adobe. It provides programmatic +access to the contents of a PDF file with a high degree of flexibility.") + (license license:gpl3+))) + +(define-public ruby-pdf-inspector + (package + (name "ruby-pdf-inspector") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pdf-inspector" version)) + (sha256 + (base32 + "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-pdf-reader" ,ruby-pdf-reader))) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/prawnpdf/pdf-inspector") + (synopsis "Analysis classes for inspecting PDF output") + (description "This library provides a number of PDF::Reader based tools for +use in testing PDF output. Presently, the primary purpose of this tool is to +support the tests found in Prawn, a pure Ruby PDF generation library.") + (license license:gpl3+))) + +(define-public ruby-pdf-core + (package + (name "ruby-pdf-core") + (version "0.8.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pdf-core" version)) + (sha256 + (base32 + "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg")))) + (build-system ruby-build-system) + (arguments + ; No test target + `(#:tests? #f)) + (home-page "https://github.com/prawnpdf/pdf-core") + (synopsis "Low level PDF features for Prawn") + (description "This is an experimental gem that extracts low-level PDF +functionality from Prawn.") + (license license:gpl3+))) + +(define-public ruby-yard + (package + (name "ruby-yard") + (version "0.9.16") + (source (origin + (method url-fetch) + (uri (rubygems-uri "yard" version)) + (sha256 + (base32 + "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec")) + (home-page "https://yardoc.org/") + (synopsis "Ruby documentation tool") + (description "YARD is a documentation generation tool for the Ruby +programming language. It enables the user to generate consistent, usable +documentation that can be exported to a number of formats very easily, and +also supports extending for custom Ruby constructs such as custom class level +definitions.") + (license license:expat))) + +(define-public ruby-prawn + (package + (name "ruby-prawn") + (version "2.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "prawn" version)) + (sha256 + (base32 + "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m")))) + (build-system ruby-build-system) + (arguments + ; No tests + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-dependencies + (lambda _ + (substitute* "prawn.gemspec" + (("~> 0.7.0") "~> 0.7")) + #t))))) + (propagated-inputs + `(("ruby-pdf-core" ,ruby-pdf-core) + ("ruby-ttfunk" ,ruby-ttfunk))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-pdf-inspector" ,ruby-pdf-inspector) + ("ruby-rspec" ,ruby-rspec) + ("ruby-simplecov" ,ruby-simplecov) + ("ruby-yard" ,ruby-yard))) + (home-page "http://prawnpdf.org/api-docs/2.0/") + (synopsis "PDF generation for Ruby") + (description "Prawn is a pure Ruby PDF generation library.") + (license license:gpl3+))) + +(define-public ruby-prawn-table + (package + (name "ruby-prawn-table") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "prawn-table" version)) + (sha256 + (base32 + "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (propagated-inputs + `(("ruby-prawn" ,ruby-prawn))) + (home-page "https://github.com/prawnpdf/prawn-table") + (synopsis "Tables support for Prawn") + (description "This gem provides tables support for Prawn.") + (license license:gpl3+))) + +(define-public ruby-kramdown + (package + (name "ruby-kramdown") + (version "1.17.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "kramdown" version)) + (sha256 + (base32 + "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); FIXME: some test failures + (native-inputs + `(("ruby-prawn" ,ruby-prawn) + ("ruby-prawn-table" ,ruby-prawn-table))) + (home-page "https://kramdown.gettalong.org/") + (synopsis "Markdown parsing and converting library") + (description "Kramdown is a library for parsing and converting a superset +of Markdown. It is completely written in Ruby, supports standard Markdown +(with some minor modifications) and various extensions that have been made +popular by the PHP @code{Markdown Extra} package and @code{Maruku}.") + (license license:expat))) + +(define-public ruby-http-parser.rb + (package + (name "ruby-http-parser.rb") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "http_parser.rb" version)) + (sha256 + (base32 + "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (native-inputs + `(("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-rspec" ,ruby-rspec))) + (home-page "https://github.com/tmm1/http_parser.rb") + (synopsis "HTTP parser un Ruby") + (description "This gem is a simple callback-based HTTP request/response +parser for writing http servers, clients and proxies.") + (license license:expat))) + +(define-public ruby-em-websocket + (package + (name "ruby-em-websocket") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "em-websocket" version)) + (sha256 + (base32 + "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (propagated-inputs + `(("ruby-eventmachine" ,ruby-eventmachine) + ("ruby-http-parser.rb" ,ruby-http-parser.rb))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + (home-page "https://github.com/igrigorik/em-websocket") + (synopsis "EventMachine based WebSocket server") + (description "Em-websocket is an EventMachine based WebSocket server +implementation.") + (license license:expat))) + +(define-public ruby-rouge + (package + (name "ruby-rouge") + (version "3.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rouge" version)) + (sha256 + (base32 + "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "http://rouge.jneen.net/") + (synopsis "Code highlighter") + (description "Rouge is a code highlighter written in Ruby. It supports more +than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output +is compatible with stylesheets designed for pygments.") + (license (list + ;; rouge is licensed under expat + license:expat + ;; pygments is licensed under bsd-2 + license:bsd-2)))) + +(define-public ruby-rouge-2 + (package + (inherit ruby-rouge) + (version "2.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rouge" version)) + (sha256 + (base32 + "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs")))))) + +(define-public ruby-hashie + (package + (name "ruby-hashie") + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hashie" version)) + (sha256 + (base32 + "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory + (home-page "https://github.com/intridea/hashie") + (synopsis "Extensions to Ruby Hashes") + (description "Hashie is a collection of classes and mixins that make Ruby +hashes more powerful.") + (license license:expat))) + +(define-public ruby-heredoc-unindent + (package + (name "ruby-heredoc-unindent") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "heredoc_unindent" version)) + (sha256 + (base32 + "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (home-page "https://github.com/adrianomitre/heredoc_unindent") + (synopsis "Heredoc indentation cleaner") + (description "This gem removes common margin from indented strings, such +as the ones produced by indented heredocs. In other words, it strips out +leading whitespace chars at the beggining of each line, but only as much as +the line with the smallest margin. + +It is acknowledged that many strings defined by heredocs are just code and +fact is that most parsers are insensitive to indentation. If, however, the +strings are to be used otherwise, be it for printing or testing, the extra +indentation will probably be an issue and hence this gem.") + (license license:expat))) + +(define-public ruby-safe-yaml + (package + (name "ruby-safe-yaml") + (version "1.0.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "safe_yaml" version)) + (sha256 + (base32 + "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-rspec" ,ruby-rspec) + ("ruby-hashie" ,ruby-hashie) + ("ruby-heredoc-unindent" ,ruby-heredoc-unindent))) + (arguments `(#:test-target "spec" + #:tests? #f));; FIXME: one failure + (home-page "https://github.com/dtao/safe_yaml") + (synopsis "YAML parser") + (description "The SafeYAML gem provides an alternative implementation of +YAML.load suitable for accepting user input in Ruby applications.") + (license license:expat))) + +(define-public ruby-mercenary + (package + (name "ruby-mercenary") + (version "0.3.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mercenary" version)) + (sha256 + (base32 + "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec")) + (native-inputs + `(("bundler" ,bundler))) + (home-page "https://github.com/jekyll/mercenary") + (synopsis "Command-line apps library in Ruby") + (description "Mercenary is a lightweight and flexible library for writing +command-line apps in Ruby.") + (license license:expat))) + +(define-public ruby-liquid + (package + (name "ruby-liquid") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "liquid" version)) + (sha256 + (base32 + "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://shopify.github.io/liquid/") + (synopsis "Template language") + (description "Liquid is a template language written in Ruby. It is used +to load dynamic content on storefronts.") + (license license:expat))) + +(define-public ruby-forwardable-extended + (package + (name "ruby-forwardable-extended") + (version "2.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "forwardable-extended" version)) + (sha256 + (base32 + "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters + (home-page "https://github.com/envygeeks/forwardable-extended") + (synopsis "Delegation to hashes and instance variables in Forwardable") + (description "Forwardable Extended provides more @code{Forwardable} +methods for your source as @code{Forwardable::Extended}.") + (license license:expat))) + +(define-public ruby-pathutil + (package + (name "ruby-pathutil") + (version "0.16.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pathutil" version)) + (sha256 + (base32 + "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-forwardable-extended" ,ruby-forwardable-extended))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + ;; Fails with: cannot load such file -- + ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task + (arguments `(#:tests? #f)) + (home-page "https://github.com/envygeeks/pathutil") + (synopsis "Extended implementation of Pathname") + (description "Pathutil tries to be a faster pure Ruby implementation of +Pathname.") + (license license:expat))) + +(define-public jekyll + (package + (name "jekyll") + (version "3.8.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll" version)) + (sha256 + (base32 + "1iw90wihk9dscgmppf5v6lysg3kjmnx50mjyl4gghkdb4spw97xk")))) + (build-system ruby-build-system) + (arguments + ;; No rakefile, but a test subdirectory + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-i18n + (lambda _ + (substitute* ".gemspec" + (("~> 0.7") ">= 0.7")) + #t))))) + (propagated-inputs + `(("ruby-addressable" ,ruby-addressable) + ("ruby-colorator" ,ruby-colorator) + ("ruby-em-websocket" ,ruby-em-websocket) + ("ruby-i18n" ,ruby-i18n) + ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter) + ("ruby-jekyll-watch" ,ruby-jekyll-watch) + ("ruby-kramdown" ,ruby-kramdown) + ("ruby-liquid" ,ruby-liquid) + ("ruby-mercenary" ,ruby-mercenary) + ("ruby-pathutil" ,ruby-pathutil) + ("ruby-rouge" ,ruby-rouge-2) + ("ruby-safe-yaml" ,ruby-safe-yaml))) + (home-page "https://jekyllrb.com/") + (synopsis "Static site generator") + (description "Jekyll is a simple, blog aware, static site generator.") + (license license:expat))) + +(define-public ruby-jekyll-paginate-v2 + (package + (name "ruby-jekyll-paginate-v2") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-paginate-v2" version)) + (sha256 + (base32 + "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib")))) + (build-system ruby-build-system) + (propagated-inputs + `(("jekyll" ,jekyll))) + (home-page "https://github.com/sverrirs/jekyll-paginate-v2") + (synopsis "Pagination Generator for Jekyll 3") + (description "The Pagination Generator forms the core of the pagination +logic in Jekyll. It calculates and generates the pagination pages.") + (license license:expat))) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 0695f8c7d2..631dcfd67c 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -167,14 +167,120 @@ in turn be used to build the final Rust.") (snippet '(begin (delete-file-recursively "src/llvm") #t)) (patches (map search-patch patches)))) +(define* (rust-bootstrapped-package base-rust version checksum + #:key (patches '())) + "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST." + (package + (inherit base-rust) + (version version) + (source + (rust-source version checksum #:patches patches)) + (native-inputs + (alist-replace "cargo-bootstrap" (list base-rust "cargo") + (alist-replace "rustc-bootstrap" (list base-rust) + (package-native-inputs base-rust)))))) + +(define-public mrustc + (let ((rustc-version "1.19.0")) + (package + (name "mrustc") + (version "0.8.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/thepowersgang/mrustc.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i")))) + (outputs '("out" "cargo")) + (build-system gnu-build-system) + (inputs + `(("llvm" ,llvm-3.9.1))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ;; Required for the libstd sources. + ("rustc" + ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) + (arguments + `(#:tests? #f + #:make-flags (list (string-append "LLVM_CONFIG=" + (assoc-ref %build-inputs "llvm") + "/bin/llvm-config")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-date + (lambda _ + (substitute* "Makefile" + (("shell date") "shell date -d @1")) + #t)) + (add-after 'patch-date 'unpack-target-compiler + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "minicargo.mk" + ;; Don't try to build LLVM. + (("^[$][(]LLVM_CONFIG[)]:") "xxx:") + ;; Build for the correct target architecture. + (("^RUSTC_TARGET := x86_64-unknown-linux-gnu") + (string-append "RUSTC_TARGET := " + ,(or (%current-target-system) + (nix-system->gnu-triplet-for-rust))))) + (invoke "tar" "xf" (assoc-ref inputs "rustc")) + (chdir "rustc-1.19.0-src") + (invoke "patch" "-p0" "../rust_src.patch") + (chdir "..") + #t)) + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) + #t)) + (add-after 'build 'build-minicargo + (lambda _ + (for-each (lambda (target) + (invoke "make" "-f" "minicargo.mk" target)) + '("output/libstd.hir" "output/libpanic_unwind.hir" + "output/libproc_macro.hir" "output/libtest.hir")) + ;; Technically the above already does it - but we want to be clear. + (invoke "make" "-C" "tools/minicargo"))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (tools-bin (string-append out "/tools/bin")) + (cargo-out (assoc-ref outputs "cargo")) + (cargo-bin (string-append cargo-out "/bin")) + (lib (string-append out "/lib")) + (lib/rust (string-append lib "/mrust")) + (gcc (assoc-ref inputs "gcc"))) + ;; These files are not reproducible. + (for-each delete-file (find-files "output" "\\.txt$")) + (mkdir-p lib) + (copy-recursively "output" lib/rust) + (mkdir-p bin) + (mkdir-p tools-bin) + (install-file "bin/mrustc" bin) + ;; minicargo uses relative paths to resolve mrustc. + (install-file "tools/bin/minicargo" tools-bin) + (install-file "tools/bin/minicargo" cargo-bin) + #t)))))) + (synopsis "Compiler for the Rust progamming language") + (description "Rust is a systems programming language that provides memory +safety and thread safety guarantees.") + (home-page "https://github.com/thepowersgang/mrustc") + ;; Dual licensed. + (license (list license:asl2.0 license:expat))))) + (define rust-1.19 (package (name "rust") (version "1.19.0") - (source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm" + #:patches '("rust-1.19-mrustc.patch"))) (outputs '("out" "cargo")) (arguments `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums' + #:modules ((guix build utils) (ice-9 match) (guix build gnu-build-system)) #:phases (modify-phases %standard-phases (add-after 'unpack 'set-env @@ -187,6 +293,24 @@ in turn be used to build the final Rust.") ;; guix llvm-3.9.1 package installs only shared libraries (setenv "LLVM_LINK_SHARED" "1") #t)) + (add-after 'unpack 'patch-cargo-tomls + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "src/librustc_errors/Cargo.toml" + (("[[]dependencies[]]") " +[dependencies] +term = \"0.4.4\" +")) + (substitute* "src/librustc/Cargo.toml" + (("[[]dependencies[]]") " +[dependencies] +getopts = { path = \"../libgetopts\" } +")) + (substitute* "src/librustdoc/Cargo.toml" + (("[[]dependencies[]]") " +[dependencies] +test = { path = \"../libtest\" } +")) + #t)) (add-after 'unpack 'patch-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -243,12 +367,97 @@ in turn be used to build the final Rust.") (generate-checksums dir ,%cargo-reference-project-file))) (find-files "src/vendor" ".cargo-checksum.json")) #t)) + ;; This phase is overridden by newer versions. (replace 'configure (const #t)) + ;; This phase is overridden by newer versions. + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap"))) + (setenv "CFG_COMPILER_HOST_TRIPLE" + ,(nix-system->gnu-triplet (%current-system))) + (setenv "CFG_RELEASE" "") + (setenv "CFG_RELEASE_CHANNEL" "stable") + (setenv "CFG_LIBDIR_RELATIVE" "lib") + (setenv "CFG_VERSION" "1.19.0-stable-mrustc") + ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. + (mkdir-p "output") + (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") + "src/rustc" "--vendor-dir" "src/vendor" + "--output-dir" "output/rustc-build" + "-L" (string-append rustc-bootstrap "/lib/mrust") + "-j" "1") + (install-file "output/rustc-build/rustc" "output") ; FIXME: Remove? + (setenv "CFG_COMPILER_HOST_TRIPLE" #f) + (setenv "CFG_RELEASE" #f) + (setenv "CFG_RELEASE_CHANNEL" #f) + (setenv "CFG_VERSION" #f) + (setenv "CFG_PREFIX" #f) + (setenv "CFG_LIBDIR_RELATIVE" #f) + (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") + "src/tools/cargo" "--vendor-dir" "src/vendor" + "--output-dir" "output/cargo-build" + "-L" "output/" + "-L" (string-append rustc-bootstrap "/lib/mrust") + "-j" "1") + ;; Now use the newly-built rustc to build the libraries. + ;; One day that could be replaced by: + ;; (invoke "output/cargo-build/cargo" "build" + ;; "--manifest-path" "src/bootstrap/Cargo.toml" + ;; "--verbose") ; "--locked" "--frozen" + ;; but right now, Cargo has problems with libstd's circular + ;; dependencies. + (mkdir-p "output/target-libs") + (for-each ((@ (ice-9 match) match-lambda) + ((name . flags) + (write name) + (newline) + (apply invoke + "output/rustc-build/rustc" + "-C" (string-append "linker=" + (getenv "CC")) + "-L" "output/target-libs" + (string-append "src/" name "/lib.rs") + "-o" + (string-append "output/target-libs/" + (car (string-split name #\/)) + ".rlib") + flags))) + '(("libcore") + ("libstd_unicode") + ("liballoc") + ("libcollections") + ("librand") + ("liblibc/src" "--cfg" "stdbuild") + ("libunwind" "-l" "gcc_s") + ("libcompiler_builtins") + ("liballoc_system") + ("libpanic_unwind") + ;; Uses "cc" to link. + ("libstd" "-l" "dl" "-l" "rt" "-l" "pthread") + ("libarena"))) + #t))) + ;; This phase is overridden by newer versions. (replace 'check (const #t)) + ;; This phase is overridden by newer versions. (replace 'install - (const #t))))) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target-system ,(or (%current-target-system) + (nix-system->gnu-triplet + (%current-system)))) + (out-libs (string-append out "/lib/rustlib/" + target-system "/lib"))) + ;(setenv "CFG_PREFIX" out) + (mkdir-p out-libs) + (copy-recursively "output/target-libs" out-libs) + (install-file "output/rustc-build/rustc" + (string-append out "/bin")) + (install-file "output/cargo-build/cargo" + (string-append (assoc-ref outputs "cargo") + "/bin"))) + #t))))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ; For the tests @@ -258,8 +467,8 @@ in turn be used to build the final Rust.") ("git" ,git) ("procps" ,procps) ; For the tests ("python-2" ,python-2) - ("rustc-bootstrap" ,rust-bootstrap) - ("cargo-bootstrap" ,rust-bootstrap "cargo") + ("rustc-bootstrap" ,mrustc) + ("cargo-bootstrap" ,mrustc "cargo") ("pkg-config" ,pkg-config) ; For "cargo" ("which" ,which))) (inputs @@ -289,110 +498,6 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define* (rust-bootstrapped-package base-rust version checksum - #:key (patches '())) - "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST." - (package - (inherit base-rust) - (version version) - (source - (rust-source version checksum #:patches patches)) - (native-inputs - (alist-replace "cargo-bootstrap" (list base-rust "cargo") - (alist-replace "rustc-bootstrap" (list base-rust) - (package-native-inputs base-rust)))))) - -(define-public mrustc - (let ((rustc-version "1.19.0")) - (package - (name "mrustc") - (version "0.8.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/thepowersgang/mrustc.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i")))) - (outputs '("out" "cargo")) - (build-system gnu-build-system) - (inputs - `(("llvm" ,llvm-3.9.1))) - (native-inputs - `(("bison" ,bison) - ("flex" ,flex) - ;; Required for the libstd sources. - ("rustc" - ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) - (arguments - `(#:tests? #f - #:make-flags (list (string-append "LLVM_CONFIG=" - (assoc-ref %build-inputs "llvm") - "/bin/llvm-config")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-date - (lambda _ - (substitute* "Makefile" - (("shell date") "shell date -d @1")) - #t)) - (add-after 'patch-date 'unpack-target-compiler - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "minicargo.mk" - ;; Don't try to build LLVM. - (("^[$][(]LLVM_CONFIG[)]:") "xxx:") - ;; Build for the correct target architecture. - (("^RUSTC_TARGET := x86_64-unknown-linux-gnu") - (string-append "RUSTC_TARGET := " - ,(or (%current-target-system) - (nix-system->gnu-triplet-for-rust))))) - (invoke "tar" "xf" (assoc-ref inputs "rustc")) - (chdir "rustc-1.19.0-src") - (invoke "patch" "-p0" "../rust_src.patch") - (chdir "..") - #t)) - (replace 'configure - (lambda* (#:key inputs #:allow-other-keys) - (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) - #t)) - (add-after 'build 'build-minicargo - (lambda _ - (for-each (lambda (target) - (invoke "make" "-f" "minicargo.mk" target)) - '("output/libstd.hir" "output/libpanic_unwind.hir" - "output/libproc_macro.hir" "output/libtest.hir")) - ;; Technically the above already does it - but we want to be clear. - (invoke "make" "-C" "tools/minicargo"))) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (tools-bin (string-append out "/tools/bin")) - (cargo-out (assoc-ref outputs "cargo")) - (cargo-bin (string-append cargo-out "/bin")) - (lib (string-append out "/lib")) - (lib/rust (string-append lib "/mrust")) - (gcc (assoc-ref inputs "gcc"))) - ;; These files are not reproducible. - (for-each delete-file (find-files "output" "\\.txt$")) - (mkdir-p lib) - (copy-recursively "output" lib/rust) - (mkdir-p bin) - (mkdir-p tools-bin) - (install-file "bin/mrustc" bin) - ;; minicargo uses relative paths to resolve mrustc. - (install-file "tools/bin/minicargo" tools-bin) - (install-file "tools/bin/minicargo" cargo-bin) - #t)))))) - (synopsis "Compiler for the Rust progamming language") - (description "Rust is a systems programming language that provides memory -safety and thread safety guarantees.") - (home-page "https://github.com/thepowersgang/mrustc") - ;; Dual licensed. - (license (list license:asl2.0 license:expat))))) - (define-public rust-1.23 (package (inherit rust-1.19) @@ -400,6 +505,18 @@ safety and thread safety guarantees.") (version "1.23.0") (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l")) (outputs '("out" "doc" "cargo")) + (native-inputs + `(("bison" ,bison) ; For the tests + ("cmake" ,cmake) + ("flex" ,flex) ; For the tests + ("gdb" ,gdb) ; For the tests + ("git" ,git) + ("procps" ,procps) ; For the tests + ("python-2" ,python-2) + ("rustc-bootstrap" ,rust-bootstrap) + ("cargo-bootstrap" ,rust-bootstrap "cargo") + ("pkg-config" ,pkg-config) ; For "cargo" + ("which" ,which))) (arguments (substitute-keyword-arguments (package-arguments rust-1.19) ((#:phases phases) @@ -410,6 +527,8 @@ safety and thread safety guarantees.") (substitute* "src/binaryen/CMakeLists.txt" (("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") "")) #t)) + ;; TODO: Revisit this and find out whether that's needed after all. + (delete 'patch-cargo-tomls) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 16b9470e7c..a6d6ee30cd 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -150,14 +150,14 @@ anywhere.") (define-public samba (package (name "samba") - (version "4.8.4") + (version "4.8.5") (source (origin (method url-fetch) (uri (string-append "https://download.samba.org/pub/samba/stable/" "samba-" version ".tar.gz")) (sha256 (base32 - "01jlk8xlawfp3yyhi5migcd1fy7dkavbh56in444m281kqa4s17m")))) + "0mailvhjsma19k6b6zjl02z9n2hbbyfybvicjfw2hh9d4sqyd3p5")))) (build-system gnu-build-system) (arguments `(#:phases @@ -341,14 +341,14 @@ many event types, including timers, signals, and the classic file descriptor eve (define-public ldb (package (name "ldb") - (version "1.3.3") + (version "1.3.6") (source (origin (method url-fetch) (uri (string-append "https://www.samba.org/ftp/ldb/ldb-" version ".tar.gz")) (sha256 (base32 - "14gsrm7dvyjpbpnc60z75j6fz2p187abm2h353lq95kx2bv70c1b")) + "16lkz3gyvsm9als1wyimsl573hclr72xy6454mshwjanncs33lji")) (modules '((guix build utils))) (snippet '(begin @@ -417,7 +417,8 @@ key-value pair databases and a real LDAP database.") (("/usr/include/crypt\\.h") (string-append libc "/include/crypt.h")) (("/usr/include/pcap-bpf.h") - (string-append libpcap "/include/pcap-bpf.h"))))))))) + (string-append libpcap "/include/pcap-bpf.h"))) + #t)))))) (inputs `(("libpcap" ,libpcap))) (synopsis "Implementation of the Point-to-Point Protocol") diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 66cacff12f..ebb99e84f0 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -427,6 +427,7 @@ TCP, not the SSH protocol.") (uri (string-append "https://matt.ucc.asn.au/" name "/releases/" name "-" version ".tar.bz2")) + (patches (search-patches "dropbear-CVE-2018-15599.patch")) (sha256 (base32 "0rgavbzw7jrs5wslxm0dnwx2m409yzxd9hazd92r7kx8xikr3yzj")))) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 5c01a4ae06..64c331d28c 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -2455,13 +2455,13 @@ disk (or a connection).") (define-public r-plotrix (package (name "r-plotrix") - (version "3.7-2") + (version "3.7-3") (source (origin (method url-fetch) (uri (cran-uri "plotrix" version)) (sha256 (base32 - "0hx3xv94gzlyy7ny5k4mzs7w1798h1zka175m5bkzc524493cm88")))) + "18702y1gbyis56mh219z5ww0nrkh6qx7bgqv3khyn80g2giwk7cf")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/plotrix") (synopsis "Various plotting functions") @@ -5172,14 +5172,14 @@ Companion to Applied Regression, Third Edition, Sage.") (define-public r-car (package (name "r-car") - (version "3.0-1") + (version "3.0-2") (source (origin (method url-fetch) (uri (cran-uri "car" version)) (sha256 (base32 - "0rdk7hgahs38j6yv861i31wpmsmyvksxcv8jarvvcjl60whizhb2")))) + "0l3wyc9ia0ypcbap2p39slazfpbl84mjzydqvpsywrzdiyxajnfz")))) (build-system r-build-system) (propagated-inputs `(("r-abind" ,r-abind) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 02c12c9446..f638c6094c 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -122,7 +122,7 @@ in intelligent transportation networks.") (define-public p11-kit (package (name "p11-kit") - (version "0.23.13") + (version "0.23.14") (source (origin (method url-fetch) @@ -130,7 +130,7 @@ in intelligent transportation networks.") "download/" version "/p11-kit-" version ".tar.gz")) (sha256 (base32 - "1w92k6p4bhg8p24igfb6ifc6vixr2zdjh3x6gjhsphy778z40rda")))) + "0w0dkq9388grbbn4bv2p55vy1j51f7nd9hzlc9gz4fbm4dnzmf8w")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 6825cd7d2d..3e074e6c3f 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2217,7 +2217,8 @@ making @dfn{screencasts}.") ("jack" ,jack-1) ("libxi" ,libxi) ("pulseaudio" ,pulseaudio) - ("qt" ,qt))) + ("qtbase" ,qtbase) + ("qtx11extras" ,qtx11extras))) (native-inputs `(("pkg-config" ,pkg-config))) (arguments `(#:configure-flags diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index f3412c275e..001644c195 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> -;;; Copyright © 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> @@ -4275,7 +4275,7 @@ tools they trust (e.g. wget).") (define netsurf-buildsystem (package (name "netsurf-buildsystem") - (version "1.6") + (version "1.7") (source (origin (method url-fetch) @@ -4283,7 +4283,7 @@ tools they trust (e.g. wget).") "buildsystem-" version ".tar.gz")) (sha256 (base32 - "0p5k708lcq8dip9xxck6hml32bjrbyipprm22bbsvdnsc0pqm71x")))) + "1q23aaycv35ma5471l1gxib8lfq2s9kprrkaqgfc926d04rlbmhw")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (arguments @@ -4314,7 +4314,7 @@ libraries.") (define-public libparserutils (package (name "libparserutils") - (version "0.2.3") + (version "0.2.4") (source (origin (method url-fetch) @@ -4322,7 +4322,7 @@ libraries.") name "-" version "-src.tar.gz")) (sha256 (base32 - "01gzlsabgl6x0icd8758d9jqs8rrf9574bdkjainn04w3fs3znf5")))) + "1n2794y2l0c8nv8z2pxwfnbn882987ifmxjv60zdxkhcndhswarj")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem) @@ -4339,7 +4339,7 @@ C. It is developed as part of the NetSurf project.") (define-public hubbub (package (name "hubbub") - (version "0.3.4") + (version "0.3.5") (source (origin (method url-fetch) @@ -4347,7 +4347,7 @@ C. It is developed as part of the NetSurf project.") "lib" name "-" version "-src.tar.gz")) (sha256 (base32 - "1shi4hv8drn9zy8f2f6yhnz2dqnpg5jkybvqhzggfjx1q35fbxz3")) + "13yq1k96a7972x4r71i9bcsz9yiglj0yx7lj0ziq5r94w5my70ma")) (patches (search-patches "hubbub-sort-entities.patch")))) (build-system gnu-build-system) (native-inputs @@ -4453,7 +4453,7 @@ commenting.") (define-public libwapcaplet (package (name "libwapcaplet") - (version "0.4.0") + (version "0.4.1") (source (origin (method url-fetch) @@ -4461,7 +4461,7 @@ commenting.") name "-" version "-src.tar.gz")) (sha256 (base32 - "15yr0pl6qa6biy36qkmd949ydbjzpqiaccpx3sprh4jknabsk1vv")))) + "134pljlm8kby1yy49826f0ixnpig8iqak6xpyl3aivagnsjnxzy8")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem) @@ -4479,7 +4479,7 @@ developed as part of the Netsurf project.") (define-public libcss (package (name "libcss") - (version "0.7.0") + (version "0.8.0") (source (origin (method url-fetch) @@ -4487,7 +4487,7 @@ developed as part of the Netsurf project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "16mns3h8vj7iw8myvgnw58q84irvbjlvfkxh8mdw6fbkjvaa7cnz")))) + "0pxdqbxn6brj03nv57bsvac5n70k4scn3r5msaw0jgn2k06lk81m")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem) @@ -4507,7 +4507,7 @@ written in C. It is developed as part of the NetSurf project.") (define-public libdom (package (name "libdom") - (version "0.3.2") + (version "0.3.3") (source (origin (method url-fetch) @@ -4515,7 +4515,7 @@ written in C. It is developed as part of the NetSurf project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "1zb7x2qwm6p11lph6j2vcyp4a0a8i1klkqilnk5vb4qmlzzpcv7i")))) + "1919757mdl3gii2pl6kzm8b1cal0h06r5nqd2y0kny6hc5yrhsp0")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem) @@ -4543,7 +4543,7 @@ developed as part of the NetSurf project.") (define-public libsvgtiny (package (name "libsvgtiny") - (version "0.1.6") + (version "0.1.7") (source (origin (method url-fetch) @@ -4551,7 +4551,7 @@ developed as part of the NetSurf project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "12ppy2r7m21ykrjgbf067cgi6dn48fkj7i4b7m64xl4dc13y0ah6")))) + "10bpkmvfpydj74im3r6kqm9vnvgib6afy0alx71q5n0w5yawy39c")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem) @@ -4574,7 +4574,7 @@ project.") (define-public libnsbmp (package (name "libnsbmp") - (version "0.1.4") + (version "0.1.5") (source (origin (method url-fetch) @@ -4582,7 +4582,7 @@ project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "0y4a0gn4l6lq4z9183wix0mdsgalqyw24k19k8jr8sz4h3lb7jrb")))) + "0lib2m07d1i0k80m4blkwnj0g7rha4jbm5vrgd0wwbkyfa0hvk35")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) @@ -4597,7 +4597,7 @@ written in C. It is developed as part of the NetSurf project.") (define-public libnsgif (package (name "libnsgif") - (version "0.2.0") + (version "0.2.1") (source (origin (method url-fetch) @@ -4605,7 +4605,7 @@ written in C. It is developed as part of the NetSurf project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "1phwf0m24m6nd7096fw14hanl4f8gr9bcppi834lbik04agxk38a")))) + "0jwshypgmx16xlsbx3d8njk8a5khazlplca5mxd3rdbhrlsabbly")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) @@ -4620,7 +4620,7 @@ C. It is developed as part of the NetSurf project.") (define-public libnsutils (package (name "libnsutils") - (version "0.0.3") + (version "0.0.5") (source (origin (method url-fetch) @@ -4628,7 +4628,7 @@ C. It is developed as part of the NetSurf project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "0wrxn4rcn7xrfnkmf60jafqn3n1kicgsdpnakd821q56bmqvzf0m")))) + "09w1rixps1iiq6wirjwxmd6h87llvjzvw565rahjb3rlyhcplfqf")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) @@ -4643,7 +4643,7 @@ developed as part of the NetSurf project.") (define-public libnspsl (package (name "libnspsl") - (version "0.1.2") + (version "0.1.3") (source (origin (method url-fetch) @@ -4651,7 +4651,7 @@ developed as part of the NetSurf project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "0wim5hwzwrfrvvap096whf79m2mnfivbqhqlh03ci9d89xb1w0y9")))) + "1rsk1k2a495axxgv8060s0p1phhhcxrv75252kllbkvr8id5kqld")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem))) @@ -4666,7 +4666,7 @@ Public Suffix List. It is developed as part of the NetSurf project.") (define-public nsgenbind (package (name "nsgenbind") - (version "0.5") + (version "0.6") (source (origin (method url-fetch) @@ -4674,7 +4674,7 @@ Public Suffix List. It is developed as part of the NetSurf project.") name "-" version "-src.tar.gz")) (sha256 (base32 - "1iwjpdaan0njlhb9ir6a2q5vpxfmkqfldkvnqszqdz50b44vd1jv")))) + "0v1cb1rz5fix9ql31nzmglj7sybya6d12b2fkaypm1avcca59xwj")))) (build-system gnu-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem) @@ -4694,7 +4694,7 @@ w3c webidl files and a binding configuration file.") (define-public netsurf (package (name "netsurf") - (version "3.7") + (version "3.8") (source (origin (method url-fetch) @@ -4702,10 +4702,11 @@ w3c webidl files and a binding configuration file.") "releases/source/netsurf-" version "-src.tar.gz")) (sha256 (base32 - "05kynfzzwd4fc03vbqdjpghh5xnk2yrh43w7vikak89vla30mhpg")) + "0hjm1h4m1i913y4mhkl7yqdifn8k70fwi58zdh6faypawzryc3m0")) (patches (search-patches "netsurf-system-utf8proc.patch" "netsurf-y2038-tests.patch" - "netsurf-longer-test-timeout.patch")))) + "netsurf-longer-test-timeout.patch" + "netsurf-message-timestamp.patch")))) (build-system glib-or-gtk-build-system) (native-inputs `(("netsurf-buildsystem" ,netsurf-buildsystem) diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index 9c1257b2a1..b818a3ccb5 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -225,7 +225,7 @@ integrate Windows applications into your desktop.") (define-public wine-staging-patchset-data (package (name "wine-staging-patchset-data") - (version "3.14") + (version "3.15") (source (origin (method git-fetch) @@ -235,7 +235,7 @@ integrate Windows applications into your desktop.") (file-name (git-file-name name version)) (sha256 (base32 - "0h6gck0p92hin0m13q1hnlfnqs4vy474w66ppinvqms2zn3vibgi")))) + "1rgbx4qnxaarkq5n8nvj57q0rhxcqbwm5897ws962fgxh6zymg9n")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -281,7 +281,7 @@ integrate Windows applications into your desktop.") (file-name (string-append name "-" version ".tar.xz")) (sha256 (base32 - "01dhn3a6k3dwnrbz4bxvszhh5sxwy6s89y459g805hjmq8s6d2a7")))) + "07mmd8r70ciqrxzdg2m2mg34kcnb43dk9nw1ljm8jbcznsawv8ic")))) (inputs `(("autoconf" ,autoconf) ; for autoreconf ("gtk+" ,gtk+) ("libva" ,libva) diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index 2c57a36b84..16bd039f59 100644 --- a/gnu/services/dns.scm +++ b/gnu/services/dns.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,7 +46,10 @@ zone-entry dnsmasq-service-type - dnsmasq-configuration)) + dnsmasq-configuration + + ddclient-service-type + ddclient-configuration)) ;;; ;;; Knot DNS. @@ -670,3 +674,165 @@ (compose list dnsmasq-shepherd-service)))) (default-value (dnsmasq-configuration)) (description "Run the dnsmasq DNS server."))) + + +;;; +;;; ddclient +;;; + +(define (uglify-field-name field-name) + (string-delete #\? (symbol->string field-name))) + +(define (serialize-field field-name val) + (format #t "~a=~a\n" (uglify-field-name field-name) val)) + +(define (serialize-boolean field-name val) + (serialize-field field-name (if val "yes" "no"))) + +(define (serialize-integer field-name val) + (serialize-field field-name (number->string val))) + +(define (serialize-string field-name val) + (if (and (string? val) (string=? val "")) + "" + (serialize-field field-name val))) + +(define (serialize-list field-name val) + (if (null? val) "" (serialize-field field-name (string-join val)))) + +(define (serialize-extra-options extra-options) + (string-join extra-options "\n" 'suffix)) + +(define-configuration ddclient-configuration + (ddclient + (package ddclient) + "The ddclient package.") + (daemon + (integer 300) + "The period after which ddclient will retry to check IP and domain name.") + (syslog + (boolean #t) + "Use syslog for the output.") + (mail + (string "root") + "Mail to user.") + (mail-failure + (string "root") + "Mail failed update to user.") + (pid + (string "/var/run/ddclient/ddclient.pid") + "The ddclient PID file.") + (ssl + (boolean #t) + "Enable SSL support.") + (user + (string "ddclient") + "Specifies the user name or ID that is used when running ddclient +program.") + (group + (string "ddclient") + "Group of the user who will run the ddclient program.") + (secret-file + (string "/etc/ddclient/secrets.conf") + "Secret file which will be appended to @file{ddclient.conf} file. This +file contains credentials for use by ddclient. You are expected to create it +manually.") + (extra-options + (list '()) + "Extra options will be appended to @file{ddclient.conf} file.")) + +(define (ddclient-account config) + "Return the user accounts and user groups for CONFIG." + (let ((ddclient-user (ddclient-configuration-user config)) + (ddclient-group (ddclient-configuration-group config))) + (list (user-group + (name ddclient-group) + (system? #t)) + (user-account + (name ddclient-user) + (system? #t) + (group ddclient-group) + (comment "ddclientd privilege separation user") + (home-directory (string-append "/var/run/" ddclient-user)))))) + +(define (ddclient-activation config) + "Return the activation GEXP for CONFIG." + (with-imported-modules '((guix build utils) + (ice-9 rdelim)) + #~(begin + (use-modules (guix build utils) + (ice-9 rdelim)) + (let ((ddclient-user + #$(passwd:uid (getpw (ddclient-configuration-user config)))) + (ddclient-group + #$(passwd:gid (getpw (ddclient-configuration-group config)))) + (ddclient-secret-file + #$(ddclient-configuration-secret-file config))) + ;; 'ddclient' complains about ddclient.conf file permissions, which + ;; rules out /gnu/store. Thus we copy the ddclient.conf to /etc. + (for-each (lambda (dir) + (mkdir-p dir) + (chmod dir #o700) + (chown dir ddclient-user ddclient-group)) + '("/var/cache/ddclient" "/var/run/ddclient" + "/etc/ddclient")) + (with-output-to-file "/etc/ddclient/ddclient.conf" + (lambda () + (display + (string-append + "# Generated by 'ddclient-service'.\n\n" + #$(with-output-to-string + (lambda () + (serialize-configuration config + ddclient-configuration-fields))) + (if (string-null? ddclient-secret-file) + "" + (format #f "\n\n# Appended from '~a'.\n\n~a" + ddclient-secret-file + (with-input-from-file ddclient-secret-file + read-string))))))) + (chmod "/etc/ddclient/ddclient.conf" #o600) + (chown "/etc/ddclient/ddclient.conf" + ddclient-user ddclient-group))))) + +(define (ddclient-shepherd-service config) + "Return a <shepherd-service> for ddclient with CONFIG." + (let ((ddclient (ddclient-configuration-ddclient config)) + (ddclient-pid (ddclient-configuration-pid config)) + (ddclient-user (ddclient-configuration-user config)) + (ddclient-group (ddclient-configuration-group config))) + (list (shepherd-service + (provision '(ddclient)) + (documentation "Run ddclient daemon.") + (start #~(make-forkexec-constructor + (list #$(file-append ddclient "/bin/ddclient") + "-foreground" + "-file" "/etc/ddclient/ddclient.conf") + #:pid-file #$ddclient-pid + #:environment-variables + (list "SSL_CERT_DIR=/run/current-system/profile\ +/etc/ssl/certs" + "SSL_CERT_FILE=/run/current-system/profile\ +/etc/ssl/certs/ca-certificates.crt") + #:user #$ddclient-user + #:group #$ddclient-group)) + (stop #~(make-kill-destructor)))))) + +(define ddclient-service-type + (service-type + (name 'ddclient) + (extensions + (list (service-extension account-service-type + ddclient-account) + (service-extension shepherd-root-service-type + ddclient-shepherd-service) + (service-extension activation-service-type + ddclient-activation))) + (default-value (ddclient-configuration)) + (description "Configure address updating utility for dynamic DNS services, +ddclient."))) + +(define (generate-ddclient-documentation) + (generate-documentation + `((ddclient-configuration ,ddclient-configuration-fields)) + 'ddclient-configuration)) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index d5d0cf9d1d..b6b5ee3fec 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -576,7 +577,9 @@ demand."))) (config-file tor-configuration-config-file (default (plain-file "empty" ""))) (hidden-services tor-configuration-hidden-services - (default '()))) + (default '())) + (socks-socket-type tor-configuration-socks-socket-type ; 'tcp or 'unix + (default 'tcp))) (define %tor-accounts ;; User account and groups for Tor. @@ -598,7 +601,7 @@ demand."))) (define (tor-configuration->torrc config) "Return a 'torrc' file for CONFIG." (match config - (($ <tor-configuration> tor config-file services) + (($ <tor-configuration> tor config-file services socks-socket-type) (computed-file "torrc" (with-imported-modules '((guix build utils)) @@ -612,7 +615,12 @@ demand."))) ### These lines were generated from your system configuration: User tor DataDirectory /var/lib/tor +PidFile /var/run/tor/tor.pid Log notice syslog\n" port) + (when (eq? 'unix '#$socks-socket-type) + (display "\ +SocksPort unix:/var/run/tor/socks-sock +UnixSocksGroupWritable 1\n" port)) (for-each (match-lambda ((service (ports hosts) ...) @@ -639,7 +647,7 @@ HiddenServicePort ~a ~a~%" #t)))))))) (define (tor-shepherd-service config) - "Return a <shepherd-service> running TOR." + "Return a <shepherd-service> running Tor." (match config (($ <tor-configuration> tor) (let ((torrc (tor-configuration->torrc config))) @@ -665,12 +673,17 @@ HiddenServicePort ~a ~a~%" (writable? #t)) (file-system-mapping (source "/dev/log") ;for syslog - (target source))))) + (target source)) + (file-system-mapping + (source "/var/run/tor") + (target source) + (writable? #t))) + #:pid-file "/var/run/tor/tor.pid")) (stop #~(make-kill-destructor)) (documentation "Run the Tor anonymous network overlay.")))))))) -(define (tor-hidden-service-activation config) - "Return the activation gexp for SERVICES, a list of hidden services." +(define (tor-activation config) + "Set up directories for Tor and its hidden services, if any." #~(begin (use-modules (guix build utils)) @@ -686,6 +699,15 @@ HiddenServicePort ~a ~a~%" ;; The daemon bails out if we give wider permissions. (chmod directory #o700))) + ;; Allow Tor to write its PID file. + (mkdir-p "/var/run/tor") + (chown "/var/run/tor" (passwd:uid %user) (passwd:gid %user)) + ;; Set the group permissions to rw so that if the system administrator + ;; has specified UnixSocksGroupWritable=1 in their torrc file, members + ;; of the "tor" group will be able to use the SOCKS socket. + (chmod "/var/run/tor" #o750) + + ;; Allow Tor to access the hidden services' directories. (mkdir-p "/var/lib/tor") (chown "/var/lib/tor" (passwd:uid %user) (passwd:gid %user)) (chmod "/var/lib/tor" #o700) @@ -705,7 +727,7 @@ HiddenServicePort ~a ~a~%" (service-extension account-service-type (const %tor-accounts)) (service-extension activation-service-type - tor-hidden-service-activation))) + tor-activation))) ;; This can be extended with hidden services. (compose concatenate) diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index dd96ad6aec..056602248f 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> @@ -319,6 +319,10 @@ The other options should be self-descriptive." (accepted-environment openssh-configuration-accepted-environment (default '())) + ;; symbol + (log-level openssh-configuration-log-level + (default 'info)) + ;; list of user-name/file-like tuples (authorized-keys openssh-authorized-keys (default '())) @@ -451,6 +455,10 @@ of user-name/file-like tuples." (format port "PrintLastLog ~a\n" #$(if (openssh-configuration-print-last-log? config) "yes" "no")) + (format port "LogLevel ~a\n" + #$(string-upcase + (symbol->string + (openssh-configuration-log-level config)))) ;; Add '/etc/authorized_keys.d/%u', which we populate. (format port "AuthorizedKeysFile \ diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 97976509b6..467656444e 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -599,19 +599,33 @@ of index files." <nginx-configuration> (nginx file run-directory) (let* ((nginx-binary (file-append nginx "/sbin/nginx")) + (pid-file (in-vicinity run-directory "pid")) (nginx-action (lambda args #~(lambda _ (invoke #$nginx-binary "-c" #$(or file (default-nginx-config config)) - #$@args))))) + #$@args) + (match '#$args + (("-s" . _) #t) + (_ + (let loop ((duration 0)) + ;; https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864/comments/7 + (sleep duration) + (if (file-exists? #$pid-file) + (let ((pid (call-with-input-file #$pid-file read))) + ;; it could be #<eof> + (if (integer? pid) pid (loop 1))) + (loop 1))))))))) ;; TODO: Add 'reload' action. (list (shepherd-service (provision '(nginx)) (documentation "Run the nginx daemon.") (requirement '(user-processes loopback)) + (modules `((ice-9 match) + ,@%default-modules)) (start (nginx-action "-p" run-directory)) (stop (nginx-action "-s" "stop"))))))) diff --git a/gnu/tests.scm b/gnu/tests.scm index 5d4a4f8062..9e8eed7d95 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm @@ -22,6 +22,7 @@ #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix records) + #:use-module ((guix ui) #:select (warn-about-load-error)) #:use-module (gnu bootloader) #:use-module (gnu bootloader grub) #:use-module (gnu system) @@ -258,7 +259,8 @@ the system under test." (define (test-modules) "Return the list of modules that define system tests." (scheme-modules (dirname (search-path %load-path "guix.scm")) - "gnu/tests")) + "gnu/tests" + #:warn warn-about-load-error)) (define (fold-system-tests proc seed) "Invoke PROC on each system test, passing it the test and the previous diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm index 323679e7fc..381c5caf14 100644 --- a/gnu/tests/networking.scm +++ b/gnu/tests/networking.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,7 +31,7 @@ #:use-module (gnu packages bash) #:use-module (gnu packages networking) #:use-module (gnu services shepherd) - #:export (%test-inetd %test-openvswitch %test-dhcpd)) + #:export (%test-inetd %test-openvswitch %test-dhcpd %test-tor)) (define %inetd-os ;; Operating system with 2 inetd services. @@ -339,3 +340,97 @@ subnet 192.168.1.0 netmask 255.255.255.0 { (name "dhcpd") (description "Test a running DHCP daemon configuration.") (value (run-dhcpd-test)))) + + +;;; +;;; Services related to Tor +;;; + +(define %tor-os + (simple-operating-system + (tor-service))) + +(define %tor-os/unix-socks-socket + (simple-operating-system + (service tor-service-type + (tor-configuration + (socks-socket-type 'unix))))) + +(define (run-tor-test) + (define os + (marionette-operating-system %tor-os + #:imported-modules '((gnu services herd)) + #:requirements '(tor))) + + (define os/unix-socks-socket + (marionette-operating-system %tor-os/unix-socks-socket + #:imported-modules '((gnu services herd)) + #:requirements '(tor))) + + (define test + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules (gnu build marionette) + (ice-9 popen) + (ice-9 rdelim) + (srfi srfi-64)) + + (define marionette + (make-marionette (list #$(virtual-machine os)))) + + (define (tor-is-alive? marionette) + (marionette-eval + '(begin + (use-modules (gnu services herd) + (srfi srfi-1)) + (live-service-running + (find (lambda (live) + (memq 'tor + (live-service-provision live))) + (current-services)))) + marionette)) + + (mkdir #$output) + (chdir #$output) + + (test-begin "tor") + + ;; Test the usual Tor service. + + (test-assert "tor is alive" + (tor-is-alive? marionette)) + + (test-assert "tor is listening" + (let ((default-port 9050)) + (wait-for-tcp-port default-port marionette))) + + ;; Don't run two VMs at once. + (marionette-control "quit" marionette) + + ;; Test the Tor service using a SOCKS socket. + + (let* ((socket-directory "/tmp/more-sockets") + (_ (mkdir socket-directory)) + (marionette/unix-socks-socket + (make-marionette + (list #$(virtual-machine os/unix-socks-socket)) + ;; We can't use the same socket directory as the first + ;; marionette. + #:socket-directory socket-directory))) + (test-assert "tor is alive, even when using a SOCKS socket" + (tor-is-alive? marionette/unix-socks-socket)) + + (test-assert "tor is listening, even when using a SOCKS socket" + (wait-for-unix-socket "/var/run/tor/socks-sock" + marionette/unix-socks-socket))) + + (test-end) + (exit (= (test-runner-fail-count (test-runner-current)) 0))))) + + (gexp->derivation "tor-test" test)) + +(define %test-tor + (system-test + (name "tor") + (description "Test a running Tor daemon configuration.") + (value (run-tor-test)))) diff --git a/guix/channels.scm b/guix/channels.scm new file mode 100644 index 0000000000..ec3e05eaf5 --- /dev/null +++ b/guix/channels.scm @@ -0,0 +1,292 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix channels) + #:use-module (guix git) + #:use-module (guix records) + #:use-module (guix gexp) + #:use-module (guix discovery) + #:use-module (guix monads) + #:use-module (guix profiles) + #:use-module (guix derivations) + #:use-module (guix store) + #:use-module (guix i18n) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-11) + #:autoload (guix self) (whole-package) + #:use-module (ice-9 match) + #:export (channel + channel? + channel-name + channel-url + channel-branch + channel-commit + channel-location + + %default-channels + + channel-instance? + channel-instance-channel + channel-instance-commit + channel-instance-checkout + + latest-channel-instances + channel-instance-derivations + latest-channel-derivations + channel-instances->manifest)) + +;;; Commentary: +;;; +;;; This module implements "channels." A channel is usually a source of +;;; package definitions. There's a special channel, the 'guix' channel, that +;;; provides all of Guix, including its commands and its documentation. +;;; User-defined channels are expected to typically provide a bunch of .scm +;;; files meant to be added to the '%package-search-path'. +;;; +;;; This module provides tools to fetch and update channels from a Git +;;; repository and to build them. +;;; +;;; Code: + +(define-record-type* <channel> channel make-channel + channel? + (name channel-name) + (url channel-url) + (branch channel-branch (default "master")) + (commit channel-commit (default #f)) + (location channel-location + (default (current-source-location)) (innate))) +;; TODO: Add a way to express dependencies among channels. + +(define %default-channels + ;; Default list of channels. + (list (channel + (name 'guix) + (branch "origin/master") + (url "https://git.savannah.gnu.org/git/guix.git")))) + +(define (guix-channel? channel) + "Return true if CHANNEL is the 'guix' channel." + (eq? 'guix (channel-name channel))) + +(define-record-type <channel-instance> + (channel-instance channel commit checkout) + channel-instance? + (channel channel-instance-channel) + (commit channel-instance-commit) + (checkout channel-instance-checkout)) + +(define (channel-reference channel) + "Return the \"reference\" for CHANNEL, an sexp suitable for +'latest-repository-commit'." + (match (channel-commit channel) + (#f `(branch . ,(channel-branch channel))) + (commit `(commit . ,(channel-commit channel))))) + +(define (latest-channel-instances store channels) + "Return a list of channel instances corresponding to the latest checkouts of +CHANNELS." + (map (lambda (channel) + (format (current-error-port) + (G_ "Updating channel '~a' from Git repository at '~a'...~%") + (channel-name channel) + (channel-url channel)) + (let-values (((checkout commit) + (latest-repository-commit store (channel-url channel) + #:ref (channel-reference + channel)))) + (channel-instance channel commit checkout))) + channels)) + +(define %self-build-file + ;; The file containing code to build Guix. This serves the same purpose as + ;; a makefile, and, similarly, is intended to always keep this name. + "build-aux/build-self.scm") + +(define %pull-version + ;; This is the version of the 'guix pull' protocol. It specifies what's + ;; expected from %SELF-BUILD-FILE. The initial version ("0") was when we'd + ;; place a set of compiled Guile modules in ~/.config/guix/latest. + 1) + +(define (standard-module-derivation name source dependencies) + "Return a derivation that builds the Scheme modules in SOURCE and that +depend on DEPENDENCIES, a list of lowerable objects. The assumption is that +SOURCE contains package modules to be added to '%package-module-path'." + (define modules + (scheme-modules* source)) + + ;; FIXME: We should load, say SOURCE/.guix-channel.scm, which would allow + ;; channel publishers to specify things such as the sub-directory where .scm + ;; files live, files to exclude from the channel, preferred substitute URLs, + ;; etc. + (mlet* %store-monad ((compiled + (compiled-modules modules + #:name name + #:module-path (list source) + #:extensions dependencies))) + + (gexp->derivation name + (with-extensions dependencies + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + (let ((go (string-append #$output "/lib/guile/" + (effective-version) + "/site-ccache")) + (scm (string-append #$output + "/share/guile/site/" + (effective-version)))) + (mkdir-p (dirname go)) + (symlink #$compiled go) + (mkdir-p (dirname scm)) + (symlink #$source scm)))))))) + +(define* (build-from-source name source + #:key verbose? commit + (dependencies '())) + "Return a derivation to build Guix from SOURCE, using the self-build script +contained therein. Use COMMIT as the version string." + ;; Running the self-build script makes it easier to update the build + ;; procedure: the self-build script of the Guix-to-be-installed contains the + ;; right dependencies, build procedure, etc., which the Guix-in-use may not + ;; be know. + (define script + (string-append source "/" %self-build-file)) + + (if (file-exists? script) + (let ((build (save-module-excursion + (lambda () + (primitive-load script))))) + ;; BUILD must be a monadic procedure of at least one argument: the + ;; source tree. + ;; + ;; Note: BUILD can return #f if it does not support %PULL-VERSION. In + ;; the future we'll fall back to a previous version of the protocol + ;; when that happens. + (build source #:verbose? verbose? #:version commit + #:pull-version %pull-version)) + + ;; Build a set of modules that extend Guix using the standard method. + (standard-module-derivation name source dependencies))) + +(define* (build-channel-instance instance #:optional (dependencies '())) + "Return, as a monadic value, the derivation for INSTANCE, a channel +instance. DEPENDENCIES is a list of extensions providing Guile modules that +INSTANCE depends on." + (build-from-source (symbol->string + (channel-name (channel-instance-channel instance))) + (channel-instance-checkout instance) + #:commit (channel-instance-commit instance) + #:dependencies dependencies)) + +(define (channel-instance-derivations instances) + "Return the list of derivations to build INSTANCES, in the same order as +INSTANCES." + (define core-instance + ;; The 'guix' channel is treated specially: it's an implicit dependency of + ;; all the other channels. + (find (lambda (instance) + (guix-channel? (channel-instance-channel instance))) + instances)) + + (mlet %store-monad ((core (build-channel-instance core-instance))) + (mapm %store-monad + (lambda (instance) + (if (eq? instance core-instance) + (return core) + (build-channel-instance instance + (list core)))) + instances))) + +(define latest-channel-derivations + (let ((latest-channel-instances (store-lift latest-channel-instances))) + (lambda (channels) + "Return, as a monadic value, the list of derivations for the latest +instances of CHANNELS." + (mlet %store-monad ((instances (latest-channel-instances channels))) + (channel-instance-derivations instances))))) + +(define (whole-package-for-legacy name modules) + "Return a full-blown Guix package for MODULES, a derivation that builds Guix +modules in the old ~/.config/guix/latest style." + (define packages + (resolve-interface '(gnu packages guile))) + + (letrec-syntax ((list (syntax-rules (->) + ((_) + '()) + ((_ (module -> variable) rest ...) + (cons (module-ref (resolve-interface + '(gnu packages module)) + 'variable) + (list rest ...))) + ((_ variable rest ...) + (cons (module-ref packages 'variable) + (list rest ...)))))) + (whole-package name modules + + ;; In the "old style", %SELF-BUILD-FILE would simply return a + ;; derivation that builds modules. We have to infer what the + ;; dependencies of these modules were. + (list guile-json guile-git guile-bytestructures + (ssh -> guile-ssh) (tls -> gnutls))))) + +(define (old-style-guix? drv) + "Return true if DRV corresponds to a ~/.config/guix/latest style of +derivation." + ;; Here we rely on a gross historical fact: that derivations produced by the + ;; "old style" (before commit 8a0d9bc8a3f153159d9e239a151c0fa98f1e12d8, + ;; dated May 30, 2018) did not depend on "guix-command.drv". + (not (find (lambda (input) + (string-suffix? "-guix-command.drv" + (derivation-input-path input))) + (derivation-inputs drv)))) + +(define (channel-instances->manifest instances) + "Return a profile manifest with entries for all of INSTANCES, a list of +channel instances." + (define instance->entry + (match-lambda + ((instance drv) + (let ((commit (channel-instance-commit instance)) + (channel (channel-instance-channel instance))) + (with-monad %store-monad + (return (manifest-entry + (name (symbol->string (channel-name channel))) + (version (string-take commit 7)) + (item (if (guix-channel? channel) + (if (old-style-guix? drv) + (whole-package-for-legacy + (string-append name "-" version) + drv) + drv) + drv)) + (properties + `((source (repository + (version 0) + (url ,(channel-url channel)) + (branch ,(channel-branch channel)) + (commit ,commit)))))))))))) + + (mlet* %store-monad ((derivations (channel-instance-derivations instances)) + (entries (mapm %store-monad instance->entry + (zip instances derivations)))) + (return (manifest entries)))) diff --git a/guix/describe.scm b/guix/describe.scm new file mode 100644 index 0000000000..3122a762fe --- /dev/null +++ b/guix/describe.scm @@ -0,0 +1,73 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix describe) + #:use-module (guix memoization) + #:use-module (guix profiles) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match) + #:export (package-path-entries)) + +;;; Commentary: +;;; +;;; This module provides supporting code to allow a Guix instance to find, at +;;; run time, which profile it's in (profiles created by 'guix pull'). That +;;; allows it to read meta-information about itself (e.g., repository URL and +;;; commit ID) and to find other channels available in the same profile. It's +;;; a bit like ELPA's pkg-info.el. +;;; +;;; Code: + +(define current-profile + (mlambda () + "Return the profile (created by 'guix pull') the calling process lives in, +or #f if this is not applicable." + (match (command-line) + ((program . _) + (and (string-suffix? "/bin/guix" program) + ;; Note: We want to do _lexical dot-dot resolution_. Using ".." + ;; for real would instead take us into the /gnu/store directory + ;; that ~/.config/guix/current/bin points to, whereas we want to + ;; obtain ~/.config/guix/current. + (let ((candidate (dirname (dirname program)))) + (and (file-exists? (string-append candidate "/manifest")) + candidate))))))) + +(define current-profile-entries + (mlambda () + "Return the list of entries in the 'guix pull' profile the calling process +lives in, or #f if this is not applicable." + (match (current-profile) + (#f '()) + (profile + (let ((manifest (profile-manifest profile))) + (manifest-entries manifest)))))) + +(define package-path-entries + (mlambda () + "Return a list of package path entries to be added to the package search +path. These entries are taken from the 'guix pull' profile the calling +process lives in, when applicable." + ;; Filter out Guix itself. + (filter-map (lambda (entry) + (and (not (string=? (manifest-entry-name entry) + "guix")) + (string-append (manifest-entry-item entry) + "/share/guile/site/" + (effective-version)))) + (current-profile-entries)))) diff --git a/guix/discovery.scm b/guix/discovery.scm index 2b627d108e..3fc6e2c9e7 100644 --- a/guix/discovery.scm +++ b/guix/discovery.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +27,7 @@ #:use-module (ice-9 ftw) #:export (scheme-files scheme-modules + scheme-modules* fold-modules all-modules fold-module-public-variables)) @@ -115,6 +116,16 @@ name and the exception key and arguments." (string-append directory "/" sub-directory) directory)))) +(define* (scheme-modules* directory #:optional sub-directory) + "Return the list of module names found under SUB-DIRECTORY in DIRECTORY. +This is a source-only variant that does not try to load files." + (let ((prefix (string-length directory))) + (map (lambda (file) + (file-name->module-name (string-drop file prefix))) + (scheme-files (if sub-directory + (string-append directory "/" sub-directory) + directory))))) + (define* (fold-modules proc init path #:key (warn (const #f))) "Fold over all the Scheme modules present in PATH, a list of directories. Call (PROC MODULE RESULT) for each module that is found." diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm index 3c00f680bf..54301de2e8 100644 --- a/guix/import/hackage.scm +++ b/guix/import/hackage.scm @@ -44,6 +44,7 @@ %hackage-updater guix-package->hackage-name + hackage-name->package-name hackage-fetch hackage-source-url hackage-cabal-url diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index 25560bac46..87b047bdac 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 pretty-print) #:use-module (ice-9 regex) + #:use-module (ice-9 receive) #:use-module ((ice-9 rdelim) #:select (read-line)) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) @@ -36,7 +38,8 @@ #:use-module (guix utils) #:use-module ((guix build utils) #:select ((package-name->name+version - . hyphen-package-name->name+version))) + . hyphen-package-name->name+version) + find-files)) #:use-module (guix import utils) #:use-module ((guix download) #:prefix download:) #:use-module (guix import json) @@ -45,6 +48,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system python) #:export (guix-package->pypi-name + pypi-recursive-import pypi->guix-package %pypi-updater)) @@ -114,9 +118,9 @@ package definition." `((propagated-inputs (,'quasiquote ,package-inputs)))))) (define (guess-requirements source-url wheel-url tarball) - "Given SOURCE-URL, WHEEL-URL and a TARBALL of the package, return a list of -the required packages specified in the requirements.txt file. TARBALL will be -extracted in the current directory, and will be deleted." + "Given SOURCE-URL, WHEEL-URL and a TARBALL of the package, return a list +of the required packages specified in the requirements.txt file. TARBALL will +be extracted in a temporary directory." (define (tarball-directory url) ;; Given the URL of the package's tarball, return the name of the directory @@ -140,8 +144,8 @@ cannot determine package dependencies")) ;; file, remove everything other than the actual name of the required ;; package, and return it. (string-take s - (or (string-index s #\space) - (string-length s)))) + (or (string-index s (lambda (chr) (member chr '(#\space #\> #\= #\<)))) + (string-length s)))) (define (comment? line) ;; Return #t if the given LINE is a comment, #f otherwise. @@ -160,7 +164,7 @@ cannot determine package dependencies")) ((or (string-null? line) (comment? line)) (loop result)) (else - (loop (cons (python->package-name (clean-requirement line)) + (loop (cons (clean-requirement line) result)))))))))) (define (read-wheel-metadata wheel-archive) @@ -180,9 +184,7 @@ cannot determine package dependencies")) (hash-ref (list-ref run_requires 0) "requires") '()))) - (map (lambda (r) - (python->package-name (clean-requirement r))) - requirements))))) + (map clean-requirement requirements))))) (lambda () (delete-file json-file) (rmdir dirname)))))) @@ -197,31 +199,37 @@ cannot determine package dependencies")) (read-wheel-metadata temp)) #f)))) - (define (guess-requirements-from-source) ;; Return the package's requirements by guessing them from the source. (let ((dirname (tarball-directory source-url))) (if (string? dirname) - (let* ((req-file (string-append dirname "/requirements.txt")) - (exit-code (system* "tar" "xf" tarball req-file))) - ;; TODO: support more formats. - (if (zero? exit-code) - (dynamic-wind - (const #t) - (lambda () - (read-requirements req-file)) - (lambda () - (delete-file req-file) - (rmdir dirname))) - (begin - (warning (G_ "'tar xf' failed with exit code ~a\n") - exit-code) - '()))) + (call-with-temporary-directory + (lambda (dir) + (let* ((pypi-name (string-take dirname (string-rindex dirname #\-))) + (req-files (list (string-append dirname "/requirements.txt") + (string-append dirname "/" pypi-name ".egg-info" + "/requires.txt"))) + (exit-codes (map (lambda (file-name) + (parameterize ((current-error-port (%make-void-port "rw+")) + (current-output-port (%make-void-port "rw+"))) + (system* "tar" "xf" tarball "-C" dir file-name))) + req-files))) + ;; Only one of these files needs to exist. + (if (any zero? exit-codes) + (match (find-files dir) + ((file . _) + (read-requirements file)) + (() + (warning (G_ "No requirements file found.\n")))) + (begin + (warning (G_ "Failed to extract requirements files\n")) + '()))))) '()))) ;; First, try to compute the requirements using the wheel, since that is the ;; most reliable option. If a wheel is not provided for this package, try - ;; getting them by reading the "requirements.txt" file from the source. Note + ;; getting them by reading either the "requirements.txt" file or the + ;; "requires.txt" from the egg-info directory from the source tarball. Note ;; that "requirements.txt" is not mandatory, so this is likely to fail. (or (guess-requirements-from-wheel) (guess-requirements-from-source))) @@ -229,16 +237,21 @@ cannot determine package dependencies")) (define (compute-inputs source-url wheel-url tarball) "Given the SOURCE-URL of an already downloaded TARBALL, return a list of -name/variable pairs describing the required inputs of this package." - (sort - (map (lambda (input) - (list input (list 'unquote (string->symbol input)))) - (remove (cut string=? "python-argparse" <>) - (guess-requirements source-url wheel-url tarball))) - (lambda args - (match args - (((a _ ...) (b _ ...)) - (string-ci<? a b)))))) +name/variable pairs describing the required inputs of this package. Also +return the unaltered list of upstream dependency names." + (let ((dependencies + (remove (cut string=? "argparse" <>) + (guess-requirements source-url wheel-url tarball)))) + (values (sort + (map (lambda (input) + (let ((guix-name (python->package-name input))) + (list guix-name (list 'unquote (string->symbol guix-name))))) + dependencies) + (lambda args + (match args + (((a _ ...) (b _ ...)) + (string-ci<? a b))))) + dependencies))) (define (make-pypi-sexp name version source-url wheel-url home-page synopsis description license) @@ -247,46 +260,58 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." (call-with-temporary-output-file (lambda (temp port) (and (url-fetch source-url temp) - `(package - (name ,(python->package-name name)) - (version ,version) - (source (origin - (method url-fetch) + (receive (input-package-names upstream-dependency-names) + (compute-inputs source-url wheel-url temp) + (values + `(package + (name ,(python->package-name name)) + (version ,version) + (source (origin + (method url-fetch) - ;; Sometimes 'pypi-uri' doesn't quite work due to mixed - ;; cases in NAME, for instance, as is the case with - ;; "uwsgi". In that case, fall back to a full URL. - (uri (pypi-uri ,(string-downcase name) version)) - (sha256 - (base32 - ,(guix-hash-url temp))))) - (build-system python-build-system) - ,@(maybe-inputs (compute-inputs source-url wheel-url temp)) - (home-page ,home-page) - (synopsis ,synopsis) - (description ,description) - (license ,(license->symbol license))))))) + ;; Sometimes 'pypi-uri' doesn't quite work due to mixed + ;; cases in NAME, for instance, as is the case with + ;; "uwsgi". In that case, fall back to a full URL. + (uri (pypi-uri ,(string-downcase name) version)) + (sha256 + (base32 + ,(guix-hash-url temp))))) + (build-system python-build-system) + ,@(maybe-inputs input-package-names) + (home-page ,home-page) + (synopsis ,synopsis) + (description ,description) + (license ,(license->symbol license))) + upstream-dependency-names)))))) -(define (pypi->guix-package package-name) - "Fetch the metadata for PACKAGE-NAME from pypi.org, and return the +(define pypi->guix-package + (memoize + (lambda* (package-name) + "Fetch the metadata for PACKAGE-NAME from pypi.org, and return the `package' s-expression corresponding to that package, or #f on failure." - (let ((package (pypi-fetch package-name))) - (and package - (guard (c ((missing-source-error? c) - (let ((package (missing-source-error-package c))) - (leave (G_ "no source release for pypi package ~a ~a~%") - (assoc-ref* package "info" "name") - (assoc-ref* package "info" "version"))))) - (let ((name (assoc-ref* package "info" "name")) - (version (assoc-ref* package "info" "version")) - (release (assoc-ref (latest-source-release package) "url")) - (wheel (assoc-ref (latest-wheel-release package) "url")) - (synopsis (assoc-ref* package "info" "summary")) - (description (assoc-ref* package "info" "summary")) - (home-page (assoc-ref* package "info" "home_page")) - (license (string->license (assoc-ref* package "info" "license")))) - (make-pypi-sexp name version release wheel home-page synopsis - description license)))))) + (let ((package (pypi-fetch package-name))) + (and package + (guard (c ((missing-source-error? c) + (let ((package (missing-source-error-package c))) + (leave (G_ "no source release for pypi package ~a ~a~%") + (assoc-ref* package "info" "name") + (assoc-ref* package "info" "version"))))) + (let ((name (assoc-ref* package "info" "name")) + (version (assoc-ref* package "info" "version")) + (release (assoc-ref (latest-source-release package) "url")) + (wheel (assoc-ref (latest-wheel-release package) "url")) + (synopsis (assoc-ref* package "info" "summary")) + (description (assoc-ref* package "info" "summary")) + (home-page (assoc-ref* package "info" "home_page")) + (license (string->license (assoc-ref* package "info" "license")))) + (make-pypi-sexp name version release wheel home-page synopsis + description license)))))))) + +(define (pypi-recursive-import package-name) + (recursive-import package-name #f + #:repo->guix-package (lambda (name repo) + (pypi->guix-package name)) + #:guix-name python->package-name)) (define (string->license str) "Convert the string STR into a license object." diff --git a/guix/import/stackage.scm b/guix/import/stackage.scm index ec93fbced6..afd5d997ae 100644 --- a/guix/import/stackage.scm +++ b/guix/import/stackage.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Federico Beffa <beffa@fbengineering.ch> +;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,10 +26,12 @@ #:use-module (srfi srfi-35) #:use-module (guix import json) #:use-module (guix import hackage) + #:use-module (guix import utils) #:use-module (guix memoization) #:use-module (guix packages) #:use-module (guix upstream) #:export (stackage->guix-package + stackage-recursive-import %stackage-updater)) @@ -45,9 +48,9 @@ (_ #f))) (define (lts-info-packages lts-info) - "Retruns the alist of packages contained in LTS-INFO." + "Returns the alist of packages contained in LTS-INFO." (match lts-info - ((_ ("packages" pkg ...)) pkg) + ((("packages" pkg ...) . _) pkg) (_ '()))) (define (leave-with-message fmt . args) @@ -85,25 +88,33 @@ (define (hackage-name-version name version) (and version (string-append name "@" version))) -(define* (stackage->guix-package package-name ; upstream name - #:key - (include-test-dependencies? #t) - (lts-version "") - (packages-info - (lts-info-packages - (stackage-lts-info-fetch lts-version)))) - "Fetch Cabal file for PACKAGE-NAME from hackage.haskell.org. The retrieved +(define stackage->guix-package + (memoize + (lambda* (package-name ; upstream name + #:key + (include-test-dependencies? #t) + (lts-version "") + (packages-info + (lts-info-packages + (stackage-lts-info-fetch lts-version)))) + "Fetch Cabal file for PACKAGE-NAME from hackage.haskell.org. The retrieved vesion corresponds to the version of PACKAGE-NAME specified in the LTS-VERSION release at stackage.org. Return the `package' S-expression corresponding to that package, or #f on failure. PACKAGES-INFO is the alist with the packages included in the Stackage LTS release." - (let* ((version (lts-package-version packages-info package-name)) - (name-version (hackage-name-version package-name version))) - (if name-version - (hackage->guix-package name-version - #:include-test-dependencies? - include-test-dependencies?) - (leave-with-message "~a: Stackage package not found" package-name)))) + (let* ((version (lts-package-version packages-info package-name)) + (name-version (hackage-name-version package-name version))) + (if name-version + (hackage->guix-package name-version + #:include-test-dependencies? + include-test-dependencies?) + (leave-with-message "~a: Stackage package not found" package-name)))))) + +(define (stackage-recursive-import package-name . args) + (recursive-import package-name #f + #:repo->guix-package (lambda (name repo) + (apply stackage->guix-package (cons name args))) + #:guix-name hackage-name->package-name)) ;;; diff --git a/guix/records.scm b/guix/records.scm index da3ecdaaf8..98f3c8fef0 100644 --- a/guix/records.scm +++ b/guix/records.scm @@ -52,17 +52,6 @@ ((weird _ ...) ;weird! (syntax-violation name "invalid field specifier" #'weird))))) -(define (print-record-abi-mismatch-error port key args - default-printer) - (match args - ((rtd . _) - ;; The source file where this exception is thrown must be recompiled. - (format port "ERROR: ~a: record ABI mismatch; recompilation needed" - rtd)))) - -(set-exception-printer! 'record-abi-mismatch-error - print-record-abi-mismatch-error) - (eval-when (expand load eval) ;; The procedures below are needed both at run time and at expansion time. @@ -81,7 +70,11 @@ interface\" (ABI) for TYPE is equal to COOKIE." (with-syntax ((current-abi (current-abi-identifier type))) #`(unless (eq? current-abi #,cookie) - (throw 'record-abi-mismatch-error #,type))))) + ;; The source file where this exception is thrown must be + ;; recompiled. + (throw 'record-abi-mismatch-error 'abi-check + "~a: record ABI mismatch; recompilation needed" + (list #,type) '()))))) (define-syntax make-syntactic-constructor (syntax-rules () diff --git a/guix/scripts/import/pypi.scm b/guix/scripts/import/pypi.scm index 59a925a3ca..7bd83818ba 100644 --- a/guix/scripts/import/pypi.scm +++ b/guix/scripts/import/pypi.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson <davet@gnu.org> +;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,7 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) + #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-pypi)) @@ -43,6 +45,8 @@ Import and convert the PyPI package for PACKAGE-NAME.\n")) (display (G_ " -h, --help display this help and exit")) (display (G_ " + -r, --recursive import packages recursively")) + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -56,6 +60,9 @@ Import and convert the PyPI package for PACKAGE-NAME.\n")) (option '(#\V "version") #f #f (lambda args (show-version-and-exit "guix import pypi"))) + (option '(#\r "recursive") #f #f + (lambda (opt name arg result) + (alist-cons 'recursive #t result))) %standard-import-options)) @@ -81,11 +88,22 @@ Import and convert the PyPI package for PACKAGE-NAME.\n")) (reverse opts)))) (match args ((package-name) - (let ((sexp (pypi->guix-package package-name))) - (unless sexp - (leave (G_ "failed to download meta-data for package '~a'~%") - package-name)) - sexp)) + (if (assoc-ref opts 'recursive) + ;; Recursive import + (map (match-lambda + ((and ('package ('name name) . rest) pkg) + `(define-public ,(string->symbol name) + ,pkg)) + (_ #f)) + (reverse + (stream->list + (pypi-recursive-import package-name)))) + ;; Single import + (let ((sexp (pypi->guix-package package-name))) + (unless sexp + (leave (G_ "failed to download meta-data for package '~a'~%") + package-name)) + sexp))) (() (leave (G_ "too few arguments~%"))) ((many ...) diff --git a/guix/scripts/import/stackage.scm b/guix/scripts/import/stackage.scm index e6676e93e8..b4b12581bf 100644 --- a/guix/scripts/import/stackage.scm +++ b/guix/scripts/import/stackage.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Federico Beffa <beffa@fbengineering.ch> +;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) + #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-stackage)) @@ -43,11 +45,13 @@ (display (G_ "Usage: guix import stackage PACKAGE-NAME Import and convert the LTS Stackage package for PACKAGE-NAME.\n")) (display (G_ " - -r VERSION, --lts-version=VERSION + -l VERSION, --lts-version=VERSION specify the LTS version to use")) (display (G_ " -h, --help display this help and exit")) (display (G_ " + -r, --recursive import packages recursively")) + (display (G_ " -t, --no-test-dependencies don't include test-only dependencies")) (display (G_ " -V, --version display version information and exit")) @@ -68,11 +72,14 @@ Import and convert the LTS Stackage package for PACKAGE-NAME.\n")) (alist-cons 'include-test-dependencies? #f (alist-delete 'include-test-dependencies? result)))) - (option '(#\r "lts-version") #t #f + (option '(#\l "lts-version") #t #f (lambda (opt name arg result) (alist-cons 'lts-version arg (alist-delete 'lts-version result)))) + (option '(#\r "recursive") #f #f + (lambda (opt name arg result) + (alist-cons 'recursive #t result))) %standard-import-options)) @@ -90,6 +97,27 @@ Import and convert the LTS Stackage package for PACKAGE-NAME.\n")) (alist-cons 'argument arg result)) %default-options)) + (define (run-importer package-name opts error-fn) + (let* ((arguments (list + package-name + #:include-test-dependencies? + (assoc-ref opts 'include-test-dependencies?) + #:lts-version (assoc-ref opts 'lts-version))) + (sexp (if (assoc-ref opts 'recursive) + ;; Recursive import + (map (match-lambda + ((and ('package ('name name) . rest) pkg) + `(define-public ,(string->symbol name) + ,pkg)) + (_ #f)) + (reverse + (stream->list + (apply stackage-recursive-import arguments)))) + ;; Single import + (apply stackage->guix-package arguments)))) + (unless sexp (error-fn)) + sexp)) + (let* ((opts (parse-options)) (args (filter-map (match-lambda (('argument . value) @@ -99,15 +127,11 @@ Import and convert the LTS Stackage package for PACKAGE-NAME.\n")) (match args ((package-name) (with-error-handling - (let ((sexp (stackage->guix-package - package-name - #:include-test-dependencies? - (assoc-ref opts 'include-test-dependencies?) - #:lts-version (assoc-ref opts 'lts-version)))) - (unless sexp - (leave (G_ "failed to download cabal file for package '~a'~%") - package-name)) - sexp))) + (run-importer package-name opts + (lambda () + (leave (G_ "failed to download cabal file \ +for package '~a'~%") + package-name))))) (() (leave (G_ "too few arguments~%"))) ((many ...) diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 729850839b..fb0677de28 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -748,8 +748,8 @@ Create a bundle of PACKAGE.\n")) (build-image (match (assq-ref %formats pack-format) ((? procedure? proc) proc) (#f - (leave (G_ "~a: unknown pack format") - format)))) + (leave (G_ "~a: unknown pack format~%") + pack-format)))) (localstatedir? (assoc-ref opts 'localstatedir?))) (run-with-store store (mlet* %store-monad ((profile (profile-derivation diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index ee68c21a4c..18c04f05dd 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -30,26 +30,19 @@ #:use-module (guix grafts) #:use-module (guix memoization) #:use-module (guix monads) + #:use-module (guix channels) #:autoload (guix inferior) (open-inferior) #:use-module (guix scripts build) - #:autoload (guix self) (whole-package) #:use-module (guix git) #:use-module (git) #:use-module (gnu packages) - #:autoload (gnu packages ssh) (guile-ssh) - #:autoload (gnu packages tls) (gnutls) #:use-module ((guix scripts package) #:select (build-and-use-profile)) - #:use-module ((guix build utils) - #:select (with-directory-excursion delete-file-recursively)) - #:use-module ((guix build download) - #:select (%x509-certificate-directory)) #:use-module (gnu packages base) #:use-module (gnu packages guile) #:use-module ((gnu packages bootstrap) #:select (%bootstrap-guile)) #:use-module ((gnu packages certs) #:select (le-certs)) #:use-module (srfi srfi-1) - #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-35) #:use-module (srfi srfi-37) @@ -57,9 +50,6 @@ #:use-module (ice-9 vlist) #:export (guix-pull)) -(define %repository-url - (or (getenv "GUIX_PULL_URL") "https://git.savannah.gnu.org/git/guix.git")) - ;;; ;;; Command-line options. @@ -67,9 +57,7 @@ (define %default-options ;; Alist of default option values. - `((repository-url . ,%repository-url) - (ref . (branch . "origin/master")) - (system . ,(%current-system)) + `((system . ,(%current-system)) (substitutes? . #t) (build-hook? . #t) (graft? . #t) @@ -81,6 +69,8 @@ Download and deploy the latest version of Guix.\n")) (display (G_ " --verbose produce verbose output")) (display (G_ " + -C, --channels=FILE deploy the channels defined in FILE")) + (display (G_ " --url=URL download from the Git repository at URL")) (display (G_ " --commit=COMMIT download the specified COMMIT")) @@ -105,6 +95,9 @@ Download and deploy the latest version of Guix.\n")) (cons* (option '("verbose") #f #f (lambda (opt name arg result) (alist-cons 'verbose? #t result))) + (option '(#\C "channels") #t #f + (lambda (opt name arg result) + (alist-cons 'channel-file arg result))) (option '(#\l "list-generations") #f #t (lambda (opt name arg result) (cons `(query list-generations ,(or arg "")) @@ -142,70 +135,6 @@ Download and deploy the latest version of Guix.\n")) (define indirect-root-added (store-lift add-indirect-root)) -(define %self-build-file - ;; The file containing code to build Guix. This serves the same purpose as - ;; a makefile, and, similarly, is intended to always keep this name. - "build-aux/build-self.scm") - -(define %pull-version - ;; This is the version of the 'guix pull' protocol. It specifies what's - ;; expected from %SELF-BUILD-FILE. The initial version ("0") was when we'd - ;; place a set of compiled Guile modules in ~/.config/guix/latest. - 1) - -(define* (build-from-source source - #:key verbose? commit) - "Return a derivation to build Guix from SOURCE, using the self-build script -contained therein. Use COMMIT as the version string." - ;; Running the self-build script makes it easier to update the build - ;; procedure: the self-build script of the Guix-to-be-installed contains the - ;; right dependencies, build procedure, etc., which the Guix-in-use may not - ;; be know. - (let* ((script (string-append source "/" %self-build-file)) - (build (primitive-load script))) - ;; BUILD must be a monadic procedure of at least one argument: the source - ;; tree. - ;; - ;; Note: BUILD can return #f if it does not support %PULL-VERSION. In the - ;; future we'll fall back to a previous version of the protocol when that - ;; happens. - (build source #:verbose? verbose? #:version commit - #:pull-version %pull-version))) - -(define (whole-package-for-legacy name modules) - "Return a full-blown Guix package for MODULES, a derivation that builds Guix -modules in the old ~/.config/guix/latest style." - (whole-package name modules - - ;; In the "old style", %SELF-BUILD-FILE would simply return a - ;; derivation that builds modules. We have to infer what the - ;; dependencies of these modules were. - (list guile-json guile-git guile-bytestructures - guile-ssh gnutls))) - -(define* (derivation->manifest-entry drv - #:key url branch commit) - "Return a manifest entry for DRV, which represents Guix at COMMIT. Record -URL, BRANCH, and COMMIT as a property in the manifest entry." - (mbegin %store-monad - (what-to-build (list drv)) - (built-derivations (list drv)) - (let ((out (derivation->output-path drv))) - (return (manifest-entry - (name "guix") - (version (string-take commit 7)) - (item (if (file-exists? (string-append out "/bin/guix")) - drv - (whole-package-for-legacy (string-append name "-" - version) - drv))) - (properties - `((source (repository - (version 0) - (url ,url) - (branch ,branch) - (commit ,commit)))))))))) - (define (display-profile-news profile) "Display what's up in PROFILE--new packages, and all that." (match (memv (generation-number profile) @@ -223,8 +152,8 @@ URL, BRANCH, and COMMIT as a property in the manifest entry." #:heading (G_ "New in this revision:\n")))) (_ #t))) -(define* (build-and-install source config-dir - #:key verbose? url branch commit) +(define* (build-and-install instances config-dir + #:key verbose?) "Build the tool from SOURCE, and install it in CONFIG-DIR." (define update-profile (store-lift build-and-use-profile)) @@ -232,15 +161,9 @@ URL, BRANCH, and COMMIT as a property in the manifest entry." (define profile (string-append config-dir "/current")) - (mlet* %store-monad ((drv (build-from-source source - #:commit commit - #:verbose? verbose?)) - (entry (derivation->manifest-entry drv - #:url url - #:branch branch - #:commit commit))) + (mlet %store-monad ((manifest (channel-instances->manifest instances))) (mbegin %store-monad - (update-profile profile (manifest (list entry))) + (update-profile profile manifest) (return (display-profile-news profile))))) (define (honor-lets-encrypt-certificates! store) @@ -426,45 +349,106 @@ and ALIST2 differ, display HEADING upfront." ((numbers ...) (list-generations profile numbers))))))))) +(define (channel-list opts) + "Return the list of channels to use. If OPTS specify a channel file, +channels are read from there; otherwise, if ~/.config/guix/channels.scm +exists, read it; otherwise %DEFAULT-CHANNELS is used. Apply channel +transformations specified in OPTS (resulting from '--url', '--commit', or +'--branch'), if any." + (define file + (assoc-ref opts 'channel-file)) + + (define default-file + (string-append (config-directory) "/channels.scm")) + + (define (load-channels file) + (let ((result (load* file (make-user-module '((guix channels)))))) + (if (and (list? result) (every channel? result)) + result + (leave (G_ "'~a' did not return a list of channels~%") file)))) + + (define channels + (cond (file + (load-channels file)) + ((file-exists? default-file) + (load-channels default-file)) + (else + %default-channels))) + + (define (environment-variable) + (match (getenv "GUIX_PULL_URL") + (#f #f) + (url + (warning (G_ "The 'GUIX_PULL_URL' environment variable is deprecated. +Use '~/.config/guix/channels.scm' instead.")) + url))) + + (let ((ref (assoc-ref opts 'ref)) + (url (or (assoc-ref opts 'repository-url) + (environment-variable)))) + (if (or ref url) + (match channels + ((one) + ;; When there's only one channel, apply '--url', '--commit', and + ;; '--branch' to this specific channel. + (let ((url (or url (channel-url one)))) + (list (match ref + (('commit . commit) + (channel (inherit one) + (url url) (commit commit) (branch #f))) + (('branch . branch) + (channel (inherit one) + (url url) (commit #f) (branch branch))) + (#f + (channel (inherit one) (url url))))))) + (_ + ;; Otherwise bail out. + (leave + (G_ "'--url', '--commit', and '--branch' are not applicable~%")))) + channels))) + (define (guix-pull . args) - (define (use-le-certs? url) - (string-prefix? "https://git.savannah.gnu.org/" url)) - (with-error-handling (with-git-error-handling - (let* ((opts (parse-command-line args %options - (list %default-options))) - (url (assoc-ref opts 'repository-url)) - (ref (assoc-ref opts 'ref)) - (cache (string-append (cache-directory) "/pull"))) + (let* ((opts (parse-command-line args %options + (list %default-options))) + (cache (string-append (cache-directory) "/pull")) + (channels (channel-list opts))) + (cond ((assoc-ref opts 'query) (process-query opts)) ((assoc-ref opts 'dry-run?) #t) ;XXX: not very useful (else (with-store store - (parameterize ((%graft? (assoc-ref opts 'graft?))) + (parameterize ((%graft? (assoc-ref opts 'graft?)) + (%repository-cache-directory cache)) (set-build-options-from-command-line store opts) - ;; For reproducibility, always refer to the LE certificates - ;; when we know we're talking to Savannah. - (when (use-le-certs? url) - (honor-lets-encrypt-certificates! store)) - - (format (current-error-port) - (G_ "Updating from Git repository at '~a'...~%") - url) - - (let-values (((checkout commit) - (latest-repository-commit store url - #:ref ref - #:cache-directory - cache))) + ;; When certificates are already installed, use them. + ;; Otherwise, use the Let's Encrypt certificates, which we + ;; know Savannah uses. + (let ((certs (or (getenv "SSL_CERT_DIR") "/etc/ssl/certs"))) + (unless (file-exists? certs) + (honor-lets-encrypt-certificates! store))) + (let ((instances (latest-channel-instances store channels))) (format (current-error-port) - (G_ "Building from Git commit ~a...~%") - commit) + (N_ "Building from this channel:~%" + "Building from these channels:~%" + (length instances))) + (for-each (lambda (instance) + (let ((channel + (channel-instance-channel instance))) + (format (current-error-port) + " ~10a~a\t~a~%" + (channel-name channel) + (channel-url channel) + (string-take + (channel-instance-commit instance) + 7)))) + instances) (parameterize ((%guile-for-build (package-derivation store @@ -472,13 +456,7 @@ and ALIST2 differ, display HEADING upfront." %bootstrap-guile (canonical-package guile-2.2))))) (run-with-store store - (build-and-install checkout (config-directory) - #:url url - #:branch (match ref - (('branch . branch) - branch) - (_ #f)) - #:commit commit + (build-and-install instances (config-directory) #:verbose? (assoc-ref opts 'verbose?))))))))))))) diff --git a/guix/self.scm b/guix/self.scm index 5b088c413b..c5da6130bb 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -206,13 +206,6 @@ list of file-name/file-like objects suitable as inputs to 'imported-files'." (local-file file #:recursive? #t))) (find-files (string-append directory "/" sub-directory) pred))) -(define (scheme-modules* directory sub-directory) - "Return the list of module names found under SUB-DIRECTORY in DIRECTORY." - (let ((prefix (string-length directory))) - (map (lambda (file) - (file-name->module-name (string-drop file prefix))) - (scheme-files (string-append directory "/" sub-directory))))) - (define* (sub-directory item sub-directory) "Return SUB-DIRECTORY within ITEM, which may be a file name or a file-like object." diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index d11f408d42..7f881355e7 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -38,4 +38,5 @@ guix/upstream.scm guix/ui.scm guix/http-client.scm guix/nar.scm +guix/channels.scm nix/nix-daemon/guix-daemon.cc diff --git a/tests/records.scm b/tests/records.scm index 80e08a9a5f..09ada70c2d 100644 --- a/tests/records.scm +++ b/tests/records.scm @@ -313,8 +313,9 @@ (lambda () (eval '(foo? (make-me-a-record)) module) #f) - (lambda (key rtd . _) - (eq? rtd (eval '<foo> module)))))) + (match-lambda* + ((key 'abi-check (? string? message) (rtd) . _) + (eq? rtd (eval '<foo> module))))))) (test-equal "recutils->alist" '((("Name" . "foo") |