summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2018-09-03 19:20:06 +0200
committerMarius Bakke <mbakke@fastmail.com>2018-09-03 19:20:06 +0200
commit70dc8db8e7a44e0357c6b0582a710a918bd2e353 (patch)
tree083102cf532c523068f018e2b113947ca6a3db02
parent279ed3efee9c71116d368163f805fe9494518687 (diff)
parentc702749dfd47ea6983768cd5b8cf828898445af0 (diff)
Merge branch 'master' into core-updates
-rw-r--r--Makefile.am2
-rw-r--r--NEWS11
-rw-r--r--build-aux/compile-as-derivation.scm21
-rw-r--r--build-aux/update-NEWS.scm9
-rw-r--r--doc/guix.texi465
-rw-r--r--gnu/build/linux-modules.scm4
-rw-r--r--gnu/build/marionette.scm28
-rw-r--r--gnu/local.mk6
-rw-r--r--gnu/packages.scm27
-rw-r--r--gnu/packages/admin.scm82
-rw-r--r--gnu/packages/audio.scm16
-rw-r--r--gnu/packages/backup.scm15
-rw-r--r--gnu/packages/bioinformatics.scm108
-rw-r--r--gnu/packages/certs.scm4
-rw-r--r--gnu/packages/check.scm6
-rw-r--r--gnu/packages/cpp.scm2
-rw-r--r--gnu/packages/cran.scm44
-rw-r--r--gnu/packages/crypto.scm9
-rw-r--r--gnu/packages/dico.scm8
-rw-r--r--gnu/packages/disk.scm4
-rw-r--r--gnu/packages/emacs.scm69
-rw-r--r--gnu/packages/emulators.scm19
-rw-r--r--gnu/packages/engineering.scm2
-rw-r--r--gnu/packages/enlightenment.scm82
-rw-r--r--gnu/packages/finance.scm29
-rw-r--r--gnu/packages/game-development.scm19
-rw-r--r--gnu/packages/games.scm48
-rw-r--r--gnu/packages/gd.scm4
-rw-r--r--gnu/packages/glib.scm4
-rw-r--r--gnu/packages/gnu-pw-mgr.scm4
-rw-r--r--gnu/packages/gnupg.scm4
-rw-r--r--gnu/packages/gnuzilla.scm8
-rw-r--r--gnu/packages/graphics.scm24
-rw-r--r--gnu/packages/gsasl.scm7
-rw-r--r--gnu/packages/hardware.scm124
-rw-r--r--gnu/packages/haskell.scm129
-rw-r--r--gnu/packages/javascript.scm13
-rw-r--r--gnu/packages/kde-frameworks.scm296
-rw-r--r--gnu/packages/kde.scm29
-rw-r--r--gnu/packages/linux.scm51
-rw-r--r--gnu/packages/llvm.scm53
-rw-r--r--gnu/packages/lxde.scm48
-rw-r--r--gnu/packages/mail.scm34
-rw-r--r--gnu/packages/maths.scm19
-rw-r--r--gnu/packages/messaging.scm15
-rw-r--r--gnu/packages/monitoring.scm83
-rw-r--r--gnu/packages/music.scm7
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/opencl.scm96
-rw-r--r--gnu/packages/patches/dropbear-CVE-2018-15599.patch240
-rw-r--r--gnu/packages/patches/haskell-mode-make-check.patch35
-rw-r--r--gnu/packages/patches/haskell-mode-unused-variables.patch44
-rw-r--r--gnu/packages/patches/netsurf-message-timestamp.patch11
-rw-r--r--gnu/packages/patches/netsurf-system-utf8proc.patch25
-rw-r--r--gnu/packages/patches/openexr-missing-samples.patch23
-rw-r--r--gnu/packages/patches/rust-1.19-mrustc.patch28
-rw-r--r--gnu/packages/perl.scm4
-rw-r--r--gnu/packages/photo.scm12
-rw-r--r--gnu/packages/printers.scm21
-rw-r--r--gnu/packages/python.scm131
-rw-r--r--gnu/packages/qt.scm9
-rw-r--r--gnu/packages/regex.scm4
-rw-r--r--gnu/packages/ruby.scm871
-rw-r--r--gnu/packages/rust.scm335
-rw-r--r--gnu/packages/samba.scm11
-rw-r--r--gnu/packages/ssh.scm1
-rw-r--r--gnu/packages/statistics.scm8
-rw-r--r--gnu/packages/tls.scm4
-rw-r--r--gnu/packages/video.scm3
-rw-r--r--gnu/packages/web.scm57
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/services/dns.scm168
-rw-r--r--gnu/services/networking.scm36
-rw-r--r--gnu/services/ssh.scm10
-rw-r--r--gnu/services/web.scm16
-rw-r--r--gnu/tests.scm4
-rw-r--r--gnu/tests/networking.scm97
-rw-r--r--guix/channels.scm292
-rw-r--r--guix/describe.scm73
-rw-r--r--guix/discovery.scm13
-rw-r--r--guix/import/hackage.scm1
-rw-r--r--guix/import/pypi.scm173
-rw-r--r--guix/import/stackage.scm45
-rw-r--r--guix/records.scm17
-rw-r--r--guix/scripts/import/pypi.scm28
-rw-r--r--guix/scripts/import/stackage.scm46
-rw-r--r--guix/scripts/pack.scm4
-rw-r--r--guix/scripts/pull.scm218
-rw-r--r--guix/self.scm7
-rw-r--r--po/guix/POTFILES.in1
-rw-r--r--tests/records.scm5
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")