Merge branch 'master' into core-updates
This commit is contained in:
commit
70dc8db8e7
|
@ -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 \
|
||||
|
|
11
NEWS
11
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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"))
|
||||
|
|
461
doc/guix.texi
461
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}.
|
||||
@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}.
|
||||
|
||||
@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.
|
||||
@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 --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}.
|
||||
@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
|
||||
|
|
|
@ -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))))
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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/")
|
||||
|
|
|
@ -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")))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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$")))
|
||||
|
|
|
@ -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")))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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"))))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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+
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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);
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
|
@ -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")
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -167,128 +167,6 @@ in turn be used to build the final Rust.")
|
|||
(snippet '(begin (delete-file-recursively "src/llvm") #t))
|
||||
(patches (map search-patch patches))))
|
||||
|
||||
(define rust-1.19
|
||||
(package
|
||||
(name "rust")
|
||||
(version "1.19.0")
|
||||
(source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"))
|
||||
(outputs '("out" "cargo"))
|
||||
(arguments
|
||||
`(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-env
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Disable test for cross compilation support.
|
||||
(setenv "CFG_DISABLE_CROSS_TESTS" "1")
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
|
||||
;; guix llvm-3.9.1 package installs only shared libraries
|
||||
(setenv "LLVM_LINK_SHARED" "1")
|
||||
#t))
|
||||
(add-after 'unpack 'patch-tests
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(substitute* "src/libstd/process.rs"
|
||||
;; The newline is intentional.
|
||||
;; There's a line length "tidy" check in Rust which would
|
||||
;; fail otherwise.
|
||||
(("\"/bin/sh\"") (string-append "\n\"" bash "/bin/sh\"")))
|
||||
(substitute* "src/libstd/net/tcp.rs"
|
||||
;; There is no network in build environment
|
||||
(("fn connect_timeout_unroutable")
|
||||
"#[ignore]\nfn connect_timeout_unroutable"))
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>
|
||||
(substitute* "src/libstd/sys/unix/process/process_common.rs"
|
||||
(("fn test_process_mask") "#[allow(unused_attributes)]
|
||||
#[ignore]
|
||||
fn test_process_mask"))
|
||||
#t)))
|
||||
(add-after 'patch-tests 'patch-aarch64-test
|
||||
(lambda* _
|
||||
(substitute* "src/librustc_back/dynamic_lib.rs"
|
||||
;; This test is known to fail on aarch64 and powerpc64le:
|
||||
;; https://github.com/rust-lang/rust/issues/45410
|
||||
(("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
|
||||
#t))
|
||||
(add-after 'patch-tests 'use-readelf-for-tests
|
||||
(lambda* _
|
||||
;; nm doesn't recognize the file format because of the
|
||||
;; nonstandard sections used by the Rust compiler, but readelf
|
||||
;; ignores them.
|
||||
(substitute* "src/test/run-make/atomic-lock-free/Makefile"
|
||||
(("\tnm ")
|
||||
"\treadelf -c "))
|
||||
#t))
|
||||
(add-after 'patch-tests 'remove-unsupported-tests
|
||||
(lambda* _
|
||||
;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
|
||||
(delete-file-recursively "src/test/run-make/linker-output-non-utf8")
|
||||
#t))
|
||||
(add-after 'patch-source-shebangs 'patch-cargo-checksums
|
||||
(lambda* _
|
||||
(substitute* "src/Cargo.lock"
|
||||
(("(\"checksum .* = )\".*\"" all name)
|
||||
(string-append name "\"" ,%cargo-reference-hash "\"")))
|
||||
(for-each
|
||||
(lambda (filename)
|
||||
(use-modules (guix build cargo-build-system))
|
||||
(delete-file filename)
|
||||
(let* ((dir (dirname filename)))
|
||||
(display (string-append
|
||||
"patch-cargo-checksums: generate-checksums for "
|
||||
dir "\n"))
|
||||
(generate-checksums dir ,%cargo-reference-project-file)))
|
||||
(find-files "src/vendor" ".cargo-checksum.json"))
|
||||
#t))
|
||||
(replace 'configure
|
||||
(const #t))
|
||||
(replace 'check
|
||||
(const #t))
|
||||
(replace 'install
|
||||
(const #t)))))
|
||||
(build-system gnu-build-system)
|
||||
(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)))
|
||||
(inputs
|
||||
`(("jemalloc" ,jemalloc-4.5.0)
|
||||
("llvm" ,llvm-3.9.1)
|
||||
("openssl" ,openssl)
|
||||
("libcurl" ,curl))) ; For "cargo"
|
||||
|
||||
;; rustc invokes gcc, so we need to set its search paths accordingly.
|
||||
;; Note: duplicate its value here to cope with circular dependencies among
|
||||
;; modules (see <https://bugs.gnu.org/31392>).
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "CPLUS_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(files '("lib" "lib64")))))
|
||||
|
||||
(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://www.rust-lang.org")
|
||||
;; 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."
|
||||
|
@ -393,6 +271,233 @@ safety and thread safety guarantees.")
|
|||
;; 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"
|
||||
#: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
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Disable test for cross compilation support.
|
||||
(setenv "CFG_DISABLE_CROSS_TESTS" "1")
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
|
||||
;; 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")))
|
||||
(substitute* "src/libstd/process.rs"
|
||||
;; The newline is intentional.
|
||||
;; There's a line length "tidy" check in Rust which would
|
||||
;; fail otherwise.
|
||||
(("\"/bin/sh\"") (string-append "\n\"" bash "/bin/sh\"")))
|
||||
(substitute* "src/libstd/net/tcp.rs"
|
||||
;; There is no network in build environment
|
||||
(("fn connect_timeout_unroutable")
|
||||
"#[ignore]\nfn connect_timeout_unroutable"))
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>
|
||||
(substitute* "src/libstd/sys/unix/process/process_common.rs"
|
||||
(("fn test_process_mask") "#[allow(unused_attributes)]
|
||||
#[ignore]
|
||||
fn test_process_mask"))
|
||||
#t)))
|
||||
(add-after 'patch-tests 'patch-aarch64-test
|
||||
(lambda* _
|
||||
(substitute* "src/librustc_back/dynamic_lib.rs"
|
||||
;; This test is known to fail on aarch64 and powerpc64le:
|
||||
;; https://github.com/rust-lang/rust/issues/45410
|
||||
(("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
|
||||
#t))
|
||||
(add-after 'patch-tests 'use-readelf-for-tests
|
||||
(lambda* _
|
||||
;; nm doesn't recognize the file format because of the
|
||||
;; nonstandard sections used by the Rust compiler, but readelf
|
||||
;; ignores them.
|
||||
(substitute* "src/test/run-make/atomic-lock-free/Makefile"
|
||||
(("\tnm ")
|
||||
"\treadelf -c "))
|
||||
#t))
|
||||
(add-after 'patch-tests 'remove-unsupported-tests
|
||||
(lambda* _
|
||||
;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
|
||||
(delete-file-recursively "src/test/run-make/linker-output-non-utf8")
|
||||
#t))
|
||||
(add-after 'patch-source-shebangs 'patch-cargo-checksums
|
||||
(lambda* _
|
||||
(substitute* "src/Cargo.lock"
|
||||
(("(\"checksum .* = )\".*\"" all name)
|
||||
(string-append name "\"" ,%cargo-reference-hash "\"")))
|
||||
(for-each
|
||||
(lambda (filename)
|
||||
(use-modules (guix build cargo-build-system))
|
||||
(delete-file filename)
|
||||
(let* ((dir (dirname filename)))
|
||||
(display (string-append
|
||||
"patch-cargo-checksums: generate-checksums for "
|
||||
dir "\n"))
|
||||
(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
|
||||
(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
|
||||
("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" ,mrustc)
|
||||
("cargo-bootstrap" ,mrustc "cargo")
|
||||
("pkg-config" ,pkg-config) ; For "cargo"
|
||||
("which" ,which)))
|
||||
(inputs
|
||||
`(("jemalloc" ,jemalloc-4.5.0)
|
||||
("llvm" ,llvm-3.9.1)
|
||||
("openssl" ,openssl)
|
||||
("libcurl" ,curl))) ; For "cargo"
|
||||
|
||||
;; rustc invokes gcc, so we need to set its search paths accordingly.
|
||||
;; Note: duplicate its value here to cope with circular dependencies among
|
||||
;; modules (see <https://bugs.gnu.org/31392>).
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "C_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "CPLUS_INCLUDE_PATH")
|
||||
(files '("include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(files '("lib" "lib64")))))
|
||||
|
||||
(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://www.rust-lang.org")
|
||||
;; 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"
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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"))))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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")))))))
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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))))
|
|
@ -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))))
|
|
@ -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."
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
%hackage-updater
|
||||
|
||||
guix-package->hackage-name
|
||||
hackage-name->package-name
|
||||
hackage-fetch
|
||||
hackage-source-url
|
||||
hackage-cabal-url
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
||||
;;;
|
||||
|
|
|
@ -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 ()
|
||||
|
|
|
@ -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 ...)
|
||||
|
|
|
@ -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 ...)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
@ -80,6 +68,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_ "
|
||||
|
@ -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?)))))))))))))
|
||||
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue