Merge branch 'master' into core-updates

This commit is contained in:
Ludovic Courtès 2019-09-24 10:11:38 +02:00
commit 11da634a6e
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
112 changed files with 5924 additions and 1037 deletions

View file

@ -90,6 +90,7 @@
(eval . (put 'eventually 'scheme-indent-function 1))
(eval . (put 'call-with-progress-reporter 'scheme-indent-function 1))
(eval . (put 'with-temporary-git-repository 'scheme-indent-function 2))
;; This notably allows '(' in Paredit to not insert a space when the
;; preceding symbol is one of these.

31
.gitignore vendored
View file

@ -29,22 +29,23 @@
/doc/*.1
/doc/.dirstamp
/doc/contributing.*.texi
/doc/guix.*.aux
/doc/guix.*.cp
/doc/guix.*.cps
/doc/guix.*.fn
/doc/guix.*.fns
/doc/guix.*.html
/doc/guix.*.info
/doc/guix.*.info-[0-9]
/doc/guix.*.ky
/doc/guix.*.pg
/doc/guix.*.toc
/doc/guix.*.t2p
/doc/guix.*.tp
/doc/guix.*.vr
/doc/guix.*.vrs
/doc/guix*.aux
/doc/guix*.cp
/doc/guix*.cps
/doc/guix*.fn
/doc/guix*.fns
/doc/guix*.html
/doc/guix*.info
/doc/guix*.info-[0-9]
/doc/guix*.ky
/doc/guix*.pg
/doc/guix*.toc
/doc/guix*.t2p
/doc/guix*.tp
/doc/guix*.vr
/doc/guix*.vrs
/doc/guix.*.texi
/doc/guix-cookbook.*.texi
/doc/guix.aux
/doc/guix.cp
/doc/guix.cps

5
.guix-channel Normal file
View file

@ -0,0 +1,5 @@
;; This is a Guix channel.
(channel
(version 0)
(news-file "etc/news.scm"))

View file

@ -241,6 +241,7 @@ MODULES = \
guix/scripts/remove.scm \
guix/scripts/upgrade.scm \
guix/scripts/search.scm \
guix/scripts/show.scm \
guix/scripts/gc.scm \
guix/scripts/hash.scm \
guix/scripts/pack.scm \
@ -306,7 +307,10 @@ STORE_MODULES = \
MODULES += $(STORE_MODULES)
# Internal modules with test suite support.
dist_noinst_DATA = guix/tests.scm guix/tests/http.scm
dist_noinst_DATA = \
guix/tests.scm \
guix/tests/http.scm \
guix/tests/git.scm
# Auxiliary files for packages.
AUX_FILES = \
@ -390,6 +394,7 @@ SCM_TESTS = \
tests/file-systems.scm \
tests/gem.scm \
tests/gexp.scm \
tests/git.scm \
tests/glob.scm \
tests/gnu-maintenance.scm \
tests/grafts.scm \
@ -528,8 +533,10 @@ EXTRA_DIST += \
TODO \
CODE-OF-CONDUCT \
.dir-locals.el \
.guix-channel \
scripts/guix.in \
etc/guix-install.sh \
etc/news.scm \
build-aux/build-self.scm \
build-aux/compile-all.scm \
build-aux/hydra/evaluate.scm \
@ -814,7 +821,8 @@ assert-no-store-file-names:
$(AM_V_at)if grep -r --exclude=*.texi --exclude=*.info \
--exclude=*.info-[0-9] --exclude=*.dot \
--exclude=*.eps --exclude-dir=bootstrap \
--exclude=guix-manual.pot --exclude=guix-manual.*.po \
--exclude=guix-manual.pot --exclude=guix-manual.*.po \
--exclude=guix-cookbook.pot --exclude=guix-cookbook.*.po \
--exclude=guix-prettify.el \
--exclude=ChangeLog* \
--exclude=binutils-boot-2.20*.patch \

View file

@ -4,7 +4,7 @@
set -e -x
# Generate stubs for translations.
langs=`find po/doc -type f -name '*.po' \
langs=`find po/doc -type f -name 'guix-manual*.po' \
| sed -e 's,guix-manual\.,,' \
| xargs -n 1 -I{} basename {} .po`
for lang in ${langs}; do
@ -15,5 +15,15 @@ for lang in ${langs}; do
touch "po/doc/guix-manual.${lang}.po"
fi
done
langs=`find po/doc -type f -name 'guix-cookbook*.po' \
| sed -e 's,guix-manual\.,,' \
| xargs -n 1 -I{} basename {} .po`
for lang in ${langs}; do
if [ ! -e "doc/guix-cookbook.${lang}.texi" ]; then
echo "@setfilename guix-cookbook.${lang}.info" > "doc/guix-cookbook.${lang}.texi"
# Ensure .po file is newer.
touch "po/doc/guix-cookbook.${lang}.po"
fi
done
exec autoreconf -vfi

821
doc/guix-cookbook.texi Normal file
View file

@ -0,0 +1,821 @@
\input texinfo
@c -*-texinfo-*-
@c %**start of header
@setfilename guix-cookbook.info
@documentencoding UTF-8
@settitle GNU Guix Cookbook
@c %**end of header
@copying
Copyright @copyright{} 2019 Ricardo Wurmus@*
Copyright @copyright{} 2019 Efraim Flashner@*
Copyright @copyright{} 2019 Pierre Neidhardt@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in the section entitled ``GNU Free
Documentation License''.
@end copying
@dircategory System administration
@direntry
* Guix cookbook: (guix-cookbook). Tutorials and examples for GNU Guix.
@end direntry
@titlepage
@title GNU Guix Cookbook
@subtitle Tutorials and examples for using the GNU Guix Functional Package Manager
@author The GNU Guix Developers
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@contents
@c *********************************************************************
@node Top
@top GNU Guix Cookbook
This document presents tutorials and detailed examples for GNU@tie{}Guix, a
functional package management tool written for the GNU system. Please
@pxref{Top,,, guix, GNU Guix reference manual} for details about the system,
its API, and related concepts.
@c TRANSLATORS: You can replace the following paragraph with information on
@c how to join your own translation team and how to report issues with the
@c translation.
If you would like to translate this document in your native language, consider
joining the @uref{https://translationproject.org/domain/guix-cookbook.html,
Translation Project}.
@menu
* Scheme tutorials:: Meet your new favorite language!
* Packaging:: Packaging tutorials
* System Configuration:: Customizing the GNU System
* Acknowledgments:: Thanks!
* GNU Free Documentation License:: The license of this document.
* Concept Index:: Concepts.
@detailmenu
--- The Detailed Node Listing ---
Scheme tutorials
* A Scheme Crash Course:: Learn the basics of Scheme
Packaging
* Packaging Tutorial:: Let's add a package to Guix!
System Configuration
* Customizing the Kernel:: Creating and using a custom Linux kernel
@end detailmenu
@end menu
@c *********************************************************************
@node Scheme tutorials
@chapter Scheme tutorials
GNU@tie{}Guix is written in the general purpose programming language Scheme,
and many of its features can be accessed and manipulated programmatically.
You can use Scheme to generate package definitions, to modify them, to build
them, to deploy whole operating systems, etc.
Knowing the basics of how to program in Scheme will unlock many of the
advanced features Guix provides --- and you don't even need to be an
experienced programmer to use them!
Let's get started!
@node A Scheme Crash Course
@section A Scheme Crash Course
@cindex Scheme, crash course
Guix uses the Guile implementation of Scheme. To start playing with the
language, install it with @code{guix install guile} and start a
@uref{https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop,
REPL} by running @code{guile} from the command line.
Alternatively you can also run @code{guix environment --ad-hoc guile -- guile}
if you'd rather not have Guile installed in your user profile.
In the following examples we use the @code{>} symbol to denote the REPL
prompt, that is, the line reserved for user input. @xref{Using Guile
Interactively,,, guile, GNU Guile Reference Manual}) for more details on the
REPL.
@itemize
@item
Scheme syntax boils down to a tree of expressions (or @emph{s-expression} in
Lisp lingo). An expression can be a literal such as numbers and strings, or a
compound which is a parenthesized list of compounds and literals. @code{#t}
and @code{#f} stand for the booleans "true" and "false", respectively.
Examples of valid expressions:
@example scheme
> "Hello World!"
"Hello World!"
> 17
17
> (display (string-append "Hello " "Guix" "\n"))
"Hello Guix!"
@end example
@item
This last example is a function call nested in another function call. When a
parenthesized expression is evaluated, the first term is the function and the
rest are the arguments passed to the function. Every function returns the
last evaluated expression as its return value.
@item
Anonymous functions are declared with the @code{lambda} term:
@example scheme
> (lambda (x) (* x x))
#<procedure 120e348 at <unknown port>:24:0 (x)>
@end example
The above procedure returns the square of its argument. Since everything is
an expression, the @code{lambda} expression returns an anonymous procedure,
which can in turn be applied to an argument:
@example scheme
> ((lambda (x) (* x x)) 3)
9
@end example
@item
Anything can be assigned a global name with @code{define}:
@example scheme
> (define a 3)
> (define square (lambda (x) (* x x)))
> (square a)
9
@end example
@item
Procedures can be defined more concisely with the following syntax:
@example scheme
(define (square x) (* x x))
@end example
@item
A list structure can be created with the @code{list} procedure:
@example scheme
> (list 2 a 5 7)
(2 3 5 7)
@end example
@item
The @emph{quote} disables evaluation of a parenthesized expression: the first
term is not called over the other terms. Thus it effectively returns a list
of terms.
@example scheme
> '(display (string-append "Hello " "Guix" "\n"))
(display (string-append "Hello " "Guix" "\n"))
> '(2 a 5 7)
(2 a 5 7)
@end example
@item
The @emph{quasiquote} disables evaluation of a parenthesized expression until
a comma re-enables it. Thus it provides us with fine-grained control over
what is evaluated and what is not.
@example scheme
> `(2 a 5 7 (2 ,a 5 ,(+ a 4)))
(2 a 5 7 (2 3 5 7))
@end example
Note that the above result is a list of mixed elements: numbers, symbols (here
@code{a}) and the last element is a list itself.
@item
Multiple variables can be named locally with @code{let}:
@example scheme
> (define x 10)
> (let ((x 2)
(y 3))
(list x y))
(2 3)
> x
10
> y
ERROR: In procedure module-lookup: Unbound variable: y
@end example
Use @code{let*} to allow later variable declarations to refer to earlier
definitions.
@example scheme
> (let* ((x 2)
(y (* x 3)))
(list x y))
(2 6)
@end example
@item
The keyword syntax is @code{#:}; it is used to create unique identifiers.
@pxref{Keywords,,, guile, GNU Guile Reference Manual}.
@item
The percentage @code{%} is typically used for read-only global variables in
the build stage. Note that it is merely a convention, like @code{_} in C.
Scheme treats @code{%} exactly the same as any other letter.
@item
Modules are created with @code{define-module}. For instance
@example scheme
(define-module (guix build-system ruby)
#:use-module (guix store)
#:export (ruby-build
ruby-build-system))
@end example
defines the module @code{guix build-system ruby} which must be located in
@file{guix/build-system/ruby.scm} somewhere in the Guile load path. It
depends on the @code{(guix store)} module and it exports two variables,
@code{ruby-build} and @code{ruby-build-system}.
@end itemize
For a more detailed introduction, check out
@uref{http://www.troubleshooters.com/codecorn/scheme_guile/hello.htm, Scheme
at a Glance}, by Steve Litt.
One of the reference Scheme books is the seminal ``Structure and
Interpretation of Computer Programs'', by Harold Abelson and Gerald Jay
Sussman, with Julie Sussman. You'll find a
@uref{https://mitpress.mit.edu/sites/default/files/sicp/index.html, free copy
online}, together with
@uref{https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/,
videos of the lectures by the authors}. The book is available in Texinfo
format as the @code{sicp} Guix package. Go ahead, run @code{guix install
sicp} and start reading with @code{info sicp} (or with the Emacs Info reader).
An @uref{https://sarabander.github.io/sicp/, unofficial ebook is also
available}.
You'll find more books, tutorials and other resources at
@url{https://schemers.org/}.
@c *********************************************************************
@node Packaging
@chapter Packaging
@cindex packaging
This chapter is dedicated to teaching you how to add packages to the
collection of packages that come with GNU Guix. This involves writing package
definitions in Guile Scheme, organizing them in package modules, and building
them.
@menu
* Packaging Tutorial:: A tutorial on how to add packages to Guix.
@end menu
@node Packaging Tutorial
@section Packaging Tutorial
GNU Guix stands out as the @emph{hackable} package manager, mostly because it
uses @uref{https://www.gnu.org/software/guile/, GNU Guile}, a powerful
high-level programming language, one of the
@uref{https://en.wikipedia.org/wiki/Scheme_%28programming_language%29, Scheme}
dialects from the
@uref{https://en.wikipedia.org/wiki/Lisp_%28programming_language%29, Lisp family}.
Package definitions are also written in Scheme, which empowers Guix in some
very unique ways, unlike most other package managers that use shell scripts or
simple languages.
@itemize
@item
Use functions, structures, macros and all of Scheme expressiveness for your
package definitions.
@item
Inheritance makes it easy to customize a package by inheriting from it and
modifying only what is needed.
@item
Batch processing: the whole package collection can be parsed, filtered and
processed. Building a headless server with all graphical interfaces stripped
out? It's possible. Want to rebuild everything from source using specific
compiler optimization flags? Pass the @code{#:make-flags "..."} argument to
the list of packages. It wouldn't be a stretch to think
@uref{https://wiki.gentoo.org/wiki/USE_flag, Gentoo USE flags} here, but this
goes even further: the changes don't have to be thought out beforehand by the
packager, they can be @emph{programmed} by the user!
@end itemize
The following tutorial covers all the basics around package creation with Guix.
It does not assume much knowledge of the Guix system nor of the Lisp language.
The reader is only expected to be familiar with the command line and to have some
basic programming knowledge.
@subsection A "Hello World" package
The “Defining Packages” section of the manual introduces the basics of Guix
packaging (@pxref{Defining Packages,,, guix, GNU Guix Reference Manual}). In
the following section, we will partly go over those basics again.
``GNU hello'' is a dummy project that serves as an idiomatic example for
packaging. It uses the GNU build system (@code{./configure && make && make
install}). Guix already provides a package definition which is a perfect
example to start with. You can look up its declaration with @code{guix edit
hello} from the command line. Let's see how it looks:
@example scheme
(define-public hello
(package
(name "hello")
(version "2.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/hello/hello-" version
".tar.gz"))
(sha256
(base32
"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
(build-system gnu-build-system)
(synopsis "Hello, GNU world: An example GNU package")
(description
"GNU Hello prints the message \"Hello, world!\" and then exits. It
serves as an example of standard GNU coding practices. As such, it supports
command-line arguments, multiple languages, and so on.")
(home-page "https://www.gnu.org/software/hello/")
(license gpl3+)))
@end example
As you can see, most of it is rather straightforward. But let's review the
fields together:
@table @samp
@item name
The project name. Using Scheme conventions, we prefer to keep it
lower case, without underscore and using dash-separated words.
@item source
This field contains a description of the source code origin. The
@code{origin} record contains these fields:
@enumerate
@item The method, here @code{url-fetch} to download via HTTP/FTP, but other methods
exist, such as @code{git-fetch} for Git repositories.
@item The URI, which is typically some @code{https://} location for @code{url-fetch}. Here
the special `mirror://gnu` refers to a set of well known locations, all of
which can be used by Guix to fetch the source, should some of them fail.
@item The @code{sha256} checksum of the requested file. This is essential to ensure
the source is not corrupted. Note that Guix works with base32 strings,
hence the call to the @code{base32} function.
@end enumerate
@item build-system
This is where the power of abstraction provided by the Scheme language really
shines: in this case, the @code{gnu-build-system} abstracts away the famous
@code{./configure && make && make install} shell invocations. Other build
systems include the @code{trivial-build-system} which does not do anything and
requires from the packager to program all the build steps, the
@code{python-build-system}, the @code{emacs-build-system}, and many more
(@pxref{Build Systems,,, guix, GNU Guix Reference Manual}).
@item synopsis
It should be a concise summary of what the package does. For many packages a
tagline from the project's home page can be used as the synopsis.
@item description
Same as for the synopsis, it's fine to re-use the project description from the
homepage. Note that Guix uses Texinfo syntax.
@item home-page
Use HTTPS if available.
@item license
See @code{guix/licenses.scm} in the project source for a full list of
available licenses.
@end table
Time to build our first package! Nothing fancy here for now: we will stick to a
dummy "my-hello", a copy of the above declaration.
As with the ritualistic "Hello World" taught with most programming languages,
this will possibly be the most "manual" approach. We will work out an ideal
setup later; for now we will go the simplest route.
Save the following to a file @file{my-hello.scm}.
@example scheme
(use-modules (guix packages)
(guix download)
(guix build-system gnu)
(guix licenses))
(package
(name "my-hello")
(version "2.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/hello/hello-" version
".tar.gz"))
(sha256
(base32
"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
(build-system gnu-build-system)
(synopsis "Hello, Guix world: An example custom Guix package")
(description
"GNU Hello prints the message \"Hello, world!\" and then exits. It
serves as an example of standard GNU coding practices. As such, it supports
command-line arguments, multiple languages, and so on.")
(home-page "https://www.gnu.org/software/hello/")
(license gpl3+))
@end example
We will explain the extra code in a moment.
Feel free to play with the different values of the various fields. If you
change the source, you'll need to update the checksum. Indeed, Guix refuses to
build anything if the given checksum does not match the computed checksum of the
source code. To obtain the correct checksum of the package declaration, we
need to download the source, compute the sha256 checksum and convert it to
base32.
Thankfully, Guix can automate this task for us; all we need is to provide the
URI:
@c TRANSLATORS: This is example shell output.
@example sh
$ guix download mirror://gnu/hello/hello-2.10.tar.gz
Starting download of /tmp/guix-file.JLYgL7
From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz...
following redirection to `https://mirror.ibcp.fr/pub/gnu/hello/hello-2.10.tar.gz'...
…10.tar.gz 709KiB 2.5MiB/s 00:00 [##################] 100.0%
/gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz
0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i
@end example
In this specific case the output tells us which mirror was chosen.
If the result of the above command is not the same as in the above snippet,
update your @code{my-hello} declaration accordingly.
Note that GNU package tarballs come with an OpenPGP signature, so you
should definitely check the signature of this tarball with `gpg` to
authenticate it before going further:
@c TRANSLATORS: This is example shell output.
@example sh
$ guix download mirror://gnu/hello/hello-2.10.tar.gz.sig
Starting download of /tmp/guix-file.03tFfb
From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz.sig...
following redirection to `https://ftp.igh.cnrs.fr/pub/gnu/hello/hello-2.10.tar.gz.sig'...
….tar.gz.sig 819B 1.2MiB/s 00:00 [##################] 100.0%
/gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig
0q0v86n3y38z17rl146gdakw9xc4mcscpk8dscs412j22glrv9jf
$ gpg --verify /gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig /gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz
gpg: Signature made Sun 16 Nov 2014 01:08:37 PM CET
gpg: using RSA key A9553245FDE9B739
gpg: Good signature from "Sami Kerola <kerolasa@@iki.fi>" [unknown]
gpg: aka "Sami Kerola (http://www.iki.fi/kerolasa/) <kerolasa@@iki.fi>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 8ED3 96E3 7E38 D471 A005 30D3 A955 3245 FDE9 B739
@end example
You can then happily run
@c TRANSLATORS: Do not translate this command
@example sh
$ guix package --install-from-file=my-hello.scm
@end example
You should now have @code{my-hello} in your profile!
@c TRANSLATORS: Do not translate this command
@example sh
$ guix package --list-installed=my-hello
my-hello 2.10 out
/gnu/store/f1db2mfm8syb8qvc357c53slbvf1g9m9-my-hello-2.10
@end example
We've gone as far as we could without any knowledge of Scheme. Before moving
on to more complex packages, now is the right time to brush up on your Scheme
knowledge. @pxref{A Scheme Crash Course} to get up to speed.
@c TODO: Continue the tutorial
@c *********************************************************************
@node System Configuration
@chapter System Configuration
Guix offers a flexible language for declaratively configuring your Guix
System. This flexibility can at times be overwhelming. The purpose of this
chapter is to demonstrate some advanced configuration concepts.
@pxref{System Configuration,,, guix, GNU Guix Reference Manual} for a complete
reference.
@menu
* Customizing the Kernel:: Creating and using a custom Linux kernel on Guix System.
@end menu
@node Customizing the Kernel
@section Customizing the Kernel
Guix is, at its core, a source based distribution with substitutes
(@pxref{Substitutes,,, guix, GNU Guix Reference Manual}), and as such building
packages from their source code is an expected part of regular package
installations and upgrades. Given this starting point, it makes sense that
efforts are made to reduce the amount of time spent compiling packages, and
recent changes and upgrades to the building and distribution of substitutes
continues to be a topic of discussion within Guix.
The kernel, while not requiring an overabundance of RAM to build, does take a
rather long time on an average machine. The official kernel configuration, as
is the case with many GNU/Linux distributions, errs on the side of
inclusiveness, and this is really what causes the build to take such a long
time when the kernel is built from source.
The Linux kernel, however, can also just be described as a regular old
package, and as such can be customized just like any other package. The
procedure is a little bit different, although this is primarily due to the
nature of how the package definition is written.
The @code{linux-libre} kernel package definition is actually a procedure which
creates a package.
@example scheme
(define* (make-linux-libre version hash supported-systems
#:key
;; A function that takes an arch and a variant.
;; See kernel-config for an example.
(extra-version #f)
(configuration-file #f)
(defconfig "defconfig")
(extra-options %default-extra-linux-options)
(patches (list %boot-logo-patch)))
...)
@end example
The current @code{linux-libre} package is for the 5.1.x series, and is
declared like this:
@example scheme
(define-public linux-libre
(make-linux-libre %linux-libre-version
%linux-libre-hash
'("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
#:patches %linux-libre-5.1-patches
#:configuration-file kernel-config))
@end example
Any keys which are not assigned values inherit their default value from the
@code{make-linux-libre} definition. When comparing the two snippets above,
you may notice that the code comment in the first doesn't actually refer to
the @code{#:extra-version} keyword; it is actually for
@code{#:configuration-file}. Because of this, it is not actually easy to
include a custom kernel configuration from the definition, but don't worry,
there are other ways to work with what we do have.
There are two ways to create a kernel with a custom kernel configuration. The
first is to provide a standard @file{.config} file during the build process by
including an actual @file{.config} file as a native input to our custom
kernel. The following is a snippet from the custom @code{'configure} phase of
the @code{make-linux-libre} package definition:
@example scheme
(let ((build (assoc-ref %standard-phases 'build))
(config (assoc-ref (or native-inputs inputs) "kconfig")))
;; Use a custom kernel configuration file or a default
;; configuration file.
(if config
(begin
(copy-file config ".config")
(chmod ".config" #o666))
(invoke "make" ,defconfig))
@end example
Below is a sample kernel package. The @code{linux-libre} package is nothing
special and can be inherited from and have its fields overridden like any
other package:
@example scheme
(define-public linux-libre/E2140
(package
(inherit linux-libre)
(native-inputs
`(("kconfig" ,(local-file "E2140.config"))
,@@(alist-delete "kconfig"
(package-native-inputs linux-libre))))))
@end example
In the same directory as the file defining @code{linux-libre-E2140} is a file
named @file{E2140.config}, which is an actual kernel configuration file. The
@code{defconfig} keyword of @code{make-linux-libre} is left blank here, so the
only kernel configuration in the package is the one which was included in the
@code{native-inputs} field.
The second way to create a custom kernel is to pass a new value to the
@code{extra-options} keyword of the @code{make-linux-libre} procedure. The
@code{extra-options} keyword works with another function defined right below
it:
@example scheme
(define %default-extra-linux-options
`(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t)
;; Modules required for initrd:
("CONFIG_NET_9P" . m)
("CONFIG_NET_9P_VIRTIO" . m)
("CONFIG_VIRTIO_BLK" . m)
("CONFIG_VIRTIO_NET" . m)
("CONFIG_VIRTIO_PCI" . m)
("CONFIG_VIRTIO_BALLOON" . m)
("CONFIG_VIRTIO_MMIO" . m)
("CONFIG_FUSE_FS" . m)
("CONFIG_CIFS" . m)
("CONFIG_9P_FS" . m)))
(define (config->string options)
(string-join (map (match-lambda
((option . 'm)
(string-append option "=m"))
((option . #t)
(string-append option "=y"))
((option . #f)
(string-append option "=n")))
options)
"\n"))
@end example
And in the custom configure script from the `make-linux-libre` package:
@example scheme
;; Appending works even when the option wasn't in the
;; file. The last one prevails if duplicated.
(let ((port (open-file ".config" "a"))
(extra-configuration ,(config->string extra-options)))
(display extra-configuration port)
(close-port port))
(invoke "make" "oldconfig"))))
@end example
So by not providing a configuration-file the @file{.config} starts blank, and
then we write into it the collection of flags that we want. Here's another
custom kernel:
@example scheme
(define %macbook41-full-config
(append %macbook41-config-options
%filesystems
%efi-support
%emulation
(@@@@ (gnu packages linux) %default-extra-linux-options)))
(define-public linux-libre-macbook41
;; XXX: Access the internal 'make-linux-libre' procedure, which is
;; private and unexported, and is liable to change in the future.
((@@@@ (gnu packages linux) make-linux-libre) (@@@@ (gnu packages linux) %linux-libre-version)
(@@@@ (gnu packages linux) %linux-libre-hash)
'("x86_64-linux")
#:extra-version "macbook41"
#:patches (@@@@ (gnu packages linux) %linux-libre-5.1-patches)
#:extra-options %macbook41-config-options))
@end example
In the above example @code{%filesystems} is a collection of flags enabling
different filesystem support, @code{%efi-support} enables EFI support and
@code{%emulation} enables a x86_64-linux machine to act in 32-bit mode also.
@code{%default-extra-linux-options} are the ones quoted above, which had to be
added in since they were replaced in the @code{extra-options} keyword.
This all sounds like it should be doable, but how does one even know which
modules are required for a particular system? Two places that can be helpful
in trying to answer this question is the
@uref{https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel, Gentoo
Handbook} and the
@uref{https://www.kernel.org/doc/html/latest/admin-guide/README.html?highlight=localmodconfig,
documentation from the kernel itself}. From the kernel documentation, it
seems that @code{make localmodconfig} is the command we want.
In order to actually run @code{make localmodconfig} we first need to get and
unpack the kernel source code:
@example shell
tar xf $(guix build linux-libre --source)
@end example
Once inside the directory containing the source code run @code{touch .config}
to create an initial, empty @file{.config} to start with. @code{make
localmodconfig} works by seeing what you already have in @file{.config} and
letting you know what you're missing. If the file is blank then you're
missing everything. The next step is to run:
@example shell
guix environment linux-libre -- make localmodconfig
@end example
and note the output. Do note that the @file{.config} file is still empty.
The output generally contains two types of warnings. The first start with
"WARNING" and can actually be ignored in our case. The second read:
@example shell
module pcspkr did not have configs CONFIG_INPUT_PCSPKR
@end example
For each of these lines, copy the @code{CONFIG_XXXX_XXXX} portion into the
@file{.config} in the directory, and append @code{=m}, so in the end it looks
like this:
@example shell
CONFIG_INPUT_PCSPKR=m
CONFIG_VIRTIO=m
@end example
After copying all the configuration options, run @code{make localmodconfig}
again to make sure that you don't have any output starting with "module".
After all of these machine specific modules there are a couple more left that
are also needed. @code{CONFIG_MODULES} is necessary so that you can build and
load modules separately and not have everything built into the kernel.
@code{CONFIG_BLK_DEV_SD} is required for reading from hard drives. It is
possible that there are other modules which you will need.
This post does not aim to be a guide to configuring your own kernel however,
so if you do decide to build a custom kernel you'll have to seek out other
guides to create a kernel which is just right for your needs.
The second way to setup the kernel configuration makes more use of Guix's
features and allows you to share configuration segments between different
kernels. For example, all machines using EFI to boot have a number of EFI
configuration flags that they need. It is likely that all the kernels will
share a list of filesystems to support. By using variables it is easier to
see at a glance what features are enabled and to make sure you don't have
features in one kernel but missing in another.
Left undiscussed however, is Guix's initrd and its customization. It is
likely that you'll need to modify the initrd on a machine using a custom
kernel, since certain modules which are expected to be built may not be
available for inclusion into the initrd.
@c *********************************************************************
@node Acknowledgments
@chapter Acknowledgments
Guix is based on the @uref{https://nixos.org/nix/, Nix package manager},
which was designed and
implemented by Eelco Dolstra, with contributions from other people (see
the @file{nix/AUTHORS} file in Guix.) Nix pioneered functional package
management, and promoted unprecedented features, such as transactional
package upgrades and rollbacks, per-user profiles, and referentially
transparent build processes. Without this work, Guix would not exist.
The Nix-based software distributions, Nixpkgs and NixOS, have also been
an inspiration for Guix.
GNU@tie{}Guix itself is a collective work with contributions from a
number of people. See the @file{AUTHORS} file in Guix for more
information on these fine people. The @file{THANKS} file lists people
who have helped by reporting bugs, taking care of the infrastructure,
providing artwork and themes, making suggestions, and more---thank you!
This document includes adapted sections from articles that have previously
been published on the Guix blog at @uref{https://guix.gnu.org/blog}.
@c *********************************************************************
@node GNU Free Documentation License
@appendix GNU Free Documentation License
@cindex license, GNU Free Documentation License
@include fdl-1.3.texi
@c *********************************************************************
@node Concept Index
@unnumbered Concept Index
@printindex cp
@bye
@c Local Variables:
@c ispell-local-dictionary: "american";
@c End:

View file

@ -2657,7 +2657,9 @@ For your convenience, we also provide the following aliases:
@item
@command{guix remove} is an alias for @command{guix package -r},
@item
and @command{guix upgrade} is an alias for @command{guix package -u}.
@command{guix upgrade} is an alias for @command{guix package -u},
@item
and @command{guix show} is an alias for @command{guix package --show=}.
@end itemize
These aliases are less expressive than @command{guix package} and provide
@ -2916,6 +2918,25 @@ variable, even though, taken individually, neither @file{foo} nor
@itemx -p @var{profile}
Use @var{profile} instead of the user's default profile.
@var{profile} must be the name of a file that will be created upon
completion. Concretely, @var{profile} will be a mere symbolic link
(``symlink'') pointing to the actual profile where packages are
installed:
@example
$ guix install hello -p ~/code/my-profile
@dots{}
$ ~/code/my-profile/bin/hello
Hello, world!
@end example
All it takes to get rid of the profile is to remove this symlink and its
siblings that point to specific generations:
@example
$ rm ~/code/my-profile ~/code/my-profile-*-link
@end example
@cindex collisions, in a profile
@cindex colliding packages in profiles
@cindex profile collisions
@ -3020,9 +3041,9 @@ version: 3.3.5
@end example
You may also specify the full name of a package to only get details about a
specific version of it:
specific version of it (this time using the @command{guix show} alias):
@example
$ guix package --show=python@@3.4 | recsel -p name,version
$ guix show python@@3.4 | recsel -p name,version
name: python
version: 3.4.3
@end example
@ -3673,11 +3694,20 @@ Generation 3 Jun 13 2018 23:31:07 (current)
@xref{Invoking guix describe, @command{guix describe}}, for other ways to
describe the current status of Guix.
This @code{~/.config/guix/current} profile works like any other profile
created by @command{guix package} (@pxref{Invoking guix package}). That
This @code{~/.config/guix/current} profile works exactly like the profiles
created by @command{guix package} (@pxref{Invoking guix package}). That
is, you can list generations, roll back to the previous
generation---i.e., the previous Guix---and so on:
@example
$ guix pull --roll-back
switched from generation 3 to 2
$ guix pull --delete-generations=1
deleting /var/guix/profiles/per-user/charlie/current-guix-1-link
@end example
You can also use @command{guix package} (@pxref{Invoking guix package})
to manage the profile by naming it explicitly:
@example
$ guix package -p ~/.config/guix/current --roll-back
switched from generation 3 to 2
@ -3709,13 +3739,16 @@ Read the list of channels from @var{file} instead of
evaluates to a list of channel objects. @xref{Channels}, for more
information.
@cindex channel news
@item --news
@itemx -N
Display the list of packages added or upgraded since the previous generation.
Display the list of packages added or upgraded since the previous
generation, as well as, occasionally, news written by channel authors
for their users (@pxref{Channels, Writing Channel News}).
This is the same information as displayed upon @command{guix pull} completion,
but without ellipses; it is also similar to the output of @command{guix pull
-l} for the last generation (see below).
The package information is the same as displayed upon @command{guix
pull} completion, but without ellipses; it is also similar to the output
of @command{guix pull -l} for the last generation (see below).
@item --list-generations[=@var{pattern}]
@itemx -l [@var{pattern}]
@ -3724,6 +3757,40 @@ is provided, the subset of generations that match @var{pattern}.
The syntax of @var{pattern} is the same as with @code{guix package
--list-generations} (@pxref{Invoking guix package}).
@item --roll-back
@cindex rolling back
@cindex undoing transactions
@cindex transactions, undoing
Roll back to the previous @dfn{generation} of @file{~/.config/guix/current}---i.e.,
undo the last transaction.
@item --switch-generation=@var{pattern}
@itemx -S @var{pattern}
@cindex generations
Switch to a particular generation defined by @var{pattern}.
@var{pattern} may be either a generation number or a number prefixed
with ``+'' or ``-''. The latter means: move forward/backward by a
specified number of generations. For example, if you want to return to
the latest generation after @code{--roll-back}, use
@code{--switch-generation=+1}.
@item --delete-generations[=@var{pattern}]
@itemx -d [@var{pattern}]
When @var{pattern} is omitted, delete all generations except the current
one.
This command accepts the same patterns as @option{--list-generations}.
When @var{pattern} is specified, delete the matching generations. When
@var{pattern} specifies a duration, generations @emph{older} than the
specified duration match. For instance, @code{--delete-generations=1m}
deletes generations that are more than one month old.
If the current generation matches, it is @emph{not} deleted.
Note that deleting generations prevents rolling back to them.
Consequently, this command must be used with care.
@xref{Invoking guix describe}, for a way to display information about the
current generation only.
@ -3946,6 +4013,68 @@ add a meta-data file @file{.guix-channel} that contains:
(directory "guix"))
@end lisp
@cindex news, for channels
@subsection Writing Channel News
Channel authors may occasionally want to communicate to their users
information about important changes in the channel. You'd send them all
an email, but that's not convenient.
Instead, channels can provide a @dfn{news file}; when the channel users
run @command{guix pull}, that news file is automatically read and
@command{guix pull --news} can display the announcements that correspond
to the new commits that have been pulled, if any.
To do that, channel authors must first declare the name of the news file
in their @file{.guix-channel} file:
@lisp
(channel
(version 0)
(news-file "etc/news.txt"))
@end lisp
The news file itself, @file{etc/news.txt} in this example, must look
something like this:
@lisp
(channel-news
(version 0)
(entry (tag "the-bug-fix")
(title (en "Fixed terrible bug")
(fr "Oh la la"))
(body (en "@@emph@{Good news@}! It's fixed!")
(eo "Certe ĝi pli bone funkcias nun!")))
(entry (commit "bdcabe815cd28144a2d2b4bc3c5057b051fa9906")
(title (en "Added a great package")
(ca "Què vol dir guix?"))
(body (en "Don't miss the @@code@{hello@} package!"))))
@end lisp
The file consists of a list of @dfn{news entries}. Each entry is
associated with a commit or tag: it describes changes made in this
commit, possibly in preceding commits as well. Users see entries only
the first time they obtain the commit the entry refers to.
The @code{title} field should be a one-line summary while @code{body}
can be arbitrarily long, and both can contain Texinfo markup
(@pxref{Overview,,, texinfo, GNU Texinfo}). Both the title and body are
a list of language tag/message tuples, which allows @command{guix pull}
to display news in the language that corresponds to the user's locale.
If you want to translate news using a gettext-based workflow, you can
extract translatable strings with @command{xgettext} (@pxref{xgettext
Invocation,,, gettext, GNU Gettext Utilities}). For example, assuming
you write news entries in English first, the command below creates a PO
file containing the strings to translate:
@example
xgettext -o news.po -l scheme -ken etc/news.scm
@end example
To sum up, yes, you could use your channel as a blog. But beware, this
is @emph{not quite} what your users might expect.
@subsection Replicating Guix
@cindex pinning, channels
@ -4835,7 +4964,9 @@ specified binaries and symlinks.
@item docker
This produces a tarball that follows the
@uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md,
Docker Image Specification}.
Docker Image Specification}. The ``repository name'' as it appears in
the output of the @command{docker images} command is computed from
package names passed on the command line or in the manifest file.
@item squashfs
This produces a SquashFS image containing all the specified binaries and
@ -6050,7 +6181,7 @@ package, correctly capitalized.
For packages requiring shared library dependencies, you may need to write the
@file{/deps/deps.jl} file manually. It's usually a line of @code{const
variable = /gnu/store/libary.so} for each dependency, plus a void function
variable = /gnu/store/library.so} for each dependency, plus a void function
@code{check_deps() = nothing}.
Some older packages that aren't using @file{Package.toml} yet, will require
@ -13041,6 +13172,33 @@ objects}).
@end table
@end deftp
@cindex nftables
@defvr {Scheme Variable} nftables-service-type
This is the service type to set up a nftables configuration. nftables is a
netfilter project that aims to replace the existing iptables, ip6tables,
arptables and ebtables framework. It provides a new packet filtering
framework, a new user-space utility @command{nft}, and a compatibility layer
for iptables. This service comes with a default ruleset
@code{%default-nftables-ruleset} that rejecting all incomming connections
except those to the ssh port 22. To use it, simply write:
@lisp
(service nftables-service-type)
@end lisp
@end defvr
@deftp {Data Type} nftables-configuration
The data type representing the configuration of nftables.
@table @asis
@item @code{package} (default: @code{nftables})
The nftables package that provides @command{nft}.
@item @code{ruleset} (default: @code{%default-nftables-ruleset})
The nftables ruleset to use. This may be any ``file-like'' object
(@pxref{G-Expressions, file-like objects}).
@end table
@end deftp
@cindex NTP (Network Time Protocol), service
@cindex ntpd, service for the Network Time Protocol daemon
@cindex real time clock

View file

@ -26,7 +26,8 @@ info_TEXINFOS = %D%/guix.texi \
%D%/guix.es.texi \
%D%/guix.fr.texi \
%D%/guix.ru.texi \
%D%/guix.zh_CN.texi
%D%/guix.zh_CN.texi \
%D%/guix-cookbook.texi
%C%_guix_TEXINFOS = \
%D%/contributing.texi \
@ -109,6 +110,12 @@ $(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.
-$(AM_V_POXREF)$(xref_command)
-mv "$@.tmp" "$@"
$(srcdir)/%D%/guix-cookbook.%.texi: po/doc/guix-cookbook.%.po
-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix-cookbook.texi" -p "$<" -l "$@.tmp"
-sed -i "s|guix-cookbook\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
-$(AM_V_POXREF)$(xref_command)
-mv "$@.tmp" "$@"
$(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po
-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/contributing.texi" -p "$<" -l "$@.tmp"
-$(AM_V_POXREF)$(xref_command)

30
etc/news.scm Normal file
View file

@ -0,0 +1,30 @@
;; GNU Guix news, for use by 'guix pull'.
;;
;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;
;; Copying and distribution of this file, with or without modification, are
;; permitted in any medium without royalty provided the copyright notice and
;; this notice are preserved.
(channel-news
(version 0)
(entry (commit "dcc90d15581189dbc30e201db2b807273d6484f0")
(title (en "New channel news mechanism")
(de "Neuer Mechanismus, um Neuigkeiten über Kanäle anzuzeigen.")
(fr "Nouveau mécanisme d'information sur les canaux"))
(body
(en "You are reading this message through the new channel news
mechanism, congratulations! This mechanism allows channel authors to provide
@dfn{news entries} that their users can view with @command{guix pull --news}.
Run @command{info \"(guix) Invoking guix pull\"} for more info.")
(de "Sie lesen diese Meldung mit Hilfe des neuen Mechanismus, um
Neuigkeiten über Kanäle anzuzeigen Glückwunsch! Mit diesem
Mechanismus können Kanalautoren Ihren Nutzern @dfn{Einträge zu
Neuigkeiten} mitteilen, die diese sich mit @command{guix pull --news}
anzeigen lassen können. Führen Sie @command{info \"(guix.de) Aufruf
von guix pull\"} aus, um weitere Informationen zu erhalten.")
(fr "Ce message t'arrive à travers le nouveau mécanisme d'information
des canaux, bravo ! Ce mécanisme permet aux auteur·rice·s de canaux de
fournir des informations qu'on peut visualiser avec @command{guix pull
--news}. Tape @command{info \"(guix.fr) Invoquer guix pull\"} pour plus de
détails."))))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
@ -159,14 +159,14 @@ (define (prompt-luks-passwords user-partitions)
(format #f (G_ "Please enter the password for the \
encryption of partition ~a (label: ~a).") file-name crypt-label)
(G_ "Password required")
#:input-hide-checkbox? #t)))
#:input-visibility-checkbox? #t)))
(password-confirm-page
(lambda ()
(run-input-page
(format #f (G_ "Please confirm the password for the \
encryption of partition ~a (label: ~a).") file-name crypt-label)
(G_ "Password confirmation required")
#:input-hide-checkbox? #t))))
#:input-visibility-checkbox? #t))))
(if crypt-label
(let loop ()
(let ((password (password-page))

View file

@ -143,6 +143,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/dejagnu.scm \
%D%/packages/dico.scm \
%D%/packages/dictionaries.scm \
%D%/packages/diffoscope.scm \
%D%/packages/digest.scm \
%D%/packages/direct-connect.scm \
%D%/packages/disk.scm \
@ -270,6 +271,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/jrnl.scm \
%D%/packages/jose.scm \
%D%/packages/julia.scm \
%D%/packages/jupyter.scm \
%D%/packages/kawa.scm \
%D%/packages/kde.scm \
%D%/packages/kde-frameworks.scm \
@ -789,10 +791,10 @@ dist_patch_DATA = \
%D%/packages/patches/emacs-highlight-stages-add-gexp.patch \
%D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
%D%/packages/patches/emacs-source-date-epoch.patch \
%D%/packages/patches/emacs-unpackaged-req.patch \
%D%/packages/patches/emacs-undohist-ignored.patch \
%D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \
%D%/packages/patches/emacs-zones-called-interactively.patch \
%D%/packages/patches/enjarify-setup-py.patch \
%D%/packages/patches/enlightenment-fix-setuid-path.patch \
%D%/packages/patches/erlang-man-path.patch \
%D%/packages/patches/eudev-rules-directory.patch \

View file

@ -25,6 +25,7 @@
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -55,6 +56,7 @@ (define-module (gnu packages admin)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
@ -684,7 +686,7 @@ (define-public alive
(define-public isc-dhcp
(let* ((bind-major-version "9")
(bind-minor-version "11")
(bind-patch-version "10")
(bind-patch-version "11")
(bind-release-type "") ; for patch release, use "-P"
(bind-release-version "") ; for patch release, e.g. "6"
(bind-version (string-append bind-major-version
@ -825,7 +827,7 @@ (define-public isc-dhcp
"/bind-" bind-version ".tar.gz"))
(sha256
(base32
"1hvhdaar9swh5087kzkbmav1nbn19rxh0m60x0d7gri0v8689fxj"))))
"0swavslyli3vcrkcm2ip11s6p58g3k7r4gjs2b899r25cqrk0lk1"))))
;; When cross-compiling, we need the cross Coreutils and sed.
;; Otherwise just use those from %FINAL-INPUTS.
@ -2751,6 +2753,64 @@ (define-public neofetch
you are running, what theme or icon set you are using, etc.")
(license license:expat)))
(define-public screenfetch
;; First commit supporting current Guix System.
(let ((commit "e3ec82dd464e81e4d10bef218b3016e3044c766c"))
(package
(name "screenfetch")
(version (git-version "3.8.0" "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/KittyKatt/screenFetch")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1lzs1l5xgj9mn4b59lhkfgqnyiivf8svd1iwjabzrax90rdmxfwj"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((source (assoc-ref %build-inputs "source"))
(out (assoc-ref %outputs "out")))
(mkdir-p (string-append out "/bin/"))
(copy-file (string-append source "/screenfetch-dev")
(string-append out "/bin/screenfetch"))
(install-file (string-append source "/screenfetch.1")
(string-append out "/man/man1/"))
(install-file (string-append source "/COPYING")
(string-append out "/share/doc/" ,name "-" ,version))
(substitute* (string-append out "/bin/screenfetch")
(("/usr/bin/env bash")
(string-append (assoc-ref %build-inputs "bash")
"/bin/bash")))
(wrap-program
(string-append out "/bin/screenfetch")
`("PATH" ":" prefix
(,(string-append (assoc-ref %build-inputs "bc") "/bin:"
(assoc-ref %build-inputs "scrot") "/bin:"
(assoc-ref %build-inputs "xdpyinfo") "/bin"
(assoc-ref %build-inputs "xprop") "/bin"))))
(substitute* (string-append out "/bin/screenfetch")
(("#!#f")
(string-append "#!" (assoc-ref %build-inputs "bash")
"/bin/bash")))))))
(inputs
`(("bash" ,bash)
("bc" ,bc)
("scrot" ,scrot)
("xdpyinfo" ,xdpyinfo)
("xprop" ,xprop)))
(home-page "https://github.com/KittyKatt/screenFetch")
(synopsis "System information script")
(description "Bash screenshot information tool which can be used to
generate those nifty terminal theme information and ASCII distribution logos in
everyone's screenshots nowadays.")
(license license:gpl3))))
(define-public nnn
(package
(name "nnn")

View file

@ -40,6 +40,7 @@ (define-module (gnu packages android)
#:use-module (gnu packages docker)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages java)
#:use-module (gnu packages linux)
#:use-module (gnu packages pcre)
#:use-module (gnu packages python)
@ -936,3 +937,60 @@ (define-public fdroidserver
publishing, or to assist in creating, testing and submitting metadata to the
main repository.")
(license license:agpl3+)))
(define-public enjarify
(package
(name "enjarify")
(version "1.0.3")
(home-page "https://github.com/Storyyeller/enjarify")
(source
(origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit version)))
(file-name (git-file-name name version))
(patches
(search-patches "enjarify-setup-py.patch"))
(sha256
(base32
"1nam7h1g4f1h6jla4qcjjagnyvd24dv6d5445w04q8hx07nxdapk"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enjarify-wrapper-inherit-pythonpath
;; enjarify sets PYTHONPATH from a shell script, overwriting
;; PYTHONPATH set from guix. Comment out this line.
(lambda _
(substitute* "enjarify.sh"
(("export PYTHONPATH") "# export PYTHONPATH"))
#t))
(add-before 'check 'fixup-expected-test-results
;; Upstream adjusted this test in commit:
;; 3ae884a6485af82d300515813f537685b08dd800
(lambda _
(substitute* "tests/test2/expected.txt"
(("^20") "0"))
#t))
(add-before 'check 'drop-java-xss-argument
;; Upstream removed this argument in order to support 32-bit
;; architectures. commit: 4be0111d879aa95fdc0d9f24fe529f8c664d4093
(lambda _
(substitute* "enjarify/runtests.py"
(("java -Xss515m") "java "))
#t))
(add-after 'install 'install-enjarify-wrapper
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")))
(mkdir-p (string-append out "/bin/"))
(copy-file "enjarify.sh" (string-append out "/bin/enjarify"))
#t))))))
(native-inputs `(("openjdk" ,openjdk12)))
(synopsis "Translate Dalvik bytecode to equivalent Java bytecode")
(description "Android applications are Java programs that run on a
customized virtual machine, which is part of the Android operating system, the
Dalvik VM. Their bytecode differs from the bytecode of normal Java
applications. Enjarify can translate the Dalvik bytecode back to equivalent
Java bytecode, which simplifies the analysis of Android applications.")
(license license:asl2.0)))

View file

@ -1027,7 +1027,7 @@ (define-public vco-plugins
@enumerate
@item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
@item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
@item Rec-VCO, a square / rectange oscillator
@item Rec-VCO, a square / rectangle oscillator
@end enumerate\n
All oscillators are low-pass filtered to provide waveforms similar to the

View file

@ -1133,7 +1133,7 @@ CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NETFILTER_NETLINK_OSF=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
# CONFIG_NF_LOG_NETDEV is not set
CONFIG_NF_LOG_NETDEV=m
CONFIG_NETFILTER_CONNCOUNT=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
@ -1176,8 +1176,8 @@ CONFIG_NF_NAT_REDIRECT=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
@ -1189,15 +1189,22 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_TUNNEL=m
# CONFIG_NFT_OBJREF is not set
CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
@ -1361,8 +1368,12 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@ -1370,6 +1381,9 @@ CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=y
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NFT_MASQ_IPV4=m
CONFIG_NFT_REDIR_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
@ -1401,7 +1415,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_NFT_REDIR_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
@ -1430,7 +1451,9 @@ CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_NF_DEFRAG_IPV6=m
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m

View file

@ -1120,10 +1120,11 @@ CONFIG_NF_NAT_REDIRECT=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
CONFIG_NFT_COUNTER=m
CONFIG_NFT_CONNLIMIT=m
CONFIG_NFT_LOG=m
@ -1136,12 +1137,20 @@ CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
# CONFIG_NF_FLOW_TABLE is not set
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
#
@ -1303,14 +1312,22 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=y
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NFT_MASQ_IPV4=m
CONFIG_NFT_REDIR_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
@ -1342,7 +1359,15 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_NFT_REDIR_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
@ -1358,7 +1383,7 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_RPFILTER=m
CONFIG_IP6_NF_MATCH_RT=m
# CONFIG_IP6_NF_MATCH_SRH is not set
CONFIG_IP6_NF_MATCH_SRH=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
@ -1370,7 +1395,9 @@ CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_NF_DEFRAG_IPV6=m
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m

View file

@ -1209,8 +1209,8 @@ CONFIG_NF_NAT_REDIRECT=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
@ -1226,11 +1226,18 @@ CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
@ -1394,8 +1401,12 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@ -1403,6 +1414,9 @@ CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=y
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NFT_MASQ_IPV4=m
CONFIG_NFT_REDIR_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
@ -1434,7 +1448,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_NFT_REDIR_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
@ -1468,7 +1489,9 @@ CONFIG_NF_DEFRAG_IPV6=m
# DECnet: Netfilter Configuration
#
CONFIG_DECNET_NF_GRABULATOR=m
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m

View file

@ -1219,8 +1219,8 @@ CONFIG_NF_NAT_REDIRECT=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
@ -1236,11 +1236,18 @@ CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
@ -1404,8 +1411,12 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@ -1413,6 +1424,9 @@ CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=y
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NFT_MASQ_IPV4=m
CONFIG_NFT_REDIR_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
@ -1444,7 +1458,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_NFT_REDIR_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
@ -1478,7 +1499,9 @@ CONFIG_NF_DEFRAG_IPV6=m
# DECnet: Netfilter Configuration
#
CONFIG_DECNET_NF_GRABULATOR=m
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m

View file

@ -1117,7 +1117,7 @@ CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NETFILTER_NETLINK_OSF=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
# CONFIG_NF_LOG_NETDEV is not set
CONFIG_NF_LOG_NETDEV=m
CONFIG_NETFILTER_CONNCOUNT=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
@ -1157,8 +1157,8 @@ CONFIG_NF_NAT_MASQUERADE=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
@ -1168,17 +1168,25 @@ CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_TUNNEL=m
# CONFIG_NFT_OBJREF is not set
CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_XFRM=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
@ -1345,8 +1353,11 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@ -1383,7 +1394,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
@ -1412,7 +1426,9 @@ CONFIG_IP6_NF_TARGET_NPT=m
# end of IPv6: Netfilter Configuration
CONFIG_NF_DEFRAG_IPV6=m
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m

View file

@ -1118,28 +1118,38 @@ CONFIG_NF_NAT_MASQUERADE=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
# CONFIG_NFT_FLOW_OFFLOAD is not set
CONFIG_NFT_COUNTER=m
CONFIG_NFT_CONNLIMIT=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_TUNNEL=m
CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_XFRM=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
# CONFIG_NF_FLOW_TABLE is not set
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
#
@ -1304,8 +1314,12 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
@ -1341,7 +1355,11 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
@ -1355,7 +1373,7 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_RPFILTER=m
CONFIG_IP6_NF_MATCH_RT=m
# CONFIG_IP6_NF_MATCH_SRH is not set
CONFIG_IP6_NF_MATCH_SRH=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
@ -1369,7 +1387,9 @@ CONFIG_IP6_NF_TARGET_NPT=m
# end of IPv6: Netfilter Configuration
CONFIG_NF_DEFRAG_IPV6=m
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
@ -8028,9 +8048,9 @@ CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=m
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=m
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
@ -8687,7 +8707,7 @@ CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
# CONFIG_INDIRECT_PIO is not set
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC16=y
CONFIG_CRC_T10DIF=y
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y

View file

@ -1147,8 +1147,8 @@ CONFIG_NF_NAT_MASQUERADE=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
@ -1158,17 +1158,25 @@ CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_TUNNEL=m
CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_XFRM=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
@ -1335,8 +1343,11 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@ -1373,7 +1384,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
@ -1409,7 +1423,9 @@ CONFIG_NF_DEFRAG_IPV6=m
CONFIG_DECNET_NF_GRABULATOR=m
# end of DECnet: Netfilter Configuration
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m

View file

@ -1168,8 +1168,8 @@ CONFIG_NF_NAT_MASQUERADE=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_SET=m
# CONFIG_NF_TABLES_INET is not set
# CONFIG_NF_TABLES_NETDEV is not set
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
@ -1179,17 +1179,25 @@ CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m
CONFIG_NFT_TUNNEL=m
CONFIG_NFT_OBJREF=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_XFRM=m
CONFIG_NFT_SOCKET=m
CONFIG_NFT_OSF=m
CONFIG_NFT_TPROXY=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_FIB_NETDEV=m
CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NETFILTER_XTABLES=m
@ -1356,8 +1364,11 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TPROXY_IPV4=m
# CONFIG_NF_TABLES_IPV4 is not set
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=y
CONFIG_NF_FLOW_TABLE_IPV4=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@ -1394,7 +1405,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TPROXY_IPV6=m
# CONFIG_NF_TABLES_IPV6 is not set
CONFIG_NF_TABLES_IPV6=y
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_FLOW_TABLE_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
@ -1430,7 +1444,9 @@ CONFIG_NF_DEFRAG_IPV6=m
CONFIG_DECNET_NF_GRABULATOR=m
# end of DECnet: Netfilter Configuration
# CONFIG_NF_TABLES_BRIDGE is not set
CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m

View file

@ -47,8 +47,8 @@ (define-module (gnu packages ci)
#:use-module (guix build-system gnu))
(define-public cuirass
(let ((commit "1cd2f9334dde13542732c22753c4ebde61bc95e0")
(revision "23"))
(let ((commit "d27ff21e430cd38b02bd70a0dc8d60c9c2736f83")
(revision "24"))
(package
(name "cuirass")
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
@ -60,7 +60,7 @@ (define-public cuirass
(file-name (string-append name "-" version))
(sha256
(base32
"0r3x8gv0v89brjqi8r31p6c0mblbaf2kdk2fz99jiab4pir16w87"))))
"166xl9zfy7dm645fk2ln45bvw0y0gy0xw8fb7mprbjz8v95dh27p"))))
(build-system gnu-build-system)
(arguments
'(#:modules ((guix build utils)

View file

@ -25,11 +25,16 @@ (define-module (gnu packages crates-io)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages gcc)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages llvm)
#:use-module (gnu packages maths)
#:use-module (gnu packages pkg-config))
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web))
;;;
;;; Please: Try to add new module packages in alphabetic order.
@ -158,6 +163,35 @@ (define-public rust-autocfg
(license (list license:asl2.0
license:expat))))
(define-public rust-backtrace-sys
(package
(name "rust-backtrace-sys")
(version "0.1.31")
(source
(origin
(method url-fetch)
(uri (crate-uri "backtrace-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0as2pk77br4br04daywhivpi1ixxb8y2c7f726kj849dxys31a42"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-compiler-builtins"
,rust-compiler-builtins)
("rust-libc" ,rust-libc)
("rust-rustc-std-workspace-core"
,rust-rustc-std-workspace-core))
#:cargo-development-inputs
(("rust-cc" ,rust-cc))))
(home-page "https://github.com/rust-lang/backtrace-rs")
(synopsis "Bindings to the libbacktrace gcc library")
(description
"This package provides bindings to the libbacktrace gcc library.")
(license (list license:asl2.0
license:expat))))
(define-public rust-base-x
(package
(name "rust-base-x")
@ -386,6 +420,35 @@ (define-public rust-clang-sys
"This package provides Rust bindings for @code{libclang}.")
(license license:asl2.0)))
(define-public rust-clang-sys-0.26
(package
(inherit rust-clang-sys)
(name "rust-clang-sys")
(version "0.26.4")
(source
(origin
(method url-fetch)
(uri (crate-uri "clang-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1r50dwy5hj5gq07dn0qf8222d07qv0970ymx0j8n9779yayc3w3f"))))
(arguments
`(#:cargo-inputs
(("rust-glob" ,rust-glob-0.2)
("rust-libc" ,rust-libc)
("rust-libloading" ,rust-libloading))
#:cargo-development-inputs
(("rust-glob" ,rust-glob-0.2))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-environmental-variable
(lambda* (#:key inputs #:allow-other-keys)
(let ((clang (assoc-ref inputs "libclang")))
(setenv "LIBCLANG_PATH"
(string-append clang "/lib")))
#t)))))))
(define-public rust-clicolors-control
(package
(name "rust-clicolors-control")
@ -412,6 +475,31 @@ (define-public rust-clicolors-control
colorization.")
(license license:expat)))
(define-public rust-clippy
(package
(name "rust-clippy")
(version "0.0.302")
(source
(origin
(method url-fetch)
(uri (crate-uri "clippy" version))
(file-name
(string-append name "-" version ".tar.gz"))
(sha256
(base32
"1562x3sq9mgmc8j39gd34wqm7ybrdvpmj7cc1n450gwsawayw4fr"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-term" ,rust-term))))
(home-page "https://github.com/rust-lang/rust-clippy")
(synopsis
"A bunch of helpful lints to avoid common pitfalls in Rust.")
(description
"This package provides a bunch of helpful lints to avoid common pitfalls in Rust.")
(license (list license:asl2.0
license:expat))))
(define-public rust-cloudabi
(package
(name "rust-cloudabi")
@ -529,6 +617,51 @@ (define-public rust-core-foundation-sys
(license (list license:asl2.0
license:expat))))
(define-public rust-curl-sys
(package
(name "rust-curl-sys")
(version "0.4.20")
(source
(origin
(method url-fetch)
(uri (crate-uri "curl-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"02542zmvl3fpdqf7ai4cqnamm4albx9j645dkjx5qr1myq8ax42y"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-libc" ,rust-libc)
("rust-libnghttp2-sys" ,rust-libnghttp2-sys)
("rust-libz-sys" ,rust-libz-sys)
("rust-openssl-sys" ,rust-openssl-sys)
("rust-winapi" ,rust-winapi))
#:cargo-development-inputs
(("rust-cc" ,rust-cc)
("rust-pkg-config" ,rust-pkg-config)
("rust-openssl-src" ,rust-openssl-src)
("rust-vcpkg" ,rust-vcpkg))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'find-openssl
(lambda* (#:key inputs #:allow-other-keys)
(let ((openssl (assoc-ref inputs "openssl")))
(setenv "OPENSSL_DIR" openssl))
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("curl" ,curl)
("nghttp2" ,nghttp2)
("openssl" ,openssl)
("zlib" ,zlib)))
(home-page "https://github.com/alexcrichton/curl-rust")
(synopsis "Native bindings to the libcurl library")
(description
"This package provides native bindings to the @code{libcurl} library.")
(license license:expat)))
(define-public rust-data-encoding
(package
(name "rust-data-encoding")
@ -582,6 +715,33 @@ (define-public rust-defmac-0.1
(base32
"17giv0n0n1r64z0dahfvkjy3ys517jxyhs8sd9lmgvcljpjyryxa"))))))
(define-public rust-dirs
(package
(name "rust-dirs")
(version "1.0.3")
(source
(origin
(method url-fetch)
(uri (crate-uri "dirs" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"02vigc566z5i6n9wr2x8sch39qp4arn89xhhrh18fhpm3jfc0ygn"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-libc" ,rust-libc)
("rust-winapi" ,rust-winapi))))
(home-page "https://github.com/soc/dirs-rs")
(synopsis "Abstractions for standard locations for various platforms")
(description
"This package provides a tiny low-level library that provides
platform-specific standard locations of directories for config, cache and other
data on Linux, Windows, macOS and Redox by leveraging the mechanisms defined by
the XDG base/user directory specifications on Linux, the Known Folder API on
Windows, and the Standard Directory guidelines on macOS.")
(license (list license:expat license:asl2.0))))
(define-public rust-discard
(package
(name "rust-discard")
@ -641,6 +801,20 @@ (define-public rust-dtoa
(license (list license:asl2.0
license:expat))))
(define-public rust-dtoa-0.2
(package
(inherit rust-dtoa)
(name "rust-dtoa")
(version "0.2.2")
(source
(origin
(method url-fetch)
(uri (crate-uri "dtoa" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0g96cap6si1g6wi62hsdk2fnj3sf5vd4i97zj6163j8hhnsl3n0d"))))))
(define-public rust-fallible-iterator
(package
(name "rust-fallible-iterator")
@ -883,6 +1057,28 @@ (define-public rust-futures
(license (list license:asl2.0
license:expat))))
(define-public rust-futures-core-preview
(package
(name "rust-futures-core-preview")
(version "0.3.0-alpha.17")
(source
(origin
(method url-fetch)
(uri (crate-uri "futures-core-preview" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1xaq8m609k6cz8xydwhwp8xxyxigabcw1w9ngycfy0bnkg7iq52b"))))
(build-system cargo-build-system)
(arguments
'(#:tests? #f)) ; The only tests are doc tests, which fail.
(home-page "https://rust-lang-nursery.github.io/futures-rs/")
(synopsis "Core traits and types in for the @code{futures} library.")
(description "This crate provides the core traits and types in for the
@code{futures} library.")
(license (list license:asl2.0
license:expat))))
(define-public rust-futures-cpupool
(package
(name "rust-futures-cpupool")
@ -928,6 +1124,30 @@ (define-public rust-futures-io-preview
(license (list license:asl2.0
license:expat))))
(define-public rust-futures-sink-preview
(package
(name "rust-futures-sink-preview")
(version "0.3.0-alpha.17")
(source
(origin
(method url-fetch)
(uri (crate-uri "futures-sink-preview" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1r4d0gy73hdxkh5g1lrhl1kjnwp6mywjgcj70v0z78b921da42a3"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-futures-core-preview" ,rust-futures-core-preview))))
(home-page "https://rust-lang-nursery.github.io/futures-rs/")
(synopsis "Asynchronous `Sink` trait for the futures-rs library")
(description
"This package provides the asynchronous @code{Sink} trait for the
futures-rs library.")
(license (list license:asl2.0
license:expat))))
(define-public rust-gcc
(package
(inherit rust-cc)
@ -1208,6 +1428,20 @@ (define-public rust-itoa
(license (list license:asl2.0
license:expat))))
(define-public rust-itoa-0.1
(package
(inherit rust-itoa)
(name "rust-itoa")
(version "0.1.1")
(source
(origin
(method url-fetch)
(uri (crate-uri "itoa" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"18g7p2hrb3dk84z3frfgmszfc9hjb4ps9vp99qlb1kmf9gm8hc5f"))))))
(define-public rust-jemalloc-sys
(package
(name "rust-jemalloc-sys")
@ -1379,6 +1613,79 @@ (define-public rust-libc
(license (list license:expat
license:asl2.0))))
(define-public rust-libgit2-sys
(package
(name "rust-libgit2-sys")
(version "0.8.2")
(source
(origin
(method url-fetch)
(uri (crate-uri "libgit2-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0y2mibmx7wy91s2kmb2gfb29mrqlqaxpy5wcwr8s1lwws7b9w5sc")) ))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-libc" ,rust-libc)
("rust-libssh2-sys" ,rust-libssh2-sys)
("rust-libz-sys" ,rust-libz-sys)
("rust-openssl-sys" ,rust-openssl-sys))
#:cargo-development-inputs
(("rust-cc" ,rust-cc)
("rust-pkg-config" ,rust-pkg-config))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'find-openssl
(lambda* (#:key inputs #:allow-other-keys)
(let ((openssl (assoc-ref inputs "openssl")))
(setenv "OPENSSL_DIR" openssl))
(delete-file-recursively "libgit2")
(setenv "LIBGIT2_SYS_USE_PKG_CONFIG" "1")
(setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("libgit2" ,libgit2)
("openssl" ,openssl)
("zlib" ,zlib)))
(home-page "https://github.com/rust-lang/git2-rs")
(synopsis "Native bindings to the libgit2 library")
(description
"This package provides native rust bindings to the @code{libgit2} library.")
(license (list license:asl2.0
license:expat))))
(define-public rust-libgit2-sys-0.7
(package
(inherit rust-libgit2-sys)
(name "rust-libgit2-sys")
(version "0.7.11")
(source
(origin
(method url-fetch)
(uri (crate-uri "libgit2-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1wcvg2qqra2aviasvqcscl8gb2rnjnd6h998wy5dlmf2bnriqi28"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-curl-sys" ,rust-curl-sys)
("rust-libc" ,rust-libc)
("rust-libssh2-sys" ,rust-libssh2-sys)
("rust-libz-sys" ,rust-libz-sys)
("rust-openssl-sys" ,rust-openssl-sys))
#:cargo-development-inputs
(("rust-cc" ,rust-cc)
("rust-pkg-config" ,rust-pkg-config))))
(inputs
`(("curl" ,curl)
,@(package-inputs rust-libgit2-sys)))))
(define-public rust-libloading
(package
(name "rust-libloading")
@ -1406,6 +1713,77 @@ (define-public rust-libloading
functions and static variables these libraries contain.")
(license license:isc)))
(define-public rust-libssh2-sys
(package
(name "rust-libssh2-sys")
(version "0.2.12")
(source
(origin
(method url-fetch)
(uri (crate-uri "libssh2-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1zb6gsw795nq848nk5x2smzpfnn1s15wjlzjnvr8ihlz2l5x2549"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-libc" ,rust-libc)
("rust-libz-sys" ,rust-libz-sys)
("rust-openssl-sys" ,rust-openssl-sys))
#:cargo-development-inputs
(("rust-cc" ,rust-cc)
("rust-openssl-src" ,rust-openssl-src)
("rust-pkg-config" ,rust-pkg-config)
("rust-vcpkg" ,rust-vcpkg))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'find-openssl
(lambda* (#:key inputs #:allow-other-keys)
(let ((openssl (assoc-ref inputs "openssl")))
(setenv "OPENSSL_DIR" openssl))
(delete-file-recursively "libssh2")
(setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("libssh2" ,libssh2)
("openssl" ,openssl)
("zlib" ,zlib)))
(home-page "https://github.com/alexcrichton/ssh2-rs")
(synopsis "Native bindings to the libssh2 library")
(description
"This package provides native rust bindings to the @code{libssh2} library.")
(license (list license:asl2.0
license:expat))))
(define-public rust-lock-api
(package
(name "rust-lock-api")
(version "0.1.5")
(source
(origin
(method url-fetch)
(uri (crate-uri "lock_api" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0b24q9mh258xa52ap636q1sxz0j5vrnp0hwbbh7ddjka3wwz3sv2"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-owning-ref" ,rust-owning-ref)
("rust-scopeguard" ,rust-scopeguard-0.3))))
(home-page "https://github.com/Amanieu/parking_lot")
(synopsis "Wrappers to create fully-featured Mutex and RwLock types")
(description
"This package provides wrappers to create fully-featured @code{Mutex} and
@code{RwLock} types. It is compatible with @code{no_std}.")
(license (list license:asl2.0
license:expat))))
(define-public rust-log
(package
(name "rust-log")
@ -1776,6 +2154,69 @@ (define-public rust-netlib-src
(license (list license:asl2.0
license:expat))))
(define-public rust-libnghttp2-sys
(package
(name "rust-libnghttp2-sys")
(version "0.1.2")
(source
(origin
(method url-fetch)
(uri (crate-uri "libnghttp2-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0qr4lyh7righx9n22c7amlcpk906rn1jnb2zd6gdfpa3yi24s982"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-libc" ,rust-libc))
#:cargo-development-inputs
(("rust-cc" ,rust-cc))))
(inputs
`(("nghttp2" ,nghttp2)))
(home-page "https://github.com/alexcrichton/nghttp2-rs")
(synopsis "FFI bindings for libnghttp2 (nghttp2)")
(description
"This package provides FFI bindings for libnghttp2 (nghttp2).")
(license (list license:asl2.0
license:expat))))
(define-public rust-libz-sys
(package
(name "rust-libz-sys")
(version "1.0.25")
(source
(origin
(method url-fetch)
(uri (crate-uri "libz-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1gjycyl2283525abks98bhxa4r259m617xfm5z52p3p3c8ry9d9f"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-libc" ,rust-libc)
("rust-cc" ,rust-cc)
("rust-pkg-config" ,rust-pkg-config)
("rust-vcpkg" ,rust-vcpkg))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'delete-vendored-zlib
(lambda _
(delete-file-recursively "src/zlib")
#t)))))
(inputs
`(("pkg-config" ,pkg-config)
("zlib" ,zlib)))
(home-page "https://github.com/rust-lang/libz-sys")
(synopsis "Bindings to the system libz library")
(description
"This package provides bindings to the system @code{libz} library (also
known as zlib).")
(license (list license:asl2.0
license:expat))))
(define-public rust-nodrop
(package
(name "rust-nodrop")
@ -1923,6 +2364,24 @@ (define-public rust-num-traits
(license (list license:asl2.0
license:expat))))
(define-public rust-num-traits-0.1
(package
(inherit rust-num-traits)
(name "rust-num-traits")
(version "0.1.43")
(source
(origin
(method url-fetch)
(uri (crate-uri "num-traits" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0c9whknf2dm74a3cqirafy6gj83a76gl56g4v3g19k6lkwz13rcj"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-num-traits" ,rust-num-traits))))))
(define-public rust-openssl-probe
(package
(name "rust-openssl-probe")
@ -1944,6 +2403,67 @@ (define-public rust-openssl-probe
(license (list license:asl2.0
license:expat))))
(define-public rust-openssl-src
(package
(name "rust-openssl-src")
(version "111.6.0+1.1.1d")
(source
(origin
(method url-fetch)
(uri (crate-uri "openssl-src" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"172xh95hp7aygahah1940kg1dnx60c5m80cwj5hgi8x7x0fxmhmr"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-cc" ,rust-cc))))
(home-page "https://github.com/alexcrichton/openssl-src-rs")
(synopsis "Source of OpenSSL for rust crates")
(description
"This package contains the source of OpenSSL and logic to build it.")
(license (list license:asl2.0
license:expat))))
(define-public rust-openssl-sys
(package
(name "rust-openssl-sys")
(version "0.9.49")
(source
(origin
(method url-fetch)
(uri (crate-uri "openssl-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1168vivyqbzaxl48bvv9r1x714c03f5c1za8pv5x8fyj9gjxkypl"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-autocfg" ,rust-autocfg)
("rust-libc" ,rust-libc))
#:cargo-development-inputs
(("rust-autocfg" ,rust-autocfg)
("rust-cc" ,rust-cc)
("rust-openssl-src" ,rust-openssl-src)
("rust-pkg-config" ,rust-pkg-config)
("rust-vcpkg" ,rust-vcpkg))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'find-openssl
(lambda* (#:key inputs #:allow-other-keys)
(let ((openssl (assoc-ref inputs "openssl")))
(setenv "OPENSSL_DIR" openssl))
#t)))))
(inputs
`(("openssl" ,openssl)
("pkg-config" ,pkg-config)))
(home-page "https://github.com/sfackler/rust-openssl")
(synopsis "FFI bindings to OpenSSL")
(description
"This package provides FFI bindings to OpenSSL for use in rust crates.")
(license license:expat)))
(define-public rust-owning-ref
(package
(name "rust-owning-ref")
@ -2035,6 +2555,20 @@ (define-public rust-percent-encoding
(license (list license:asl2.0
license:expat))))
(define-public rust-percent-encoding-1
(package
(inherit rust-percent-encoding)
(name "rust-percent-encoding")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (crate-uri "percent-encoding" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0cgq08v1fvr6bs5fvy390cz830lq4fak8havdasdacxcw790s09i"))))))
(define-public rust-permutohedron
(package
(name "rust-permutohedron")
@ -2468,6 +3002,26 @@ (define-public rust-rustc-demangle
(license (list license:asl2.0
license:expat))))
(define-public rust-rustc-hash
(package
(name "rust-rustc-hash")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "rustc-hash" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"114bf72466bl63i5hh8fgqfnhihs0w1m9c9jz505095agfixnvg0"))))
(build-system cargo-build-system)
(home-page "https://github.com/rust-lang-nursery/rustc-hash")
(synopsis "Speedy, non-cryptographic hash used in rustc")
(description
"This package provides a speedy, non-cryptographic hash used in rustc.")
(license (list license:asl2.0
license:expat))))
(define-public rust-rustc-serialize
(package
(name "rust-rustc-serialize")
@ -2904,6 +3458,26 @@ (define-public rust-stacker
(license (list license:asl2.0
license:expat))))
(define-public rust-static-assertions
(package
(name "rust-static-assertions")
(version "0.3.4")
(source
(origin
(method url-fetch)
(uri (crate-uri "static-assertions" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1lw33i89888yb3x29c6dv4mrkg3534n0rlg3r7qzh4p58xmv6gkz"))))
(build-system cargo-build-system)
(home-page "https://github.com/nvzqz/static-assertions-rs")
(synopsis "Compile-time assertions for rust")
(description
"This package provides compile-time assertions to ensure that invariants
are met.")
(license (list license:expat license:asl2.0))))
(define-public rust-stdweb-internal-runtime
(package
(name "rust-stdweb-internal-runtime")
@ -2991,6 +3565,20 @@ (define-public rust-strsim
and Jaro-Winkler.")
(license license:expat)))
(define-public rust-strsim-0.8
(package
(inherit rust-strsim)
(name "rust-strsim")
(version "0.8.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "strsim" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"))))))
(define-public rust-synstructure-test-traits
(package
(name "rust-synstructure-test-traits")
@ -3096,6 +3684,30 @@ (define-public rust-tempfile
(license (list license:asl2.0
license:expat))))
(define-public rust-term
(package
(name "rust-term")
(version "0.4.6")
(source
(origin
(method url-fetch)
(uri (crate-uri "term" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1wbh8ngqkqr3f6wz902yplf60bd5yapnckvrkgmzp5nffi7n8qzs"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-kernel32-sys" ,rust-kernel32-sys)
("rust-winapi" ,rust-winapi))))
(home-page "https://github.com/Stebalien/term")
(synopsis "Terminal formatting library")
(description
"This package provides a terminal formatting library in rust.")
(license (list license:asl2.0
license:expat))))
(define-public rust-termcolor
(package
(name "rust-termcolor")
@ -3552,6 +4164,28 @@ (define-public rust-unindent
(license (list license:asl2.0
license:expat))))
(define-public rust-unreachable
(package
(name "rust-unreachable")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "unreachable" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0mps2il4xy2mjqc3appas27hhn2xmvixc3bzzhfrjj74gy3i0a1q"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-void" ,rust-void))))
(home-page "https://github.com/reem/rust-unreachable")
(synopsis "Unreachable code optimization hint in rust")
(description
"This package provides an unreachable code optimization hint in rust.")
(license (list license:asl2.0
license:expat))))
(define-public rust-unsafe-any
(package
(name "rust-unsafe-any")
@ -3787,7 +4421,7 @@ (define-public rust-widestring
(synopsis "Wide string Rust FFI library")
(description
"A wide string Rust FFI library for converting to and from wide strings,
such as those often used in Windows API or other FFI libaries. Both UTF-16 and
such as those often used in Windows API or other FFI libraries. Both UTF-16 and
UTF-32 types are provided, including support for malformed encoding.")
(license (list license:asl2.0
license:expat))))

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -29,7 +29,7 @@ (define-module (gnu packages datamash)
(define-public datamash
(package
(name "datamash")
(version "1.4")
(version "1.5")
(source
(origin
(method url-fetch)
@ -37,7 +37,7 @@ (define-public datamash
version ".tar.gz"))
(sha256
(base32
"0aj7wvv14s2fsf2rl49mqhxdagy8cbz6rz4xyi7bkg2nahnxsi7s"))))
"1b91pbdarnfmbhid8aa2f50k0fln8n7pg62782b4y0jlzvaljqi2"))))
(native-inputs
`(("which" ,which) ;for tests
("perl" ,perl))) ;for help2man

279
gnu/packages/diffoscope.scm Normal file
View file

@ -0,0 +1,279 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.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 (gnu packages diffoscope)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages admin)
#:use-module (gnu packages android)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bootloaders)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpio)
#:use-module (gnu packages dbm)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages haskell)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages java)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages mono)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages package-management)
#:use-module (gnu packages patchutils)
#:use-module (gnu packages pdf)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages ssh)
#:use-module (gnu packages statistics)
#:use-module (gnu packages textutils)
#:use-module (gnu packages video)
#:use-module (gnu packages vim)
#:use-module (gnu packages web)
#:use-module (guix build-system python)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (ice-9 match))
(define-public diffoscope
(let ((version "125"))
(package
(name "diffoscope")
(version version)
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"02kwisp9j63w27hhcwpdhg66dgxzz61q4fcyfz8z4hwlz6r0gyqy"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
;; setup.py mistakenly requires python-magic from PyPi, even
;; though the Python bindings of `file` are sufficient.
;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
(add-after 'unpack 'dependency-on-python-magic
(lambda _
(substitute* "setup.py"
(("'python-magic',") ""))))
;; Patch in support for known tools
(add-after 'unpack 'add-known-tools
(lambda _
(substitute* "diffoscope/external_tools.py"
(("'arch': 'enjarify'},")
"'arch': 'enjarify', 'guix': 'enjarify'},"))
(substitute* "diffoscope/external_tools.py"
(("'arch': 'python-jsbeautifier'},")
"'arch': 'python-jsbeautifier', 'guix': 'python-jsbeautifier'},"))
(substitute* "diffoscope/external_tools.py"
(("'arch': 'wabt'},")
"'arch': 'wabt', 'guix': 'wabt'},"))))
;; This test is broken because our `file` package has a
;; bug in berkeley-db file type detection.
(add-after 'unpack 'remove-berkeley-test
(lambda _
(delete-file "tests/comparators/test_berkeley_db.py")
#t))
;; Test is dynamically generated and may have false
;; negatives with different ocaml versions. Further
;; background in: https://bugs.debian.org/939386
(add-after 'unpack 'remove-ocaml-test
(lambda _
(substitute* "tests/comparators/test_ocaml.py"
(("def test_diff.differences.:")
"def skip_test_diff(differences):"))
#t))
(add-after 'unpack 'skip-elf-tests
;; FIXME: libmix_differences test added in 125, and is
;; failing, need to explore why...
(lambda _
(substitute* "tests/comparators/test_elf.py"
(("def test_libmix_differences.libmix_differences.:")
"def skip_test_libmix_differences(libmix_differences):"))
#t))
(add-after 'unpack 'embed-tool-references
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "diffoscope/comparators/utils/compare.py"
(("\\['xxd',")
(string-append "['" (which "xxd") "',")))
(substitute* "diffoscope/comparators/elf.py"
(("@tool_required\\('readelf'\\)") "")
(("get_tool_name\\('readelf'\\)")
(string-append "'" (which "readelf") "'")))
(substitute* "diffoscope/comparators/directory.py"
(("@tool_required\\('stat'\\)") "")
(("@tool_required\\('getfacl'\\)") "")
(("\\['stat',")
(string-append "['" (which "stat") "',"))
(("\\['getfacl',")
(string-append "['" (which "getfacl") "',")))
#t))
(add-before 'check 'writable-test-data
(lambda _
;; tests may need needs write access to tests
;; directory
(for-each make-file-writable (find-files "tests"))
#t))
(add-before 'check 'delete-failing-test
(lambda _
;; this requires /sbin to be on the path
(delete-file "tests/test_tools.py")
#t)))))
(inputs `(("rpm" ,rpm) ;for rpm-python
("python-file" ,python-file)
("python-debian" ,python-debian)
("python-libarchive-c" ,python-libarchive-c)
("python-tlsh" ,python-tlsh)
("acl" ,acl) ;for getfacl
("colordiff" ,colordiff)
("xxd" ,xxd)))
;; Below are modules used for tests.
(native-inputs `(("python-pytest" ,python-pytest)
("python-chardet" ,python-chardet)
("python-binwalk" ,python-binwalk)
;; test suite skips tests when tool is missing
,@(match (%current-system)
;; ghc is only available on x86 currently.
((or "x86_64-linux" "i686-linux")
`(("ghc" ,ghc)))
(_
`()))
,@(match (%current-system)
;; openjdk and dependent packages are only
;; available on x86_64 currently.
((or "x86_64-linux")
`(("enjarify" ,enjarify)
;; no unversioned openjdk available
("openjdk:jdk" ,openjdk12 "jdk")
))
(_
`()))
("abootimg" ,abootimg)
("bdb" ,bdb)
("binutils" ,binutils)
("bzip2" ,bzip2)
("cdrtools" ,cdrtools)
("colord" ,colord)
("cpio" ,cpio)
("docx2txt" ,docx2txt)
("dtc" ,dtc)
("e2fsprogs" ,e2fsprogs)
("ffmpeg" ,ffmpeg)
("gettext" ,gettext-minimal)
("ghostscript" ,ghostscript)
("giflib:bin" ,giflib "bin")
("gnumeric" ,gnumeric)
("gnupg" ,gnupg)
("imagemagick" ,imagemagick)
("libarchive" ,libarchive)
("llvm" ,llvm)
("lz4" ,lz4)
("mono" ,mono)
("ocaml" ,ocaml)
("odt2txt" ,odt2txt)
("openssh" ,openssh)
("pgpdump" ,pgpdump)
("poppler" ,poppler)
("python-jsbeautifier" ,python-jsbeautifier)
("r-minimal" ,r-minimal)
("rpm" ,rpm)
("sng" ,sng)
("sqlite" ,sqlite)
("squashfs-tools" ,squashfs-tools)
("tcpdump" ,tcpdump)
("unzip" ,unzip)
("wabt" ,wabt)
("xxd" ,xxd)
("xz" ,xz)
("zip" ,zip)))
(home-page "https://diffoscope.org/")
(synopsis "Compare files, archives, and directories in depth")
(description
"Diffoscope tries to get to the bottom of what makes files or directories
different. It recursively unpacks archives of many kinds and transforms
various binary formats into more human readable forms to compare them. It can
compare two tarballs, ISO images, or PDFs just as easily.")
(license license:gpl3+))))
(define-public trydiffoscope
(package
(name "trydiffoscope")
(version "67.0.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((share (string-append (assoc-ref outputs "out") "/share/")))
(mkdir-p (string-append share "/man/man1/" ))
(invoke "rst2man.py"
"trydiffoscope.1.rst"
(string-append share "/man/man1/trydiffoscope.1"))
(mkdir-p (string-append share "/doc/" ,name "-" ,version))
(install-file "./README.rst"
(string-append share "/doc/" ,name "-" ,version)))
#t)))))
(propagated-inputs
`(("python-requests" ,python-requests)))
(native-inputs
`(("gzip" ,gzip)
("python-docutils" ,python-docutils)))
(build-system python-build-system)
(home-page "https://try.diffoscope.org")
(synopsis "Client for remote diffoscope service")
(description "This is a client for the @url{https://try.diffoscope.org,
remote diffoscope service}.
Diffoscope tries to get to the bottom of what makes files or directories
different. It recursively unpacks archives of many kinds and transforms
various binary formats into more human readable forms to compare them. It can
compare two tarballs, ISO images, or PDFs just as easily.
Results are displayed by default, stored as local text or html files, or made
available via a URL on @url{https://try.diffoscope.org}. Results stored on the
server are purged after 30 days.")
(license license:gpl3+)))

View file

@ -109,7 +109,7 @@ (define-public dnsmasq
(define-public isc-bind
(package
(name "bind")
(version "9.14.5")
(version "9.14.6")
(source (origin
(method url-fetch)
(uri (string-append
@ -117,7 +117,7 @@ (define-public isc-bind
"/bind-" version ".tar.gz"))
(sha256
(base32
"0ic0k0kpavwnbyf10rwx6yypxg66f65fprwc0dbmp61xp0n6gl0j"))))
"1zpd47ckn5lf4qbscfkj7krngwn2gwsp961v5401h3lhxm0a0rw9"))))
(build-system gnu-build-system)
(outputs `("out" "utils"))
(inputs
@ -373,14 +373,14 @@ (define-public nsd
(define-public unbound
(package
(name "unbound")
(version "1.9.2")
(version "1.9.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.unbound.net/downloads/unbound-"
version ".tar.gz"))
(sha256
(base32 "15bbrczibap30db8a1pmqhvjbmkxms39hwiivby7f4j5rz2wwykg"))))
(base32 "1ykdy62sgzv33ggkmzwx2h0ifm7hyyxyfkb4zckv7gz4f28xsm8v"))))
(build-system gnu-build-system)
(outputs '("out" "python"))
(native-inputs

View file

@ -24,7 +24,7 @@
(define-module (gnu packages elixir)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (gnu packages erlang)
@ -34,15 +34,16 @@ (define-public elixir
(package
(name "elixir")
(version "1.8.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/elixir-lang/elixir"
"/archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0ddqxw24zdqlg7glzk22m7qjal8f18divzp364a6gi1bv6rg16yg"))
(patches (search-patches "elixir-path-length.patch"))))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/elixir-lang/elixir.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1n77cpcl2b773gmj3m9s24akvj9gph9byqbmj2pvlsmby4aqwckq"))
(patches (search-patches "elixir-path-length.patch"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@ -51,7 +52,11 @@ (define-public elixir
(assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'replace-paths
(add-after 'unpack 'make-git-checkout-writable
(lambda _
(for-each make-file-writable (find-files "."))
#t))
(add-after 'make-git-checkout-writable 'replace-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* '("lib/elixir/lib/system.ex"

File diff suppressed because it is too large Load diff

View file

@ -33,7 +33,7 @@ (define-module (gnu packages enchant)
(define-public enchant
(package
(name "enchant")
(version "2.2.5")
(version "2.2.7")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/AbiWord/enchant/releases"
@ -41,7 +41,7 @@ (define-public enchant
version ".tar.gz"))
(sha256
(base32
"0iqwzs11i9fvqdxv5kn0svcn2mzymn657qf3j66lg8dx1nh4xkpz"))))
"029smcna98hllgkm2gy94qa7qphxs4xaa8cdbg5kaaw16mhrf8hv"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static"

View file

@ -13,6 +13,7 @@
;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@ -50,9 +51,11 @@ (define-module (gnu packages engineering)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages fpga)
@ -66,10 +69,12 @@ (define-module (gnu packages engineering)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gperf)
#:use-module (gnu packages graphics)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages image)
#:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages linux) ;FIXME: for pcb
#:use-module (gnu packages m4)
@ -84,6 +89,7 @@ (define-module (gnu packages engineering)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages swig)
#:use-module (gnu packages tbb)
#:use-module (gnu packages tcl)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
@ -2214,3 +2220,214 @@ (define-public openscad
full programmatic control over your models.")
(home-page "https://www.openscad.org/")
(license license:gpl2+)))
(define-public freecad
(package
(name "freecad")
(version "0.18.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/FreeCAD/FreeCAD.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1ny29y0h8smg1bwi5yn4kcnyfprqh3v7v2z8837cmmhcwp8dr95m"))))
(build-system cmake-build-system)
(native-inputs
`(("doxygen" ,doxygen)
("graphviz" ,graphviz)
("qttools" ,qttools)
("pkg-config" ,pkg-config)
("swig" ,swig)))
(inputs
`(("boost" ,boost)
("coin3D" ,coin3D)
("eigen" ,eigen)
("freetype" ,freetype)
("glew" ,glew)
("hdf5" ,hdf5-1.10)
("libarea" ,libarea)
("libmedfile" ,libmedfile)
("libspnav" ,libspnav)
("libxi" ,libxi)
("libxmu" ,libxmu)
("openmpi" ,openmpi)
("opencascade-occt" ,opencascade-occt)
("python-matplotlib" ,python-matplotlib)
("python-pyside-2" ,python-pyside-2)
("python-pyside-2-tools" ,python-pyside-2-tools)
("python-shiboken-2" ,python-shiboken-2)
("python-wrapper" ,python-wrapper)
("qtbase" ,qtbase)
("qtsvg" ,qtsvg)
("qtx11extras" ,qtx11extras)
("qtxmlpatterns" ,qtxmlpatterns)
;; qtwebkit is optional. We remove it currently, because it takes
;; much time to compile and substitutes are often unavailable
;;("qtwebkit" ,qtwebkit)
("tbb" ,tbb)
("vtk" ,vtk)
("xerces-c" ,xerces-c)
("zlib" ,zlib)))
(arguments
`(#:tests? #f
#:configure-flags
(list
"-DBUILD_QT5=ON"
(string-append "-DCMAKE_INSTALL_LIBDIR="
(assoc-ref %outputs "out") "/lib"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'restore-pythonpath
(lambda _
(substitute* "src/Main/MainGui.cpp"
(("_?putenv\\(\"PYTHONPATH=\"\\);") ""))
#t))
(add-after 'install 'wrap-pythonpath
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/FreeCAD")
(list "PYTHONPATH"
'prefix (list (getenv "PYTHONPATH")))))
#t)))))
(home-page "https://www.freecadweb.org/")
(synopsis "Your Own 3D Parametric Modeler")
(description
"FreeCAD is a general purpose feature-based, parametric 3D modeler for
CAD, MCAD, CAx, CAE and PLM, aimed directly at mechanical engineering and
product design but also fits a wider range of uses in engineering, such as
architecture or other engineering specialties. It is 100% Open Source (LGPL2+
license) and extremely modular, allowing for very advanced extension and
customization.")
(license
(list
license:lgpl2.1+
license:lgpl2.0+
license:gpl3+
license:bsd-3))))
(define-public libmedfile
(package
(name "libmedfile")
(version "4.0.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://files.salome-platform.org/Salome/other/med-"
version ".tar.gz"))
(sha256
(base32
"017h9p0x533fm4gn6pwc8kmp72rvqmcn6vznx72nkkl2b05yjx54"))))
(build-system cmake-build-system)
(inputs `(("hdf5" ,hdf5-1.10)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'install 'remove-test-output
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(delete-file-recursively
(string-append out "/bin/testc"))
#t))))))
(home-page "https://www.salome-platform.org")
(synopsis "Library to read and write MED files")
(description
"The purpose of the MED module is to provide a standard for storing and
recovering computer data associated to numerical meshes and fields, and to
facilitate the exchange between codes and solvers.
The persistent data storage is based upon HDF format (like CGNS, a standard
developed by Boeing and NASA in the area of Computational Fluid Dynamic).
MED also provides structures to hold data on meshes and fields. These
structures are exchanged between solvers, hide the communication level (CORBA
or MPI), and offer persistence (read/write in .med files).
The main benefit of a common exchange format is reduced complexity of code
coupling. It also allows sharing such high level functionalities as
computation of nodal connectivity of sub-elements (faces and edges),
arithmetic operations on fields, entity location functionalities, and
interpolation toolkit.")
(license license:gpl3+)))
(define-public libarea
(let ((revision "1")
(commit "8f8bac811c10f1f01fda0d742a18591f61dd76ee"))
(package
(name "libarea")
(version (git-version "0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference (url "https://github.com/Heeks/libarea.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0pvqz6cabxqdz5y26wnj6alkn8v5d7gkx0d3h8xmg4lvy9r3kh3g"))))
(build-system gnu-build-system)
(inputs `(("boost" ,boost)
("python-wrapper" ,python-wrapper)))
(native-inputs
`(("cmake" ,cmake)))
(arguments
`(#:tests? #f
#:phases
(modify-phases %standard-phases
(add-after 'configure 'cmake-configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(cmake (assoc-ref inputs "cmake")))
(mkdir-p "build")
(invoke "cmake"
(string-append "-DCMAKE_INSTALL_PREFIX=" out)))))
(delete 'configure))))
(home-page "https://github.com/Heeks/libarea")
(synopsis
"Library and python module for pocketing and profiling operations")
(description
"Area is a CAM-related software for pocketing operation.
This project provides library and associated python-module to compute pocket
operations.")
(license (list
license:bsd-3
license:gpl3+)))))
(define-public libspnav
(package
(name "libspnav")
(version "0.2.3")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/FreeSpacenav/libspnav.git")
(commit (string-append "libspnav-" version))))
(sha256
(base32
"098h1jhlj87axpza5zgy58prp0zn94wyrbch6x0s7q4mzh7dc8ba"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(inputs
`(("libx11" ,libx11)))
(arguments `(#:tests? #f))
(home-page "http://spacenav.sourceforge.net/")
(synopsis
"Library for communicating with spacenavd or 3dxsrv")
(description
"The libspnav library is provided as a replacement of the magellan
library. It provides a cleaner, and more orthogonal interface. libspnav
supports both the original X11 protocol for communicating with the driver, and
the new alternative non-X protocol. Programs that choose to use the X11
protocol, are automatically compatible with either the free spacenavd driver
or the official 3dxserv, as if they were using the magellan SDK.
Also, libspnav provides a magellan API wrapper on top of the new API. So, any
applications that were using the magellan library, can switch to libspnav
without any changes. And programmers that are familliar with the magellan API
can continue using it with a free library without the restrictions of the
official SDK.")
(license license:bsd-3)))

View file

@ -65,7 +65,7 @@ (define-module (gnu packages enlightenment)
(define-public efl
(package
(name "efl")
(version "1.22.4")
(version "1.22.5")
(source (origin
(method url-fetch)
(uri (string-append
@ -73,7 +73,7 @@ (define-public efl
version ".tar.xz"))
(sha256
(base32
"084ihxy6g86yczhln5vn1amxi4qzqhvk4lpz9005kx92i6wh4h25"))))
"1cjk56z0whpzcqwg3xdq23kyp1g83xa67m9dlp7ywmb36bn4ca59"))))
(outputs '("out" ; 53 MB
"include")) ; 21 MB
(build-system gnu-build-system)

View file

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -109,14 +109,14 @@ (define-public gdb-8.2
(define-public gdb-8.3
(package
(inherit gdb-8.2)
(version "8.3")
(version "8.3.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-"
version ".tar.xz"))
(sha256
(base32
"0bnpzz0rl672xg5547q5qck2sxi6cnyixmk8bbb4gifw17ipwbw0"))))))
"1i2pjwaafrlz7wqm40b4znr77ai32rjsxkpl2az38yyarpbv8m8y"))))))
(define-public gdb
;; This is the fixed version that packages depend on. Update it rarely

View file

@ -7259,9 +7259,9 @@ (define-public libgnomekbd
(version "3.26.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(uri (string-append "mirror://gnome/sources/libgnomekbd/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
"libgnomekbd-" version ".tar.xz"))
(sha256
(base32
"0y962ykn3rr9gylj0pwpww7bi20lmhvsw6qvxs5bisbn2mih5jpp"))))

View file

@ -14,6 +14,7 @@
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1060,3 +1061,49 @@ (define-public opencsg
or by subtracting one shape from the other.")
(home-page "http://www.opencsg.org/")
(license license:gpl2))))
(define-public coin3D
(package
(name "coin3D")
(version "4.0.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://bitbucket.org/Coin3D/coin/downloads/coin-"
version "-src.zip"))
(sha256
(base32
"1mqwlqzvc9ydfxi0bfskwlil16mbnkphfz36p0zl2mvw6h05aqh0"))
(modules '((guix build utils)))
(snippet
'(begin
(for-each delete-file
'("cfg/csubst.exe"
"cfg/wrapmsvc.exe"))
#t))))
(build-system cmake-build-system)
(native-inputs
`(("doxygen" ,doxygen)
("graphviz" ,graphviz)))
(inputs
`(("boost" ,boost)
("freeglut" ,freeglut)
("glew" ,glew)))
(arguments
`(#:configure-flags
(list
"-DCOIN_BUILD_DOCUMENTATION_MAN=ON"
(string-append "-DBOOST_ROOT="
(assoc-ref %build-inputs "boost")))))
(home-page "https://bitbucket.org/Coin3D/coin/wiki/Home")
(synopsis
"High-level 3D visualization library with Open Inventor 2.1 API")
(description
"Coin is a 3D graphics library with an Application Programming Interface
based on the Open Inventor 2.1 API. For those who are not familiar with
Open Inventor, it is a scene-graph based retain-mode rendering and model
interaction library, written in C++, which has become the de facto
standard graphics library for 3D visualization and visual simulation
software in the scientific and engineering community.")
(license license:bsd-3)))

View file

@ -909,7 +909,7 @@ (define-public guile-debbugs
(define-public guile-email
(package
(name "guile-email")
(version "0.2.0")
(version "0.2.1")
(source
(origin
(method url-fetch)
@ -918,7 +918,7 @@ (define-public guile-email
version ".tar.lz"))
(sha256
(base32
"0zgvh2329zrclxfb1lh7dnqrq46jj77l0lx7j9y6y3xgbhd2d9l0"))))
"1ph3pb69hr3d8mj05fmbpf5rc67dlm8qnb35cc7cxz8ingvl7kv3"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@ -936,8 +936,8 @@ (define-public guile-email
(license license:agpl3+)))
(define-public guile-debbugs-next
(let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
(revision "1"))
(let ((commit "fb0ae064037a38a0d526e08b4ad24c52e205edb9")
(revision "2"))
(package (inherit guile-debbugs)
(name "guile-debbugs")
(version (git-version "0.0.3" revision commit))
@ -949,7 +949,7 @@ (define-public guile-debbugs-next
(file-name (git-file-name name version))
(sha256
(base32
"0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
"195sacx2xc1mzzfljj62nfpi8mxn0rc6dabxckizjksnhb5irfwy"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@ -2156,7 +2156,7 @@ (define-public guile-persist
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(home-page "https://gitlab.com/tampe/guile-persist")
(synopsis "Persistance programming framework for Guile")
(synopsis "Persistence programming framework for Guile")
(description
"This is a serialization library for serializing objects like classes
and objects, closures and structs. This currently does not support
@ -2554,3 +2554,67 @@ (define-public nomad
programmable in Guile. It has hooks, keymaps, and self documentation
features.")
(license license:gpl3+)))
(define-public guile-cv
(package
(name "guile-cv")
(version "0.2.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/guile-cv/guile-cv-"
version ".tar.gz"))
(sha256
(base32
"0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'prepare-build
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "configure"
(("SITEDIR=\"\\$datadir/guile-cv\"")
"SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
(("SITECCACHEDIR=\"\\$libdir/guile-cv/")
"SITECCACHEDIR=\"$libdir/"))
(substitute* "cv/init.scm"
(("\\(dynamic-link \"libvigra_c\"\\)")
(string-append "(dynamic-link \""
(assoc-ref inputs "vigra-c")
"/lib/libvigra_c\")"))
(("\\(dynamic-link \"libguile-cv\"\\)")
(format #f "~s"
`(dynamic-link
(format #f "~alibguile-cv"
(if (getenv "GUILE_CV_UNINSTALLED")
""
,(format #f "~a/lib/"
(assoc-ref outputs "out"))))))))
(setenv "GUILE_CV_UNINSTALLED" "1")
;; Only needed to satisfy the configure script.
(setenv "LD_LIBRARY_PATH"
(string-append (assoc-ref inputs "vigra-c") "/lib"))
#t)))))
(inputs
`(("vigra" ,vigra)
("vigra-c" ,vigra-c)
("guile" ,guile-2.2)))
(native-inputs
`(("texlive" ,(texlive-union (list texlive-booktabs
texlive-lm
texlive-siunitx
texlive-standalone
texlive-xcolor
texlive-fonts-iwona)))
("pkg-config" ,pkg-config)))
(propagated-inputs
`(("guile-lib" ,guile-lib)))
(home-page "https://www.gnu.org/software/guile-cv/")
(synopsis "Computer vision library for Guile")
(description "Guile-CV is a Computer Vision functional programming library
for the Guile Scheme language. It is based on Vigra (Vision with Generic
Algorithms), a C++ image processing and analysis library. Guile-CV contains
bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
enriched with pure Guile Scheme algorithms, all accessible through a nice,
clean and easy to use high level API.")
(license license:gpl3+)))

View file

@ -7801,7 +7801,7 @@ (define-public ghc-process-extras
("ghc-listlike" ,ghc-listlike)))
(home-page "https://github.com/seereason/process-extras")
(synopsis "Extra tools for managing processes")
(description "This packages extends
(description "This package extends
@url{http://hackage.haskell.org/package/process}. It allows you to read
process input and output as ByteStrings or Text, or write your own
ProcessOutput instance. It also provides lazy process input and output,

View file

@ -286,14 +286,14 @@ (define-public js-highlight
(define-public js-datatables
(package
(name "js-datatables")
(version "1.10.15")
(version "1.10.19")
(source (origin
(method url-fetch)
(uri (string-append "https://datatables.net/releases/DataTables-"
version ".zip"))
(sha256
(base32
"1y9xqyqyz7x1ls3ska71pshl2hpiy3qnw1f7wygyslbhy4ssgf57"))))
"0cff8a1g7pjwbjdqq0yzqd963ar7pfi4splmm6rwdzganr77rkhb"))))
(build-system minify-build-system)
(arguments
`(#:javascript-files '("media/js/dataTables.bootstrap.js"

189
gnu/packages/jupyter.scm Normal file
View file

@ -0,0 +1,189 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 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 (gnu packages jupyter)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python)
#:use-module (gnu packages check)
#:use-module (gnu packages cpp)
#:use-module (gnu packages linux)
#:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages serialization)
#:use-module (gnu packages time)
#:use-module (gnu packages tls))
(define-public python-jupyter-protocol
(package
(name "python-jupyter-protocol")
(version "0.1.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "jupyter_protocol" version))
(sha256
(base32
"1bk3as5yw9y5nmq6l15nr46aby34phmvsx9kxgqnm5pd5q2b5h57"))))
(build-system python-build-system)
(propagated-inputs
`(("python-dateutil" ,python-dateutil)
("python-jupyter-core" ,python-jupyter-core)
("python-pyzmq" ,python-pyzmq)
("python-traitlets" ,python-traitlets)))
(native-inputs
`(("python-ipykernel" ,python-ipykernel)
("python-ipython" ,python-ipython)
("python-mock" ,python-mock)
("python-pytest" ,python-pytest)))
(home-page "https://jupyter.org")
(synopsis "Jupyter protocol implementation")
(description
"This Python library is an experimental implementation of the
@uref{https://jupyter-client.readthedocs.io/en/latest/messaging.html, Jupyter
protocol} to be used by both clients and kernels.")
(license license:bsd-3)
(properties '((upstream-name . "jupyter_protocol")))))
(define-public python-jupyter-kernel-mgmt
(package
(name "python-jupyter-kernel-mgmt")
(version "0.4.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "jupyter_kernel_mgmt" version))
(sha256
(base32
"0i7a78dn89ca8h0a42giyxwcmk6y4wrdr7q8h2ax9vybb84c795q"))))
(build-system python-build-system)
(propagated-inputs
`(("python-dateutil" ,python-dateutil)
("python-entrypoints" ,python-entrypoints)
("python-jupyter-core" ,python-jupyter-core)
("python-jupyter-protocol" ,python-jupyter-protocol)
("python-pyzmq" ,python-pyzmq)
("python-traitlets" ,python-traitlets)))
(native-inputs
`(("python-ipykernel" ,python-ipykernel)
("python-ipython" ,python-ipython)
("python-mock" ,python-mock)
("python-pytest" ,python-pytest)))
(home-page "https://jupyter.org")
(synopsis "Discover, launch, and communicate with Jupyter kernels")
(description
"This package is an experimental refactoring of the machinery for
launching and using Jupyter kernels.")
(license license:bsd-3)
(properties '((upstream-name . "jupyter_kernel_mgmt")))))
(define-public python-jupyter-kernel-test
(package
(name "python-jupyter-kernel-test")
(version "0.3")
(home-page "https://github.com/jupyter/jupyter_kernel_test")
(source (origin
;; PyPI has a ".whl" file but not a proper source release.
;; Thus, fetch code from Git.
(method git-fetch)
(uri (git-reference (url home-page) (commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"00iy74i4i8is6axb9vlsm0b9wxkvyyxnbl8r0i4gaj3xd788jm83"))))
(build-system python-build-system)
(arguments
;; The repo doesn't contain a "setup.py" file so install files manually.
'(#:phases (modify-phases %standard-phases
(delete 'build)
(delete 'check)
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(version ((@@ (guix build python-build-system)
get-python-version)
(assoc-ref inputs "python")))
(pydir (string-append out "/lib/python"
version "/site-packages/"
"jupyter_kernel_test")))
(for-each (lambda (file)
(install-file file pydir))
(find-files "jupyter_kernel_test"
"\\.py$"))
#t))))))
(propagated-inputs
`(("python-jupyter-kernel-mgmt" ,python-jupyter-kernel-mgmt)
("python-jupyter-protocol" ,python-jupyter-protocol)
("python-jsonschema" ,python-jsonschema)))
(synopsis "Test Jupyter kernels")
(description
"@code{jupyter_kernel_test} is a tool for testing Jupyter kernels. It
tests kernels for successful code execution and conformance with the
@uref{https://jupyter-client.readthedocs.io/en/latest/messaging.html, Jupyter
Messaging Protocol}.")
(license license:bsd-3)))
(define-public xeus
(package
(name "xeus")
(version "0.23.2")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/QuantStack/xeus.git")
(commit version)))
(sha256
(base32
"1m1b6z1538r7mv2ggn7bdbd9570ja7cadplq64zl8rgl2c8vdi2a"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags '("-DBUILD_STATIC_LIBS=OFF"
"-DDISABLE_ARCH_NATIVE=ON" ;no '-march=native'
"-DBUILD_TESTING=ON")))
(native-inputs
`(("pkg-config" ,pkg-config)
;; The following inputs are used by the test suite.
("googletest" ,googletest)
("python-pytest" ,python-pytest)
("python" ,python-3)
("python-jupyter-kernel-test" ,python-jupyter-kernel-test)
("python-jupyter-client" ,python-jupyter-client)))
(inputs
`(("xtl" ,xtl)
("nlohmann-json-cpp" ,nlohmann-json-cpp)
("cppzmq" ,cppzmq)
("zeromq" ,zeromq)
("openssl" ,openssl)
("util-linux" ,util-linux))) ;libuuid
(home-page "https://quantstack.net/xeus")
(synopsis "C++ implementation of the Jupyter Kernel protocol")
(description
"@code{xeus} is a library meant to facilitate the implementation of
kernels for Jupyter. It takes the burden of implementing the Jupyter Kernel
protocol so developers can focus on implementing the interpreter part of the
kernel.
Several Jupyter kernels are built upon @code{xeus}, such as @code{xeus-cling},
a kernel for the C++ programming language, and @code{xeus-python}, an
alternative Python kernel for Jupyter.")
(license license:bsd-3)))

View file

@ -132,14 +132,14 @@ (define-public libuv
(define-public perl-anyevent
(package
(name "perl-anyevent")
(version "7.15")
(version "7.17")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
"AnyEvent-" version ".tar.gz"))
(sha256
(base32
"0m73r67ah9xmcwzxs50jxf8ncd8h71mi4wf2mvnqkxvibhrv478i"))))
"11drlj8r02czhjgzkb39axnr8zzyp506r043xfmf93q9kilfmgjh"))))
(build-system perl-build-system)
(native-inputs
`(("perl-canary-stability" ,perl-canary-stability)))

View file

@ -349,10 +349,10 @@ (define (%upstream-linux-source version hash)
"linux-" version ".tar.xz"))
(sha256 hash)))
(define-public linux-libre-5.2-version "5.2.15")
(define-public linux-libre-5.2-version "5.2.16")
(define-public linux-libre-5.2-pristine-source
(let ((version linux-libre-5.2-version)
(hash (base32 "0jhc70r2rygm91qifjagg1jgbpjwyyq6m8g1n5iv81l1v84i0mpb")))
(hash (base32 "0xg5jnkmc7b552jrhi200ck7q4hql3az2fpjfwxj3ay8xp4n280c")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.2)))
@ -2114,7 +2114,7 @@ (define-public iotop
(define-public fuse
(package
(name "fuse")
(version "2.9.8")
(version "2.9.9")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/libfuse/libfuse/releases/"
@ -2122,7 +2122,7 @@ (define-public fuse
"/fuse-" version ".tar.gz"))
(sha256
(base32
"1qxg1r1mgysfq6qakmvid2njph3lr00w0swvydsfl9ymilfzi12y"))
"1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh"))
(patches (search-patches "fuse-overlapping-headers.patch"))))
(build-system gnu-build-system)
(inputs `(("util-linux" ,util-linux)))
@ -3299,14 +3299,14 @@ (define-public acpi
(define-public acpid
(package
(name "acpid")
(version "2.0.31")
(version "2.0.32")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/acpid2/acpid-"
version ".tar.xz"))
(sha256
(base32
"1hrc0xm6q12knbgzhq0i8g2rfrkwcvh1asd7k9rs3nc5xmlwd7gw"))))
"0zhmxnhnhg4v1viw82yjr22kram6k5k1ixznhayk8cnw7q5x7lpj"))))
(build-system gnu-build-system)
(home-page "https://sourceforge.net/projects/acpid2/")
(synopsis "Daemon for delivering ACPI events to user-space programs")

View file

@ -2485,7 +2485,7 @@ (define-public sbcl-lift
(let ((commit "7d49a66c62759535624037826891152223d4206c"))
(package
(name "sbcl-lift")
(version (git-version "0.0.0" "1" commit))
(version (git-version "1.7.1" "1" commit))
(source
(origin
(method git-fetch)
@ -6474,7 +6474,7 @@ (define-public sbcl-fare-quasiquote-readtable
quasiquote is enable matching of quasiquoted patterns, using Optima or
Trivia.
This packages uses fare-quasiquote with named-readtable.")))
This package uses fare-quasiquote with named-readtable.")))
(define-public sbcl-trivia.level0
(let ((commit "902e0c65602bbfe96ae82e679330b3771ddc7603")
@ -6597,7 +6597,7 @@ (define-public sbcl-trivia.ppcre
with Optima, another pattern matching library for Common Lisp. It is meant to
be faster and more extensible than Optima.
This system contains the PPCRE extention.")))
This system contains the PPCRE extension.")))
(define-public sbcl-trivia.quasiquote
(package
@ -6833,7 +6833,7 @@ (define-public sbcl-cl-hooks
In the Common LISP Object System (CLOS), a similar kind of extensibility is
possible using the flexible multi-method dispatch mechanism. It may even seem
that the concept of hooks does not provide any benefits over the possibilites
that the concept of hooks does not provide any benefits over the possibilities
of CLOS. However, there are some differences:
@itemize
@ -6934,3 +6934,429 @@ (define-public cl-prevalence
(define-public ecl-cl-prevalence
(sbcl-package->ecl-package sbcl-cl-prevalence))
(define-public sbcl-series
(let ((commit "da9061b336119d1e5214aff9117171d494d5a58a")
(revision "1"))
(package
(name "sbcl-series")
(version (git-version "2.2.11" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "git://git.code.sf.net/p/series/series")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"07hk2lhfx42zk018pxqvn4gs77vd4n4g8m4xxbqaxgca76mifwfw"))))
(build-system asdf-build-system/sbcl)
(arguments
;; Disable the tests, they are apparently buggy and I didn't find
;; a simple way to make them run and pass.
'(#:tests? #f))
(synopsis "Series data structure for Common Lisp")
(description
"This Common Lisp library provides a series data structure much like
a sequence, with similar kinds of operations. The difference is that in many
situations, operations on series may be composed functionally and yet execute
iteratively, without the need to construct intermediate series values
explicitly. In this manner, series provide both the clarity of a functional
programming style and the efficiency of an iterative programming style.")
(home-page "http://series.sourceforge.net/")
(license license:expat))))
(define-public cl-series
(sbcl-package->cl-source-package sbcl-series))
(define-public ecl-series
(sbcl-package->ecl-package sbcl-series))
(define-public sbcl-periods
(let ((commit "983d4a57325db3c8def942f163133cec5391ec28")
(revision "1"))
(package
(name "sbcl-periods")
(version (git-version "0.0.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jwiegley/periods.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0z30jr3lxz3cmi019fsl4lgcgwf0yqpn95v9zkkkwgymdrkd4lga"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("local-time" ,sbcl-local-time)))
(synopsis "Common Lisp library for manipulating date/time objects")
(description
"Periods is a Common Lisp library providing a set of utilities for
manipulating times, distances between times, and both contiguous and
discontiguous ranges of time.")
(home-page "https://github.com/jwiegley/periods")
(license license:bsd-3))))
(define-public cl-periods
(sbcl-package->cl-source-package sbcl-periods))
(define-public ecl-periods
(sbcl-package->ecl-package sbcl-periods))
(define-public sbcl-periods-series
(package
(inherit sbcl-periods)
(name "sbcl-periods-series")
(inputs
`(("periods" ,sbcl-periods)
("series" ,sbcl-series)))
(arguments
'(#:asd-file "periods-series.asd"
#:asd-system-name "periods-series"))
(description
"Periods-series is an extension of the periods Common Lisp library
providing functions compatible with the series Common Lisp library.")))
(define-public cl-periods-series
(sbcl-package->cl-source-package sbcl-periods-series))
(define-public ecl-periods-series
(sbcl-package->ecl-package sbcl-periods-series))
(define-public sbcl-metatilities-base
(let ((commit "6eaa9e3ff0939a93a92109dd0fcd218de85417d5")
(revision "1"))
(package
(name "sbcl-metatilities-base")
(version (git-version "0.6.6" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gwkkwg/metatilities-base.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0xpa86pdzlnf4v5g64j3ifaplx71sx2ha8b7vvakswi652679ma0"))))
(build-system asdf-build-system/sbcl)
(native-inputs
`(("lift" ,sbcl-lift)))
(synopsis "Core of the metatilities Common Lisp library")
(description
"Metatilities-base is the core of the metatilities Common Lisp library
which implements a set of utilities.")
(home-page "https://common-lisp.net/project/metatilities-base/")
(license license:expat))))
(define-public cl-metatilities-base
(sbcl-package->cl-source-package sbcl-metatilities-base))
(define-public ecl-metatilities-base
(sbcl-package->ecl-package sbcl-metatilities-base))
(define-public sbcl-cl-containers
(let ((commit "810927e19d933bcf38ffeb7a23ce521efc432d45")
(revision "1"))
(package
(name "sbcl-cl-containers")
(version (git-version "0.12.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gwkkwg/cl-containers.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1s9faxw7svhbjpkhfrz2qxgjm3cvyjb8wpyb4m8dx4i5g7vvprkv"))))
(build-system asdf-build-system/sbcl)
(native-inputs
`(("lift" ,sbcl-lift)))
(inputs
`(("metatilities-base" ,sbcl-metatilities-base)))
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'relax-version-checks
(lambda _
(substitute* "cl-containers.asd"
(("\\(:version \"metatilities-base\" \"0\\.6\\.6\"\\)")
"\"metatilities-base\""))
(substitute* "cl-containers-test.asd"
(("\\(:version \"lift\" \"1\\.7\\.0\"\\)")
"\"lift\""))
#t)))))
(synopsis "Container library for Common Lisp")
(description
"Common Lisp ships with a set of powerful built in data structures
including the venerable list, full featured arrays, and hash-tables.
CL-containers enhances and builds on these structures by adding containers
that are not available in native Lisp (for example: binary search trees,
red-black trees, sparse arrays and so on), and by providing a standard
interface so that they are simpler to use and so that changing design
decisions becomes significantly easier.")
(home-page "https://common-lisp.net/project/cl-containers/")
(license license:expat))))
(define-public cl-containers
(sbcl-package->cl-source-package sbcl-cl-containers))
(define-public ecl-cl-containers
(sbcl-package->ecl-package sbcl-cl-containers))
(define-public sbcl-xlunit
(let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
(revision "1"))
(package
(name "sbcl-xlunit")
(version (git-version "0.6.3" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "http://git.kpe.io/xlunit.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
(build-system asdf-build-system/sbcl)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-tests
(lambda _
(substitute* "xlunit.asd"
((" :force t") ""))
#t)))))
(synopsis "Unit testing package for Common Lisp")
(description
"The XLUnit package is a toolkit for building test suites. It is based
on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
(home-page "http://quickdocs.org/xlunit/")
(license license:bsd-3))))
(define-public cl-xlunit
(sbcl-package->cl-source-package sbcl-xlunit))
(define-public ecl-xlunit
(sbcl-package->ecl-package sbcl-xlunit))
(define-public sbcl-fprog
(let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
(revision "1"))
(package
(name "sbcl-fprog")
(version (git-version "1.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jwiegley/cambl.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"103mry04j2k9vznsxm7wcvccgxkil92cdrv52miwcmxl8daa4jiz"))))
(build-system asdf-build-system/sbcl)
(synopsis "Functional programming utilities for Common Lisp")
(description
"@code{fprog} is a Common Lisp library allowing iteration over
immutable lists sharing identical sublists.")
(home-page "https://github.com/jwiegley/cambl")
(license license:bsd-3))))
(define-public cl-fprog
(sbcl-package->cl-source-package sbcl-fprog))
(define-public ecl-fprog
(sbcl-package->ecl-package sbcl-fprog))
(define-public sbcl-cambl
(let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
(revision "1"))
(package
(inherit sbcl-fprog)
(name "sbcl-cambl")
(version (git-version "4.0.0" revision commit))
(native-inputs
`(("xlunit" ,sbcl-xlunit)))
(inputs
`(("alexandria" ,sbcl-alexandria)
("cl-containers" ,sbcl-cl-containers)
("local-time" ,sbcl-local-time)
("periods" ,sbcl-periods)
("fprog" ,sbcl-fprog)))
(synopsis "Commoditized amounts and balances for Common Lisp")
(description
"CAMBL is a Common Lisp library providing a convenient facility for
working with commoditized values. It does not allow compound units (and so is
not suited for scientific operations) but does work rather nicely for the
purpose of financial calculations."))))
(define-public cl-cambl
(sbcl-package->cl-source-package sbcl-cambl))
(define-public ecl-cambl
(sbcl-package->ecl-package sbcl-cambl))
(define-public sbcl-cl-ledger
(let ((commit "08e0be41795e804cd36142e51756ad0b1caa377b")
(revision "1"))
(package
(name "sbcl-cl-ledger")
(version (git-version "4.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ledger/cl-ledger.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1via0qf6wjcyxnfbmfxjvms0ik9j8rqbifgpmnhrzvkhrq9pv8h1"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("cambl" ,sbcl-cambl)
("cl-ppcre" ,sbcl-cl-ppcre)
("local-time" ,sbcl-local-time)
("periods-series" ,sbcl-periods-series)))
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-system-definition
(lambda _
(substitute* "cl-ledger.asd"
((" :build-operation program-op") "")
((" :build-pathname \"cl-ledger\"") "")
((" :entry-point \"ledger::main\"") ""))
#t)))))
(synopsis "Common Lisp port of the Ledger accounting system")
(description
"CL-Ledger is a Common Lisp port of the Ledger double-entry accounting
system.")
(home-page "https://github.com/ledger/cl-ledger")
(license license:bsd-3))))
(define-public cl-ledger
(sbcl-package->cl-source-package sbcl-cl-ledger))
(define-public ecl-cl-ledger
(sbcl-package->ecl-package sbcl-cl-ledger))
(define-public sbcl-bst
(let ((commit "34f9c7e8e0a9f2c952fe310ab36cb630d5d9c15a")
(revision "1"))
(package
(name "sbcl-bst")
(version (git-version "1.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/glv2/bst.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1amxns7hvvh4arwbh8ciwfzplg127vh37dnbamv1m1kmmnmihfc8"))))
(build-system asdf-build-system/sbcl)
(native-inputs
`(("alexandria" ,sbcl-alexandria)
("fiveam" ,sbcl-fiveam)))
(synopsis "Binary search tree for Common Lisp")
(description
"BST is a Common Lisp library for working with binary search trees that
can contain any kind of values.")
(home-page "https://github.com/glv2/bst")
(license license:gpl3))))
(define-public cl-bst
(sbcl-package->cl-source-package sbcl-bst))
(define-public ecl-bst
(sbcl-package->ecl-package sbcl-bst))
(define-public sbcl-cl-octet-streams
(package
(name "sbcl-cl-octet-streams")
(version "1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/glv2/cl-octet-streams.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1d7mn6ydv0j2x4r7clpc9ijjwrnfpxmvhifv8n5j7jh7s744sf8d"))))
(build-system asdf-build-system/sbcl)
(native-inputs
`(("fiveam" ,sbcl-fiveam)))
(inputs
`(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
(synopsis "In-memory octet streams for Common Lisp")
(description
"CL-octet-streams is a library implementing in-memory octet
streams for Common Lisp. It was inspired by the trivial-octet-streams and
cl-plumbing libraries.")
(home-page "https://github.com/glv2/cl-octet-streams")
(license license:gpl3+)))
(define-public cl-octet-streams
(sbcl-package->cl-source-package sbcl-cl-octet-streams))
(define-public ecl-cl-octet-streams
(sbcl-package->ecl-package sbcl-cl-octet-streams))
(define-public sbcl-lzlib
(let ((commit "0de1db7129fef9a58a059d35a2fa2ecfc5b47b47")
(revision "1"))
(package
(name "sbcl-lzlib")
(version (git-version "1.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/glv2/cl-lzlib.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"12ny7vj52fgnd8hb8fc8mry92vq4c1x72x2350191m4476j95clz"))))
(build-system asdf-build-system/sbcl)
(native-inputs
`(("fiveam" ,sbcl-fiveam)))
(inputs
`(("cffi" ,sbcl-cffi)
("cl-octet-streams" ,sbcl-cl-octet-streams)
("lzlib" ,lzlib)))
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/lzlib.lisp"
(("liblz\\.so")
(string-append (assoc-ref inputs "lzlib") "/lib/liblz.so")))
#t)))))
(synopsis "Common Lisp library for lzip (de)compression")
(description
"This Common Lisp library provides functions for lzip (LZMA)
compression/decompression using bindings to the lzlib C library.")
(home-page "https://github.com/glv2/cl-lzlib")
(license license:gpl3+))))
(define-public cl-lzlib
(sbcl-package->cl-source-package sbcl-lzlib))
(define-public ecl-lzlib
(sbcl-package->ecl-package sbcl-lzlib))

View file

@ -369,7 +369,7 @@ (define-public libomp
'(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
"-DOPENMP_TEST_C_COMPILER=clang"
"-DOPENMP_TEST_CXX_COMPILER=clang++")
#:test-target "check-libomptarget"))
#:test-target "check-libomp"))
(native-inputs
`(("clang" ,clang)
("llvm" ,llvm)
@ -440,6 +440,23 @@ (define-public clang-6
"0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w"
#:patches '("clang-6.0-libc-search-path.patch")))
;; Libcxx files specifically used by PySide2.
(define-public libcxx-6
(package
(inherit libcxx)
(version (package-version llvm-6))
(source
(origin
(inherit (package-source libcxx))
(uri (string-append "http://llvm.org/releases/"
version "/libcxx-" version ".src.tar.xz"))
(sha256
(base32
"0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
(native-inputs
`(("clang" ,clang-6)
("llvm" ,llvm-6)))))
(define-public llvm-3.9.1
(package (inherit llvm)
(name "llvm")

View file

@ -353,14 +353,14 @@ (define-public fetchmail
(define-public mutt
(package
(name "mutt")
(version "1.12.1")
(version "1.12.2")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
"mutt-" version ".tar.gz"))
(sha256
(base32
"0311sip2q90aqaxn7h3cck1zl98b4vifqi8bp5fsizy4dr06bi81"))
"10k8352s0z7yan6d4z2am80qd3bsaky4h89g72wl4xr3x067ahmw"))
(patches (search-patches "mutt-store-references.patch"))))
(build-system gnu-build-system)
(inputs
@ -2937,8 +2937,8 @@ (define-public tnef
(license gpl2+)))
(define-public mumi
(let ((commit "ea0a28f8d5db5761765eb60043b8593901552e25")
(revision "4"))
(let ((commit "8a57c87797ffb07baa88697130204184db643521")
(revision "5"))
(package
(name "mumi")
(version (git-version "0.0.0" revision commit))
@ -2950,7 +2950,7 @@ (define-public mumi
(file-name (git-file-name name version))
(sha256
(base32
"0b6dmi41vhssyf983blgi8a2kj3zjccc9cz7b7kvwh781ldqcywh"))))
"1575gn5p086sjxz5hvg6iyskq6cxf6vf50s9nsc4xgrbcqa3pv2c"))))
(build-system gnu-build-system)
(arguments
`(#:phases

View file

@ -1553,7 +1553,7 @@ (define-public octave
,@(package-inputs octave-cli)))
(native-inputs
`(("qttools" , qttools) ;for lrelease
("texlive" ,texlive) ;for texi2dvi
("texlive" ,(texlive-union (list texlive-epsf))) ; for texi2dvi
,@(package-native-inputs octave-cli)))
(arguments
(substitute-keyword-arguments (package-arguments octave-cli)
@ -2982,7 +2982,7 @@ (define-public maxima
(define-public wxmaxima
(package
(name "wxmaxima")
(version "19.08.0")
(version "19.09.0")
(source
(origin
(method git-fetch)
@ -2991,8 +2991,7 @@ (define-public wxmaxima
(commit (string-append "Version-" version))))
(file-name (git-file-name name version))
(sha256
(base32
"028g4g2081vsgslbdliskfy5q2wknvknw89lk3zp89py6wranxas"))))
(base32 "195j6j8z0jd6xg3a63ywbrbsc6dany795m3fb95nbx1vq0bqqvvn"))))
(build-system cmake-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)))

View file

@ -996,18 +996,18 @@ (define-public c-toxcore
(define-public utox
(package
(name "utox")
(version "0.17.0")
(version "0.17.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/uTox/uTox.git")
(commit "v0.17.0")
(commit (string-append "v" version))
(recursive? #t))) ;; Needed for 'minini' git submodule.
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"12wbq883il7ikldayh8hm0cjfrkp45vn05xx9s1jbfz6gmkidyar"))))
"17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DENABLE_TESTS=on")

View file

@ -181,7 +181,7 @@ (define-public mpd-mpc
(define-public ncmpc
(package
(name "ncmpc")
(version "0.34")
(version "0.35")
(source (origin
(method url-fetch)
(uri
@ -190,7 +190,7 @@ (define-public ncmpc
"/ncmpc-" version ".tar.xz"))
(sha256
(base32
"0mz8r6vc4zn5sa3hlq4ii74qcrkh01nbg784zcwahgz8g3fb3i8l"))))
"0hfjvm1p0z7x6gfn5xhl5c0jsmidvz0qfl04pq45x4chh9iiwkxx"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags

View file

@ -90,7 +90,6 @@ (define-public node
(modify-phases %standard-phases
(add-before 'configure 'patch-files
(lambda* (#:key inputs #:allow-other-keys)
;; Fix hardcoded /bin/sh references.
(substitute* '("lib/child_process.js"
"lib/internal/v8_prof_polyfill.js"

View file

@ -10,7 +10,6 @@
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.org>
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;;
;;; This file is part of GNU Guix.
@ -31,7 +30,6 @@
(define-module (gnu packages package-management)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages admin)
#:use-module (gnu packages attr)
#:use-module (gnu packages avahi)
#:use-module (gnu packages autotools)
@ -40,7 +38,6 @@ (define-module (gnu packages package-management)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages bison)
#:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin'
#:use-module (gnu packages cdrom)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpio)
@ -50,7 +47,6 @@ (define-module (gnu packages package-management)
#:use-module (gnu packages docbook)
#:use-module (gnu packages file)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
@ -58,19 +54,12 @@ (define-module (gnu packages package-management)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
#:use-module (gnu packages haskell)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages java)
#:use-module (gnu packages linux)
#:use-module (gnu packages lisp)
#:use-module (gnu packages llvm)
#:use-module (gnu packages man)
#:use-module (gnu packages mono)
#:use-module (gnu packages nettle)
#:use-module (gnu packages nss)
#:use-module (gnu packages patchutils)
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
#:use-module (gnu packages pkg-config)
@ -82,10 +71,8 @@ (define-module (gnu packages package-management)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages ssh)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages vim)
#:use-module (gnu packages virtualization)
#:use-module (gnu packages web)
@ -557,176 +544,6 @@ (define-public rpm
;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
(license license:gpl2+)))
(define-public diffoscope
(let ((version "123"))
(package
(name "diffoscope")
(version version)
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"11bxms5rkhi0v4pxx29v4qgvhp3fmf0fkzci6gn5xcv4fl1zy4wj"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
;; setup.py mistakenly requires python-magic from PyPi, even
;; though the Python bindings of `file` are sufficient.
;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
(add-after 'unpack 'dependency-on-python-magic
(lambda _
(substitute* "setup.py"
(("'python-magic',") ""))))
;; This test is broken because our `file` package has a
;; bug in berkeley-db file type detection.
(add-after 'unpack 'remove-berkeley-test
(lambda _
(delete-file "tests/comparators/test_berkeley_db.py")
#t))
;; Test is dynamically generated and may have false
;; negatives with different ocaml versions. Further
;; background in: https://bugs.debian.org/939386
(add-after 'unpack 'remove-ocaml-test
(lambda _
(delete-file "tests/comparators/test_ocaml.py")
#t))
(add-after 'unpack 'embed-tool-references
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "diffoscope/comparators/utils/compare.py"
(("\\['xxd',")
(string-append "['" (which "xxd") "',")))
(substitute* "diffoscope/comparators/elf.py"
(("@tool_required\\('readelf'\\)") "")
(("get_tool_name\\('readelf'\\)")
(string-append "'" (which "readelf") "'")))
(substitute* "diffoscope/comparators/directory.py"
(("@tool_required\\('stat'\\)") "")
(("@tool_required\\('getfacl'\\)") "")
(("\\['stat',")
(string-append "['" (which "stat") "',"))
(("\\['getfacl',")
(string-append "['" (which "getfacl") "',")))
#t))
(add-before 'check 'writable-test-data
(lambda _
;; tests may need needs write access to tests
;; directory
(for-each make-file-writable (find-files "tests"))
#t))
(add-before 'check 'delete-failing-test
(lambda _
;; this requires /sbin to be on the path
(delete-file "tests/test_tools.py")
#t)))))
(inputs `(("rpm" ,rpm) ;for rpm-python
("python-file" ,python-file)
("python-debian" ,python-debian)
("python-libarchive-c" ,python-libarchive-c)
("python-tlsh" ,python-tlsh)
("acl" ,acl) ;for getfacl
("colordiff" ,colordiff)
("xxd" ,xxd)))
;; Below are modules used for tests.
(native-inputs `(("python-pytest" ,python-pytest)
("python-chardet" ,python-chardet)
;; test suite skips tests when tool is missing
("bdb" ,bdb)
("binutils" ,binutils)
("bzip2" ,bzip2)
("cdrtools" ,cdrtools)
("colord" ,colord)
("cpio" ,cpio)
("docx2txt" ,docx2txt)
("e2fsprogs" ,e2fsprogs)
("ffmpeg" ,ffmpeg)
("gettext" ,gettext-minimal)
("ghc" ,ghc)
("ghostscript" ,ghostscript)
("giflib:bin" ,giflib "bin")
("gnumeric" ,gnumeric)
("gnupg" ,gnupg)
("imagemagick" ,imagemagick)
("libarchive" ,libarchive)
("llvm" ,llvm)
("lz4" ,lz4)
("mono" ,mono)
("odt2txt" ,odt2txt)
;; no unversioned openjdk available
("openjdk:jdk" ,openjdk12 "jdk")
("openssh" ,openssh)
("pgpdump" ,pgpdump)
("poppler" ,poppler)
("rpm" ,rpm)
("sng" ,sng)
("sqlite" ,sqlite)
("squashfs-tools" ,squashfs-tools)
("tcpdump" ,tcpdump)
("unzip" ,unzip)
("xxd" ,xxd)
("xz" ,xz)
("zip" ,(@ (gnu packages compression) zip))))
(home-page "https://diffoscope.org/")
(synopsis "Compare files, archives, and directories in depth")
(description
"Diffoscope tries to get to the bottom of what makes files or directories
different. It recursively unpacks archives of many kinds and transforms
various binary formats into more human readable forms to compare them. It can
compare two tarballs, ISO images, or PDFs just as easily.")
(license license:gpl3+))))
(define-public trydiffoscope
(package
(name "trydiffoscope")
(version "67.0.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((share (string-append (assoc-ref outputs "out") "/share/")))
(mkdir-p (string-append share "/man/man1/" ))
(invoke "rst2man.py"
"trydiffoscope.1.rst"
(string-append share "/man/man1/trydiffoscope.1"))
(mkdir-p (string-append share "/doc/" ,name "-" ,version))
(install-file "./README.rst"
(string-append share "/doc/" ,name "-" ,version)))
#t)))))
(propagated-inputs
`(("python-requests" ,python-requests)))
(native-inputs
`(("gzip" ,gzip)
("python-docutils" ,python-docutils)))
(build-system python-build-system)
(home-page "https://try.diffoscope.org")
(synopsis "Client for remote diffoscope service")
(description "This is a client for the @url{https://try.diffoscope.org,
remote diffoscope service}.
Diffoscope tries to get to the bottom of what makes files or directories
different. It recursively unpacks archives of many kinds and transforms
various binary formats into more human readable forms to compare them. It can
compare two tarballs, ISO images, or PDFs just as easily.
Results are displayed by default, stored as local text or html files, or made
available via a URL on @url{https://try.diffoscope.org}. Results stored on the
server are purged after 30 days.")
(license license:gpl3+)))
(define-public python-anaconda-client
(package
(name "python-anaconda-client")
@ -1073,7 +890,7 @@ (define-public libostree
(define-public flatpak
(package
(name "flatpak")
(version "1.4.2")
(version "1.4.3")
(source
(origin
(method url-fetch)
@ -1081,7 +898,7 @@ (define-public flatpak
version "/flatpak-" version ".tar.xz"))
(sha256
(base32
"08nmpp26mgv0vp3mlwk97rnp0j7i108h4hr9nllja19sjxnrlygj"))))
"11bfxmv8pxlb5x0lb2rsl45615fzfvq5r6wldf0l6ab2ngryd7i7"))))
;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
;; find the TLS backend in glib-networking.

View file

@ -52,14 +52,14 @@ (define-module (gnu packages parallel)
(define-public parallel
(package
(name "parallel")
(version "20190822")
(version "20190922")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/parallel/parallel-"
version ".tar.bz2"))
(sha256
(base32 "1mi3a18fdwcx50jg51pw1ks1fkmc2slyinff0yb3xhihi2szbskp"))))
(base32 "0qrw34rpp8g5knb2nhs8z1hz9i42nxjn6i12m4rblm0anhnfwbr8"))))
(build-system gnu-build-system)
(arguments
`(#:phases

View file

@ -1,24 +0,0 @@
From e5be173e201710538464c279335bef735a327a68 Mon Sep 17 00:00:00 2001
From: Brian Leung <bkleung89@gmail.com>
Date: Tue, 18 Jun 2019 06:37:46 +0200
Subject: [PATCH] Add missing require.
---
unpackaged.el | 1 +
1 file changed, 1 insertion(+)
diff --git a/unpackaged.el b/unpackaged.el
index 2d46b3c..e62184a 100644
--- a/unpackaged.el
+++ b/unpackaged.el
@@ -38,6 +38,7 @@
(require 'dash)
(require 's)
(require 'use-package)
+(require 'hydra)
;;; Faces, fonts
--
2.22.0

View file

@ -0,0 +1,19 @@
Author: Reiner Herrmann <reiner@reiner-h.de>
Origin: https://salsa.debian.org/android-tools-team/enjarify/blob/master/debian/patches/setup_py.patch
Description: provides a minimal setup.py to build/install the package
Index: enjarify/setup.py
===================================================================
--- /dev/null
+++ enjarify/setup.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+
+from setuptools import setup, find_packages
+
+setup(name='enjarify',
+ version='1.0.3',
+ url='https://github.com/google/enjarify',
+ packages=find_packages(),
+ )
+

View file

@ -6,8 +6,8 @@ index 4800173..6bdd77f 100755
author = 'Val Neekman'
author_email = 'info@neekware.com'
license = 'MIT'
-install_requires = ['text-unidecode==1.2']
-extras_require = {'unidecode': ['Unidecode==1.0.23']}
-install_requires = ['text-unidecode>=1.3']
-extras_require = {'unidecode': ['Unidecode>=1.1.1']}
+install_requires = ['Unidecode']
classifiers = [

View file

@ -1266,14 +1266,14 @@ (define-public perl-class-xsaccessor
(define-public perl-clone
(package
(name "perl-clone")
(version "0.42")
(version "0.43")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/G/GA/GARU/"
(uri (string-append "mirror://cpan/authors/id/A/AT/ATOOMIC/"
"Clone-" version ".tar.gz"))
(sha256
(base32
"1r87rdm0nilfayxwlzvylwc8r3hr5m24180x437j30qpizdk1aal"))))
"1npf5s4b90ds6lv8gn76b2w4bdh0z5ni5zk4skgc2db5d12560lr"))))
(build-system perl-build-system)
(synopsis "Recursively copy Perl datatypes")
(description

View file

@ -160,7 +160,7 @@ (define-public python-py-bcrypt
system hashes passwords using a version of Bruce Schneier's Blowfish block
cipher with modifications designed to raise the cost of off-line password
cracking and frustrate fast hardware implementation. The computation cost of
the algorithm is parametised, so it can be increased as computers get faster.
the algorithm is parametrised, so it can be increased as computers get faster.
The intent is to make a compromise of a password database less likely to
result in an attacker gaining knowledge of the plaintext passwords (e.g. using
John the Ripper).")
@ -845,13 +845,13 @@ (define-public python2-pycryptodome
(define-public python-m2crypto
(package
(name "python-m2crypto")
(version "0.30.1")
(version "0.35.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "M2Crypto" version))
(sha256
(base32 "1iizrpkn4c2n70nvcjqlmnk6fz3vddkrjmwavz1zlsnwv8f7bcm1"))))
(base32 "09yirf3w77w6f49q6nxhrjm9c3a4y9s30s1k09chqrw8zdgx8sjc"))))
(build-system python-build-system)
(inputs `(("openssl" ,openssl)))
(home-page "https://gitlab.com/m2crypto/m2crypto")

View file

@ -306,16 +306,24 @@ (define-public python2-httplib2
(define-public python-html2text
(package
(name "python-html2text")
(version "2018.1.9")
(version "2019.8.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri "html2text" version))
(sha256
(base32
"1m6d7ciq30adc3d1n8g6r46072n7q8kdy039pqvnnmp763xi8xb2"))))
"0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm"))))
(build-system python-build-system)
(home-page "https://pypi.org/project/html2text/")
(arguments
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(invoke "pytest" "test/"))))))
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/Alir3z4/html2text")
(synopsis "Convert HTML into plain text")
(description "html2text takes HTML and converts it into plain ASCII text
which is also valid markdown. html2text was originally written by Aaron
@ -3219,14 +3227,13 @@ (define-public python2-ws4py-for-kaldi-gstreamer-server
(define-public python-slugify
(package
(name "python-slugify")
(version "3.0.2")
(version "3.0.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-slugify" version))
(sha256
(base32
"0n6pfmsq899c54plpvzi46l7zrpa3zfpm8im6h32czjw6kxky5jp"))
(base32 "0dv97yi5fq074q5qyqbin09pmi8ixg36caf5nkpw2bqkd8jh6pap"))
(patches
(search-patches "python-slugify-depend-on-unidecode.patch"))))
(native-inputs

View file

@ -65,6 +65,7 @@
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
;;;
;;; This file is part of GNU Guix.
;;;
@ -902,6 +903,27 @@ (define-public python-coloredlogs
(define-public python2-coloredlogs
(package-with-python2 python-coloredlogs))
(define-public python-editorconfig
(package
(name "python-editorconfig")
(version "0.12.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "EditorConfig" version))
(sha256
(base32
"0v55z351p9qkyp3bbspwywwn28sbcknhirngjbj779n3z52z63hv"))))
(build-system python-build-system)
(home-page "https://editorconfig.org/")
(synopsis "EditorConfig bindings for python")
(description "The EditorConfig project consists of a file format for
defining coding styles and a collection of text editor plugins that enable
editors to read the file format and adhere to defined styles. EditorConfig
files are easily readable and they work nicely with version control systems.")
;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2.
(license (list license:bsd-2 license:psfl))))
(define-public python-et-xmlfile
(package
(name "python-et-xmlfile")
@ -3962,7 +3984,7 @@ (define-public python-matplotlib
(assoc-ref inputs "tcl")
(assoc-ref inputs "tk")))))
#t)))))
(home-page "http://matplotlib.org")
(home-page "https://matplotlib.org/")
(synopsis "2D plotting library for Python")
(description
"Matplotlib is a Python 2D plotting library which produces publication
@ -3977,14 +3999,29 @@ (define-public python2-matplotlib
(let ((matplotlib (package-with-python2
(strip-python2-variant python-matplotlib))))
(package (inherit matplotlib)
(version "2.2.3")
(version "2.2.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "matplotlib" version))
(sha256
(base32
"1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
"09i1gnrra1590brc1f8d5rh2zvnknmfgzp613ab0462qkrwj15h2"))))
(arguments
(substitute-keyword-arguments (package-arguments matplotlib)
((#:phases phases)
`(modify-phases ,phases
(replace 'install-jquery-ui
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((dir (string-append (assoc-ref outputs "out")
"/lib/python2.7/site-packages/"
"matplotlib/backends/web_backend/")))
(mkdir-p dir)
(invoke "unzip"
(assoc-ref inputs "jquery-ui")
"-d" dir))
#t))
(delete 'check))))) ; These tests weren't run the the past.
;; Make sure to use special packages for Python 2 instead
;; of those automatically rewritten by package-with-python2.
(propagated-inputs
@ -8009,6 +8046,45 @@ (define-public python-qtconsole
support for rich media output.")
(license license:bsd-3)))
(define-public python-jsbeautifier
(package
(name "python-jsbeautifier")
(version "1.10.2")
(home-page "https://github.com/beautify-web/js-beautify")
(source (origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
;; The upstream Git repository contains all the code,
;; but this package only builds the python code.
(chdir "python")
#t))
(add-after 'unpack 'patch-python-six-requirements
(lambda _
(substitute* "python/setup.py"
(("six>=1.12.0")
"six>=1.11.0"))
#t)))))
(propagated-inputs
`(("python-editorconfig" ,python-editorconfig)
("python-six" ,python-six)))
(native-inputs
`(("python-pytest" ,python-pytest)))
(synopsis "JavaScript unobfuscator and beautifier")
(description "Beautify, unpack or deobfuscate JavaScript, leveraging
popular online obfuscators.")
(license license:expat)))
(define-public jupyter
(package
(name "jupyter")
@ -10865,6 +10941,42 @@ (define-public python2-binaryornot
`(("python2-enum34" ,python2-enum34)
,@(package-propagated-inputs base))))))
(define-public python-binwalk
(let ((commit "64201acfb5b0a9cdd9faa58c40a36dcff8612e29")
(revision "0"))
(package
(name "python-binwalk")
(version (git-version "2.1.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ReFirmLabs/binwalk")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1z7ca6rfp887hw5jc3sb45mm4fa0xid4lsp2z8g4r590dr7k7w15"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'set-pythonpath
(lambda _
(setenv "PYTHONPATH"
(string-append
(getcwd) "/src/"
":" (getenv "PYTHONPATH")))
(setenv "HOME" "")
#t)))))
(native-inputs
`(("python-coverage" ,python-coverage)
("python-nose" ,python-nose)))
(home-page "https://github.com/ReFirmLabs/binwalk")
(synopsis "Firmware analysis tool")
(description "Binwalk is a tool for analyzing, reverse engineering, and extracting firmware images")
(license license:expat))))
(define-public python-nltk
(package
(name "python-nltk")
@ -16264,3 +16376,24 @@ (define-public python-elementpath
For lxml.etree this package can be useful for providing XPath 2.0 selectors,
because lxml.etree already has it's own implementation of XPath 1.0.")
(license license:expat)))
(define-public python-bibtexparser
(package
(name "python-bibtexparser")
(version "1.1.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "bibtexparser" version))
(sha256
(base32
"0zwhfkrzf3n5847dbnfng92k7ak199l9v6x6ax3dgdidfpm6d2fz"))))
(build-system python-build-system)
(propagated-inputs
`(("python-pyparsing" ,python-pyparsing)))
(native-inputs
`(("python-future" ,python-future)))
(home-page "https://github.com/sciunto-org/python-bibtexparser")
(synopsis "Python library to parse BibTeX files")
(description "BibtexParser is a Python library to parse BibTeX files.")
(license (list license:bsd-3 license:lgpl3))))

View file

@ -12,6 +12,7 @@
;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@ -39,7 +40,9 @@ (define-module (gnu packages qt)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages cups)
#:use-module (gnu packages databases)
@ -56,6 +59,7 @@ (define-module (gnu packages qt)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages maths)
#:use-module (gnu packages nss)
#:use-module (gnu packages pciutils)
@ -2290,3 +2294,173 @@ (define-public qtcolorwidgets
color-related widgets.")
;; Includes a license exception for combining with GPL2 code.
(license license:lgpl3+))))
(define-public python-shiboken-2
(let ((revision "1")
;; Pinned to branches with support for qt 5.11.3
(commit "4018787a3cc01d632fdca7891ac8aa9487110c26"))
(package
(name "python-shiboken-2")
(version (git-version "v5.11.3" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
;; The latest versions of Shiboken live in the pyside repo.
;; There is another standalone repo only for Shiboken
;; but it is outdated
(url "https://code.qt.io/pyside/pyside-setup")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0g8jacm2iqd7lw2m7f1dp1nnrsk38bl3m8pihm8zz9gxs8d31sf5"))))
(build-system cmake-build-system)
(inputs
`(("llvm-6" ,llvm-6)
("clang-6" ,clang-6)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("python-wrapper" ,python-wrapper)
("qtbase" ,qtbase)
("qtxmlpatterns" ,qtxmlpatterns)))
(arguments
`(#:tests? #f
;; FIXME: Building tests fails
#:configure-flags '("-DBUILD_TESTS=off")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'use-shiboken-dir-only
(lambda _ (chdir "sources/shiboken2") #t))
(add-before 'configure 'set-build-env
(lambda* (#:key inputs #:allow-other-keys)
(let ((llvm (assoc-ref inputs "llvm-6")))
(setenv "CLANG_INSTALL_DIR" llvm)
#t))))))
(home-page "https://wiki.qt.io/Qt_for_Python")
(synopsis
"Shiboken generates bindings for C++ libraries using CPython source code")
(description
"Shiboken generates bindings for C++ libraries using CPython source code")
(license
(list
;; The main code is GPL3 or LGPL3.
;; Examples are BSD-3.
license:gpl3
license:lgpl3
license:bsd-3)))))
(define-public python-pyside-2
(let ((revision "1")
;; Pinned to branches with support for qt 5.11.3
(commit "4018787a3cc01d632fdca7891ac8aa9487110c26"))
(package
(name "python-pyside-2")
(version (git-version "v5.11.3" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://code.qt.io/pyside/pyside-setup")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0g8jacm2iqd7lw2m7f1dp1nnrsk38bl3m8pihm8zz9gxs8d31sf5"))))
(build-system cmake-build-system)
(inputs
`(("libcxx" ,libcxx-6)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("llvm-6" ,llvm-6)
("clang-6" ,clang-6)
("qtbase" ,qtbase)
("qtdatavis3d" ,qtdatavis3d)
("qtlocation" ,qtlocation)
("qtmultimedia" ,qtmultimedia)
("qtquickcontrols" ,qtquickcontrols)
("qtscript" ,qtscript)
("qtscxml" ,qtscxml)
("qtsensors" ,qtsensors)
("qtspeech" ,qtspeech)
("qtsvg" ,qtsvg)
("qtwebchannel" ,qtwebchannel)
("qtwebsockets" ,qtwebsockets)
("qtx11extras" ,qtx11extras)
("qtxmlpatterns" ,qtxmlpatterns)))
(native-inputs
`(("cmake" ,cmake)
("python-shiboken-2" ,python-shiboken-2)
("python-wrapper" ,python-wrapper)
("qttools" ,qttools)
("which" ,which)))
(arguments
`(#:tests? #f
;; FIXME: Building tests fail.
#:configure-flags '("-DBUILD_TESTS=FALSE")
#:phases
(modify-phases
%standard-phases
(add-after 'unpack 'go-to-source-dir
(lambda _ (chdir "sources/pyside2") #t))
(add-before 'configure 'set-clang-dir
(lambda* (#:key inputs #:allow-other-keys)
(let ((clang (assoc-ref inputs "clang-6"))
(libcxx (assoc-ref inputs "libcxx")))
(setenv "CLANG_INSTALL_DIR" clang)
(substitute* "cmake/Macros/PySideModules.cmake"
(("--include-paths=")
(string-append "--include-paths=" libcxx "/include/c++/v1:")))
#t))))))
(home-page "https://wiki.qt.io/Qt_for_Python")
(synopsis
"The Qt for Python product enables the use of Qt5 APIs in Python applications")
(description
"The Qt for Python product enables the use of Qt5 APIs in Python
applications. It lets Python developers utilize the full potential of Qt,
using the PySide2 module. The PySide2 module provides access to the
individual Qt modules such as QtCore, QtGui,and so on. Qt for Python also
comes with the Shiboken2 CPython binding code generator, which can be used to
generate Python bindings for your C or C++ code.")
(license (list
license:lgpl3
;;They state that:
;; this file may be used under the terms of the GNU General
;; Public License version 2.0 or (at your option) the GNU
;; General Public license version 3 or any later version
;; approved by the KDE Free Qt Foundation.
;; Thus, it is currently v2 or v3, but no "+".
license:gpl3
license:gpl2)))))
(define-public python-pyside-2-tools
(let ((revision "1")
;; Pinned to branches with support for qt 5.11.3
(commit "f1b775537e7fbd718516749583b2abf1cb6adbce"))
(package
(name "python-pyside-2-tools")
(version (git-version "v5.11.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://code.qt.io/pyside/pyside-tools")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1w2g5afvww9r89wmdm9jx8sz67x4bzy9difkh72n4c73ya1n91ry"))))
(build-system cmake-build-system)
(inputs
`(("python-pyside-2" ,python-pyside-2)
("python-shiboken-2" ,python-shiboken-2)
("qtbase" ,qtbase)))
(arguments
`(#:tests? #f
#:configure-flags '("-DBUILD_TESTS=off")))
(home-page "https://wiki.qt.io/Qt_for_Python")
(synopsis
"Contains command line tools for PySide2")
(description
"Contains lupdate, rcc and uic tools for PySide2")
(license license:gpl2))))

View file

@ -154,14 +154,14 @@ (define (install dir)
(define-public samba
(package
(name "samba")
(version "4.10.8")
(version "4.11.0")
(source (origin
(method url-fetch)
(uri (string-append "https://download.samba.org/pub/samba/stable/"
"samba-" version ".tar.gz"))
(sha256
(base32
"1x0hlhb674fndfkmimjicnzs543n3i8465a5ifcmjwvzavxha7y4"))))
"174fwi8n191dnb8ix9afchfp59hic6iwa3062iz3y7zzmxs1rpva"))))
(build-system gnu-build-system)
(arguments
`(#:phases

View file

@ -204,8 +204,8 @@ (define-public mit-scheme
(base32
"05sjyz90xxfnmi87qv8x0yx0fcallnzl1dciygdafp317pn489is"))
(_
(base32
""))))))))
(base32
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))))))))
;; Fails to build on MIPS, see <http://bugs.gnu.org/18221>.
;; Also, the portable C version of MIT/GNU Scheme did not work in time for

View file

@ -42,6 +42,7 @@ (define-module (gnu packages serialization)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
#:use-module (gnu packages gcc)
#:use-module (gnu packages lua)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@ -393,17 +394,29 @@ (define-public libbson
(define-public nlohmann-json-cpp
(package
(name "nlohmann-json-cpp")
(version "2.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/nlohmann/json/"
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0lrh6cjd643c7kmvmwafbgq7dqj3b778483gjhjbvp6rc6z5xf2r"))))
(version "3.7.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/nlohmann/json.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0v7xih4zjixxxfvkfbs7a8j9qcvpwlsv4vrkbyns3hc7b44nb8ap"))))
(build-system cmake-build-system)
(native-inputs
;; Integer overflow tests like those from
;; <https://github.com/nlohmann/json/issues/1447> fail when building with
;; gcc@5. Thus, build with a newer GCC.
`(("gcc" ,gcc-9)))
(arguments
'(#:phases (modify-phases %standard-phases
(add-before 'build 'unset-path-variables
(lambda _
(unsetenv "C_INCLUDE_PATH")
(unsetenv "CPLUS_INCLUDE_PATH")
#t)))))
(home-page "https://nlohmann.github.io/json/")
(synopsis "JSON library for C++")
(description

View file

@ -4,6 +4,7 @@
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,12 +31,15 @@ (define-module (gnu packages speech)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
#:use-module (gnu packages emacs)
#:use-module (gnu packages gcc)
#:use-module (gnu packages glib)
#:use-module (gnu packages linux)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils))
(define-public espeak
@ -220,3 +224,236 @@ (define-public sonic
be used by the sighted.")
(home-page "https://github.com/waywardgeek/sonic")
(license license:asl2.0)))
(define-public festival
(package
(name "festival")
(version "2.5.0")
(source (origin
(method url-fetch)
(uri (string-append "http://festvox.org/packed/festival/"
(version-major+minor version)
"/festival-" version "-release.tar.gz"))
(sha256
(base32
"1d5415nckiv19adxisxfm1l1xxfyw88g87ckkmcr0lhjdd10g42c"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; there is no test target
#:make-flags
(list (string-append "RM="
(assoc-ref %build-inputs "coreutils")
"/bin/rm")
(string-append "ECHO_N="
(assoc-ref %build-inputs "coreutils")
"/bin/printf \"%s\""))
#:parallel-build? #f ; not supported
#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
#:imported-modules (,@%gnu-build-system-modules
(guix build emacs-utils))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-and-patch-speech-tools
(lambda* (#:key inputs #:allow-other-keys)
(invoke "tar" "-C" ".."
"-xf" (assoc-ref inputs "speech-tools"))
(with-directory-excursion "../speech_tools"
(substitute* '("config/rules/modules.mak"
"config/rules/test_make_rules.mak"
"config/make_system.mak")
(("/bin/sh") (which "sh"))))
#t))
(add-after 'unpack 'patch-/bin/sh
(lambda _
(substitute* '("config/test_make_rules"
"config/make_system.mak")
(("/bin/sh") (which "sh")))
#t))
(add-before 'build 'build-speech-tools
(lambda* (#:key configure-flags make-flags #:allow-other-keys)
(with-directory-excursion "../speech_tools"
(apply invoke "sh" "configure"
(string-append "CONFIG_SHELL=" (which "sh"))
(string-append "SHELL=" (which "sh"))
configure-flags)
(apply invoke "make" make-flags))))
(add-after 'build 'build-documentation
(lambda _
(with-directory-excursion "doc"
(invoke "make" "festival.info"))))
(add-after 'unpack 'set-installation-directories
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "config/project.mak"
(("^FTLIBDIR.*")
(string-append "FTLIBDIR=" out "/share/festival/lib")))
(substitute* "config/systems/default.mak"
(("^INSTALL_PREFIX.*")
(string-append "INSTALL_PREFIX=" out)))
#t)))
(add-after 'install 'actually-install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; Install Speech Tools first
(with-directory-excursion "../speech_tools"
;; Target directories
(for-each (lambda (dir)
(mkdir-p (string-append out dir)))
'("/bin"
"/lib"
"/include/speech_tools/"
"/include/speech_tools/instantiate"
"/include/speech_tools/ling_class"
"/include/speech_tools/rxp"
"/include/speech_tools/sigpr"
"/include/speech_tools/unix"))
;; Install binaries
(for-each (lambda (file)
(install-file file (string-append out "/bin")))
(find-files "bin" ".*"))
(for-each (lambda (file)
(delete-file (string-append out "/bin/" file)))
'("est_gdb" "est_examples" "est_program"))
;; Install libraries
(for-each (lambda (file)
(install-file file (string-append out "/lib")))
(find-files "lib" "lib.*\\.so.*"))
;; Install headers
(for-each
(lambda (dir)
(for-each
(lambda (header)
(install-file header
(string-append out "/include/speech_tools/" dir)))
(find-files (string-append "include/" dir)
"\\.h$")))
'("." "instantiate" "ling_class" "rxp" "sigpr" "unix")))
;; Unpack files that will be installed together with the
;; Festival libraries.
(invoke "tar" "--strip-components=1"
"-xvf" (assoc-ref inputs "festvox-cmu"))
(invoke "tar" "--strip-components=1"
"-xvf" (assoc-ref inputs "festvox-poslex"))
(invoke "tar" "--strip-components=1"
"-xvf" (assoc-ref inputs "default-voice"))
;; Install Festival
(let ((bin (string-append out "/bin"))
(incdir (string-append out "/include/festival"))
(share (string-append out "/share/festival"))
(info (string-append out "/share/info")))
(for-each (lambda (executable)
(install-file executable bin))
'("src/main/festival"
"src/main/festival_client"
"examples/benchmark"))
(let ((scripts '("examples/dumpfeats"
"examples/durmeanstd"
"examples/latest"
"examples/make_utts"
"examples/powmeanstd"
"examples/run-festival-script"
"examples/saytime"
"examples/scfg_parse_text"
"examples/text2pos"
"examples/text2wave")))
(substitute* scripts
(("exec /tmp/guix-build.*/bin/festival")
(string-append "exec " bin "/festival")))
(for-each (lambda (script)
(install-file script bin))
scripts))
;; Documentation
(for-each (lambda (file)
(install-file file info))
(find-files "doc/info/" "festival.info.*"))
;; Headers
(mkdir-p incdir)
(for-each (lambda (header)
(install-file header
(string-append incdir "/"
(dirname header))))
(find-files "src/include" "\\.h$"))
;; Data
(mkdir-p share)
(for-each (lambda (file)
(install-file file
(string-append share "/"
(dirname file))))
(find-files "lib" ".*"))
(for-each delete-file
(append (find-files share "Makefile")
(find-files bin "Makefile")))))
#t))
(add-after 'actually-install 'install-emacs-mode
(lambda* (#:key outputs #:allow-other-keys)
(let ((emacs-dir (string-append (assoc-ref outputs "out")
"/share/emacs/site-lisp")))
(install-file "lib/festival.el" emacs-dir)
(emacs-generate-autoloads ,name emacs-dir)
#t)))
;; Rebuild the very old configure script that is confused by extra
;; arguments.
(add-before 'configure 'bootstrap
(lambda _ (invoke "autoreconf" "-vif"))))))
(inputs
`(("ncurses" ,ncurses)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("texinfo" ,texinfo)
("emacs" ,emacs-minimal)
("festvox-cmu"
,(origin
(method url-fetch)
(uri (string-append "http://festvox.org/packed/festival/"
(version-major+minor version)
"/festlex_CMU.tar.gz"))
(sha256
(base32
"01vwidqhhg2zifvk1gby91mckg1z2pv2mj6lihvdaifakf8k1561"))))
("festvox-poslex"
,(origin
(method url-fetch)
(uri (string-append "http://festvox.org/packed/festival/"
(version-major+minor version)
"/festlex_POSLEX.tar.gz"))
(sha256
(base32
"18wywilxaqwy63lc47p5g5529mpxhslibh1bjij0snxx5mjf7ip7"))))
("default-voice"
,(origin
(method url-fetch)
(uri (string-append "http://festvox.org/packed/festival/"
(version-major+minor version)
"/voices/festvox_kallpc16k.tar.gz"))
(sha256
(base32
"136hmsyiwnlg2qwa508dy0imf19mzrb5r3dmb2kg8kcyxnslm740"))))
("speech-tools"
,(origin
(method url-fetch)
(uri (string-append "http://festvox.org/packed/festival/"
(version-major+minor version)
"/speech_tools-" version "-release.tar.gz"))
(sha256
(base32
"1k2xh13miyv48gh06rgsq2vj25xwj7z6vwq9ilsn8i7ig3nrgzg4"))))))
(home-page "http://www.cstr.ed.ac.uk/projects/festival/")
(synopsis "Speech synthesis system")
(description "Festival offers a general framework for building speech
synthesis systems as well as including examples of various modules. As a
whole it offers full text to speech through a number APIs: from shell level,
though a Scheme command interpreter, as a C++ library, from Java, and an Emacs
interface. Festival is multi-lingual though English is the most advanced.
The system is written in C++ and uses the Edinburgh Speech Tools Library for
low level architecture and has a Scheme (SIOD) based command interpreter for
control.")
(license (license:non-copyleft "file://COPYING"))))

View file

@ -216,7 +216,7 @@ (define-public python-sphinxcontrib-htmlhelp
(arguments
`(#:tests? #f)) ;XXX: circular dependency on Sphinx
(home-page "https://github.com/sphinx-doc/sphinxcontrib-htmlhelp")
(synopsis "Sphinx exension for rendering HTML help files")
(synopsis "Sphinx extension for rendering HTML help files")
(description
"@code{sphinxcontrib-htmlhelp} is a Sphinx extension which renders
HTML help files.")

View file

@ -4288,7 +4288,7 @@ (define-public r-gplots
@item enhanced regression diagnostic plots
@item formula-enabled interface to @code{stats::lowess} function
@item displaying textual data in plots
@item baloon plots
@item balloon plots
@item plotting \"Venn\" diagrams
@item displaying Open-Office style plots
@item plotting multiple data on same region, with separate axes

View file

@ -264,14 +264,14 @@ (define-public casync
(define-public rclone
(package
(name "rclone")
(version "1.49.2")
(version "1.49.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/rclone/rclone/releases/download/"
"v" version "/rclone-v" version ".tar.gz"))
(sha256
(base32 "1q8lf85hg2havb1xsal75r19ck166rh19lffpd3i43zgblc6gs8j"))))
(base32 "04blngspm2hzi6d37bd3v19lpcvq0wlk38a9q0a4diwfwp2ab20n"))))
;; FIXME: Rclone bundles some libraries Guix already provides. Need to
;; un-bundle them.
(build-system go-build-system)

View file

@ -1219,7 +1219,7 @@ (define-public go-github-com-audriusbutkevicius-pfilter
(build-system go-build-system)
(arguments
'(#:import-path "github.com/AudriusButkevicius/pfilter"))
(synopsis "Filter packets into mulitple virtual connections")
(synopsis "Filter packets into multiple virtual connections")
(description "Pfilter is a Go package for filtering packets into multiple
virtual connections from a single physical connection.")
(home-page "https://github.com/AudriusButkevicius/pfilter")

View file

@ -284,7 +284,7 @@ (define-public bctoolbox
(home-page "https://www.linphone.org")
(synopsis "Utilities library for linphone software")
(description "BCtoolbox is a utilities library used by Belledonne
Communications softwares like linphone.")
Communications software like linphone.")
(license license:gpl2+)))
(define-public ortp

View file

@ -460,7 +460,7 @@ (define-public unibilium
(define-public libvterm
(package
(name "libvterm")
(version "0.1")
(version "0.1.1")
(source
(origin
(method url-fetch)
@ -468,13 +468,12 @@ (define-public libvterm
"libvterm-" version ".tar.gz"))
(sha256
(base32
"1pcxjhvdwhr2f3lyzf2rv1vp3l62bgkjm1ybhj82qf8yly7ca6g4"))))
"1n5maylann2anfifjy576vzyar9q5m1kzpyiz2hca2pacxy8xf4v"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
(list "CC=gcc"
(string-append "PREFIX=" (assoc-ref %outputs "out")))
#:tests? #f ; XXX: some tests fail in this release
#:test-target "test"
#:phases
(modify-phases %standard-phases
@ -956,7 +955,7 @@ (define-public tmate
(define-public kitty
(package
(name "kitty")
(version "0.14.4")
(version "0.14.5")
(home-page "https://sw.kovidgoyal.net/kitty/")
(source
(origin
@ -967,7 +966,7 @@ (define-public kitty
(file-name (git-file-name name version))
(sha256
(base32
"0z0y80wcbra3zfyaiim98afbqlfpkjkql430zfb8shx61rzzmn9i"))
"0qx3wj4n3zgjcpd1vjjwdlz8d1vp8bkxihsg2khlla1izandgxxa"))
(modules '((guix build utils)))
(snippet
'(begin

View file

@ -2518,214 +2518,213 @@ (define-public texlive-latexconfig
(license license:lppl)))
(define-public texlive-latex-base
(package
(name "texlive-latex-base")
(version (number->string %texlive-revision))
(source (texlive-origin
name version
(list "/doc/latex/base/"
"/source/latex/base/"
;; Almost all files in /tex/latex/base are generated, but
;; these are not:
"/tex/latex/base/idx.tex"
"/tex/latex/base/lablst.tex"
"/tex/latex/base/lppl.tex"
"/tex/latex/base/ltnews.cls"
"/tex/latex/base/ltxcheck.tex"
"/tex/latex/base/ltxguide.cls"
"/tex/latex/base/minimal.cls"
"/tex/latex/base/sample2e.tex"
"/tex/latex/base/small2e.tex"
"/tex/latex/base/source2e.tex"
"/tex/latex/base/testpage.tex"
"/tex/latex/base/texsys.cfg")
(base32
"0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5")))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 match)
(srfi srfi-26))
#:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
;; Find required fonts
(setenv "TFMFONTS"
(string-join
(map (match-lambda
((pkg-name . dir)
(string-append
(assoc-ref inputs pkg-name)
"/share/texmf-dist/fonts/tfm/public"
dir)))
'(("texlive-etex" . "/etex")
("texlive-cm" . "/cm")
("texlive-fonts-latex" . "/latex-fonts")
("texlive-fonts-knuth-lib" . "/knuth-lib")))
":"))
(let ((cwd (getcwd)))
(setenv "TEXINPUTS"
(string-append
cwd "//:"
cwd "/source/latex/base//:"
cwd "/build:"
(string-join
(map (match-lambda ((_ . dir) dir)) inputs)
"//:"))))
(let ((template (simple-texlive-package
"texlive-latex-base"
(list "/doc/latex/base/"
"/source/latex/base/"
;; Almost all files in /tex/latex/base are generated, but
;; these are not:
"/tex/latex/base/idx.tex"
"/tex/latex/base/lablst.tex"
"/tex/latex/base/lppl.tex"
"/tex/latex/base/ltnews.cls"
"/tex/latex/base/ltxcheck.tex"
"/tex/latex/base/ltxguide.cls"
"/tex/latex/base/minimal.cls"
"/tex/latex/base/sample2e.tex"
"/tex/latex/base/small2e.tex"
"/tex/latex/base/source2e.tex"
"/tex/latex/base/testpage.tex"
"/tex/latex/base/texsys.cfg")
(base32
"0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5")
#:trivial? #t)))
(package
(inherit template)
(arguments
(substitute-keyword-arguments (package-arguments template)
((#:modules modules '())
'((guix build gnu-build-system)
(guix build utils)
(ice-9 match)
(srfi srfi-26)))
((#:phases phases)
`(modify-phases ,phases
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
;; Find required fonts
(setenv "TFMFONTS"
(string-join
(map (match-lambda
((pkg-name . dir)
(string-append
(assoc-ref inputs pkg-name)
"/share/texmf-dist/fonts/tfm/public"
dir)))
'(("texlive-etex" . "/etex")
("texlive-cm" . "/cm")
("texlive-fonts-latex" . "/latex-fonts")
("texlive-fonts-knuth-lib" . "/knuth-lib")))
":"))
(let ((cwd (getcwd)))
(setenv "TEXINPUTS"
(string-append
cwd "//:"
cwd "/source/latex/base//:"
cwd "/build:"
(string-join
(map (match-lambda ((_ . dir) dir)) inputs)
"//:"))))
;; This is the actual build step.
(mkdir "build")
(invoke "tex" "-ini" "-interaction=scrollmode"
"-output-directory=build" "unpack.ins")
;; This is the actual build step.
(mkdir "build")
(invoke "tex" "-ini" "-interaction=scrollmode"
"-output-directory=build" "unpack.ins")
;; XXX: We can't build all formats at this point, nor are they
;; part of the LaTeX base, so we disable them. Actually, we
;; should be running this all in a profile hook, so that only
;; selected formats and hyphenation patterns are included, but it
;; takes long and TeX Live isn't designed to be modular like
;; that. Everything operates on a shared directory, which we
;; would only have at profile generation time.
(let ((disabled-formats
'("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
"eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
"csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
"cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
"pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
"mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
"amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
"xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
"texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
(mkdir "web2c")
(install-file (string-append
(assoc-ref inputs "texlive-kpathsea")
"/share/texmf-dist/web2c/fmtutil.cnf")
"web2c")
(make-file-writable "web2c/fmtutil.cnf")
(substitute* "web2c/fmtutil.cnf"
(((string-append "^(" (string-join disabled-formats "|") ")") m)
(string-append "#! " m))))
(invoke "fmtutil-sys" "--all"
"--fmtdir=web2c"
(string-append "--cnffile=web2c/fmtutil.cnf"))
;; We don't actually want to install it.
(delete-file "web2c/fmtutil.cnf")
#t))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(root (string-append out "/share/texmf-dist"))
(target (string-append root "/tex/latex/base"))
(web2c (string-append root "/web2c"))
(makeindex (string-append root "/makeindex/latex")))
(for-each delete-file (find-files "." "\\.(log|aux)$"))
;; XXX: We can't build all formats at this point, nor are they
;; part of the LaTeX base, so we disable them. Actually, we
;; should be running this all in a profile hook, so that only
;; selected formats and hyphenation patterns are included, but it
;; takes long and TeX Live isn't designed to be modular like
;; that. Everything operates on a shared directory, which we
;; would only have at profile generation time.
(let ((disabled-formats
'("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
"eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
"csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
"cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
"pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
"mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
"amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
"xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
"texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
(mkdir "web2c")
(install-file (string-append
(assoc-ref inputs "texlive-kpathsea")
"/share/texmf-dist/web2c/fmtutil.cnf")
"web2c")
(make-file-writable "web2c/fmtutil.cnf")
(substitute* "web2c/fmtutil.cnf"
(((string-append "^(" (string-join disabled-formats "|") ")") m)
(string-append "#! " m))))
(invoke "fmtutil-sys" "--all"
"--fmtdir=web2c"
(string-append "--cnffile=web2c/fmtutil.cnf"))
;; We don't actually want to install it.
(delete-file "web2c/fmtutil.cnf")
#t))
(add-after 'install 'install-more
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(root (string-append out "/share/texmf-dist"))
(target (string-append root "/tex/latex/base"))
(web2c (string-append root "/web2c"))
(makeindex (string-append root "/makeindex/latex")))
(for-each delete-file (find-files "." "\\.(log|aux)$"))
;; The usedir directive in docstrip.ins is ignored, so these
;; two files end up in the wrong place. Move them.
(mkdir-p makeindex)
(for-each (lambda (file)
(install-file file makeindex)
(delete-file file))
'("build/gglo.ist"
"build/gind.ist"))
(for-each (cut install-file <> target)
(find-files "build" ".*"))
(for-each (cut install-file <> web2c)
(find-files "web2c" ".*"))
#t))))))
(native-inputs
`(("texlive-bin" ,texlive-bin)
("texlive-tex-ini-files" ,texlive-tex-ini-files)
("texlive-tex-plain" ,texlive-tex-plain)
("texlive-kpathsea" ,texlive-kpathsea)
("texlive-cm" ,texlive-cm)
("texlive-fonts-latex" ,texlive-fonts-latex)
("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib)
("texlive-luatexconfig"
,(texlive-origin
"texlive-luatexconfig" (number->string %texlive-revision)
(list "/tex/generic/config/luatex-unicode-letters.tex"
"/tex/generic/config/luatexiniconfig.tex"
"/web2c/texmfcnf.lua")
(base32
"0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7")))))
(propagated-inputs
`(("texlive-dehyph-exptl" ,texlive-dehyph-exptl)
("texlive-etex" ,texlive-etex)
("texlive-hyph-utf8" ,texlive-hyph-utf8)
("texlive-hyphen-base" ,texlive-hyphen-base)
("texlive-hyphen-afrikaans" ,texlive-hyphen-afrikaans)
("texlive-hyphen-ancientgreek" ,texlive-hyphen-ancientgreek)
("texlive-hyphen-armenian" ,texlive-hyphen-armenian)
("texlive-hyphen-basque" ,texlive-hyphen-basque)
("texlive-hyphen-belarusian" ,texlive-hyphen-belarusian)
("texlive-hyphen-bulgarian" ,texlive-hyphen-bulgarian)
("texlive-hyphen-catalan" ,texlive-hyphen-catalan)
("texlive-hyphen-chinese" ,texlive-hyphen-chinese)
("texlive-hyphen-churchslavonic" ,texlive-hyphen-churchslavonic)
("texlive-hyphen-coptic" ,texlive-hyphen-coptic)
("texlive-hyphen-croatian" ,texlive-hyphen-croatian)
("texlive-hyphen-czech" ,texlive-hyphen-czech)
("texlive-hyphen-danish" ,texlive-hyphen-danish)
("texlive-hyphen-dutch" ,texlive-hyphen-dutch)
("texlive-hyphen-english" ,texlive-hyphen-english)
("texlive-hyphen-esperanto" ,texlive-hyphen-esperanto)
("texlive-hyphen-estonian" ,texlive-hyphen-estonian)
("texlive-hyphen-ethiopic" ,texlive-hyphen-ethiopic)
("texlive-hyphen-finnish" ,texlive-hyphen-finnish)
("texlive-hyphen-french" ,texlive-hyphen-french)
("texlive-hyphen-friulan" ,texlive-hyphen-friulan)
("texlive-hyphen-galician" ,texlive-hyphen-galician)
("texlive-hyphen-georgian" ,texlive-hyphen-georgian)
("texlive-hyphen-german" ,texlive-hyphen-german)
("texlive-hyphen-greek" ,texlive-hyphen-greek)
("texlive-hyphen-hungarian" ,texlive-hyphen-hungarian)
("texlive-hyphen-icelandic" ,texlive-hyphen-icelandic)
("texlive-hyphen-indic" ,texlive-hyphen-indic)
("texlive-hyphen-indonesian" ,texlive-hyphen-indonesian)
("texlive-hyphen-interlingua" ,texlive-hyphen-interlingua)
("texlive-hyphen-irish" ,texlive-hyphen-irish)
("texlive-hyphen-italian" ,texlive-hyphen-italian)
("texlive-hyphen-kurmanji" ,texlive-hyphen-kurmanji)
("texlive-hyphen-latin" ,texlive-hyphen-latin)
("texlive-hyphen-latvian" ,texlive-hyphen-latvian)
("texlive-hyphen-lithuanian" ,texlive-hyphen-lithuanian)
("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian)
("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian)
("texlive-hyphen-occitan" ,texlive-hyphen-occitan)
("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese)
("texlive-hyphen-polish" ,texlive-hyphen-polish)
("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese)
("texlive-hyphen-romanian" ,texlive-hyphen-romanian)
("texlive-hyphen-romansh" ,texlive-hyphen-romansh)
("texlive-hyphen-russian" ,texlive-hyphen-russian)
("texlive-hyphen-sanskrit" ,texlive-hyphen-sanskrit)
("texlive-hyphen-serbian" ,texlive-hyphen-serbian)
("texlive-hyphen-slovak" ,texlive-hyphen-slovak)
("texlive-hyphen-slovenian" ,texlive-hyphen-slovenian)
("texlive-hyphen-spanish" ,texlive-hyphen-spanish)
("texlive-hyphen-swedish" ,texlive-hyphen-swedish)
("texlive-hyphen-thai" ,texlive-hyphen-thai)
("texlive-hyphen-turkish" ,texlive-hyphen-turkish)
("texlive-hyphen-turkmen" ,texlive-hyphen-turkmen)
("texlive-hyphen-ukrainian" ,texlive-hyphen-ukrainian)
("texlive-hyphen-uppersorbian" ,texlive-hyphen-uppersorbian)
("texlive-hyphen-welsh" ,texlive-hyphen-welsh)
("texlive-unicode-data" ,texlive-unicode-data)
("texlive-ukrhyph" ,texlive-ukrhyph)
("texlive-ruhyphen" ,texlive-ruhyphen)
("texlive-latexconfig" ,texlive-latexconfig)))
(home-page "https://www.ctan.org/pkg/latex-base")
(synopsis "Base sources of LaTeX")
(description
"This bundle comprises the source of LaTeX itself, together with several
;; The usedir directive in docstrip.ins is ignored, so these
;; two files end up in the wrong place. Move them.
(mkdir-p makeindex)
(for-each (lambda (file)
(install-file file makeindex)
(delete-file file))
'("build/gglo.ist"
"build/gind.ist"))
(for-each (cut install-file <> target)
(find-files "build" ".*"))
(for-each (cut install-file <> web2c)
(find-files "web2c" ".*"))
#t)))))))
(native-inputs
`(("texlive-bin" ,texlive-bin)
("texlive-tex-ini-files" ,texlive-tex-ini-files)
("texlive-tex-plain" ,texlive-tex-plain)
("texlive-kpathsea" ,texlive-kpathsea)
("texlive-cm" ,texlive-cm)
("texlive-fonts-latex" ,texlive-fonts-latex)
("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib)
("texlive-luatexconfig"
,(texlive-origin
"texlive-luatexconfig" (number->string %texlive-revision)
(list "/tex/generic/config/luatex-unicode-letters.tex"
"/tex/generic/config/luatexiniconfig.tex"
"/web2c/texmfcnf.lua")
(base32
"0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7")))))
(propagated-inputs
`(("texlive-dehyph-exptl" ,texlive-dehyph-exptl)
("texlive-etex" ,texlive-etex)
("texlive-hyph-utf8" ,texlive-hyph-utf8)
("texlive-hyphen-base" ,texlive-hyphen-base)
("texlive-hyphen-afrikaans" ,texlive-hyphen-afrikaans)
("texlive-hyphen-ancientgreek" ,texlive-hyphen-ancientgreek)
("texlive-hyphen-armenian" ,texlive-hyphen-armenian)
("texlive-hyphen-basque" ,texlive-hyphen-basque)
("texlive-hyphen-belarusian" ,texlive-hyphen-belarusian)
("texlive-hyphen-bulgarian" ,texlive-hyphen-bulgarian)
("texlive-hyphen-catalan" ,texlive-hyphen-catalan)
("texlive-hyphen-chinese" ,texlive-hyphen-chinese)
("texlive-hyphen-churchslavonic" ,texlive-hyphen-churchslavonic)
("texlive-hyphen-coptic" ,texlive-hyphen-coptic)
("texlive-hyphen-croatian" ,texlive-hyphen-croatian)
("texlive-hyphen-czech" ,texlive-hyphen-czech)
("texlive-hyphen-danish" ,texlive-hyphen-danish)
("texlive-hyphen-dutch" ,texlive-hyphen-dutch)
("texlive-hyphen-english" ,texlive-hyphen-english)
("texlive-hyphen-esperanto" ,texlive-hyphen-esperanto)
("texlive-hyphen-estonian" ,texlive-hyphen-estonian)
("texlive-hyphen-ethiopic" ,texlive-hyphen-ethiopic)
("texlive-hyphen-finnish" ,texlive-hyphen-finnish)
("texlive-hyphen-french" ,texlive-hyphen-french)
("texlive-hyphen-friulan" ,texlive-hyphen-friulan)
("texlive-hyphen-galician" ,texlive-hyphen-galician)
("texlive-hyphen-georgian" ,texlive-hyphen-georgian)
("texlive-hyphen-german" ,texlive-hyphen-german)
("texlive-hyphen-greek" ,texlive-hyphen-greek)
("texlive-hyphen-hungarian" ,texlive-hyphen-hungarian)
("texlive-hyphen-icelandic" ,texlive-hyphen-icelandic)
("texlive-hyphen-indic" ,texlive-hyphen-indic)
("texlive-hyphen-indonesian" ,texlive-hyphen-indonesian)
("texlive-hyphen-interlingua" ,texlive-hyphen-interlingua)
("texlive-hyphen-irish" ,texlive-hyphen-irish)
("texlive-hyphen-italian" ,texlive-hyphen-italian)
("texlive-hyphen-kurmanji" ,texlive-hyphen-kurmanji)
("texlive-hyphen-latin" ,texlive-hyphen-latin)
("texlive-hyphen-latvian" ,texlive-hyphen-latvian)
("texlive-hyphen-lithuanian" ,texlive-hyphen-lithuanian)
("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian)
("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian)
("texlive-hyphen-occitan" ,texlive-hyphen-occitan)
("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese)
("texlive-hyphen-polish" ,texlive-hyphen-polish)
("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese)
("texlive-hyphen-romanian" ,texlive-hyphen-romanian)
("texlive-hyphen-romansh" ,texlive-hyphen-romansh)
("texlive-hyphen-russian" ,texlive-hyphen-russian)
("texlive-hyphen-sanskrit" ,texlive-hyphen-sanskrit)
("texlive-hyphen-serbian" ,texlive-hyphen-serbian)
("texlive-hyphen-slovak" ,texlive-hyphen-slovak)
("texlive-hyphen-slovenian" ,texlive-hyphen-slovenian)
("texlive-hyphen-spanish" ,texlive-hyphen-spanish)
("texlive-hyphen-swedish" ,texlive-hyphen-swedish)
("texlive-hyphen-thai" ,texlive-hyphen-thai)
("texlive-hyphen-turkish" ,texlive-hyphen-turkish)
("texlive-hyphen-turkmen" ,texlive-hyphen-turkmen)
("texlive-hyphen-ukrainian" ,texlive-hyphen-ukrainian)
("texlive-hyphen-uppersorbian" ,texlive-hyphen-uppersorbian)
("texlive-hyphen-welsh" ,texlive-hyphen-welsh)
("texlive-unicode-data" ,texlive-unicode-data)
("texlive-ukrhyph" ,texlive-ukrhyph)
("texlive-ruhyphen" ,texlive-ruhyphen)
("texlive-latexconfig" ,texlive-latexconfig)))
(home-page "https://www.ctan.org/pkg/latex-base")
(synopsis "Base sources of LaTeX")
(description
"This bundle comprises the source of LaTeX itself, together with several
packages which are considered \"part of the kernel\". This bundle, together
with the required packages, constitutes what every LaTeX distribution should
contain.")
(license license:lppl1.3c+)))
(license license:lppl1.3c+))))
(define-public texlive-latex-filecontents
(package
@ -3578,7 +3577,10 @@ (define-public texlive-union
;; the updmap.cfg file)
(match (filter (match-lambda
((name . _)
(not (member name '("bash" "updmap.cfg")))))
(not (member name '("bash"
"coreutils"
"sed"
"updmap.cfg")))))
%build-inputs)
(((names . directories) ...)
(union-build (assoc-ref %outputs "out")
@ -3598,6 +3600,7 @@ (define-public texlive-union
(setenv "PATH" (string-append
(assoc-ref %build-inputs "bash") "/bin:"
(assoc-ref %build-inputs "coreutils") "/bin:"
(assoc-ref %build-inputs "sed") "/bin:"
(string-append out "/bin")))
(for-each
(cut wrap-program <>
@ -3606,16 +3609,32 @@ (define-public texlive-union
(find-files (string-append out "/bin") ".*"))
;; Remove invalid maps from config file.
(let ((port (open-pipe* OPEN_WRITE "updmap-sys"
"--syncwithtrees"
"--nohash"
(assoc-ref %build-inputs "updmap.cfg"))))
(display "Y\n" port)
(when (not (zero? (status:exit-val (close-pipe port))))
(error "failed to filter updmap.cfg")))
;; Generate maps.
(invoke "updmap-sys" "--force"
(string-append out "/share/texmf-config/web2c/updmap.cfg"))
(let ((web2c (string-append out "/share/texmf-config/web2c/"))
(maproot (string-append out "/share/texmf-dist/fonts/map/")))
(mkdir-p web2c)
(copy-file
(assoc-ref %build-inputs "updmap.cfg")
(string-append web2c "updmap.cfg"))
(make-file-writable (string-append web2c "updmap.cfg"))
(let* ((port (open-pipe* OPEN_WRITE "updmap-sys"
"--syncwithtrees"
"--nohash"
(string-append "--cnffile=" web2c "updmap.cfg"))))
(display "Y\n" port)
(when (not (zero? (status:exit-val (close-pipe port))))
(error "failed to filter updmap.cfg")))
;; Generate maps.
(invoke "updmap-sys"
(string-append "--cnffile=" web2c "updmap.cfg")
(string-append "--dvipdfmxoutputdir="
maproot "dvipdfmx/updmap/")
(string-append "--dvipsoutputdir="
maproot "dvips/updmap/")
(string-append "--pdftexoutputdir="
maproot "pdftex/updmap/"))
;; Having this file breaks all file lookups later.
(delete-file (string-append out "/share/texmf-dist/ls-R")))
#t))))
(inputs
`(("bash" ,bash)

View file

@ -607,7 +607,7 @@ (define-public fe
arbitrary text regions; it is not bound to syntactic units.
Fe has no configuration or extension language and requires no setup.
Its user interface is emacs-like and it has menues for the very most
Its user interface is emacs-like and it has menus for the very most
important functions to help beginners. Further there is a reference
card. It offers:

View file

@ -50,14 +50,14 @@ (define-module (gnu packages tor)
(define-public tor
(package
(name "tor")
(version "0.4.1.5")
(version "0.4.1.6")
(source (origin
(method url-fetch)
(uri (string-append "https://dist.torproject.org/tor-"
version ".tar.gz"))
(sha256
(base32
"0984jb6hdcc10f7aq8xzl7l4jf93skp45wkv2v63z4zv0nvf0r58"))))
"0wgdid8w7srd218hh4rwslzdx2ickxw1pg18p2wry1r6wi65521a"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)

View file

@ -69,7 +69,7 @@ (define-public usb-modeswitch-data
(install-file (string-append files "/COPYING") license-dir)))))
(home-page "http://www.draisberghof.de/usb_modeswitch/")
(synopsis "Data package for USB_ModeSwitch")
(description "This packages contains data about devices and a UDEV rules
(description "This package contains data about devices and a UDEV rules
file for use with USB_ModeSwitch.")
(license license:gpl2+)))

View file

@ -1495,8 +1495,8 @@ (define-public youtube-dl
(version "2019.09.12")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/rg3/youtube-dl/releases/"
"download/" version "/youtube-dl-"
(uri (string-append "https://github.com/ytdl-org/youtube-dl/"
"releases/download/" version "/youtube-dl-"
version ".tar.gz"))
(sha256
(base32
@ -2297,7 +2297,7 @@ (define-public v4l-utils
(define-public obs
(package
(name "obs")
(version "23.0.2")
(version "24.0.1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -2306,7 +2306,7 @@ (define-public obs
(file-name (git-file-name name version))
(sha256
(base32
"1c0a5vy4h3qwz69qw3bydyk7r651ib5a9jna4yj6c25p3p9isdvp"))))
"056s0hs1ds3c57sc0gy39dxaxvwlakl3w25jxgawh0fs99211ar5"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ; no tests
@ -2326,6 +2326,7 @@ (define-public obs
("mesa" ,mesa)
("pulseaudio" ,pulseaudio)
("qtbase" ,qtbase)
("qtsvg" ,qtsvg)
("qtx11extras" ,qtx11extras)
("speex" ,speex)
("v4l-utils" ,v4l-utils)

View file

@ -368,7 +368,7 @@ (define-public vimb
(define next-gtk-webkit
(package
(name "next-gtk-webkit")
(version "1.3.1")
(version "1.3.2")
(source
(origin
(method git-fetch)
@ -379,7 +379,7 @@ (define next-gtk-webkit
(commit version)))
(sha256
(base32
"01fn1f080ydk0wj1bwkyakqz93bdq9xb5x8qz820jpl9id17bqgj"))
"0863p6ch4pdrn6b81cx2abis0ld7r2n6x34v3z0ihj3jlfj21yx4"))
(file-name (git-file-name "next" version))))
(build-system glib-or-gtk-build-system)
(arguments
@ -417,19 +417,31 @@ (define sbcl-next-download-manager
#:asd-file "next.asd"
#:asd-system-name "next/download-manager"))
(inputs
`(;; ASD libraries:
("trivial-features" ,sbcl-trivial-features)
;; Lisp libraries:
("cl-ppcre" ,sbcl-cl-ppcre)
`(("cl-ppcre" ,sbcl-cl-ppcre)
("dexador" ,sbcl-dexador)
("log4cl" ,sbcl-log4cl)
("lparallel" ,sbcl-lparallel)
("quri" ,sbcl-quri)
("str" ,sbcl-cl-str)))
(native-inputs
`(("prove-asdf" ,sbcl-prove-asdf)))
`(("trivial-features" ,sbcl-trivial-features)
("prove-asdf" ,sbcl-prove-asdf)))
(synopsis "Infinitely extensible web-browser (download manager)")))
(define sbcl-next-ring
(package
(inherit next-gtk-webkit)
(name "sbcl-next-ring")
(build-system asdf-build-system/sbcl)
(arguments
`(#:tests? #t
#:asd-file "next.asd"
#:asd-system-name "next/ring"))
(native-inputs
`(("trivial-features" ,sbcl-trivial-features)
("prove-asdf" ,sbcl-prove-asdf)))
(synopsis "Infinitely extensible web-browser (ring)")))
(define-public next
(let ((version (package-version next-gtk-webkit)))
(package
@ -491,14 +503,11 @@ (define expected-fasl (string-append
(string-append "PREFIX="
(assoc-ref outputs "out"))))))))
(inputs
`(("next-gtk-webkit" ,next-gtk-webkit)
;; ASD libraries:
("trivial-features" ,sbcl-trivial-features)
("trivial-garbage" ,sbcl-trivial-garbage)
;; Lisp libraries:
("alexandria" ,sbcl-alexandria)
`(("alexandria" ,sbcl-alexandria)
("bordeaux-threads" ,sbcl-bordeaux-threads)
("cl-annot" ,sbcl-cl-annot)
("cl-css" ,sbcl-cl-css)
("cl-hooks" ,sbcl-cl-hooks)
("cl-json" ,sbcl-cl-json)
("cl-markup" ,sbcl-cl-markup)
("cl-ppcre" ,sbcl-cl-ppcre)
@ -507,6 +516,7 @@ (define expected-fasl (string-append
("dbus" ,cl-dbus)
("dexador" ,sbcl-dexador)
("ironclad" ,sbcl-ironclad)
("local-time" ,sbcl-local-time)
("log4cl" ,sbcl-log4cl)
("lparallel" ,sbcl-lparallel)
("mk-string-metrics" ,sbcl-mk-string-metrics)
@ -519,9 +529,12 @@ (define expected-fasl (string-append
("trivial-clipboard" ,sbcl-trivial-clipboard)
("unix-opts" ,sbcl-unix-opts)
;; Local deps
("next-download-manager" ,sbcl-next-download-manager)))
("next-gtk-webkit" ,next-gtk-webkit)
("next-download-manager" ,sbcl-next-download-manager)
("next-ring" ,sbcl-next-ring)))
(native-inputs
`(("prove-asdf" ,sbcl-prove-asdf)))
`(("trivial-features" ,sbcl-trivial-features)
("prove-asdf" ,sbcl-prove-asdf)))
(synopsis "Infinitely extensible web-browser (with Lisp development files)"))))
(define-public sbcl-next

View file

@ -123,6 +123,7 @@ (define-module (gnu packages web)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages re2c)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
@ -860,6 +861,45 @@ (define-public libwebsockets
;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
(license license:lgpl2.1)))
(define-public wabt
(package
(name "wabt")
(version "1.0.11")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/WebAssembly/wabt")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0hn88vlqyclpk79v3wg3lrssd9vwhjdgvb41g03jqakygxxgnmp5"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DBUILD_TESTS=OFF")
#:tests? #f))
(inputs `(("python" ,python-2)
("re2c" ,re2c)))
(home-page "https://github.com/WebAssembly/wabt")
(synopsis "WebAssembly Binary Toolkit")
(description "WABT (pronounced: wabbit) is a suite of tools for
WebAssembly, including:
* wat2wasm: translate from WebAssembly text format to the WebAssembly binary
format
* wasm2wat: the inverse of wat2wasm, translate from the binary format back
to the text format (also known as a .wat)
* wasm-objdump: print information about a wasm binary. Similar to objdump.
* wasm-interp: decode and run a WebAssembly binary file using a stack-based
interpreter
* wat-desugar: parse .wat text form as supported by the spec interpreter
(s-expressions, flat syntax, or mixed) and print canonical flat format
* wasm2c: convert a WebAssembly binary file to a C source and header
These tools are intended for use in (or for development of) toolchains or
other systems that want to manipulate WebAssembly files.")
(license license:asl2.0)))
(define-public websocketpp
(package
(name "websocketpp")

View file

@ -11,7 +11,7 @@
;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.com>
@ -25,6 +25,7 @@
;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1687,16 +1688,16 @@ (define-public sct
(define-public wl-clipboard
(package
(name "wl-clipboard")
(version "1.0.0")
(version "2.0.0_beta2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/bugaevc/wl-clipboard.git")
(commit (string-append "v" version))))
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "03h6ajcc30w6928bkd4h6xfj4iy2359ww6hdlybq8mr1zwmb2h0q"))))
(base32 "0wyqbaph9v1v6lwfcjf8gjhdl70icpss4wapshzfxcz3l9m1p8hv"))))
(build-system meson-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -1708,3 +1709,28 @@ (define-public wl-clipboard
(description "Wl-clipboard is a set of command-line copy/paste utilities for
Wayland.")
(license license:gpl3+)))
(define-public autocutsel
(package
(name "autocutsel")
(version "0.10.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/sigmike/autocutsel"
"/releases/download/" version "/"
"autocutsel-" version ".tar.gz"))
(sha256
(base32
"0gsys2dzh4az51ndcsabhlbbrjn2nm75lnjr45kg6r8sm8q66dx2"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f)) ; no "check" target
(native-inputs `(("libx11" ,libx11)
("libxaw" ,libxaw)))
(home-page "https://www.nongnu.org/autocutsel/")
(synopsis "Automated X11 clipboard and cutbuffer synchronization")
(description "@code{autocutsel} tracks changes in the server's cutbuffer
and clipboard selection. When the clipboard is changed, it updates the
cutbuffer. When the cutbuffer is changed, it owns the clipboard selection.
The cutbuffer and clipboard selection are always synchronized.")
(license license:gpl2+)))

View file

@ -1363,7 +1363,7 @@ (define-public perl-xml-xpathengine
"This module provides an XPath engine, that can be re-used by other
modules/classes that implement trees.
In order to use the XPath engine, nodes in the user module need to mimick DOM
In order to use the XPath engine, nodes in the user module need to mimic DOM
nodes. The degree of similitude between the user tree and a DOM dictates how
much of the XPath features can be used. A module implementing all of the DOM
should be able to use this module very easily (you might need to add the

View file

@ -81,70 +81,68 @@ (define-record-type* <cuirass-configuration>
(define (cuirass-shepherd-service config)
"Return a <shepherd-service> for the Cuirass service with CONFIG."
(and
(cuirass-configuration? config)
(let ((cuirass (cuirass-configuration-cuirass config))
(cache-directory (cuirass-configuration-cache-directory config))
(web-log-file (cuirass-configuration-web-log-file config))
(log-file (cuirass-configuration-log-file config))
(user (cuirass-configuration-user config))
(group (cuirass-configuration-group config))
(interval (cuirass-configuration-interval config))
(database (cuirass-configuration-database config))
(ttl (cuirass-configuration-ttl config))
(port (cuirass-configuration-port config))
(host (cuirass-configuration-host config))
(specs (cuirass-configuration-specifications config))
(use-substitutes? (cuirass-configuration-use-substitutes? config))
(one-shot? (cuirass-configuration-one-shot? config))
(fallback? (cuirass-configuration-fallback? config)))
(list (shepherd-service
(documentation "Run Cuirass.")
(provision '(cuirass))
(requirement '(guix-daemon networking))
(start #~(make-forkexec-constructor
(list (string-append #$cuirass "/bin/cuirass")
"--cache-directory" #$cache-directory
"--specifications"
#$(scheme-file "cuirass-specs.scm" specs)
"--database" #$database
"--ttl" #$(string-append (number->string ttl) "s")
"--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '())
#$@(if one-shot? '("--one-shot") '())
#$@(if fallback? '("--fallback") '()))
(let ((cuirass (cuirass-configuration-cuirass config))
(cache-directory (cuirass-configuration-cache-directory config))
(web-log-file (cuirass-configuration-web-log-file config))
(log-file (cuirass-configuration-log-file config))
(user (cuirass-configuration-user config))
(group (cuirass-configuration-group config))
(interval (cuirass-configuration-interval config))
(database (cuirass-configuration-database config))
(ttl (cuirass-configuration-ttl config))
(port (cuirass-configuration-port config))
(host (cuirass-configuration-host config))
(specs (cuirass-configuration-specifications config))
(use-substitutes? (cuirass-configuration-use-substitutes? config))
(one-shot? (cuirass-configuration-one-shot? config))
(fallback? (cuirass-configuration-fallback? config)))
(list (shepherd-service
(documentation "Run Cuirass.")
(provision '(cuirass))
(requirement '(guix-daemon networking))
(start #~(make-forkexec-constructor
(list (string-append #$cuirass "/bin/cuirass")
"--cache-directory" #$cache-directory
"--specifications"
#$(scheme-file "cuirass-specs.scm" specs)
"--database" #$database
"--ttl" #$(string-append (number->string ttl) "s")
"--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '())
#$@(if one-shot? '("--one-shot") '())
#$@(if fallback? '("--fallback") '()))
#:environment-variables
(list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
(string-append "GIT_EXEC_PATH=" #$git
"/libexec/git-core"))
#:environment-variables
(list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
(string-append "GIT_EXEC_PATH=" #$git
"/libexec/git-core"))
#:user #$user
#:group #$group
#:log-file #$log-file))
(stop #~(make-kill-destructor)))
(shepherd-service
(documentation "Run Cuirass web interface.")
(provision '(cuirass-web))
(requirement '(guix-daemon networking))
(start #~(make-forkexec-constructor
(list (string-append #$cuirass "/bin/cuirass")
"--cache-directory" #$cache-directory
"--specifications"
#$(scheme-file "cuirass-specs.scm" specs)
"--database" #$database
"--ttl" #$(string-append (number->string ttl) "s")
"--web"
"--port" #$(number->string port)
"--listen" #$host
"--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '())
#$@(if fallback? '("--fallback") '()))
#:user #$user
#:group #$group
#:log-file #$log-file))
(stop #~(make-kill-destructor)))
(shepherd-service
(documentation "Run Cuirass web interface.")
(provision '(cuirass-web))
(requirement '(guix-daemon networking))
(start #~(make-forkexec-constructor
(list (string-append #$cuirass "/bin/cuirass")
"--cache-directory" #$cache-directory
"--specifications"
#$(scheme-file "cuirass-specs.scm" specs)
"--database" #$database
"--ttl" #$(string-append (number->string ttl) "s")
"--web"
"--port" #$(number->string port)
"--listen" #$host
"--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '())
#$@(if fallback? '("--fallback") '()))
#:user #$user
#:group #$group
#:log-file #$web-log-file))
(stop #~(make-kill-destructor)))))))
#:user #$user
#:group #$group
#:log-file #$web-log-file))
(stop #~(make-kill-destructor))))))
(define (cuirass-account config)
"Return the user accounts and user groups for CONFIG."

View file

@ -137,7 +137,7 @@ (define (serialize-hours field-name val)
(define (free-form-fields? val)
(match val
(() #t)
((((? symbol?) . (? string)) . val) (free-form-fields? val))
((((? symbol?) . (? string?)) . val) (free-form-fields? val))
(_ #f)))
(define (serialize-free-form-fields field-name val)
(for-each (match-lambda ((k . v) (serialize-field k v))) val))
@ -145,7 +145,7 @@ (define (serialize-free-form-fields field-name val)
(define (free-form-args? val)
(match val
(() #t)
((((? symbol?) . (? string)) . val) (free-form-args? val))
((((? symbol?) . (? string?)) . val) (free-form-args? val))
(_ #f)))
(define (serialize-free-form-args field-name val)
(serialize-field field-name

View file

@ -11,6 +11,7 @@
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Sou Bunnbu <iyzsong@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -144,7 +145,14 @@ (define-module (gnu services networking)
iptables-configuration-iptables
iptables-configuration-ipv4-rules
iptables-configuration-ipv6-rules
iptables-service-type))
iptables-service-type
nftables-service-type
nftables-configuration
nftables-configuration?
nftables-configuration-package
nftables-configuration-ruleset
%default-nftables-ruleset))
;;; Commentary:
;;;
@ -1415,4 +1423,76 @@ (define iptables-service-type
(list (service-extension shepherd-root-service-type
(compose list iptables-shepherd-service))))))
;;;
;;; nftables
;;;
(define %default-nftables-ruleset
(plain-file "nftables.conf"
"# A simple and safe firewall
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# early drop of invalid connections
ct state invalid drop
# allow established/related connections
ct state { established, related } accept
# allow from loopback
iifname lo accept
# allow icmp
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# allow ssh
tcp dport ssh accept
# reject everything else
reject with icmpx type port-unreachable
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
"))
(define-record-type* <nftables-configuration>
nftables-configuration
make-nftables-configuration
nftables-configuration?
(package nftables-configuration-package
(default nftables))
(ruleset nftables-configuration-ruleset ; file-like object
(default %default-nftables-ruleset)))
(define nftables-shepherd-service
(match-lambda
(($ <nftables-configuration> package ruleset)
(let ((nft (file-append package "/sbin/nft")))
(shepherd-service
(documentation "Packet filtering and classification")
(provision '(nftables))
(start #~(lambda _
(invoke #$nft "--file" #$ruleset)))
(stop #~(lambda _
(invoke #$nft "flush" "ruleset"))))))))
(define nftables-service-type
(service-type
(name 'nftables)
(description
"Run @command{nft}, setting up the specified ruleset.")
(extensions
(list (service-extension shepherd-root-service-type
(compose list nftables-shepherd-service))
(service-extension profile-service-type
(compose list nftables-configuration-package))))
(default-value (nftables-configuration))))
;;; networking.scm ends here

View file

@ -313,7 +313,7 @@ (define-configuration libvirt-configuration
Multiple filters can be defined in a single filters statement, they just
need to be separated by spaces.")
(log-outputs
(string "3:stderr")
(string "3:syslog:libvirtd")
"Logging outputs.
An output is one of the places to save logging information

View file

@ -773,6 +773,27 @@ (define %gdm-accounts
(home-directory "/var/lib/gdm")
(shell (file-append shadow "/sbin/nologin")))))
(define %gdm-activation
;; Ensure /var/lib/gdm is owned by the "gdm" user. This is normally the
;; case but could be wrong if the "gdm" user was created, then removed, and
;; then recreated under a different UID/GID: <https://bugs.gnu.org/37423>.
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(let* ((gdm (getpwnam "gdm"))
(uid (passwd:uid gdm))
(gid (passwd:gid gdm))
(st (stat "/var/lib/gdm" #f)))
;; Recurse into /var/lib/gdm only if it has wrong ownership.
(when (and st
(or (not (= uid (stat:uid st)))
(not (= gid (stat:gid st)))))
(for-each (lambda (file)
(chown file uid gid))
(find-files "/var/lib/gdm"
#:directories? #t)))))))
(define dbus-daemon-wrapper
(program-file
"gdm-dbus-wrapper"
@ -915,6 +936,8 @@ (define gdm-service-type
(extensions
(list (service-extension shepherd-root-service-type
gdm-shepherd-service)
(service-extension activation-service-type
(const %gdm-activation))
(service-extension account-service-type
(const %gdm-accounts))
(service-extension pam-root-service-type

View file

@ -257,11 +257,13 @@ (define items
(lowered-gexp-guile lowered))
"/bin/guile")
"guile"
(append (map (lambda (directory) `("-L" ,directory))
(lowered-gexp-load-path lowered))
(map (lambda (directory) `("-C" ,directory))
(lowered-gexp-load-compiled-path
lowered))
(append (append-map (lambda (directory)
`("-L" ,directory))
(lowered-gexp-load-path lowered))
(append-map (lambda (directory)
`("-C" ,directory))
(lowered-gexp-load-compiled-path
lowered))
(list "-c"
(object->string
(lowered-gexp-sexp lowered))))))))))))

View file

@ -87,8 +87,7 @@ (define (marionette-shepherd-service config)
(requirement `(udev ,@requirement))
(modules '((ice-9 match)
(srfi srfi-9 gnu)
(rnrs bytevectors)))
(srfi srfi-9 gnu)))
(start
(with-imported-modules imported-modules
#~(lambda ()
@ -98,8 +97,8 @@ (define (self-quoting? x)
((_ pred rest ...)
(or (pred x)
(one-of rest ...))))))
(one-of symbol? string? pair? null? vector?
bytevector? number? boolean?)))
(one-of symbol? string? keyword? pair? null? array?
number? boolean?)))
(match (primitive-fork)
(0

View file

@ -128,7 +128,7 @@ (define* (check #:key tests? test-target #:allow-other-keys)
(define* (install #:key inputs outputs (gem-flags '())
#:allow-other-keys)
"Install the gem archive SOURCE to the output store item. Additional
GEM-FLAGS are passed to the 'gem' invokation, if present."
GEM-FLAGS are passed to the 'gem' invocation, if present."
(let* ((ruby-version
(match:substring (string-match "ruby-(.*)\\.[0-9]$"
(assoc-ref inputs "ruby"))

View file

@ -19,6 +19,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix channels)
#:use-module (git)
#:use-module (guix git)
#:use-module (guix records)
#:use-module (guix gexp)
@ -29,6 +30,7 @@ (define-module (guix channels)
#:use-module (guix derivations)
#:use-module (guix combinators)
#:use-module (guix diagnostics)
#:use-module (guix sets)
#:use-module (guix store)
#:use-module (guix i18n)
#:use-module ((guix utils)
@ -38,6 +40,7 @@ (define-module (guix channels)
#:use-module (srfi srfi-2)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:autoload (guix self) (whole-package make-config.scm)
@ -67,7 +70,15 @@ (define-module (guix channels)
%channel-profile-hooks
channel-instances->derivation
profile-channels))
profile-channels
channel-news-entry?
channel-news-entry-commit
channel-news-entry-tag
channel-news-entry-title
channel-news-entry-body
channel-news-for-commit))
;;; Commentary:
;;;
@ -110,10 +121,11 @@ (define-record-type <channel-instance>
(checkout channel-instance-checkout))
(define-record-type <channel-metadata>
(channel-metadata directory dependencies)
(channel-metadata directory dependencies news-file)
channel-metadata?
(directory channel-metadata-directory) ;string with leading slash
(dependencies channel-metadata-dependencies)) ;list of <channel>
(dependencies channel-metadata-dependencies) ;list of <channel>
(news-file channel-metadata-news-file)) ;string | #f
(define (channel-reference channel)
"Return the \"reference\" for CHANNEL, an sexp suitable for
@ -129,12 +141,13 @@ (define (read-channel-metadata port)
(match (read port)
(('channel ('version 0) properties ...)
(let ((directory (and=> (assoc-ref properties 'directory) first))
(dependencies (or (assoc-ref properties 'dependencies) '())))
(dependencies (or (assoc-ref properties 'dependencies) '()))
(news-file (and=> (assoc-ref properties 'news-file) first)))
(channel-metadata
(cond ((not directory) "/")
(cond ((not directory) "/") ;directory
((string-prefix? "/" directory) directory)
(else (string-append "/" directory)))
(map (lambda (item)
(map (lambda (item) ;dependencies
(let ((get (lambda* (key #:optional default)
(or (and=> (assoc-ref item key) first) default))))
(and-let* ((name (get 'name))
@ -145,7 +158,8 @@ (define (read-channel-metadata port)
(branch branch)
(url url)
(commit (get 'commit))))))
dependencies))))
dependencies)
news-file))) ;news-file
((and ('channel ('version version) _ ...) sexp)
(raise (condition
(&message (message "unsupported '.guix-channel' version"))
@ -169,7 +183,7 @@ (define (read-channel-metadata-from-source source)
read-channel-metadata))
(lambda args
(if (= ENOENT (system-error-errno args))
(channel-metadata "/" '())
(channel-metadata "/" '() #f)
(apply throw args)))))
(define (channel-instance-metadata instance)
@ -560,3 +574,118 @@ (define (profile-channels profile)
;; Show most recently installed packages last.
(reverse
(manifest-entries (profile-manifest profile)))))
;;;
;;; News.
;;;
;; Channel news.
(define-record-type <channel-news>
(channel-news entries)
channel-news?
(entries channel-news-entries)) ;list of <channel-news-entry>
;; News entry, associated with a specific commit of the channel.
(define-record-type <channel-news-entry>
(channel-news-entry commit tag title body)
channel-news-entry?
(commit channel-news-entry-commit) ;hex string | #f
(tag channel-news-entry-tag) ;#f | string
(title channel-news-entry-title) ;list of language tag/string pairs
(body channel-news-entry-body)) ;list of language tag/string pairs
(define (sexp->channel-news-entry entry)
"Return the <channel-news-entry> record corresponding to ENTRY, an sexp."
(define (pair language message)
(cons (symbol->string language) message))
(match entry
(('entry ((and (or 'commit 'tag) type) commit-or-tag)
('title ((? symbol? title-tags) (? string? titles)) ...)
('body ((? symbol? body-tags) (? string? bodies)) ...)
_ ...)
(channel-news-entry (and (eq? type 'commit) commit-or-tag)
(and (eq? type 'tag) commit-or-tag)
(map pair title-tags titles)
(map pair body-tags bodies)))
(_
(raise (condition
(&message (message "invalid channel news entry"))
(&error-location
(location (source-properties->location
(source-properties entry)))))))))
(define (read-channel-news port)
"Read a channel news feed from PORT and return it as a <channel-news>
record."
(match (false-if-exception (read port))
(('channel-news ('version 0) entries ...)
(channel-news (map sexp->channel-news-entry entries)))
(('channel-news ('version version) _ ...)
;; This is an unsupported version from the future. There's nothing wrong
;; with that (the user may simply need to upgrade the 'guix' channel to
;; be able to read it), so silently ignore it.
(channel-news '()))
(#f
(raise (condition
(&message (message "syntactically invalid channel news file")))))
(sexp
(raise (condition
(&message (message "invalid channel news file"))
(&error-location
(location (source-properties->location
(source-properties sexp)))))))))
(define (resolve-channel-news-entry-tag repository entry)
"If ENTRY has its 'commit' field set, return ENTRY. Otherwise, lookup
ENTRY's 'tag' in REPOSITORY and return ENTRY with its 'commit' field set to
the field its 'tag' refers to. A 'git-error' exception is raised if the tag
cannot be found."
(if (channel-news-entry-commit entry)
entry
(let* ((tag (channel-news-entry-tag entry))
(reference (string-append "refs/tags/" tag))
(oid (reference-name->oid repository reference)))
(channel-news-entry (oid->string oid) tag
(channel-news-entry-title entry)
(channel-news-entry-body entry)))))
(define* (channel-news-for-commit channel new #:optional old)
"Return a list of <channel-news-entry> for CHANNEL between commits OLD and
NEW. When OLD is omitted or is #f, return all the news entries of CHANNEL."
(catch 'git-error
(lambda ()
(let* ((checkout (update-cached-checkout (channel-url channel)
#:ref `(commit . ,new)))
(metadata (read-channel-metadata-from-source checkout))
(news-file (channel-metadata-news-file metadata))
(news-file (and news-file
(string-append checkout "/" news-file))))
(if (and news-file (file-exists? news-file))
(with-repository checkout repository
(let* ((news (call-with-input-file news-file
read-channel-news))
(entries (map (lambda (entry)
(resolve-channel-news-entry-tag repository
entry))
(channel-news-entries news))))
(if old
(let* ((new (commit-lookup repository (string->oid new)))
(old (commit-lookup repository (string->oid old)))
(commits (list->set
(map (compose oid->string commit-id)
(commit-difference new old)))))
(filter (lambda (entry)
(set-contains? commits
(channel-news-entry-commit entry)))
entries))
entries)))
'())))
(lambda (key error . rest)
;; If commit NEW or commit OLD cannot be found, then something must be
;; wrong (for example, the history of CHANNEL was rewritten and these
;; commits no longer exist upstream), so quietly return the empty list.
(if (= GIT_ENOTFOUND (git-error-code error))
'()
(apply throw key error rest)))))

View file

@ -994,6 +994,15 @@ (define* (gexp->sexp exp #:key
(target (%current-target-system)))
"Return (monadically) the sexp corresponding to EXP for the given OUTPUT,
and in the current monad setting (system type, etc.)"
(define (self-quoting? x)
(letrec-syntax ((one-of (syntax-rules ()
((_) #f)
((_ pred rest ...)
(or (pred x)
(one-of rest ...))))))
(one-of symbol? string? keyword? pair? null? array?
number? boolean?)))
(define* (reference->sexp ref #:optional native?)
(with-monad %store-monad
(match ref
@ -1023,8 +1032,10 @@ (define* (reference->sexp ref #:optional native?)
#:target target)))
;; OBJ must be either a derivation or a store file name.
(return (expand thing obj output)))))
(($ <gexp-input> x)
(($ <gexp-input> (? self-quoting? x))
(return x))
(($ <gexp-input> x)
(raise (condition (&gexp-input-error (input x)))))
(x
(return x)))))
@ -1033,19 +1044,6 @@ (define* (reference->sexp ref #:optional native?)
reference->sexp (gexp-references exp))))
(return (apply (gexp-proc exp) args))))
(define (syntax-location-string s)
"Return a string representing the source code location of S."
(let ((props (syntax-source s)))
(if props
(let ((file (assoc-ref props 'filename))
(line (and=> (assoc-ref props 'line) 1+))
(column (assoc-ref props 'column)))
(if file
(simple-format #f "~a:~a:~a"
file line column)
(simple-format #f "~a:~a" line column)))
"<unknown location>")))
(define-syntax-rule (define-syntax-parameter-once name proc)
;; Like 'define-syntax-parameter' but ensure the top-level binding for NAME
;; does not get redefined. This works around a race condition in a

View file

@ -28,6 +28,7 @@ (define-module (guix git)
#:use-module (guix utils)
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module (guix sets)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
@ -37,8 +38,10 @@ (define-module (guix git)
#:export (%repository-cache-directory
honor-system-x509-certificates!
with-repository
update-cached-checkout
latest-repository-commit
commit-difference
git-checkout
git-checkout?
@ -220,6 +223,21 @@ (define* (update-submodules repository
(G_ "Support for submodules is missing; \
please upgrade Guile-Git.~%"))))
(define (reference-available? repository ref)
"Return true if REF, a reference such as '(commit . \"cabba9e\"), is
definitely available in REPOSITORY, false otherwise."
(match ref
(('commit . commit)
(catch 'git-error
(lambda ()
(->bool (commit-lookup repository (string->oid commit))))
(lambda (key error . rest)
(if (= GIT_ENOTFOUND (git-error-code error))
#f
(apply throw key error rest)))))
(_
#f)))
(define* (update-cached-checkout url
#:key
(ref '(branch . "master"))
@ -254,7 +272,8 @@ (define canonical-ref
(repository-open cache-directory)
(clone* url cache-directory))))
;; Only fetch remote if it has not been cloned just before.
(when cache-exists?
(when (and cache-exists?
(not (reference-available? repository ref)))
(remote-fetch (remote-lookup repository "origin")))
(when recursive?
(update-submodules repository #:log-port log-port))
@ -323,6 +342,43 @@ (define (print-git-error port key args default-printer)
(set-exception-printer! 'git-error print-git-error)
;;;
;;; Commit difference.
;;;
(define (commit-closure commit)
"Return the closure of COMMIT as a set."
(let loop ((commits (list commit))
(visited (setq)))
(match commits
(()
visited)
((head . tail)
(if (set-contains? visited head)
(loop tail visited)
(loop (append (commit-parents head) tail)
(set-insert head visited)))))))
(define (commit-difference new old)
"Return the list of commits between NEW and OLD, where OLD is assumed to be
an ancestor of NEW.
Essentially, this computes the set difference between the closure of NEW and
that of OLD."
(let loop ((commits (list new))
(result '())
(visited (commit-closure old)))
(match commits
(()
(reverse result))
((head . tail)
(if (set-contains? visited head)
(loop tail result visited)
(loop (append (commit-parents head) tail)
(cons head result)
(set-insert head visited)))))))
;;;
;;; Checkouts.

View file

@ -3,6 +3,7 @@
;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -186,7 +187,12 @@ (define (release->version release)
(substring tag 0 (+ name-length 1))))
(substring tag (+ name-length 1)))
;; some tags start with a "v" e.g. "v0.25.0"
;; or with the word "version" e.g. "version.2.1"
;; where some are just the version number
((string-prefix? "version" tag)
(if (char-set-contains? char-set:digit (string-ref tag 7))
(substring tag 7)
(substring tag 8)))
((string-prefix? "v" tag)
(substring tag 1))
;; Finally, reject tags that don't start with a digit:

View file

@ -437,7 +437,8 @@ (define (pypi-package? package)
(define (pypi-url? url)
(or (string-prefix? "https://pypi.org/" url)
(string-prefix? "https://pypi.python.org/" url)
(string-prefix? "https://pypi.org/packages" url)))
(string-prefix? "https://pypi.org/packages" url)
(string-prefix? "https://files.pythonhosted.org/packages" url)))
(let ((source-url (and=> (package-source package) origin-uri))
(fetch-method (and=> (package-source package) origin-method)))

View file

@ -95,7 +95,7 @@ (define stackage->guix-package
(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
version 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."

View file

@ -19,6 +19,8 @@
(define-module (guix inferior)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module ((guix utils)
#:select (%current-system
source-properties->location
@ -29,7 +31,8 @@ (define-module (guix inferior)
#:select (store-connection-socket
store-connection-major-version
store-connection-minor-version
store-lift))
store-lift
&store-protocol-error))
#:use-module ((guix derivations)
#:select (read-derivation-from-file))
#:use-module (guix gexp)
@ -151,6 +154,7 @@ (define* (port->inferior pipe #:optional (close close-port))
(inferior-eval '(use-modules (guix)) result)
(inferior-eval '(use-modules (gnu)) result)
(inferior-eval '(use-modules (ice-9 match)) result)
(inferior-eval '(use-modules (srfi srfi-34)) result)
(inferior-eval '(define %package-table (make-hash-table))
result)
result))
@ -386,7 +390,7 @@ (define inferior-package-transitive-propagated-inputs
(cut inferior-package-input-field <> 'package-transitive-propagated-inputs))
(define (%inferior-package-search-paths package field)
"Return the list of search path specificiations of PACKAGE, an inferior
"Return the list of search path specifications of PACKAGE, an inferior
package."
(define paths
(inferior-package-field package
@ -462,7 +466,13 @@ (define (inferior-eval-with-store inferior store code)
(listen socket 1024)
(send-inferior-request
`(let ((proc ,code)
(socket (socket AF_UNIX SOCK_STREAM 0)))
(socket (socket AF_UNIX SOCK_STREAM 0))
(error? (if (defined? 'store-protocol-error?)
store-protocol-error?
nix-protocol-error?))
(error-message (if (defined? 'store-protocol-error-message)
store-protocol-error-message
nix-protocol-error-message)))
(connect socket AF_UNIX ,name)
;; 'port->connection' appeared in June 2018 and we can hardly
@ -475,7 +485,13 @@ (define (inferior-eval-with-store inferior store code)
(dynamic-wind
(const #t)
(lambda ()
(proc store))
;; Serialize '&store-protocol-error' conditions. The
;; exception serialization mechanism that
;; 'read-repl-response' expects is unsuitable for SRFI-35
;; error conditions, hence this special case.
(guard (c ((error? c)
`(store-protocol-error ,(error-message c))))
`(result ,(proc store))))
(lambda ()
(close-connection store)
(close-port socket)))))
@ -484,7 +500,14 @@ (define (inferior-eval-with-store inferior store code)
((client . address)
(proxy client (store-connection-socket store))))
(close-port socket)
(read-inferior-response inferior)))))
(match (read-inferior-response inferior)
(('store-protocol-error message)
(raise (condition
(&store-protocol-error (message message)
(status 1)))))
(('result result)
result))))))
(define* (inferior-package-derivation store package
#:optional

View file

@ -525,7 +525,7 @@ (define (tls-certificate-error-string args)
(define (validate-uri uri package field)
"Return #t if the given URI can be reached, otherwise return a warning for
PACKAGE mentionning the FIELD."
PACKAGE mentioning the FIELD."
(let-values (((status argument)
(probe-uri uri #:timeout 3))) ;wait at most 3 seconds
(case status

View file

@ -17,7 +17,6 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix repl)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 match)
#:export (send-repl-response
machine-repl))
@ -37,9 +36,8 @@ (define (self-quoting? x)
((_ pred rest ...)
(or (pred x)
(one-of rest ...))))))
(one-of symbol? string? pair? null? vector?
bytevector? number? boolean?)))
(one-of symbol? string? keyword? pair? null? array?
number? boolean?)))
(define (send-repl-response exp output)
"Write the response corresponding to the evaluation of EXP to PORT, an

View file

@ -38,7 +38,7 @@ (define %options
(define (show-help)
(display (G_ "Usage: guix container exec PID COMMAND [ARGS...]
Execute COMMMAND within the container process PID.\n"))
Execute COMMAND within the container process PID.\n"))
(newline)
(display (G_ "
-h, --help display this help and exit"))

View file

@ -26,6 +26,7 @@ (define-module (guix scripts deploy)
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix grafts)
#:use-module (guix status)
#:use-module (ice-9 format)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-34)
@ -52,6 +53,8 @@ (define (show-help)
(display (G_ "
-V, --version display version information and exit"))
(newline)
(display (G_ "
-v, --verbosity=LEVEL use the given verbosity LEVEL"))
(show-bug-report-information))
(define %options
@ -63,6 +66,12 @@ (define %options
(lambda (opt name arg result)
(alist-cons 'system arg
(alist-delete 'system result eq?))))
(option '(#\v "verbosity") #t #f
(lambda (opt name arg result)
(let ((level (string->number* arg)))
(alist-cons 'verbosity level
(alist-delete 'verbosity result)))))
%standard-build-options))
(define %default-options
@ -87,25 +96,27 @@ (module (make-user-module (append '((gnu) (gnu machine))
(define (guix-deploy . args)
(define (handle-argument arg result)
(alist-cons 'file arg result))
(let* ((opts (parse-command-line args %options (list %default-options)
#:argument-handler handle-argument))
(file (assq-ref opts 'file))
(machines (or (and file (load-source-file file)) '())))
(with-store store
(set-build-options-from-command-line store opts)
(for-each (lambda (machine)
(info (G_ "deploying to ~a...~%")
(machine-display-name machine))
(parameterize ((%graft? (assq-ref opts 'graft?)))
(guard (c ((message-condition? c)
(report-error (G_ "failed to deploy ~a: ~a~%")
(machine-display-name machine)
(condition-message c)))
((deploy-error? c)
(when (deploy-error-should-roll-back c)
(info (G_ "rolling back ~a...~%")
(machine-display-name machine))
(run-with-store store (roll-back-machine machine)))
(apply throw (deploy-error-captured-args c))))
(run-with-store store (deploy-machine machine)))))
machines))))
(with-status-verbosity (assoc-ref opts 'verbosity)
(with-store store
(set-build-options-from-command-line store opts)
(for-each (lambda (machine)
(info (G_ "deploying to ~a...~%")
(machine-display-name machine))
(parameterize ((%graft? (assq-ref opts 'graft?)))
(guard (c ((message-condition? c)
(report-error (G_ "failed to deploy ~a: ~a~%")
(machine-display-name machine)
(condition-message c)))
((deploy-error? c)
(when (deploy-error-should-roll-back c)
(info (G_ "rolling back ~a...~%")
(machine-display-name machine))
(run-with-store store (roll-back-machine machine)))
(apply throw (deploy-error-captured-args c))))
(run-with-store store (deploy-machine machine)))))
machines)))))

View file

@ -607,7 +607,11 @@ (define to-install
(let-values (((package output)
(specification->package+output spec)))
(package->manifest-entry* package output))))
(_ #f))
(('install . obj)
(leave (G_ "cannot install non-package object: ~s~%")
obj))
(_
#f))
opts))
(fold manifest-transaction-install-entry
@ -760,7 +764,8 @@ (define (diff-profiles profile numbers)
(('show requested-name)
(let-values (((name version)
(package-name->name+version requested-name)))
(match (find-packages-by-name name version)
(match (remove package-superseded
(find-packages-by-name name version))
(()
(leave (G_ "~a~@[@~a~]: package not found~%") name version))
(packages

View file

@ -19,6 +19,7 @@
(define-module (guix scripts pull)
#:use-module (guix ui)
#:use-module (guix colors)
#:use-module (guix utils)
#:use-module ((guix status) #:select (with-status-verbosity))
#:use-module (guix scripts)
@ -38,7 +39,8 @@ (define-module (guix scripts pull)
#:use-module (guix git)
#:use-module (git)
#:use-module (gnu packages)
#:use-module ((guix scripts package) #:select (build-and-use-profile))
#:use-module ((guix scripts package) #:select (build-and-use-profile
delete-matching-generations))
#:use-module ((gnu packages base) #:select (canonical-package))
#:use-module (gnu packages guile)
#:use-module ((gnu packages bootstrap)
@ -91,6 +93,14 @@ (define (show-help)
(display (G_ "
-l, --list-generations[=PATTERN]
list generations matching PATTERN"))
(display (G_ "
--roll-back roll back to the previous generation"))
(display (G_ "
-d, --delete-generations[=PATTERN]
delete generations matching PATTERN"))
(display (G_ "
-S, --switch-generation=PATTERN
switch to a generation matching PATTERN"))
(display (G_ "
-p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current"))
(display (G_ "
@ -120,6 +130,18 @@ (define %options
(lambda (opt name arg result)
(cons `(query list-generations ,arg)
result)))
(option '("roll-back") #f #f
(lambda (opt name arg result)
(cons '(generation roll-back)
result)))
(option '(#\S "switch-generation") #t #f
(lambda (opt name arg result)
(cons `(generation switch ,arg)
result)))
(option '(#\d "delete-generations") #f #t
(lambda (opt name arg result)
(cons `(generation delete ,arg)
result)))
(option '(#\N "news") #f #f
(lambda (opt name arg result)
(cons '(query display-news) result)))
@ -167,7 +189,7 @@ (define* (display-profile-news profile #:key concise?
current-is-newer?)
"Display what's up in PROFILE--new packages, and all that. If
CURRENT-IS-NEWER? is true, assume that the current process represents the
newest generation of PROFILE."
newest generation of PROFILE. Return true when there's more info to display."
(match (memv (generation-number profile)
(reverse (profile-generations profile)))
((current previous _ ...)
@ -190,7 +212,162 @@ (define* (display-profile-news profile #:key concise?
#:concise? concise?
#:heading
(G_ "New in this revision:\n")))))
(_ #t)))
(_ #f)))
(define (display-channel channel)
"Display information about CHANNEL."
(format (current-error-port)
;; TRANSLATORS: This describes a "channel"; the first placeholder is
;; the channel name (e.g., "guix") and the second placeholder is its
;; URL.
(G_ " ~a at ~a~%")
(channel-name channel)
(channel-url channel)))
(define (channel=? channel1 channel2)
"Return true if CHANNEL1 and CHANNEL2 are the same for all practical
purposes."
;; Assume that the URL matters less than the name.
(eq? (channel-name channel1) (channel-name channel2)))
(define (display-news-entry-title entry language port)
"Display the title of ENTRY, a news entry, to PORT."
(define title
(channel-news-entry-title entry))
(format port " ~a~%"
(highlight
(string-trim-right
(texi->plain-text (or (assoc-ref title language)
(assoc-ref title (%default-message-language))
""))))))
(define (display-news-entry entry language port)
"Display ENTRY, a <channel-news-entry>, in LANGUAGE, a language code, to
PORT."
(define body
(channel-news-entry-body entry))
(display-news-entry-title entry language port)
(format port (G_ " commit ~a~%")
(channel-news-entry-commit entry))
(newline port)
(format port " ~a~%"
(indented-string
(parameterize ((%text-width (- (%text-width) 4)))
(string-trim-right
(texi->plain-text (or (assoc-ref body language)
(assoc-ref body (%default-message-language))
""))))
4)))
(define* (display-channel-specific-news new old
#:key (port (current-output-port))
concise?)
"Display channel news applicable the commits between OLD and NEW, where OLD
and NEW are <channel> records with a proper 'commit' field. When CONCISE? is
true, display nothing but the news titles. Return true if there are more news
to display."
(let ((channel new)
(old (channel-commit old))
(new (channel-commit new)))
(when (and old new)
(let ((language (current-message-language)))
(match (channel-news-for-commit channel new old)
(() ;no news is good news
#f)
((entries ...)
(newline port)
(format port (G_ "News for channel '~a'~%")
(channel-name channel))
(for-each (if concise?
(cut display-news-entry-title <> language port)
(cut display-news-entry <> language port))
entries)
(newline port)
#t))))))
(define* (display-channel-news profile
#:optional
(previous
(and=> (relative-generation profile -1)
(cut generation-file-name profile <>))))
"Display news about the channels of PROFILE compared to PREVIOUS."
(when previous
(let ((old-channels (profile-channels previous))
(new-channels (profile-channels profile)))
(and (pair? old-channels) (pair? new-channels)
(begin
(match (lset-difference channel=? new-channels old-channels)
(()
#t)
(new
(let ((count (length new)))
(format (current-error-port)
(N_ " ~*One new channel:~%"
" ~a new channels:~%" count)
count)
(for-each display-channel new))))
(match (lset-difference channel=? old-channels new-channels)
(()
#t)
(removed
(let ((count (length removed)))
(format (current-error-port)
(N_ " ~*One channel removed:~%"
" ~a channels removed:~%" count)
count)
(for-each display-channel removed))))
;; Display channel-specific news for those channels that were
;; here before and are still around afterwards.
(for-each (match-lambda
((new old)
(display-channel-specific-news new old)))
(filter-map (lambda (new)
(define old
(find (cut channel=? new <>)
old-channels))
(and old (list new old)))
new-channels)))))))
(define* (display-channel-news-headlines profile)
"Display the titles of news about the channels of PROFILE compared to its
previous generation. Return true if there are news to display."
(define previous
(and=> (relative-generation profile -1)
(cut generation-file-name profile <>)))
(when previous
(let ((old-channels (profile-channels previous))
(new-channels (profile-channels profile)))
;; Find the channels present in both PROFILE and PREVIOUS, and print
;; their news.
(and (pair? old-channels) (pair? new-channels)
(let ((channels (filter-map (lambda (new)
(define old
(find (cut channel=? new <>)
old-channels))
(and old (list new old)))
new-channels)))
(define more?
(map (match-lambda
((new old)
(display-channel-specific-news new old
#:concise? #t)))
channels))
(any ->bool more?))))))
(define (display-news profile)
;; Display profile news, with the understanding that this process represents
;; the newest generation.
(display-profile-news profile
#:current-is-newer? #t)
(display-channel-news profile))
(define* (build-and-install instances profile
#:key use-substitutes? verbose? dry-run?)
@ -211,7 +388,12 @@ (define guix-command
#:dry-run? dry-run?)
(munless dry-run?
(return (newline))
(return (display-profile-news profile #:concise? #t))
(return
(let ((more? (list (display-profile-news profile #:concise? #t)
(display-channel-news-headlines profile))))
(when (any ->bool more?)
(display-hint
(G_ "Run @command{guix pull --news} to read all the news.")))))
(if guix-command
(let ((new (map (cut string-append <> "/bin/guix")
(list (user-friendly-profile profile)
@ -293,8 +475,15 @@ (define (ensure-default-profile)
;; In 0.15.0+ we'd create ~/.config/guix/current-[0-9]*-link symlinks. Move
;; them to %PROFILE-DIRECTORY.
(unless (string=? %profile-directory
(dirname (canonicalize-profile %user-profile-directory)))
;;
;; XXX: Ubuntu's 'sudo' preserves $HOME by default, and thus the second
;; condition below is always false when one runs "sudo guix pull". As a
;; workaround, skip this code when $SUDO_USER is set. See
;; <https://bugs.gnu.org/36785>.
(unless (or (getenv "SUDO_USER")
(string=? %profile-directory
(dirname
(canonicalize-profile %user-profile-directory))))
(migrate-generations %user-profile-directory %profile-directory))
;; Make sure ~/.config/guix/current points to /var/guix/profiles/….
@ -404,7 +593,9 @@ (define* (display-new/upgraded-packages alist1 alist2
"Given the two package name/version alists ALIST1 and ALIST2, display the
list of new and upgraded packages going from ALIST1 to ALIST2. When ALIST1
and ALIST2 differ, display HEADING upfront. When CONCISE? is true, do not
display long package lists that would fill the user's screen."
display long package lists that would fill the user's screen.
Return true when there is more package info to display."
(define (pretty str column)
(indented-string (fill-paragraph str (- (%text-width) 4)
column)
@ -447,11 +638,9 @@ (define upgraded-count (length upgraded))
(pretty (list->enumeration (sort upgraded string<?))
35))))
(when (and concise?
(or (> new-count concise/max-item-count)
(> upgraded-count concise/max-item-count)))
(display-hint (G_ "Run @command{guix pull --news} to view the complete
list of package changes.")))))
(and concise?
(or (> new-count concise/max-item-count)
(> upgraded-count concise/max-item-count)))))
(define (display-profile-content-diff profile gen1 gen2)
"Display the changes in PROFILE GEN2 compared to generation GEN1."
@ -475,6 +664,8 @@ (define (list-generations profile numbers)
((first second rest ...)
(display-profile-content-diff profile
first second)
(display-channel-news (generation-file-name profile second)
(generation-file-name profile first))
(loop (cons second rest)))
((_) #t)
(() #t))))))
@ -493,10 +684,23 @@ (define (list-generations profile numbers)
((numbers ...)
(list-generations profile numbers)))))))
(('display-news)
;; Display profile news, with the understanding that this process
;; represents the newest generation.
(display-profile-news profile
#:current-is-newer? #t))))
(display-news profile))))
(define (process-generation-change opts profile)
"Process a request to change the current generation (roll-back, switch, delete)."
(unless (assoc-ref opts 'dry-run?)
(match (assoc-ref opts 'generation)
(('roll-back)
(with-store store
(roll-back* store profile)))
(('switch pattern)
(let ((number (relative-generation-spec->number profile pattern)))
(if number
(switch-to-generation* profile number)
(leave (G_ "cannot switch to generation '~a'~%") pattern))))
(('delete pattern)
(with-store store
(delete-matching-generations store profile pattern))))))
(define (channel-list opts)
"Return the list of channels to use. If OPTS specify a channel file,
@ -560,18 +764,18 @@ (define (guix-pull . args)
(with-git-error-handling
(let* ((opts (parse-command-line args %options
(list %default-options)))
(cache (string-append (cache-directory) "/pull"))
(channels (channel-list opts))
(profile (or (assoc-ref opts 'profile) %current-profile)))
(cond ((assoc-ref opts 'query)
(process-query opts profile))
((assoc-ref opts 'generation)
(process-generation-change opts profile))
(else
(with-store store
(ensure-default-profile)
(with-status-verbosity (assoc-ref opts 'verbosity)
(parameterize ((%current-system (assoc-ref opts 'system))
(%graft? (assoc-ref opts 'graft?))
(%repository-cache-directory cache))
(%graft? (assoc-ref opts 'graft?)))
(set-build-options-from-command-line store opts)
(honor-x509-certificates store)

View file

@ -19,6 +19,8 @@
(define-module (guix scripts search)
#:use-module (guix ui)
#:use-module (guix scripts package)
#:use-module ((guix scripts build)
#:select (%standard-build-options))
#:use-module (guix scripts)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
@ -36,6 +38,9 @@ (define (show-help)
(display (G_ "
-V, --version display version information and exit"))
(newline)
(display (G_ "
-L, --load-path=DIR prepend DIR to the package module search path"))
(newline)
(show-bug-report-information))
(define %options
@ -46,7 +51,11 @@ (define %options
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix search")))))
(show-version-and-exit "guix search")))
(find (lambda (option)
(member "load-path" (option-names option)))
%standard-build-options)))
(define (guix-search . args)
(define (handle-argument arg result)

76
guix/scripts/show.scm Normal file
View file

@ -0,0 +1,76 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix scripts show)
#:use-module (guix ui)
#:use-module (guix scripts package)
#:use-module ((guix scripts build)
#:select (%standard-build-options))
#:use-module (guix scripts)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-37)
#:export (guix-show))
(define (show-help)
(display (G_ "Usage: guix show [OPTION] PACKAGE...
Show details about PACKAGE."))
(display (G_"
This is an alias for 'guix package --show='.\n"))
(newline)
(display (G_ "
-h, --help display this help and exit"))
(display (G_ "
-V, --version display version information and exit"))
(newline)
(display (G_ "
-L, --load-path=DIR prepend DIR to the package module search path"))
(newline)
(show-bug-report-information))
(define %options
;; Specification of the command-line options.
(list (option '(#\h "help") #f #f
(lambda args
(show-help)
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix show")))
(find (lambda (option)
(member "load-path" (option-names option)))
%standard-build-options)))
(define (guix-show . args)
(define (handle-argument arg result)
;; Treat all non-option arguments as regexps.
(cons `(query show ,arg)
result))
(define opts
(args-fold* args %options
(lambda (opt name arg . rest)
(leave (G_ "~A: unrecognized option~%") name))
handle-argument
'()))
(unless (assoc-ref opts 'query)
(leave (G_ "missing arguments: no package to show~%")))
(guix-package* opts))

Some files were not shown because too many files have changed in this diff Show more