mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-23 21:17:11 -05:00
Merge branch 'master' into core-updates
This commit is contained in:
commit
11da634a6e
112 changed files with 5924 additions and 1037 deletions
|
@ -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
31
.gitignore
vendored
|
@ -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
5
.guix-channel
Normal file
|
@ -0,0 +1,5 @@
|
|||
;; This is a Guix channel.
|
||||
|
||||
(channel
|
||||
(version 0)
|
||||
(news-file "etc/news.scm"))
|
12
Makefile.am
12
Makefile.am
|
@ -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 \
|
||||
|
|
12
bootstrap
12
bootstrap
|
@ -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
821
doc/guix-cookbook.texi
Normal 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:
|
180
doc/guix.texi
180
doc/guix.texi
|
@ -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
|
||||
|
|
|
@ -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
30
etc/news.scm
Normal 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."))))
|
|
@ -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))
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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
279
gnu/packages/diffoscope.scm
Normal 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+)))
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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"
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"))))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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+)))
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
189
gnu/packages/jupyter.scm
Normal 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)))
|
|
@ -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)))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
19
gnu/packages/patches/enjarify-setup-py.patch
Normal file
19
gnu/packages/patches/enjarify-setup-py.patch
Normal 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(),
|
||||
+ )
|
||||
+
|
|
@ -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 = [
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"))))
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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+)))
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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+)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))))))))))))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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)))))
|
||||
|
|
|
@ -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
|
||||
|
|
58
guix/git.scm
58
guix/git.scm
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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)))))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
76
guix/scripts/show.scm
Normal 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
Loading…
Reference in a new issue