Merge branch 'master' into core-updates
commit
11da634a6e
|
@ -90,6 +90,7 @@
|
||||||
(eval . (put 'eventually 'scheme-indent-function 1))
|
(eval . (put 'eventually 'scheme-indent-function 1))
|
||||||
|
|
||||||
(eval . (put 'call-with-progress-reporter '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
|
;; This notably allows '(' in Paredit to not insert a space when the
|
||||||
;; preceding symbol is one of these.
|
;; preceding symbol is one of these.
|
||||||
|
|
|
@ -29,22 +29,23 @@
|
||||||
/doc/*.1
|
/doc/*.1
|
||||||
/doc/.dirstamp
|
/doc/.dirstamp
|
||||||
/doc/contributing.*.texi
|
/doc/contributing.*.texi
|
||||||
/doc/guix.*.aux
|
/doc/guix*.aux
|
||||||
/doc/guix.*.cp
|
/doc/guix*.cp
|
||||||
/doc/guix.*.cps
|
/doc/guix*.cps
|
||||||
/doc/guix.*.fn
|
/doc/guix*.fn
|
||||||
/doc/guix.*.fns
|
/doc/guix*.fns
|
||||||
/doc/guix.*.html
|
/doc/guix*.html
|
||||||
/doc/guix.*.info
|
/doc/guix*.info
|
||||||
/doc/guix.*.info-[0-9]
|
/doc/guix*.info-[0-9]
|
||||||
/doc/guix.*.ky
|
/doc/guix*.ky
|
||||||
/doc/guix.*.pg
|
/doc/guix*.pg
|
||||||
/doc/guix.*.toc
|
/doc/guix*.toc
|
||||||
/doc/guix.*.t2p
|
/doc/guix*.t2p
|
||||||
/doc/guix.*.tp
|
/doc/guix*.tp
|
||||||
/doc/guix.*.vr
|
/doc/guix*.vr
|
||||||
/doc/guix.*.vrs
|
/doc/guix*.vrs
|
||||||
/doc/guix.*.texi
|
/doc/guix.*.texi
|
||||||
|
/doc/guix-cookbook.*.texi
|
||||||
/doc/guix.aux
|
/doc/guix.aux
|
||||||
/doc/guix.cp
|
/doc/guix.cp
|
||||||
/doc/guix.cps
|
/doc/guix.cps
|
||||||
|
|
|
@ -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/remove.scm \
|
||||||
guix/scripts/upgrade.scm \
|
guix/scripts/upgrade.scm \
|
||||||
guix/scripts/search.scm \
|
guix/scripts/search.scm \
|
||||||
|
guix/scripts/show.scm \
|
||||||
guix/scripts/gc.scm \
|
guix/scripts/gc.scm \
|
||||||
guix/scripts/hash.scm \
|
guix/scripts/hash.scm \
|
||||||
guix/scripts/pack.scm \
|
guix/scripts/pack.scm \
|
||||||
|
@ -306,7 +307,10 @@ STORE_MODULES = \
|
||||||
MODULES += $(STORE_MODULES)
|
MODULES += $(STORE_MODULES)
|
||||||
|
|
||||||
# Internal modules with test suite support.
|
# 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.
|
# Auxiliary files for packages.
|
||||||
AUX_FILES = \
|
AUX_FILES = \
|
||||||
|
@ -390,6 +394,7 @@ SCM_TESTS = \
|
||||||
tests/file-systems.scm \
|
tests/file-systems.scm \
|
||||||
tests/gem.scm \
|
tests/gem.scm \
|
||||||
tests/gexp.scm \
|
tests/gexp.scm \
|
||||||
|
tests/git.scm \
|
||||||
tests/glob.scm \
|
tests/glob.scm \
|
||||||
tests/gnu-maintenance.scm \
|
tests/gnu-maintenance.scm \
|
||||||
tests/grafts.scm \
|
tests/grafts.scm \
|
||||||
|
@ -528,8 +533,10 @@ EXTRA_DIST += \
|
||||||
TODO \
|
TODO \
|
||||||
CODE-OF-CONDUCT \
|
CODE-OF-CONDUCT \
|
||||||
.dir-locals.el \
|
.dir-locals.el \
|
||||||
|
.guix-channel \
|
||||||
scripts/guix.in \
|
scripts/guix.in \
|
||||||
etc/guix-install.sh \
|
etc/guix-install.sh \
|
||||||
|
etc/news.scm \
|
||||||
build-aux/build-self.scm \
|
build-aux/build-self.scm \
|
||||||
build-aux/compile-all.scm \
|
build-aux/compile-all.scm \
|
||||||
build-aux/hydra/evaluate.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 \
|
$(AM_V_at)if grep -r --exclude=*.texi --exclude=*.info \
|
||||||
--exclude=*.info-[0-9] --exclude=*.dot \
|
--exclude=*.info-[0-9] --exclude=*.dot \
|
||||||
--exclude=*.eps --exclude-dir=bootstrap \
|
--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=guix-prettify.el \
|
||||||
--exclude=ChangeLog* \
|
--exclude=ChangeLog* \
|
||||||
--exclude=binutils-boot-2.20*.patch \
|
--exclude=binutils-boot-2.20*.patch \
|
||||||
|
|
12
bootstrap
12
bootstrap
|
@ -4,7 +4,7 @@
|
||||||
set -e -x
|
set -e -x
|
||||||
|
|
||||||
# Generate stubs for translations.
|
# 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\.,,' \
|
| sed -e 's,guix-manual\.,,' \
|
||||||
| xargs -n 1 -I{} basename {} .po`
|
| xargs -n 1 -I{} basename {} .po`
|
||||||
for lang in ${langs}; do
|
for lang in ${langs}; do
|
||||||
|
@ -15,5 +15,15 @@ for lang in ${langs}; do
|
||||||
touch "po/doc/guix-manual.${lang}.po"
|
touch "po/doc/guix-manual.${lang}.po"
|
||||||
fi
|
fi
|
||||||
done
|
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
|
exec autoreconf -vfi
|
||||||
|
|
|
@ -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
|
@item
|
||||||
@command{guix remove} is an alias for @command{guix package -r},
|
@command{guix remove} is an alias for @command{guix package -r},
|
||||||
@item
|
@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
|
@end itemize
|
||||||
|
|
||||||
These aliases are less expressive than @command{guix package} and provide
|
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}
|
@itemx -p @var{profile}
|
||||||
Use @var{profile} instead of the user's default 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 collisions, in a profile
|
||||||
@cindex colliding packages in profiles
|
@cindex colliding packages in profiles
|
||||||
@cindex profile collisions
|
@cindex profile collisions
|
||||||
|
@ -3020,9 +3041,9 @@ version: 3.3.5
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
You may also specify the full name of a package to only get details about a
|
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
|
@example
|
||||||
$ guix package --show=python@@3.4 | recsel -p name,version
|
$ guix show python@@3.4 | recsel -p name,version
|
||||||
name: python
|
name: python
|
||||||
version: 3.4.3
|
version: 3.4.3
|
||||||
@end example
|
@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
|
@xref{Invoking guix describe, @command{guix describe}}, for other ways to
|
||||||
describe the current status of Guix.
|
describe the current status of Guix.
|
||||||
|
|
||||||
This @code{~/.config/guix/current} profile works like any other profile
|
This @code{~/.config/guix/current} profile works exactly like the profiles
|
||||||
created by @command{guix package} (@pxref{Invoking guix package}). That
|
created by @command{guix package} (@pxref{Invoking guix package}). That
|
||||||
is, you can list generations, roll back to the previous
|
is, you can list generations, roll back to the previous
|
||||||
generation---i.e., the previous Guix---and so on:
|
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
|
@example
|
||||||
$ guix package -p ~/.config/guix/current --roll-back
|
$ guix package -p ~/.config/guix/current --roll-back
|
||||||
switched from generation 3 to 2
|
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
|
evaluates to a list of channel objects. @xref{Channels}, for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
|
@cindex channel news
|
||||||
@item --news
|
@item --news
|
||||||
@itemx -N
|
@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,
|
The package information is the same as displayed upon @command{guix
|
||||||
but without ellipses; it is also similar to the output of @command{guix pull
|
pull} completion, but without ellipses; it is also similar to the output
|
||||||
-l} for the last generation (see below).
|
of @command{guix pull -l} for the last generation (see below).
|
||||||
|
|
||||||
@item --list-generations[=@var{pattern}]
|
@item --list-generations[=@var{pattern}]
|
||||||
@itemx -l [@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
|
The syntax of @var{pattern} is the same as with @code{guix package
|
||||||
--list-generations} (@pxref{Invoking 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
|
@xref{Invoking guix describe}, for a way to display information about the
|
||||||
current generation only.
|
current generation only.
|
||||||
|
|
||||||
|
@ -3946,6 +4013,68 @@ add a meta-data file @file{.guix-channel} that contains:
|
||||||
(directory "guix"))
|
(directory "guix"))
|
||||||
@end lisp
|
@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
|
@subsection Replicating Guix
|
||||||
|
|
||||||
@cindex pinning, channels
|
@cindex pinning, channels
|
||||||
|
@ -4835,7 +4964,9 @@ specified binaries and symlinks.
|
||||||
@item docker
|
@item docker
|
||||||
This produces a tarball that follows the
|
This produces a tarball that follows the
|
||||||
@uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md,
|
@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
|
@item squashfs
|
||||||
This produces a SquashFS image containing all the specified binaries and
|
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
|
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
|
@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}.
|
@code{check_deps() = nothing}.
|
||||||
|
|
||||||
Some older packages that aren't using @file{Package.toml} yet, will require
|
Some older packages that aren't using @file{Package.toml} yet, will require
|
||||||
|
@ -13041,6 +13172,33 @@ objects}).
|
||||||
@end table
|
@end table
|
||||||
@end deftp
|
@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 NTP (Network Time Protocol), service
|
||||||
@cindex ntpd, service for the Network Time Protocol daemon
|
@cindex ntpd, service for the Network Time Protocol daemon
|
||||||
@cindex real time clock
|
@cindex real time clock
|
||||||
|
|
|
@ -26,7 +26,8 @@ info_TEXINFOS = %D%/guix.texi \
|
||||||
%D%/guix.es.texi \
|
%D%/guix.es.texi \
|
||||||
%D%/guix.fr.texi \
|
%D%/guix.fr.texi \
|
||||||
%D%/guix.ru.texi \
|
%D%/guix.ru.texi \
|
||||||
%D%/guix.zh_CN.texi
|
%D%/guix.zh_CN.texi \
|
||||||
|
%D%/guix-cookbook.texi
|
||||||
|
|
||||||
%C%_guix_TEXINFOS = \
|
%C%_guix_TEXINFOS = \
|
||||||
%D%/contributing.texi \
|
%D%/contributing.texi \
|
||||||
|
@ -109,6 +110,12 @@ $(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.
|
||||||
-$(AM_V_POXREF)$(xref_command)
|
-$(AM_V_POXREF)$(xref_command)
|
||||||
-mv "$@.tmp" "$@"
|
-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
|
$(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_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/contributing.texi" -p "$<" -l "$@.tmp"
|
||||||
-$(AM_V_POXREF)$(xref_command)
|
-$(AM_V_POXREF)$(xref_command)
|
||||||
|
|
|
@ -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
|
;;; 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>
|
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
|
@ -159,14 +159,14 @@ USER-PARTITIONS list. Return this list with password fields filled-in."
|
||||||
(format #f (G_ "Please enter the password for the \
|
(format #f (G_ "Please enter the password for the \
|
||||||
encryption of partition ~a (label: ~a).") file-name crypt-label)
|
encryption of partition ~a (label: ~a).") file-name crypt-label)
|
||||||
(G_ "Password required")
|
(G_ "Password required")
|
||||||
#:input-hide-checkbox? #t)))
|
#:input-visibility-checkbox? #t)))
|
||||||
(password-confirm-page
|
(password-confirm-page
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(run-input-page
|
(run-input-page
|
||||||
(format #f (G_ "Please confirm the password for the \
|
(format #f (G_ "Please confirm the password for the \
|
||||||
encryption of partition ~a (label: ~a).") file-name crypt-label)
|
encryption of partition ~a (label: ~a).") file-name crypt-label)
|
||||||
(G_ "Password confirmation required")
|
(G_ "Password confirmation required")
|
||||||
#:input-hide-checkbox? #t))))
|
#:input-visibility-checkbox? #t))))
|
||||||
(if crypt-label
|
(if crypt-label
|
||||||
(let loop ()
|
(let loop ()
|
||||||
(let ((password (password-page))
|
(let ((password (password-page))
|
||||||
|
|
|
@ -143,6 +143,7 @@ GNU_SYSTEM_MODULES = \
|
||||||
%D%/packages/dejagnu.scm \
|
%D%/packages/dejagnu.scm \
|
||||||
%D%/packages/dico.scm \
|
%D%/packages/dico.scm \
|
||||||
%D%/packages/dictionaries.scm \
|
%D%/packages/dictionaries.scm \
|
||||||
|
%D%/packages/diffoscope.scm \
|
||||||
%D%/packages/digest.scm \
|
%D%/packages/digest.scm \
|
||||||
%D%/packages/direct-connect.scm \
|
%D%/packages/direct-connect.scm \
|
||||||
%D%/packages/disk.scm \
|
%D%/packages/disk.scm \
|
||||||
|
@ -270,6 +271,7 @@ GNU_SYSTEM_MODULES = \
|
||||||
%D%/packages/jrnl.scm \
|
%D%/packages/jrnl.scm \
|
||||||
%D%/packages/jose.scm \
|
%D%/packages/jose.scm \
|
||||||
%D%/packages/julia.scm \
|
%D%/packages/julia.scm \
|
||||||
|
%D%/packages/jupyter.scm \
|
||||||
%D%/packages/kawa.scm \
|
%D%/packages/kawa.scm \
|
||||||
%D%/packages/kde.scm \
|
%D%/packages/kde.scm \
|
||||||
%D%/packages/kde-frameworks.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-highlight-stages-add-gexp.patch \
|
||||||
%D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
|
%D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
|
||||||
%D%/packages/patches/emacs-source-date-epoch.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-undohist-ignored.patch \
|
||||||
%D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \
|
%D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \
|
||||||
%D%/packages/patches/emacs-zones-called-interactively.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/enlightenment-fix-setuid-path.patch \
|
||||||
%D%/packages/patches/erlang-man-path.patch \
|
%D%/packages/patches/erlang-man-path.patch \
|
||||||
%D%/packages/patches/eudev-rules-directory.patch \
|
%D%/packages/patches/eudev-rules-directory.patch \
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||||
;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
|
;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
|
||||||
;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
;;; 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.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -55,6 +56,7 @@
|
||||||
#:use-module (guix build-system python)
|
#:use-module (guix build-system python)
|
||||||
#:use-module (guix build-system trivial)
|
#:use-module (guix build-system trivial)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
|
#:use-module (gnu packages algebra)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages bash)
|
#:use-module (gnu packages bash)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
|
@ -684,7 +686,7 @@ connection alive.")
|
||||||
(define-public isc-dhcp
|
(define-public isc-dhcp
|
||||||
(let* ((bind-major-version "9")
|
(let* ((bind-major-version "9")
|
||||||
(bind-minor-version "11")
|
(bind-minor-version "11")
|
||||||
(bind-patch-version "10")
|
(bind-patch-version "11")
|
||||||
(bind-release-type "") ; for patch release, use "-P"
|
(bind-release-type "") ; for patch release, use "-P"
|
||||||
(bind-release-version "") ; for patch release, e.g. "6"
|
(bind-release-version "") ; for patch release, e.g. "6"
|
||||||
(bind-version (string-append bind-major-version
|
(bind-version (string-append bind-major-version
|
||||||
|
@ -825,7 +827,7 @@ connection alive.")
|
||||||
"/bind-" bind-version ".tar.gz"))
|
"/bind-" bind-version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1hvhdaar9swh5087kzkbmav1nbn19rxh0m60x0d7gri0v8689fxj"))))
|
"0swavslyli3vcrkcm2ip11s6p58g3k7r4gjs2b899r25cqrk0lk1"))))
|
||||||
|
|
||||||
;; When cross-compiling, we need the cross Coreutils and sed.
|
;; When cross-compiling, we need the cross Coreutils and sed.
|
||||||
;; Otherwise just use those from %FINAL-INPUTS.
|
;; Otherwise just use those from %FINAL-INPUTS.
|
||||||
|
@ -2751,6 +2753,64 @@ used in screenshots to show other users what operating system or distribution
|
||||||
you are running, what theme or icon set you are using, etc.")
|
you are running, what theme or icon set you are using, etc.")
|
||||||
(license license:expat)))
|
(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
|
(define-public nnn
|
||||||
(package
|
(package
|
||||||
(name "nnn")
|
(name "nnn")
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#:use-module (gnu packages docker)
|
#:use-module (gnu packages docker)
|
||||||
#:use-module (gnu packages gcc)
|
#:use-module (gnu packages gcc)
|
||||||
#:use-module (gnu packages gnupg)
|
#:use-module (gnu packages gnupg)
|
||||||
|
#:use-module (gnu packages java)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
#:use-module (gnu packages pcre)
|
#:use-module (gnu packages pcre)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
@ -936,3 +937,60 @@ these same tools to create your own additional or alternative repository for
|
||||||
publishing, or to assist in creating, testing and submitting metadata to the
|
publishing, or to assist in creating, testing and submitting metadata to the
|
||||||
main repository.")
|
main repository.")
|
||||||
(license license:agpl3+)))
|
(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 @@ audio signals.")
|
||||||
@enumerate
|
@enumerate
|
||||||
@item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
|
@item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
|
||||||
@item Saw-VCO, a sawtooth oscillator with 1/F 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
|
@end enumerate\n
|
||||||
|
|
||||||
All oscillators are low-pass filtered to provide waveforms similar to the
|
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_NETFILTER_NETLINK_OSF=m
|
||||||
CONFIG_NF_CONNTRACK=m
|
CONFIG_NF_CONNTRACK=m
|
||||||
CONFIG_NF_LOG_COMMON=m
|
CONFIG_NF_LOG_COMMON=m
|
||||||
# CONFIG_NF_LOG_NETDEV is not set
|
CONFIG_NF_LOG_NETDEV=m
|
||||||
CONFIG_NETFILTER_CONNCOUNT=m
|
CONFIG_NETFILTER_CONNCOUNT=m
|
||||||
CONFIG_NF_CONNTRACK_MARK=y
|
CONFIG_NF_CONNTRACK_MARK=y
|
||||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||||
|
@ -1176,8 +1176,8 @@ CONFIG_NF_NAT_REDIRECT=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_FLOW_OFFLOAD=m
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||||
|
@ -1189,15 +1189,22 @@ CONFIG_NFT_MASQ=m
|
||||||
CONFIG_NFT_REDIR=m
|
CONFIG_NFT_REDIR=m
|
||||||
CONFIG_NFT_NAT=m
|
CONFIG_NFT_NAT=m
|
||||||
CONFIG_NFT_TUNNEL=m
|
CONFIG_NFT_TUNNEL=m
|
||||||
# CONFIG_NFT_OBJREF is not set
|
CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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_INET=m
|
||||||
CONFIG_NF_FLOW_TABLE=m
|
CONFIG_NF_FLOW_TABLE=m
|
||||||
CONFIG_NETFILTER_XTABLES=m
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
@ -1361,8 +1368,12 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_FLOW_TABLE_IPV4=m
|
||||||
CONFIG_NF_DUP_IPV4=m
|
CONFIG_NF_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
|
@ -1370,6 +1381,9 @@ CONFIG_NF_LOG_IPV4=m
|
||||||
CONFIG_NF_REJECT_IPV4=m
|
CONFIG_NF_REJECT_IPV4=m
|
||||||
CONFIG_NF_NAT_IPV4=m
|
CONFIG_NF_NAT_IPV4=m
|
||||||
CONFIG_NF_NAT_MASQUERADE_IPV4=y
|
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_SNMP_BASIC=m
|
||||||
CONFIG_NF_NAT_PROTO_GRE=m
|
CONFIG_NF_NAT_PROTO_GRE=m
|
||||||
CONFIG_NF_NAT_PPTP=m
|
CONFIG_NF_NAT_PPTP=m
|
||||||
|
@ -1401,7 +1415,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_FLOW_TABLE_IPV6=m
|
||||||
CONFIG_NF_DUP_IPV6=m
|
CONFIG_NF_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_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_MASQUERADE=m
|
||||||
CONFIG_IP6_NF_TARGET_NPT=m
|
CONFIG_IP6_NF_TARGET_NPT=m
|
||||||
CONFIG_NF_DEFRAG_IPV6=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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
|
|
@ -1120,10 +1120,11 @@ CONFIG_NF_NAT_REDIRECT=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_CONNLIMIT=m
|
CONFIG_NFT_CONNLIMIT=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
|
@ -1136,12 +1137,20 @@ CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1303,14 +1312,22 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
CONFIG_NF_LOG_IPV4=m
|
CONFIG_NF_LOG_IPV4=m
|
||||||
CONFIG_NF_REJECT_IPV4=m
|
CONFIG_NF_REJECT_IPV4=m
|
||||||
CONFIG_NF_NAT_IPV4=m
|
CONFIG_NF_NAT_IPV4=m
|
||||||
CONFIG_NF_NAT_MASQUERADE_IPV4=y
|
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_SNMP_BASIC=m
|
||||||
CONFIG_NF_NAT_PROTO_GRE=m
|
CONFIG_NF_NAT_PROTO_GRE=m
|
||||||
CONFIG_NF_NAT_PPTP=m
|
CONFIG_NF_NAT_PPTP=m
|
||||||
|
@ -1342,7 +1359,15 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_IPV6=m
|
CONFIG_NF_REJECT_IPV6=m
|
||||||
CONFIG_NF_LOG_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_MH=m
|
||||||
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
||||||
CONFIG_IP6_NF_MATCH_RT=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_TARGET_HL=m
|
||||||
CONFIG_IP6_NF_FILTER=m
|
CONFIG_IP6_NF_FILTER=m
|
||||||
CONFIG_IP6_NF_TARGET_REJECT=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_MASQUERADE=m
|
||||||
CONFIG_IP6_NF_TARGET_NPT=m
|
CONFIG_IP6_NF_TARGET_NPT=m
|
||||||
CONFIG_NF_DEFRAG_IPV6=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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
|
|
@ -1209,8 +1209,8 @@ CONFIG_NF_NAT_REDIRECT=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_FLOW_OFFLOAD=m
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||||
|
@ -1226,11 +1226,18 @@ CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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_INET=m
|
||||||
CONFIG_NF_FLOW_TABLE=m
|
CONFIG_NF_FLOW_TABLE=m
|
||||||
CONFIG_NETFILTER_XTABLES=m
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
@ -1394,8 +1401,12 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_FLOW_TABLE_IPV4=m
|
||||||
CONFIG_NF_DUP_IPV4=m
|
CONFIG_NF_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
|
@ -1403,6 +1414,9 @@ CONFIG_NF_LOG_IPV4=m
|
||||||
CONFIG_NF_REJECT_IPV4=m
|
CONFIG_NF_REJECT_IPV4=m
|
||||||
CONFIG_NF_NAT_IPV4=m
|
CONFIG_NF_NAT_IPV4=m
|
||||||
CONFIG_NF_NAT_MASQUERADE_IPV4=y
|
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_SNMP_BASIC=m
|
||||||
CONFIG_NF_NAT_PROTO_GRE=m
|
CONFIG_NF_NAT_PROTO_GRE=m
|
||||||
CONFIG_NF_NAT_PPTP=m
|
CONFIG_NF_NAT_PPTP=m
|
||||||
|
@ -1434,7 +1448,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_FLOW_TABLE_IPV6=m
|
||||||
CONFIG_NF_DUP_IPV6=m
|
CONFIG_NF_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_IPV6=m
|
CONFIG_NF_REJECT_IPV6=m
|
||||||
|
@ -1468,7 +1489,9 @@ CONFIG_NF_DEFRAG_IPV6=m
|
||||||
# DECnet: Netfilter Configuration
|
# DECnet: Netfilter Configuration
|
||||||
#
|
#
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
|
|
@ -1219,8 +1219,8 @@ CONFIG_NF_NAT_REDIRECT=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_FLOW_OFFLOAD=m
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||||
|
@ -1236,11 +1236,18 @@ CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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_INET=m
|
||||||
CONFIG_NF_FLOW_TABLE=m
|
CONFIG_NF_FLOW_TABLE=m
|
||||||
CONFIG_NETFILTER_XTABLES=m
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
@ -1404,8 +1411,12 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_FLOW_TABLE_IPV4=m
|
||||||
CONFIG_NF_DUP_IPV4=m
|
CONFIG_NF_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
|
@ -1413,6 +1424,9 @@ CONFIG_NF_LOG_IPV4=m
|
||||||
CONFIG_NF_REJECT_IPV4=m
|
CONFIG_NF_REJECT_IPV4=m
|
||||||
CONFIG_NF_NAT_IPV4=m
|
CONFIG_NF_NAT_IPV4=m
|
||||||
CONFIG_NF_NAT_MASQUERADE_IPV4=y
|
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_SNMP_BASIC=m
|
||||||
CONFIG_NF_NAT_PROTO_GRE=m
|
CONFIG_NF_NAT_PROTO_GRE=m
|
||||||
CONFIG_NF_NAT_PPTP=m
|
CONFIG_NF_NAT_PPTP=m
|
||||||
|
@ -1444,7 +1458,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_FLOW_TABLE_IPV6=m
|
||||||
CONFIG_NF_DUP_IPV6=m
|
CONFIG_NF_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_IPV6=m
|
CONFIG_NF_REJECT_IPV6=m
|
||||||
|
@ -1478,7 +1499,9 @@ CONFIG_NF_DEFRAG_IPV6=m
|
||||||
# DECnet: Netfilter Configuration
|
# DECnet: Netfilter Configuration
|
||||||
#
|
#
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
|
|
@ -1117,7 +1117,7 @@ CONFIG_NETFILTER_NETLINK_LOG=m
|
||||||
CONFIG_NETFILTER_NETLINK_OSF=m
|
CONFIG_NETFILTER_NETLINK_OSF=m
|
||||||
CONFIG_NF_CONNTRACK=m
|
CONFIG_NF_CONNTRACK=m
|
||||||
CONFIG_NF_LOG_COMMON=m
|
CONFIG_NF_LOG_COMMON=m
|
||||||
# CONFIG_NF_LOG_NETDEV is not set
|
CONFIG_NF_LOG_NETDEV=m
|
||||||
CONFIG_NETFILTER_CONNCOUNT=m
|
CONFIG_NETFILTER_CONNCOUNT=m
|
||||||
CONFIG_NF_CONNTRACK_MARK=y
|
CONFIG_NF_CONNTRACK_MARK=y
|
||||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||||
|
@ -1157,8 +1157,8 @@ CONFIG_NF_NAT_MASQUERADE=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_FLOW_OFFLOAD=m
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||||
|
@ -1168,17 +1168,25 @@ CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
CONFIG_NFT_MASQ=m
|
CONFIG_NFT_MASQ=m
|
||||||
CONFIG_NFT_REDIR=m
|
CONFIG_NFT_REDIR=m
|
||||||
|
CONFIG_NFT_NAT=m
|
||||||
CONFIG_NFT_TUNNEL=m
|
CONFIG_NFT_TUNNEL=m
|
||||||
# CONFIG_NFT_OBJREF is not set
|
CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_XFRM=m
|
CONFIG_NFT_XFRM=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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_INET=m
|
||||||
CONFIG_NF_FLOW_TABLE=m
|
CONFIG_NF_FLOW_TABLE=m
|
||||||
CONFIG_NETFILTER_XTABLES=m
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
@ -1345,8 +1353,11 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_FLOW_TABLE_IPV4=m
|
||||||
CONFIG_NF_DUP_IPV4=m
|
CONFIG_NF_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
|
@ -1383,7 +1394,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_FLOW_TABLE_IPV6=m
|
||||||
CONFIG_NF_DUP_IPV6=m
|
CONFIG_NF_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_IPV6=m
|
CONFIG_NF_REJECT_IPV6=m
|
||||||
|
@ -1412,7 +1426,9 @@ CONFIG_IP6_NF_TARGET_NPT=m
|
||||||
# end of IPv6: Netfilter Configuration
|
# end of IPv6: Netfilter Configuration
|
||||||
|
|
||||||
CONFIG_NF_DEFRAG_IPV6=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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
|
|
@ -1118,28 +1118,38 @@ CONFIG_NF_NAT_MASQUERADE=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
|
# CONFIG_NFT_FLOW_OFFLOAD is not set
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_CONNLIMIT=m
|
CONFIG_NFT_CONNLIMIT=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
CONFIG_NFT_MASQ=m
|
CONFIG_NFT_MASQ=m
|
||||||
CONFIG_NFT_REDIR=m
|
CONFIG_NFT_REDIR=m
|
||||||
|
CONFIG_NFT_NAT=m
|
||||||
CONFIG_NFT_TUNNEL=m
|
CONFIG_NFT_TUNNEL=m
|
||||||
CONFIG_NFT_OBJREF=m
|
CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_XFRM=m
|
CONFIG_NFT_XFRM=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1304,8 +1314,12 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
CONFIG_NF_LOG_IPV4=m
|
CONFIG_NF_LOG_IPV4=m
|
||||||
|
@ -1341,7 +1355,11 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_IPV6=m
|
CONFIG_NF_REJECT_IPV6=m
|
||||||
CONFIG_NF_LOG_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_MH=m
|
||||||
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
||||||
CONFIG_IP6_NF_MATCH_RT=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_TARGET_HL=m
|
||||||
CONFIG_IP6_NF_FILTER=m
|
CONFIG_IP6_NF_FILTER=m
|
||||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||||
|
@ -1369,7 +1387,9 @@ CONFIG_IP6_NF_TARGET_NPT=m
|
||||||
# end of IPv6: Netfilter Configuration
|
# end of IPv6: Netfilter Configuration
|
||||||
|
|
||||||
CONFIG_NF_DEFRAG_IPV6=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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=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_POSIX_ACL=y
|
||||||
CONFIG_EXT4_FS_SECURITY=y
|
CONFIG_EXT4_FS_SECURITY=y
|
||||||
# CONFIG_EXT4_DEBUG is not set
|
# CONFIG_EXT4_DEBUG is not set
|
||||||
CONFIG_JBD2=m
|
CONFIG_JBD2=y
|
||||||
# CONFIG_JBD2_DEBUG is not set
|
# CONFIG_JBD2_DEBUG is not set
|
||||||
CONFIG_FS_MBCACHE=m
|
CONFIG_FS_MBCACHE=y
|
||||||
CONFIG_REISERFS_FS=m
|
CONFIG_REISERFS_FS=m
|
||||||
# CONFIG_REISERFS_CHECK is not set
|
# CONFIG_REISERFS_CHECK is not set
|
||||||
# CONFIG_REISERFS_PROC_INFO 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_ARCH_HAS_FAST_MULTIPLIER=y
|
||||||
# CONFIG_INDIRECT_PIO is not set
|
# CONFIG_INDIRECT_PIO is not set
|
||||||
CONFIG_CRC_CCITT=m
|
CONFIG_CRC_CCITT=m
|
||||||
CONFIG_CRC16=m
|
CONFIG_CRC16=y
|
||||||
CONFIG_CRC_T10DIF=y
|
CONFIG_CRC_T10DIF=y
|
||||||
CONFIG_CRC_ITU_T=m
|
CONFIG_CRC_ITU_T=m
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
|
|
|
@ -1147,8 +1147,8 @@ CONFIG_NF_NAT_MASQUERADE=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_FLOW_OFFLOAD=m
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||||
|
@ -1158,17 +1158,25 @@ CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
CONFIG_NFT_MASQ=m
|
CONFIG_NFT_MASQ=m
|
||||||
CONFIG_NFT_REDIR=m
|
CONFIG_NFT_REDIR=m
|
||||||
|
CONFIG_NFT_NAT=m
|
||||||
CONFIG_NFT_TUNNEL=m
|
CONFIG_NFT_TUNNEL=m
|
||||||
CONFIG_NFT_OBJREF=m
|
CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_XFRM=m
|
CONFIG_NFT_XFRM=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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_INET=m
|
||||||
CONFIG_NF_FLOW_TABLE=m
|
CONFIG_NF_FLOW_TABLE=m
|
||||||
CONFIG_NETFILTER_XTABLES=m
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
@ -1335,8 +1343,11 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_FLOW_TABLE_IPV4=m
|
||||||
CONFIG_NF_DUP_IPV4=m
|
CONFIG_NF_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
|
@ -1373,7 +1384,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_FLOW_TABLE_IPV6=m
|
||||||
CONFIG_NF_DUP_IPV6=m
|
CONFIG_NF_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_IPV6=m
|
CONFIG_NF_REJECT_IPV6=m
|
||||||
|
@ -1409,7 +1423,9 @@ CONFIG_NF_DEFRAG_IPV6=m
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
CONFIG_DECNET_NF_GRABULATOR=m
|
||||||
# end of DECnet: Netfilter Configuration
|
# 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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
|
|
@ -1168,8 +1168,8 @@ CONFIG_NF_NAT_MASQUERADE=y
|
||||||
CONFIG_NETFILTER_SYNPROXY=m
|
CONFIG_NETFILTER_SYNPROXY=m
|
||||||
CONFIG_NF_TABLES=m
|
CONFIG_NF_TABLES=m
|
||||||
CONFIG_NF_TABLES_SET=m
|
CONFIG_NF_TABLES_SET=m
|
||||||
# CONFIG_NF_TABLES_INET is not set
|
CONFIG_NF_TABLES_INET=y
|
||||||
# CONFIG_NF_TABLES_NETDEV is not set
|
CONFIG_NF_TABLES_NETDEV=y
|
||||||
CONFIG_NFT_NUMGEN=m
|
CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_FLOW_OFFLOAD=m
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||||
|
@ -1179,17 +1179,25 @@ CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
CONFIG_NFT_MASQ=m
|
CONFIG_NFT_MASQ=m
|
||||||
CONFIG_NFT_REDIR=m
|
CONFIG_NFT_REDIR=m
|
||||||
|
CONFIG_NFT_NAT=m
|
||||||
CONFIG_NFT_TUNNEL=m
|
CONFIG_NFT_TUNNEL=m
|
||||||
CONFIG_NFT_OBJREF=m
|
CONFIG_NFT_OBJREF=m
|
||||||
CONFIG_NFT_QUEUE=m
|
CONFIG_NFT_QUEUE=m
|
||||||
CONFIG_NFT_QUOTA=m
|
CONFIG_NFT_QUOTA=m
|
||||||
CONFIG_NFT_REJECT=m
|
CONFIG_NFT_REJECT=m
|
||||||
|
CONFIG_NFT_REJECT_INET=m
|
||||||
CONFIG_NFT_COMPAT=m
|
CONFIG_NFT_COMPAT=m
|
||||||
CONFIG_NFT_HASH=m
|
CONFIG_NFT_HASH=m
|
||||||
|
CONFIG_NFT_FIB=m
|
||||||
|
CONFIG_NFT_FIB_INET=m
|
||||||
CONFIG_NFT_XFRM=m
|
CONFIG_NFT_XFRM=m
|
||||||
CONFIG_NFT_SOCKET=m
|
CONFIG_NFT_SOCKET=m
|
||||||
CONFIG_NFT_OSF=m
|
CONFIG_NFT_OSF=m
|
||||||
CONFIG_NFT_TPROXY=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_INET=m
|
||||||
CONFIG_NF_FLOW_TABLE=m
|
CONFIG_NF_FLOW_TABLE=m
|
||||||
CONFIG_NETFILTER_XTABLES=m
|
CONFIG_NETFILTER_XTABLES=m
|
||||||
|
@ -1356,8 +1364,11 @@ CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NF_DEFRAG_IPV4=m
|
CONFIG_NF_DEFRAG_IPV4=m
|
||||||
CONFIG_NF_SOCKET_IPV4=m
|
CONFIG_NF_SOCKET_IPV4=m
|
||||||
CONFIG_NF_TPROXY_IPV4=m
|
CONFIG_NF_TPROXY_IPV4=m
|
||||||
# CONFIG_NF_TABLES_IPV4 is not set
|
CONFIG_NF_TABLES_IPV4=y
|
||||||
# CONFIG_NF_TABLES_ARP is not set
|
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_FLOW_TABLE_IPV4=m
|
||||||
CONFIG_NF_DUP_IPV4=m
|
CONFIG_NF_DUP_IPV4=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
|
@ -1394,7 +1405,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
#
|
#
|
||||||
CONFIG_NF_SOCKET_IPV6=m
|
CONFIG_NF_SOCKET_IPV6=m
|
||||||
CONFIG_NF_TPROXY_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_FLOW_TABLE_IPV6=m
|
||||||
CONFIG_NF_DUP_IPV6=m
|
CONFIG_NF_DUP_IPV6=m
|
||||||
CONFIG_NF_REJECT_IPV6=m
|
CONFIG_NF_REJECT_IPV6=m
|
||||||
|
@ -1430,7 +1444,9 @@ CONFIG_NF_DEFRAG_IPV6=m
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
CONFIG_DECNET_NF_GRABULATOR=m
|
||||||
# end of DECnet: Netfilter Configuration
|
# 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_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
|
|
|
@ -47,8 +47,8 @@
|
||||||
#:use-module (guix build-system gnu))
|
#:use-module (guix build-system gnu))
|
||||||
|
|
||||||
(define-public cuirass
|
(define-public cuirass
|
||||||
(let ((commit "1cd2f9334dde13542732c22753c4ebde61bc95e0")
|
(let ((commit "d27ff21e430cd38b02bd70a0dc8d60c9c2736f83")
|
||||||
(revision "23"))
|
(revision "24"))
|
||||||
(package
|
(package
|
||||||
(name "cuirass")
|
(name "cuirass")
|
||||||
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
|
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
(file-name (string-append name "-" version))
|
(file-name (string-append name "-" version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0r3x8gv0v89brjqi8r31p6c0mblbaf2kdk2fz99jiab4pir16w87"))))
|
"166xl9zfy7dm645fk2ln45bvw0y0gy0xw8fb7mprbjz8v95dh27p"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:modules ((guix build utils)
|
'(#:modules ((guix build utils)
|
||||||
|
|
|
@ -25,11 +25,16 @@
|
||||||
#:use-module ((guix licenses) #:prefix license:)
|
#:use-module ((guix licenses) #:prefix license:)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
|
#:use-module (gnu packages curl)
|
||||||
#:use-module (gnu packages gcc)
|
#:use-module (gnu packages gcc)
|
||||||
#:use-module (gnu packages jemalloc)
|
#:use-module (gnu packages jemalloc)
|
||||||
#:use-module (gnu packages llvm)
|
#:use-module (gnu packages llvm)
|
||||||
#:use-module (gnu packages maths)
|
#: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.
|
;;; Please: Try to add new module packages in alphabetic order.
|
||||||
|
@ -158,6 +163,35 @@ support.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-base-x
|
||||||
(package
|
(package
|
||||||
(name "rust-base-x")
|
(name "rust-base-x")
|
||||||
|
@ -386,6 +420,35 @@ depending on a large number of #[cfg] parameters. Structured like an
|
||||||
"This package provides Rust bindings for @code{libclang}.")
|
"This package provides Rust bindings for @code{libclang}.")
|
||||||
(license license:asl2.0)))
|
(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
|
(define-public rust-clicolors-control
|
||||||
(package
|
(package
|
||||||
(name "rust-clicolors-control")
|
(name "rust-clicolors-control")
|
||||||
|
@ -412,6 +475,31 @@ depending on a large number of #[cfg] parameters. Structured like an
|
||||||
colorization.")
|
colorization.")
|
||||||
(license license:expat)))
|
(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
|
(define-public rust-cloudabi
|
||||||
(package
|
(package
|
||||||
(name "rust-cloudabi")
|
(name "rust-cloudabi")
|
||||||
|
@ -529,6 +617,51 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-data-encoding
|
||||||
(package
|
(package
|
||||||
(name "rust-data-encoding")
|
(name "rust-data-encoding")
|
||||||
|
@ -582,6 +715,33 @@ hexadecimal, bas32, and base64.")
|
||||||
(base32
|
(base32
|
||||||
"17giv0n0n1r64z0dahfvkjy3ys517jxyhs8sd9lmgvcljpjyryxa"))))))
|
"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
|
(define-public rust-discard
|
||||||
(package
|
(package
|
||||||
(name "rust-discard")
|
(name "rust-discard")
|
||||||
|
@ -641,6 +801,20 @@ floating-point primitives to an @code{io::Write}.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-fallible-iterator
|
||||||
(package
|
(package
|
||||||
(name "rust-fallible-iterator")
|
(name "rust-fallible-iterator")
|
||||||
|
@ -883,6 +1057,28 @@ featuring zero allocations, composability, and iterator-like interfaces.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-futures-cpupool
|
||||||
(package
|
(package
|
||||||
(name "rust-futures-cpupool")
|
(name "rust-futures-cpupool")
|
||||||
|
@ -928,6 +1124,30 @@ the computation on the threads themselves.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-gcc
|
||||||
(package
|
(package
|
||||||
(inherit rust-cc)
|
(inherit rust-cc)
|
||||||
|
@ -1208,6 +1428,20 @@ primitives to an @code{io::Write}.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-jemalloc-sys
|
||||||
(package
|
(package
|
||||||
(name "rust-jemalloc-sys")
|
(name "rust-jemalloc-sys")
|
||||||
|
@ -1379,6 +1613,79 @@ the platform that libc is compiled for.")
|
||||||
(license (list license:expat
|
(license (list license:expat
|
||||||
license:asl2.0))))
|
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
|
(define-public rust-libloading
|
||||||
(package
|
(package
|
||||||
(name "rust-libloading")
|
(name "rust-libloading")
|
||||||
|
@ -1406,6 +1713,77 @@ allows loading dynamic libraries (also known as shared libraries) as well as use
|
||||||
functions and static variables these libraries contain.")
|
functions and static variables these libraries contain.")
|
||||||
(license license:isc)))
|
(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
|
(define-public rust-log
|
||||||
(package
|
(package
|
||||||
(name "rust-log")
|
(name "rust-log")
|
||||||
|
@ -1776,6 +2154,69 @@ types as proposed in RFC 1158.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-nodrop
|
||||||
(package
|
(package
|
||||||
(name "rust-nodrop")
|
(name "rust-nodrop")
|
||||||
|
@ -1923,6 +2364,24 @@ implementation (which is unstable / requires nightly).")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-openssl-probe
|
||||||
(package
|
(package
|
||||||
(name "rust-openssl-probe")
|
(name "rust-openssl-probe")
|
||||||
|
@ -1944,6 +2403,67 @@ system for OpenSSL.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-owning-ref
|
||||||
(package
|
(package
|
||||||
(name "rust-owning-ref")
|
(name "rust-owning-ref")
|
||||||
|
@ -2035,6 +2555,20 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-permutohedron
|
||||||
(package
|
(package
|
||||||
(name "rust-permutohedron")
|
(name "rust-permutohedron")
|
||||||
|
@ -2468,6 +3002,26 @@ system calls.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-rustc-serialize
|
||||||
(package
|
(package
|
||||||
(name "rust-rustc-serialize")
|
(name "rust-rustc-serialize")
|
||||||
|
@ -2904,6 +3458,26 @@ deeply recursive algorithms that may accidentally blow the stack.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-stdweb-internal-runtime
|
||||||
(package
|
(package
|
||||||
(name "rust-stdweb-internal-runtime")
|
(name "rust-stdweb-internal-runtime")
|
||||||
|
@ -2991,6 +3565,20 @@ metrics. It includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro,
|
||||||
and Jaro-Winkler.")
|
and Jaro-Winkler.")
|
||||||
(license license:expat)))
|
(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
|
(define-public rust-synstructure-test-traits
|
||||||
(package
|
(package
|
||||||
(name "rust-synstructure-test-traits")
|
(name "rust-synstructure-test-traits")
|
||||||
|
@ -3096,6 +3684,30 @@ directories.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-termcolor
|
||||||
(package
|
(package
|
||||||
(name "rust-termcolor")
|
(name "rust-termcolor")
|
||||||
|
@ -3552,6 +4164,28 @@ whitespace from a string.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
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
|
(define-public rust-unsafe-any
|
||||||
(package
|
(package
|
||||||
(name "rust-unsafe-any")
|
(name "rust-unsafe-any")
|
||||||
|
@ -3787,7 +4421,7 @@ in Rust.")
|
||||||
(synopsis "Wide string Rust FFI library")
|
(synopsis "Wide string Rust FFI library")
|
||||||
(description
|
(description
|
||||||
"A wide string Rust FFI library for converting to and from wide strings,
|
"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.")
|
UTF-32 types are provided, including support for malformed encoding.")
|
||||||
(license (list license:asl2.0
|
(license (list license:asl2.0
|
||||||
license:expat))))
|
license:expat))))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
|
;;; 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.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
(define-public datamash
|
(define-public datamash
|
||||||
(package
|
(package
|
||||||
(name "datamash")
|
(name "datamash")
|
||||||
(version "1.4")
|
(version "1.5")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0aj7wvv14s2fsf2rl49mqhxdagy8cbz6rz4xyi7bkg2nahnxsi7s"))))
|
"1b91pbdarnfmbhid8aa2f50k0fln8n7pg62782b4y0jlzvaljqi2"))))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("which" ,which) ;for tests
|
`(("which" ,which) ;for tests
|
||||||
("perl" ,perl))) ;for help2man
|
("perl" ,perl))) ;for help2man
|
||||||
|
|
|
@ -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 @@ and BOOTP/TFTP for network booting of diskless machines.")
|
||||||
(define-public isc-bind
|
(define-public isc-bind
|
||||||
(package
|
(package
|
||||||
(name "bind")
|
(name "bind")
|
||||||
(version "9.14.5")
|
(version "9.14.6")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append
|
(uri (string-append
|
||||||
|
@ -117,7 +117,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
|
||||||
"/bind-" version ".tar.gz"))
|
"/bind-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0ic0k0kpavwnbyf10rwx6yypxg66f65fprwc0dbmp61xp0n6gl0j"))))
|
"1zpd47ckn5lf4qbscfkj7krngwn2gwsp961v5401h3lhxm0a0rw9"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(outputs `("out" "utils"))
|
(outputs `("out" "utils"))
|
||||||
(inputs
|
(inputs
|
||||||
|
@ -373,14 +373,14 @@ to result in system-wide compromise.")
|
||||||
(define-public unbound
|
(define-public unbound
|
||||||
(package
|
(package
|
||||||
(name "unbound")
|
(name "unbound")
|
||||||
(version "1.9.2")
|
(version "1.9.3")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://www.unbound.net/downloads/unbound-"
|
(uri (string-append "https://www.unbound.net/downloads/unbound-"
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "15bbrczibap30db8a1pmqhvjbmkxms39hwiivby7f4j5rz2wwykg"))))
|
(base32 "1ykdy62sgzv33ggkmzwx2h0ifm7hyyxyfkb4zckv7gz4f28xsm8v"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(outputs '("out" "python"))
|
(outputs '("out" "python"))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
(define-module (gnu packages elixir)
|
(define-module (gnu packages elixir)
|
||||||
#:use-module ((guix licenses) #:prefix license:)
|
#:use-module ((guix licenses) #:prefix license:)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module (guix download)
|
#:use-module (guix git-download)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (gnu packages erlang)
|
#:use-module (gnu packages erlang)
|
||||||
|
@ -34,15 +34,16 @@
|
||||||
(package
|
(package
|
||||||
(name "elixir")
|
(name "elixir")
|
||||||
(version "1.8.2")
|
(version "1.8.2")
|
||||||
(source (origin
|
(source
|
||||||
(method url-fetch)
|
(origin
|
||||||
(uri (string-append "https://github.com/elixir-lang/elixir"
|
(method git-fetch)
|
||||||
"/archive/v" version ".tar.gz"))
|
(uri (git-reference
|
||||||
(file-name (string-append name "-" version ".tar.gz"))
|
(url "https://github.com/elixir-lang/elixir.git")
|
||||||
(sha256
|
(commit (string-append "v" version))))
|
||||||
(base32
|
(file-name (git-file-name name version))
|
||||||
"0ddqxw24zdqlg7glzk22m7qjal8f18divzp364a6gi1bv6rg16yg"))
|
(sha256
|
||||||
(patches (search-patches "elixir-path-length.patch"))))
|
(base32 "1n77cpcl2b773gmj3m9s24akvj9gph9byqbmj2pvlsmby4aqwckq"))
|
||||||
|
(patches (search-patches "elixir-path-length.patch"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:test-target "test"
|
`(#:test-target "test"
|
||||||
|
@ -51,7 +52,11 @@
|
||||||
(assoc-ref %outputs "out")))
|
(assoc-ref %outputs "out")))
|
||||||
#:phases
|
#:phases
|
||||||
(modify-phases %standard-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)
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
(let ((out (assoc-ref outputs "out")))
|
(let ((out (assoc-ref outputs "out")))
|
||||||
(substitute* '("lib/elixir/lib/system.ex"
|
(substitute* '("lib/elixir/lib/system.ex"
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -33,7 +33,7 @@
|
||||||
(define-public enchant
|
(define-public enchant
|
||||||
(package
|
(package
|
||||||
(name "enchant")
|
(name "enchant")
|
||||||
(version "2.2.5")
|
(version "2.2.7")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://github.com/AbiWord/enchant/releases"
|
(uri (string-append "https://github.com/AbiWord/enchant/releases"
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0iqwzs11i9fvqdxv5kn0svcn2mzymn657qf3j66lg8dx1nh4xkpz"))))
|
"029smcna98hllgkm2gy94qa7qphxs4xaa8cdbg5kaaw16mhrf8hv"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:configure-flags '("--disable-static"
|
'(#:configure-flags '("--disable-static"
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
|
;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
|
||||||
;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
|
;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
|
||||||
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
|
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
|
||||||
|
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -50,9 +51,11 @@
|
||||||
#:use-module (gnu packages bison)
|
#:use-module (gnu packages bison)
|
||||||
#:use-module (gnu packages boost)
|
#:use-module (gnu packages boost)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
|
#:use-module (gnu packages cmake)
|
||||||
#:use-module (gnu packages commencement)
|
#:use-module (gnu packages commencement)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages curl)
|
#:use-module (gnu packages curl)
|
||||||
|
#:use-module (gnu packages documentation)
|
||||||
#:use-module (gnu packages flex)
|
#:use-module (gnu packages flex)
|
||||||
#:use-module (gnu packages fontutils)
|
#:use-module (gnu packages fontutils)
|
||||||
#:use-module (gnu packages fpga)
|
#:use-module (gnu packages fpga)
|
||||||
|
@ -66,10 +69,12 @@
|
||||||
#:use-module (gnu packages gnome)
|
#:use-module (gnu packages gnome)
|
||||||
#:use-module (gnu packages gperf)
|
#:use-module (gnu packages gperf)
|
||||||
#:use-module (gnu packages graphics)
|
#:use-module (gnu packages graphics)
|
||||||
|
#:use-module (gnu packages graphviz)
|
||||||
#:use-module (gnu packages groff)
|
#:use-module (gnu packages groff)
|
||||||
#:use-module (gnu packages gtk)
|
#:use-module (gnu packages gtk)
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
#:use-module (gnu packages image)
|
#:use-module (gnu packages image)
|
||||||
|
#:use-module (gnu packages image-processing)
|
||||||
#:use-module (gnu packages imagemagick)
|
#:use-module (gnu packages imagemagick)
|
||||||
#:use-module (gnu packages linux) ;FIXME: for pcb
|
#:use-module (gnu packages linux) ;FIXME: for pcb
|
||||||
#:use-module (gnu packages m4)
|
#:use-module (gnu packages m4)
|
||||||
|
@ -84,6 +89,7 @@
|
||||||
#:use-module (gnu packages qt)
|
#:use-module (gnu packages qt)
|
||||||
#:use-module (gnu packages readline)
|
#:use-module (gnu packages readline)
|
||||||
#:use-module (gnu packages swig)
|
#:use-module (gnu packages swig)
|
||||||
|
#:use-module (gnu packages tbb)
|
||||||
#:use-module (gnu packages tcl)
|
#:use-module (gnu packages tcl)
|
||||||
#:use-module (gnu packages texinfo)
|
#:use-module (gnu packages texinfo)
|
||||||
#:use-module (gnu packages tls)
|
#:use-module (gnu packages tls)
|
||||||
|
@ -2214,3 +2220,214 @@ interactive modeler, OpenSCAD generates 3D models from a script, giving you
|
||||||
full programmatic control over your models.")
|
full programmatic control over your models.")
|
||||||
(home-page "https://www.openscad.org/")
|
(home-page "https://www.openscad.org/")
|
||||||
(license license:gpl2+)))
|
(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-public efl
|
(define-public efl
|
||||||
(package
|
(package
|
||||||
(name "efl")
|
(name "efl")
|
||||||
(version "1.22.4")
|
(version "1.22.5")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append
|
(uri (string-append
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
version ".tar.xz"))
|
version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"084ihxy6g86yczhln5vn1amxi4qzqhvk4lpz9005kx92i6wh4h25"))))
|
"1cjk56z0whpzcqwg3xdq23kyp1g83xa67m9dlp7ywmb36bn4ca59"))))
|
||||||
(outputs '("out" ; 53 MB
|
(outputs '("out" ; 53 MB
|
||||||
"include")) ; 21 MB
|
"include")) ; 21 MB
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2013, 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2013, 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.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.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -109,14 +109,14 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
|
||||||
(define-public gdb-8.3
|
(define-public gdb-8.3
|
||||||
(package
|
(package
|
||||||
(inherit gdb-8.2)
|
(inherit gdb-8.2)
|
||||||
(version "8.3")
|
(version "8.3.1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnu/gdb/gdb-"
|
(uri (string-append "mirror://gnu/gdb/gdb-"
|
||||||
version ".tar.xz"))
|
version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0bnpzz0rl672xg5547q5qck2sxi6cnyixmk8bbb4gifw17ipwbw0"))))))
|
"1i2pjwaafrlz7wqm40b4znr77ai32rjsxkpl2az38yyarpbv8m8y"))))))
|
||||||
|
|
||||||
(define-public gdb
|
(define-public gdb
|
||||||
;; This is the fixed version that packages depend on. Update it rarely
|
;; This is the fixed version that packages depend on. Update it rarely
|
||||||
|
|
|
@ -7259,9 +7259,9 @@ GLib/GObject code.")
|
||||||
(version "3.26.1")
|
(version "3.26.1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
(uri (string-append "mirror://gnome/sources/libgnomekbd/"
|
||||||
(version-major+minor version) "/"
|
(version-major+minor version) "/"
|
||||||
name "-" version ".tar.xz"))
|
"libgnomekbd-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0y962ykn3rr9gylj0pwpww7bi20lmhvsw6qvxs5bisbn2mih5jpp"))))
|
"0y962ykn3rr9gylj0pwpww7bi20lmhvsw6qvxs5bisbn2mih5jpp"))))
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
|
||||||
;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
|
;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
|
||||||
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
|
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
|
||||||
|
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -1060,3 +1061,49 @@ For example, two shapes can be combined by uniting them, by intersecting them,
|
||||||
or by subtracting one shape from the other.")
|
or by subtracting one shape from the other.")
|
||||||
(home-page "http://www.opencsg.org/")
|
(home-page "http://www.opencsg.org/")
|
||||||
(license license:gpl2))))
|
(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 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
|
||||||
(define-public guile-email
|
(define-public guile-email
|
||||||
(package
|
(package
|
||||||
(name "guile-email")
|
(name "guile-email")
|
||||||
(version "0.2.0")
|
(version "0.2.1")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -918,7 +918,7 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
|
||||||
version ".tar.lz"))
|
version ".tar.lz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0zgvh2329zrclxfb1lh7dnqrq46jj77l0lx7j9y6y3xgbhd2d9l0"))))
|
"1ph3pb69hr3d8mj05fmbpf5rc67dlm8qnb35cc7cxz8ingvl7kv3"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)
|
`(("pkg-config" ,pkg-config)
|
||||||
|
@ -936,8 +936,8 @@ format.")
|
||||||
(license license:agpl3+)))
|
(license license:agpl3+)))
|
||||||
|
|
||||||
(define-public guile-debbugs-next
|
(define-public guile-debbugs-next
|
||||||
(let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
|
(let ((commit "fb0ae064037a38a0d526e08b4ad24c52e205edb9")
|
||||||
(revision "1"))
|
(revision "2"))
|
||||||
(package (inherit guile-debbugs)
|
(package (inherit guile-debbugs)
|
||||||
(name "guile-debbugs")
|
(name "guile-debbugs")
|
||||||
(version (git-version "0.0.3" revision commit))
|
(version (git-version "0.0.3" revision commit))
|
||||||
|
@ -949,7 +949,7 @@ format.")
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
|
"195sacx2xc1mzzfljj62nfpi8mxn0rc6dabxckizjksnhb5irfwy"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)
|
`(("pkg-config" ,pkg-config)
|
||||||
|
@ -2156,7 +2156,7 @@ chunks can be expressions as well as simple tokens.")
|
||||||
("libtool" ,libtool)
|
("libtool" ,libtool)
|
||||||
("pkg-config" ,pkg-config)))
|
("pkg-config" ,pkg-config)))
|
||||||
(home-page "https://gitlab.com/tampe/guile-persist")
|
(home-page "https://gitlab.com/tampe/guile-persist")
|
||||||
(synopsis "Persistance programming framework for Guile")
|
(synopsis "Persistence programming framework for Guile")
|
||||||
(description
|
(description
|
||||||
"This is a serialization library for serializing objects like classes
|
"This is a serialization library for serializing objects like classes
|
||||||
and objects, closures and structs. This currently does not support
|
and objects, closures and structs. This currently does not support
|
||||||
|
@ -2554,3 +2554,67 @@ Emacsy. It has a small C layer and most browser features are fully
|
||||||
programmable in Guile. It has hooks, keymaps, and self documentation
|
programmable in Guile. It has hooks, keymaps, and self documentation
|
||||||
features.")
|
features.")
|
||||||
(license license:gpl3+)))
|
(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 @@ examination.")
|
||||||
("ghc-listlike" ,ghc-listlike)))
|
("ghc-listlike" ,ghc-listlike)))
|
||||||
(home-page "https://github.com/seereason/process-extras")
|
(home-page "https://github.com/seereason/process-extras")
|
||||||
(synopsis "Extra tools for managing processes")
|
(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
|
@url{http://hackage.haskell.org/package/process}. It allows you to read
|
||||||
process input and output as ByteStrings or Text, or write your own
|
process input and output as ByteStrings or Text, or write your own
|
||||||
ProcessOutput instance. It also provides lazy process input and output,
|
ProcessOutput instance. It also provides lazy process input and output,
|
||||||
|
|
|
@ -286,14 +286,14 @@ detection.")
|
||||||
(define-public js-datatables
|
(define-public js-datatables
|
||||||
(package
|
(package
|
||||||
(name "js-datatables")
|
(name "js-datatables")
|
||||||
(version "1.10.15")
|
(version "1.10.19")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://datatables.net/releases/DataTables-"
|
(uri (string-append "https://datatables.net/releases/DataTables-"
|
||||||
version ".zip"))
|
version ".zip"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1y9xqyqyz7x1ls3ska71pshl2hpiy3qnw1f7wygyslbhy4ssgf57"))))
|
"0cff8a1g7pjwbjdqq0yzqd963ar7pfi4splmm6rwdzganr77rkhb"))))
|
||||||
(build-system minify-build-system)
|
(build-system minify-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:javascript-files '("media/js/dataTables.bootstrap.js"
|
`(#:javascript-files '("media/js/dataTables.bootstrap.js"
|
||||||
|
|
|
@ -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 @@ resolution, asynchronous file system operations, and threading primitives.")
|
||||||
(define-public perl-anyevent
|
(define-public perl-anyevent
|
||||||
(package
|
(package
|
||||||
(name "perl-anyevent")
|
(name "perl-anyevent")
|
||||||
(version "7.15")
|
(version "7.17")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
|
(uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
|
||||||
"AnyEvent-" version ".tar.gz"))
|
"AnyEvent-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0m73r67ah9xmcwzxs50jxf8ncd8h71mi4wf2mvnqkxvibhrv478i"))))
|
"11drlj8r02czhjgzkb39axnr8zzyp506r043xfmf93q9kilfmgjh"))))
|
||||||
(build-system perl-build-system)
|
(build-system perl-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("perl-canary-stability" ,perl-canary-stability)))
|
`(("perl-canary-stability" ,perl-canary-stability)))
|
||||||
|
|
|
@ -349,10 +349,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
|
||||||
"linux-" version ".tar.xz"))
|
"linux-" version ".tar.xz"))
|
||||||
(sha256 hash)))
|
(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
|
(define-public linux-libre-5.2-pristine-source
|
||||||
(let ((version linux-libre-5.2-version)
|
(let ((version linux-libre-5.2-version)
|
||||||
(hash (base32 "0jhc70r2rygm91qifjagg1jgbpjwyyq6m8g1n5iv81l1v84i0mpb")))
|
(hash (base32 "0xg5jnkmc7b552jrhi200ck7q4hql3az2fpjfwxj3ay8xp4n280c")))
|
||||||
(make-linux-libre-source version
|
(make-linux-libre-source version
|
||||||
(%upstream-linux-source version hash)
|
(%upstream-linux-source version hash)
|
||||||
deblob-scripts-5.2)))
|
deblob-scripts-5.2)))
|
||||||
|
@ -2114,7 +2114,7 @@ processes currently causing I/O.")
|
||||||
(define-public fuse
|
(define-public fuse
|
||||||
(package
|
(package
|
||||||
(name "fuse")
|
(name "fuse")
|
||||||
(version "2.9.8")
|
(version "2.9.9")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://github.com/libfuse/libfuse/releases/"
|
(uri (string-append "https://github.com/libfuse/libfuse/releases/"
|
||||||
|
@ -2122,7 +2122,7 @@ processes currently causing I/O.")
|
||||||
"/fuse-" version ".tar.gz"))
|
"/fuse-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1qxg1r1mgysfq6qakmvid2njph3lr00w0swvydsfl9ymilfzi12y"))
|
"1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh"))
|
||||||
(patches (search-patches "fuse-overlapping-headers.patch"))))
|
(patches (search-patches "fuse-overlapping-headers.patch"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs `(("util-linux" ,util-linux)))
|
(inputs `(("util-linux" ,util-linux)))
|
||||||
|
@ -3299,14 +3299,14 @@ about ACPI devices.")
|
||||||
(define-public acpid
|
(define-public acpid
|
||||||
(package
|
(package
|
||||||
(name "acpid")
|
(name "acpid")
|
||||||
(version "2.0.31")
|
(version "2.0.32")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://sourceforge/acpid2/acpid-"
|
(uri (string-append "mirror://sourceforge/acpid2/acpid-"
|
||||||
version ".tar.xz"))
|
version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1hrc0xm6q12knbgzhq0i8g2rfrkwcvh1asd7k9rs3nc5xmlwd7gw"))))
|
"0zhmxnhnhg4v1viw82yjr22kram6k5k1ixznhayk8cnw7q5x7lpj"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(home-page "https://sourceforge.net/projects/acpid2/")
|
(home-page "https://sourceforge.net/projects/acpid2/")
|
||||||
(synopsis "Daemon for delivering ACPI events to user-space programs")
|
(synopsis "Daemon for delivering ACPI events to user-space programs")
|
||||||
|
|
|
@ -2485,7 +2485,7 @@ new fiends in addition to old friends like @command{aif} and
|
||||||
(let ((commit "7d49a66c62759535624037826891152223d4206c"))
|
(let ((commit "7d49a66c62759535624037826891152223d4206c"))
|
||||||
(package
|
(package
|
||||||
(name "sbcl-lift")
|
(name "sbcl-lift")
|
||||||
(version (git-version "0.0.0" "1" commit))
|
(version (git-version "1.7.1" "1" commit))
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
|
@ -6474,7 +6474,7 @@ Trivia.")
|
||||||
quasiquote is enable matching of quasiquoted patterns, using Optima or
|
quasiquote is enable matching of quasiquoted patterns, using Optima or
|
||||||
Trivia.
|
Trivia.
|
||||||
|
|
||||||
This packages uses fare-quasiquote with named-readtable.")))
|
This package uses fare-quasiquote with named-readtable.")))
|
||||||
|
|
||||||
(define-public sbcl-trivia.level0
|
(define-public sbcl-trivia.level0
|
||||||
(let ((commit "902e0c65602bbfe96ae82e679330b3771ddc7603")
|
(let ((commit "902e0c65602bbfe96ae82e679330b3771ddc7603")
|
||||||
|
@ -6597,7 +6597,7 @@ This system contains the base level system of Trivia with a trivial optimizer.")
|
||||||
with Optima, another pattern matching library for Common Lisp. It is meant to
|
with Optima, another pattern matching library for Common Lisp. It is meant to
|
||||||
be faster and more extensible than Optima.
|
be faster and more extensible than Optima.
|
||||||
|
|
||||||
This system contains the PPCRE extention.")))
|
This system contains the PPCRE extension.")))
|
||||||
|
|
||||||
(define-public sbcl-trivia.quasiquote
|
(define-public sbcl-trivia.quasiquote
|
||||||
(package
|
(package
|
||||||
|
@ -6833,7 +6833,7 @@ Emacs.
|
||||||
|
|
||||||
In the Common LISP Object System (CLOS), a similar kind of extensibility is
|
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
|
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:
|
of CLOS. However, there are some differences:
|
||||||
|
|
||||||
@itemize
|
@itemize
|
||||||
|
@ -6934,3 +6934,429 @@ classes and cyclic data structures are supported.")
|
||||||
|
|
||||||
(define-public ecl-cl-prevalence
|
(define-public ecl-cl-prevalence
|
||||||
(sbcl-package->ecl-package sbcl-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 @@ requirements according to version 1.1 of the OpenCL specification.")
|
||||||
'(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
|
'(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
|
||||||
"-DOPENMP_TEST_C_COMPILER=clang"
|
"-DOPENMP_TEST_C_COMPILER=clang"
|
||||||
"-DOPENMP_TEST_CXX_COMPILER=clang++")
|
"-DOPENMP_TEST_CXX_COMPILER=clang++")
|
||||||
#:test-target "check-libomptarget"))
|
#:test-target "check-libomp"))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("clang" ,clang)
|
`(("clang" ,clang)
|
||||||
("llvm" ,llvm)
|
("llvm" ,llvm)
|
||||||
|
@ -440,6 +440,23 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
|
||||||
"0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w"
|
"0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w"
|
||||||
#:patches '("clang-6.0-libc-search-path.patch")))
|
#: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
|
(define-public llvm-3.9.1
|
||||||
(package (inherit llvm)
|
(package (inherit llvm)
|
||||||
(name "llvm")
|
(name "llvm")
|
||||||
|
|
|
@ -353,14 +353,14 @@ aliasing facilities to work just as they would on normal mail.")
|
||||||
(define-public mutt
|
(define-public mutt
|
||||||
(package
|
(package
|
||||||
(name "mutt")
|
(name "mutt")
|
||||||
(version "1.12.1")
|
(version "1.12.2")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
|
(uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
|
||||||
"mutt-" version ".tar.gz"))
|
"mutt-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0311sip2q90aqaxn7h3cck1zl98b4vifqi8bp5fsizy4dr06bi81"))
|
"10k8352s0z7yan6d4z2am80qd3bsaky4h89g72wl4xr3x067ahmw"))
|
||||||
(patches (search-patches "mutt-store-references.patch"))))
|
(patches (search-patches "mutt-store-references.patch"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
|
@ -2937,8 +2937,8 @@ replacement for the @code{urlview} program.")
|
||||||
(license gpl2+)))
|
(license gpl2+)))
|
||||||
|
|
||||||
(define-public mumi
|
(define-public mumi
|
||||||
(let ((commit "ea0a28f8d5db5761765eb60043b8593901552e25")
|
(let ((commit "8a57c87797ffb07baa88697130204184db643521")
|
||||||
(revision "4"))
|
(revision "5"))
|
||||||
(package
|
(package
|
||||||
(name "mumi")
|
(name "mumi")
|
||||||
(version (git-version "0.0.0" revision commit))
|
(version (git-version "0.0.0" revision commit))
|
||||||
|
@ -2950,7 +2950,7 @@ replacement for the @code{urlview} program.")
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0b6dmi41vhssyf983blgi8a2kj3zjccc9cz7b7kvwh781ldqcywh"))))
|
"1575gn5p086sjxz5hvg6iyskq6cxf6vf50s9nsc4xgrbcqa3pv2c"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:phases
|
`(#:phases
|
||||||
|
|
|
@ -1553,7 +1553,7 @@ script files.")
|
||||||
,@(package-inputs octave-cli)))
|
,@(package-inputs octave-cli)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("qttools" , qttools) ;for lrelease
|
`(("qttools" , qttools) ;for lrelease
|
||||||
("texlive" ,texlive) ;for texi2dvi
|
("texlive" ,(texlive-union (list texlive-epsf))) ; for texi2dvi
|
||||||
,@(package-native-inputs octave-cli)))
|
,@(package-native-inputs octave-cli)))
|
||||||
(arguments
|
(arguments
|
||||||
(substitute-keyword-arguments (package-arguments octave-cli)
|
(substitute-keyword-arguments (package-arguments octave-cli)
|
||||||
|
@ -2982,7 +2982,7 @@ point numbers.")
|
||||||
(define-public wxmaxima
|
(define-public wxmaxima
|
||||||
(package
|
(package
|
||||||
(name "wxmaxima")
|
(name "wxmaxima")
|
||||||
(version "19.08.0")
|
(version "19.09.0")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
|
@ -2991,8 +2991,7 @@ point numbers.")
|
||||||
(commit (string-append "Version-" version))))
|
(commit (string-append "Version-" version))))
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32 "195j6j8z0jd6xg3a63ywbrbsc6dany795m3fb95nbx1vq0bqqvvn"))))
|
||||||
"028g4g2081vsgslbdliskfy5q2wknvknw89lk3zp89py6wranxas"))))
|
|
||||||
(build-system cmake-build-system)
|
(build-system cmake-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("gettext" ,gettext-minimal)))
|
`(("gettext" ,gettext-minimal)))
|
||||||
|
|
|
@ -996,18 +996,18 @@ messenger protocol.")
|
||||||
(define-public utox
|
(define-public utox
|
||||||
(package
|
(package
|
||||||
(name "utox")
|
(name "utox")
|
||||||
(version "0.17.0")
|
(version "0.17.1")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
(uri (git-reference
|
(uri (git-reference
|
||||||
(url "https://github.com/uTox/uTox.git")
|
(url "https://github.com/uTox/uTox.git")
|
||||||
(commit "v0.17.0")
|
(commit (string-append "v" version))
|
||||||
(recursive? #t))) ;; Needed for 'minini' git submodule.
|
(recursive? #t))) ;; Needed for 'minini' git submodule.
|
||||||
(file-name (string-append name "-" version "-checkout"))
|
(file-name (string-append name "-" version "-checkout"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"12wbq883il7ikldayh8hm0cjfrkp45vn05xx9s1jbfz6gmkidyar"))))
|
"17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
|
||||||
(build-system cmake-build-system)
|
(build-system cmake-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags '("-DENABLE_TESTS=on")
|
`(#:configure-flags '("-DENABLE_TESTS=on")
|
||||||
|
|
|
@ -181,7 +181,7 @@ player daemon.")
|
||||||
(define-public ncmpc
|
(define-public ncmpc
|
||||||
(package
|
(package
|
||||||
(name "ncmpc")
|
(name "ncmpc")
|
||||||
(version "0.34")
|
(version "0.35")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri
|
(uri
|
||||||
|
@ -190,7 +190,7 @@ player daemon.")
|
||||||
"/ncmpc-" version ".tar.xz"))
|
"/ncmpc-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0mz8r6vc4zn5sa3hlq4ii74qcrkh01nbg784zcwahgz8g3fb3i8l"))))
|
"0hfjvm1p0z7x6gfn5xhl5c0jsmidvz0qfl04pq45x4chh9iiwkxx"))))
|
||||||
(build-system meson-build-system)
|
(build-system meson-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags
|
`(#:configure-flags
|
||||||
|
|
|
@ -90,7 +90,6 @@
|
||||||
(modify-phases %standard-phases
|
(modify-phases %standard-phases
|
||||||
(add-before 'configure 'patch-files
|
(add-before 'configure 'patch-files
|
||||||
(lambda* (#:key inputs #:allow-other-keys)
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
|
||||||
;; Fix hardcoded /bin/sh references.
|
;; Fix hardcoded /bin/sh references.
|
||||||
(substitute* '("lib/child_process.js"
|
(substitute* '("lib/child_process.js"
|
||||||
"lib/internal/v8_prof_polyfill.js"
|
"lib/internal/v8_prof_polyfill.js"
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
|
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
|
||||||
;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
|
;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
|
||||||
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||||
;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.org>
|
|
||||||
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
|
@ -31,7 +30,6 @@
|
||||||
(define-module (gnu packages package-management)
|
(define-module (gnu packages package-management)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (gnu packages acl)
|
#:use-module (gnu packages acl)
|
||||||
#:use-module (gnu packages admin)
|
|
||||||
#:use-module (gnu packages attr)
|
#:use-module (gnu packages attr)
|
||||||
#:use-module (gnu packages avahi)
|
#:use-module (gnu packages avahi)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
|
@ -40,7 +38,6 @@
|
||||||
#:use-module (gnu packages bdw-gc)
|
#:use-module (gnu packages bdw-gc)
|
||||||
#:use-module (gnu packages bison)
|
#:use-module (gnu packages bison)
|
||||||
#:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin'
|
#:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin'
|
||||||
#:use-module (gnu packages cdrom)
|
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages cpio)
|
#:use-module (gnu packages cpio)
|
||||||
|
@ -50,7 +47,6 @@
|
||||||
#:use-module (gnu packages docbook)
|
#:use-module (gnu packages docbook)
|
||||||
#:use-module (gnu packages file)
|
#:use-module (gnu packages file)
|
||||||
#:use-module (gnu packages gettext)
|
#:use-module (gnu packages gettext)
|
||||||
#:use-module (gnu packages ghostscript)
|
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
#:use-module (gnu packages gnome)
|
#:use-module (gnu packages gnome)
|
||||||
#:use-module (gnu packages gnupg)
|
#:use-module (gnu packages gnupg)
|
||||||
|
@ -58,19 +54,12 @@
|
||||||
#:use-module (gnu packages gtk)
|
#:use-module (gnu packages gtk)
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
#:use-module (gnu packages guile-xyz)
|
#: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 linux)
|
||||||
#:use-module (gnu packages lisp)
|
#:use-module (gnu packages lisp)
|
||||||
#:use-module (gnu packages llvm)
|
|
||||||
#:use-module (gnu packages man)
|
#:use-module (gnu packages man)
|
||||||
#:use-module (gnu packages mono)
|
|
||||||
#:use-module (gnu packages nettle)
|
#:use-module (gnu packages nettle)
|
||||||
#:use-module (gnu packages nss)
|
#:use-module (gnu packages nss)
|
||||||
#:use-module (gnu packages patchutils)
|
#:use-module (gnu packages patchutils)
|
||||||
#:use-module (gnu packages pdf)
|
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages perl-check)
|
#:use-module (gnu packages perl-check)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
|
@ -82,10 +71,8 @@
|
||||||
#:use-module (gnu packages sqlite)
|
#:use-module (gnu packages sqlite)
|
||||||
#:use-module (gnu packages ssh)
|
#:use-module (gnu packages ssh)
|
||||||
#:use-module (gnu packages texinfo)
|
#:use-module (gnu packages texinfo)
|
||||||
#:use-module (gnu packages textutils)
|
|
||||||
#:use-module (gnu packages time)
|
#:use-module (gnu packages time)
|
||||||
#:use-module (gnu packages tls)
|
#:use-module (gnu packages tls)
|
||||||
#:use-module (gnu packages video)
|
|
||||||
#:use-module (gnu packages vim)
|
#:use-module (gnu packages vim)
|
||||||
#:use-module (gnu packages virtualization)
|
#:use-module (gnu packages virtualization)
|
||||||
#:use-module (gnu packages web)
|
#:use-module (gnu packages web)
|
||||||
|
@ -557,176 +544,6 @@ transactions from C or Python.")
|
||||||
;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
|
;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
|
||||||
(license license:gpl2+)))
|
(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
|
(define-public python-anaconda-client
|
||||||
(package
|
(package
|
||||||
(name "python-anaconda-client")
|
(name "python-anaconda-client")
|
||||||
|
@ -1073,7 +890,7 @@ the boot loader configuration.")
|
||||||
(define-public flatpak
|
(define-public flatpak
|
||||||
(package
|
(package
|
||||||
(name "flatpak")
|
(name "flatpak")
|
||||||
(version "1.4.2")
|
(version "1.4.3")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -1081,7 +898,7 @@ the boot loader configuration.")
|
||||||
version "/flatpak-" version ".tar.xz"))
|
version "/flatpak-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"08nmpp26mgv0vp3mlwk97rnp0j7i108h4hr9nllja19sjxnrlygj"))))
|
"11bfxmv8pxlb5x0lb2rsl45615fzfvq5r6wldf0l6ab2ngryd7i7"))))
|
||||||
|
|
||||||
;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
|
;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
|
||||||
;; find the TLS backend in glib-networking.
|
;; find the TLS backend in glib-networking.
|
||||||
|
|
|
@ -52,14 +52,14 @@
|
||||||
(define-public parallel
|
(define-public parallel
|
||||||
(package
|
(package
|
||||||
(name "parallel")
|
(name "parallel")
|
||||||
(version "20190822")
|
(version "20190922")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnu/parallel/parallel-"
|
(uri (string-append "mirror://gnu/parallel/parallel-"
|
||||||
version ".tar.bz2"))
|
version ".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "1mi3a18fdwcx50jg51pw1ks1fkmc2slyinff0yb3xhihi2szbskp"))))
|
(base32 "0qrw34rpp8g5knb2nhs8z1hz9i42nxjn6i12m4rblm0anhnfwbr8"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:phases
|
`(#: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
|
|
||||||
|
|
|
@ -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 = 'Val Neekman'
|
||||||
author_email = 'info@neekware.com'
|
author_email = 'info@neekware.com'
|
||||||
license = 'MIT'
|
license = 'MIT'
|
||||||
-install_requires = ['text-unidecode==1.2']
|
-install_requires = ['text-unidecode>=1.3']
|
||||||
-extras_require = {'unidecode': ['Unidecode==1.0.23']}
|
-extras_require = {'unidecode': ['Unidecode>=1.1.1']}
|
||||||
+install_requires = ['Unidecode']
|
+install_requires = ['Unidecode']
|
||||||
|
|
||||||
classifiers = [
|
classifiers = [
|
||||||
|
|
|
@ -1266,14 +1266,14 @@ arrays for their internal representation.")
|
||||||
(define-public perl-clone
|
(define-public perl-clone
|
||||||
(package
|
(package
|
||||||
(name "perl-clone")
|
(name "perl-clone")
|
||||||
(version "0.42")
|
(version "0.43")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(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"))
|
"Clone-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1r87rdm0nilfayxwlzvylwc8r3hr5m24180x437j30qpizdk1aal"))))
|
"1npf5s4b90ds6lv8gn76b2w4bdh0z5ni5zk4skgc2db5d12560lr"))))
|
||||||
(build-system perl-build-system)
|
(build-system perl-build-system)
|
||||||
(synopsis "Recursively copy Perl datatypes")
|
(synopsis "Recursively copy Perl datatypes")
|
||||||
(description
|
(description
|
||||||
|
|
|
@ -160,7 +160,7 @@ to providing full-strength password hashing for multi-user application.")
|
||||||
system hashes passwords using a version of Bruce Schneier's Blowfish block
|
system hashes passwords using a version of Bruce Schneier's Blowfish block
|
||||||
cipher with modifications designed to raise the cost of off-line password
|
cipher with modifications designed to raise the cost of off-line password
|
||||||
cracking and frustrate fast hardware implementation. The computation cost of
|
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
|
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
|
result in an attacker gaining knowledge of the plaintext passwords (e.g. using
|
||||||
John the Ripper).")
|
John the Ripper).")
|
||||||
|
@ -845,13 +845,13 @@ in userspace)
|
||||||
(define-public python-m2crypto
|
(define-public python-m2crypto
|
||||||
(package
|
(package
|
||||||
(name "python-m2crypto")
|
(name "python-m2crypto")
|
||||||
(version "0.30.1")
|
(version "0.35.2")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (pypi-uri "M2Crypto" version))
|
(uri (pypi-uri "M2Crypto" version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "1iizrpkn4c2n70nvcjqlmnk6fz3vddkrjmwavz1zlsnwv8f7bcm1"))))
|
(base32 "09yirf3w77w6f49q6nxhrjm9c3a4y9s30s1k09chqrw8zdgx8sjc"))))
|
||||||
(build-system python-build-system)
|
(build-system python-build-system)
|
||||||
(inputs `(("openssl" ,openssl)))
|
(inputs `(("openssl" ,openssl)))
|
||||||
(home-page "https://gitlab.com/m2crypto/m2crypto")
|
(home-page "https://gitlab.com/m2crypto/m2crypto")
|
||||||
|
|
|
@ -306,16 +306,24 @@ other HTTP libraries.")
|
||||||
(define-public python-html2text
|
(define-public python-html2text
|
||||||
(package
|
(package
|
||||||
(name "python-html2text")
|
(name "python-html2text")
|
||||||
(version "2018.1.9")
|
(version "2019.8.11")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (pypi-uri "html2text" version))
|
(uri (pypi-uri "html2text" version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1m6d7ciq30adc3d1n8g6r46072n7q8kdy039pqvnnmp763xi8xb2"))))
|
"0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm"))))
|
||||||
(build-system python-build-system)
|
(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")
|
(synopsis "Convert HTML into plain text")
|
||||||
(description "html2text takes HTML and converts it into plain ASCII text
|
(description "html2text takes HTML and converts it into plain ASCII text
|
||||||
which is also valid markdown. html2text was originally written by Aaron
|
which is also valid markdown. html2text was originally written by Aaron
|
||||||
|
@ -3219,14 +3227,13 @@ Python.")
|
||||||
(define-public python-slugify
|
(define-public python-slugify
|
||||||
(package
|
(package
|
||||||
(name "python-slugify")
|
(name "python-slugify")
|
||||||
(version "3.0.2")
|
(version "3.0.4")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (pypi-uri "python-slugify" version))
|
(uri (pypi-uri "python-slugify" version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32 "0dv97yi5fq074q5qyqbin09pmi8ixg36caf5nkpw2bqkd8jh6pap"))
|
||||||
"0n6pfmsq899c54plpvzi46l7zrpa3zfpm8im6h32czjw6kxky5jp"))
|
|
||||||
(patches
|
(patches
|
||||||
(search-patches "python-slugify-depend-on-unidecode.patch"))))
|
(search-patches "python-slugify-depend-on-unidecode.patch"))))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||||
;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
|
;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
|
||||||
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
|
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||||
|
;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -902,6 +903,27 @@ messages in color.")
|
||||||
(define-public python2-coloredlogs
|
(define-public python2-coloredlogs
|
||||||
(package-with-python2 python-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
|
(define-public python-et-xmlfile
|
||||||
(package
|
(package
|
||||||
(name "python-et-xmlfile")
|
(name "python-et-xmlfile")
|
||||||
|
@ -3962,7 +3984,7 @@ tests = True~%"
|
||||||
(assoc-ref inputs "tcl")
|
(assoc-ref inputs "tcl")
|
||||||
(assoc-ref inputs "tk")))))
|
(assoc-ref inputs "tk")))))
|
||||||
#t)))))
|
#t)))))
|
||||||
(home-page "http://matplotlib.org")
|
(home-page "https://matplotlib.org/")
|
||||||
(synopsis "2D plotting library for Python")
|
(synopsis "2D plotting library for Python")
|
||||||
(description
|
(description
|
||||||
"Matplotlib is a Python 2D plotting library which produces publication
|
"Matplotlib is a Python 2D plotting library which produces publication
|
||||||
|
@ -3977,14 +3999,29 @@ toolkits.")
|
||||||
(let ((matplotlib (package-with-python2
|
(let ((matplotlib (package-with-python2
|
||||||
(strip-python2-variant python-matplotlib))))
|
(strip-python2-variant python-matplotlib))))
|
||||||
(package (inherit matplotlib)
|
(package (inherit matplotlib)
|
||||||
(version "2.2.3")
|
(version "2.2.4")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (pypi-uri "matplotlib" version))
|
(uri (pypi-uri "matplotlib" version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(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
|
;; Make sure to use special packages for Python 2 instead
|
||||||
;; of those automatically rewritten by package-with-python2.
|
;; of those automatically rewritten by package-with-python2.
|
||||||
(propagated-inputs
|
(propagated-inputs
|
||||||
|
@ -8009,6 +8046,45 @@ Jupyter kernels such as IJulia and IRKernel.")
|
||||||
support for rich media output.")
|
support for rich media output.")
|
||||||
(license license:bsd-3)))
|
(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
|
(define-public jupyter
|
||||||
(package
|
(package
|
||||||
(name "jupyter")
|
(name "jupyter")
|
||||||
|
@ -10865,6 +10941,42 @@ binary or text.")
|
||||||
`(("python2-enum34" ,python2-enum34)
|
`(("python2-enum34" ,python2-enum34)
|
||||||
,@(package-propagated-inputs base))))))
|
,@(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
|
(define-public python-nltk
|
||||||
(package
|
(package
|
||||||
(name "python-nltk")
|
(name "python-nltk")
|
||||||
|
@ -16264,3 +16376,24 @@ ElementTree library and for the @uref{http://lxml.de, lxml.etree} library.
|
||||||
For lxml.etree this package can be useful for providing XPath 2.0 selectors,
|
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.")
|
because lxml.etree already has it's own implementation of XPath 1.0.")
|
||||||
(license license:expat)))
|
(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 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||||
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
|
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
|
||||||
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
|
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
|
||||||
|
;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -39,7 +40,9 @@
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages bison)
|
#:use-module (gnu packages bison)
|
||||||
|
#:use-module (gnu packages cmake)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages cups)
|
#:use-module (gnu packages cups)
|
||||||
#:use-module (gnu packages databases)
|
#:use-module (gnu packages databases)
|
||||||
|
@ -56,6 +59,7 @@
|
||||||
#:use-module (gnu packages icu4c)
|
#:use-module (gnu packages icu4c)
|
||||||
#:use-module (gnu packages image)
|
#:use-module (gnu packages image)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
|
#:use-module (gnu packages llvm)
|
||||||
#:use-module (gnu packages maths)
|
#:use-module (gnu packages maths)
|
||||||
#:use-module (gnu packages nss)
|
#:use-module (gnu packages nss)
|
||||||
#:use-module (gnu packages pciutils)
|
#:use-module (gnu packages pciutils)
|
||||||
|
@ -2290,3 +2294,173 @@ user-friendly than the default @code{QColorDialog} and several other
|
||||||
color-related widgets.")
|
color-related widgets.")
|
||||||
;; Includes a license exception for combining with GPL2 code.
|
;; Includes a license exception for combining with GPL2 code.
|
||||||
(license license:lgpl3+))))
|
(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 @@ anywhere.")
|
||||||
(define-public samba
|
(define-public samba
|
||||||
(package
|
(package
|
||||||
(name "samba")
|
(name "samba")
|
||||||
(version "4.10.8")
|
(version "4.11.0")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://download.samba.org/pub/samba/stable/"
|
(uri (string-append "https://download.samba.org/pub/samba/stable/"
|
||||||
"samba-" version ".tar.gz"))
|
"samba-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1x0hlhb674fndfkmimjicnzs543n3i8465a5ifcmjwvzavxha7y4"))))
|
"174fwi8n191dnb8ix9afchfp59hic6iwa3062iz3y7zzmxs1rpva"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:phases
|
`(#:phases
|
||||||
|
|
|
@ -204,8 +204,8 @@
|
||||||
(base32
|
(base32
|
||||||
"05sjyz90xxfnmi87qv8x0yx0fcallnzl1dciygdafp317pn489is"))
|
"05sjyz90xxfnmi87qv8x0yx0fcallnzl1dciygdafp317pn489is"))
|
||||||
(_
|
(_
|
||||||
(base32
|
(base32
|
||||||
""))))))))
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))))))))
|
||||||
|
|
||||||
;; Fails to build on MIPS, see <http://bugs.gnu.org/18221>.
|
;; 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
|
;; Also, the portable C version of MIT/GNU Scheme did not work in time for
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages databases)
|
#:use-module (gnu packages databases)
|
||||||
#:use-module (gnu packages documentation)
|
#:use-module (gnu packages documentation)
|
||||||
|
#:use-module (gnu packages gcc)
|
||||||
#:use-module (gnu packages lua)
|
#:use-module (gnu packages lua)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
@ -393,17 +394,29 @@ it is comparable to protobuf.")
|
||||||
(define-public nlohmann-json-cpp
|
(define-public nlohmann-json-cpp
|
||||||
(package
|
(package
|
||||||
(name "nlohmann-json-cpp")
|
(name "nlohmann-json-cpp")
|
||||||
(version "2.1.1")
|
(version "3.7.0")
|
||||||
(source
|
(source (origin
|
||||||
(origin
|
(method git-fetch)
|
||||||
(method url-fetch)
|
(uri (git-reference
|
||||||
(uri (string-append "https://github.com/nlohmann/json/"
|
(url "https://github.com/nlohmann/json.git")
|
||||||
"archive/v" version ".tar.gz"))
|
(commit (string-append "v" version))))
|
||||||
(file-name (string-append name "-" version ".tar.gz"))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0lrh6cjd643c7kmvmwafbgq7dqj3b778483gjhjbvp6rc6z5xf2r"))))
|
"0v7xih4zjixxxfvkfbs7a8j9qcvpwlsv4vrkbyns3hc7b44nb8ap"))))
|
||||||
(build-system cmake-build-system)
|
(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/")
|
(home-page "https://nlohmann.github.io/json/")
|
||||||
(synopsis "JSON library for C++")
|
(synopsis "JSON library for C++")
|
||||||
(description
|
(description
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||||
;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
|
;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
|
||||||
|
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -30,12 +31,15 @@
|
||||||
#:use-module (gnu packages audio)
|
#:use-module (gnu packages audio)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
|
#:use-module (gnu packages emacs)
|
||||||
#:use-module (gnu packages gcc)
|
#:use-module (gnu packages gcc)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
|
#:use-module (gnu packages ncurses)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages pulseaudio)
|
#:use-module (gnu packages pulseaudio)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
#:use-module (gnu packages texinfo)
|
||||||
#:use-module (gnu packages textutils))
|
#:use-module (gnu packages textutils))
|
||||||
|
|
||||||
(define-public espeak
|
(define-public espeak
|
||||||
|
@ -220,3 +224,236 @@ to improve their productivity with speech engines, like eSpeak. Sonic can also
|
||||||
be used by the sighted.")
|
be used by the sighted.")
|
||||||
(home-page "https://github.com/waywardgeek/sonic")
|
(home-page "https://github.com/waywardgeek/sonic")
|
||||||
(license license:asl2.0)))
|
(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 @@ to code blocks.")
|
||||||
(arguments
|
(arguments
|
||||||
`(#:tests? #f)) ;XXX: circular dependency on Sphinx
|
`(#:tests? #f)) ;XXX: circular dependency on Sphinx
|
||||||
(home-page "https://github.com/sphinx-doc/sphinxcontrib-htmlhelp")
|
(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
|
(description
|
||||||
"@code{sphinxcontrib-htmlhelp} is a Sphinx extension which renders
|
"@code{sphinxcontrib-htmlhelp} is a Sphinx extension which renders
|
||||||
HTML help files.")
|
HTML help files.")
|
||||||
|
|
|
@ -4288,7 +4288,7 @@ including:
|
||||||
@item enhanced regression diagnostic plots
|
@item enhanced regression diagnostic plots
|
||||||
@item formula-enabled interface to @code{stats::lowess} function
|
@item formula-enabled interface to @code{stats::lowess} function
|
||||||
@item displaying textual data in plots
|
@item displaying textual data in plots
|
||||||
@item baloon plots
|
@item balloon plots
|
||||||
@item plotting \"Venn\" diagrams
|
@item plotting \"Venn\" diagrams
|
||||||
@item displaying Open-Office style plots
|
@item displaying Open-Office style plots
|
||||||
@item plotting multiple data on same region, with separate axes
|
@item plotting multiple data on same region, with separate axes
|
||||||
|
|
|
@ -264,14 +264,14 @@ over the Internet in an HTTP and CDN friendly way;
|
||||||
(define-public rclone
|
(define-public rclone
|
||||||
(package
|
(package
|
||||||
(name "rclone")
|
(name "rclone")
|
||||||
(version "1.49.2")
|
(version "1.49.3")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://github.com/rclone/rclone/releases/download/"
|
(uri (string-append "https://github.com/rclone/rclone/releases/download/"
|
||||||
"v" version "/rclone-v" version ".tar.gz"))
|
"v" version "/rclone-v" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "1q8lf85hg2havb1xsal75r19ck166rh19lffpd3i43zgblc6gs8j"))))
|
(base32 "04blngspm2hzi6d37bd3v19lpcvq0wlk38a9q0a4diwfwp2ab20n"))))
|
||||||
;; FIXME: Rclone bundles some libraries Guix already provides. Need to
|
;; FIXME: Rclone bundles some libraries Guix already provides. Need to
|
||||||
;; un-bundle them.
|
;; un-bundle them.
|
||||||
(build-system go-build-system)
|
(build-system go-build-system)
|
||||||
|
|
|
@ -1219,7 +1219,7 @@ quoting, commenting, and escaping.")
|
||||||
(build-system go-build-system)
|
(build-system go-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:import-path "github.com/AudriusButkevicius/pfilter"))
|
'(#: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
|
(description "Pfilter is a Go package for filtering packets into multiple
|
||||||
virtual connections from a single physical connection.")
|
virtual connections from a single physical connection.")
|
||||||
(home-page "https://github.com/AudriusButkevicius/pfilter")
|
(home-page "https://github.com/AudriusButkevicius/pfilter")
|
||||||
|
|
|
@ -284,7 +284,7 @@ supporting cryptographic kernel.")
|
||||||
(home-page "https://www.linphone.org")
|
(home-page "https://www.linphone.org")
|
||||||
(synopsis "Utilities library for linphone software")
|
(synopsis "Utilities library for linphone software")
|
||||||
(description "BCtoolbox is a utilities library used by Belledonne
|
(description "BCtoolbox is a utilities library used by Belledonne
|
||||||
Communications softwares like linphone.")
|
Communications software like linphone.")
|
||||||
(license license:gpl2+)))
|
(license license:gpl2+)))
|
||||||
|
|
||||||
(define-public ortp
|
(define-public ortp
|
||||||
|
|
|
@ -460,7 +460,7 @@ should be thread-safe.")
|
||||||
(define-public libvterm
|
(define-public libvterm
|
||||||
(package
|
(package
|
||||||
(name "libvterm")
|
(name "libvterm")
|
||||||
(version "0.1")
|
(version "0.1.1")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -468,13 +468,12 @@ should be thread-safe.")
|
||||||
"libvterm-" version ".tar.gz"))
|
"libvterm-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1pcxjhvdwhr2f3lyzf2rv1vp3l62bgkjm1ybhj82qf8yly7ca6g4"))))
|
"1n5maylann2anfifjy576vzyar9q5m1kzpyiz2hca2pacxy8xf4v"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:make-flags
|
`(#:make-flags
|
||||||
(list "CC=gcc"
|
(list "CC=gcc"
|
||||||
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||||
#:tests? #f ; XXX: some tests fail in this release
|
|
||||||
#:test-target "test"
|
#:test-target "test"
|
||||||
#:phases
|
#:phases
|
||||||
(modify-phases %standard-phases
|
(modify-phases %standard-phases
|
||||||
|
@ -956,7 +955,7 @@ tmux.")
|
||||||
(define-public kitty
|
(define-public kitty
|
||||||
(package
|
(package
|
||||||
(name "kitty")
|
(name "kitty")
|
||||||
(version "0.14.4")
|
(version "0.14.5")
|
||||||
(home-page "https://sw.kovidgoyal.net/kitty/")
|
(home-page "https://sw.kovidgoyal.net/kitty/")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
|
@ -967,7 +966,7 @@ tmux.")
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0z0y80wcbra3zfyaiim98afbqlfpkjkql430zfb8shx61rzzmn9i"))
|
"0qx3wj4n3zgjcpd1vjjwdlz8d1vp8bkxihsg2khlla1izandgxxa"))
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
'(begin
|
'(begin
|
||||||
|
|
|
@ -2518,214 +2518,213 @@ formats.")
|
||||||
(license license:lppl)))
|
(license license:lppl)))
|
||||||
|
|
||||||
(define-public texlive-latex-base
|
(define-public texlive-latex-base
|
||||||
(package
|
(let ((template (simple-texlive-package
|
||||||
(name "texlive-latex-base")
|
"texlive-latex-base"
|
||||||
(version (number->string %texlive-revision))
|
(list "/doc/latex/base/"
|
||||||
(source (texlive-origin
|
"/source/latex/base/"
|
||||||
name version
|
;; Almost all files in /tex/latex/base are generated, but
|
||||||
(list "/doc/latex/base/"
|
;; these are not:
|
||||||
"/source/latex/base/"
|
"/tex/latex/base/idx.tex"
|
||||||
;; Almost all files in /tex/latex/base are generated, but
|
"/tex/latex/base/lablst.tex"
|
||||||
;; these are not:
|
"/tex/latex/base/lppl.tex"
|
||||||
"/tex/latex/base/idx.tex"
|
"/tex/latex/base/ltnews.cls"
|
||||||
"/tex/latex/base/lablst.tex"
|
"/tex/latex/base/ltxcheck.tex"
|
||||||
"/tex/latex/base/lppl.tex"
|
"/tex/latex/base/ltxguide.cls"
|
||||||
"/tex/latex/base/ltnews.cls"
|
"/tex/latex/base/minimal.cls"
|
||||||
"/tex/latex/base/ltxcheck.tex"
|
"/tex/latex/base/sample2e.tex"
|
||||||
"/tex/latex/base/ltxguide.cls"
|
"/tex/latex/base/small2e.tex"
|
||||||
"/tex/latex/base/minimal.cls"
|
"/tex/latex/base/source2e.tex"
|
||||||
"/tex/latex/base/sample2e.tex"
|
"/tex/latex/base/testpage.tex"
|
||||||
"/tex/latex/base/small2e.tex"
|
"/tex/latex/base/texsys.cfg")
|
||||||
"/tex/latex/base/source2e.tex"
|
(base32
|
||||||
"/tex/latex/base/testpage.tex"
|
"0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5")
|
||||||
"/tex/latex/base/texsys.cfg")
|
#:trivial? #t)))
|
||||||
(base32
|
(package
|
||||||
"0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5")))
|
(inherit template)
|
||||||
(build-system gnu-build-system)
|
(arguments
|
||||||
(arguments
|
(substitute-keyword-arguments (package-arguments template)
|
||||||
`(#:modules ((guix build gnu-build-system)
|
((#:modules modules '())
|
||||||
(guix build utils)
|
'((guix build gnu-build-system)
|
||||||
(ice-9 match)
|
(guix build utils)
|
||||||
(srfi srfi-26))
|
(ice-9 match)
|
||||||
#:tests? #f ; no tests
|
(srfi srfi-26)))
|
||||||
#:phases
|
((#:phases phases)
|
||||||
(modify-phases %standard-phases
|
`(modify-phases ,phases
|
||||||
(delete 'configure)
|
(replace 'build
|
||||||
(replace 'build
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
(lambda* (#:key inputs #:allow-other-keys)
|
;; Find required fonts
|
||||||
;; Find required fonts
|
(setenv "TFMFONTS"
|
||||||
(setenv "TFMFONTS"
|
(string-join
|
||||||
(string-join
|
(map (match-lambda
|
||||||
(map (match-lambda
|
((pkg-name . dir)
|
||||||
((pkg-name . dir)
|
(string-append
|
||||||
(string-append
|
(assoc-ref inputs pkg-name)
|
||||||
(assoc-ref inputs pkg-name)
|
"/share/texmf-dist/fonts/tfm/public"
|
||||||
"/share/texmf-dist/fonts/tfm/public"
|
dir)))
|
||||||
dir)))
|
'(("texlive-etex" . "/etex")
|
||||||
'(("texlive-etex" . "/etex")
|
("texlive-cm" . "/cm")
|
||||||
("texlive-cm" . "/cm")
|
("texlive-fonts-latex" . "/latex-fonts")
|
||||||
("texlive-fonts-latex" . "/latex-fonts")
|
("texlive-fonts-knuth-lib" . "/knuth-lib")))
|
||||||
("texlive-fonts-knuth-lib" . "/knuth-lib")))
|
":"))
|
||||||
":"))
|
(let ((cwd (getcwd)))
|
||||||
(let ((cwd (getcwd)))
|
(setenv "TEXINPUTS"
|
||||||
(setenv "TEXINPUTS"
|
(string-append
|
||||||
(string-append
|
cwd "//:"
|
||||||
cwd "//:"
|
cwd "/source/latex/base//:"
|
||||||
cwd "/source/latex/base//:"
|
cwd "/build:"
|
||||||
cwd "/build:"
|
(string-join
|
||||||
(string-join
|
(map (match-lambda ((_ . dir) dir)) inputs)
|
||||||
(map (match-lambda ((_ . dir) dir)) inputs)
|
"//:"))))
|
||||||
"//:"))))
|
|
||||||
|
|
||||||
;; This is the actual build step.
|
;; This is the actual build step.
|
||||||
(mkdir "build")
|
(mkdir "build")
|
||||||
(invoke "tex" "-ini" "-interaction=scrollmode"
|
(invoke "tex" "-ini" "-interaction=scrollmode"
|
||||||
"-output-directory=build" "unpack.ins")
|
"-output-directory=build" "unpack.ins")
|
||||||
|
|
||||||
;; XXX: We can't build all formats at this point, nor are they
|
;; XXX: We can't build all formats at this point, nor are they
|
||||||
;; part of the LaTeX base, so we disable them. Actually, we
|
;; part of the LaTeX base, so we disable them. Actually, we
|
||||||
;; should be running this all in a profile hook, so that only
|
;; should be running this all in a profile hook, so that only
|
||||||
;; selected formats and hyphenation patterns are included, but it
|
;; selected formats and hyphenation patterns are included, but it
|
||||||
;; takes long and TeX Live isn't designed to be modular like
|
;; takes long and TeX Live isn't designed to be modular like
|
||||||
;; that. Everything operates on a shared directory, which we
|
;; that. Everything operates on a shared directory, which we
|
||||||
;; would only have at profile generation time.
|
;; would only have at profile generation time.
|
||||||
(let ((disabled-formats
|
(let ((disabled-formats
|
||||||
'("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
|
'("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
|
||||||
"eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
|
"eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
|
||||||
"csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
|
"csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
|
||||||
"cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
|
"cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
|
||||||
"pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
|
"pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
|
||||||
"mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
|
"mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
|
||||||
"amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
|
"amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
|
||||||
"xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
|
"xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
|
||||||
"texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
|
"texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
|
||||||
(mkdir "web2c")
|
(mkdir "web2c")
|
||||||
(install-file (string-append
|
(install-file (string-append
|
||||||
(assoc-ref inputs "texlive-kpathsea")
|
(assoc-ref inputs "texlive-kpathsea")
|
||||||
"/share/texmf-dist/web2c/fmtutil.cnf")
|
"/share/texmf-dist/web2c/fmtutil.cnf")
|
||||||
"web2c")
|
"web2c")
|
||||||
(make-file-writable "web2c/fmtutil.cnf")
|
(make-file-writable "web2c/fmtutil.cnf")
|
||||||
(substitute* "web2c/fmtutil.cnf"
|
(substitute* "web2c/fmtutil.cnf"
|
||||||
(((string-append "^(" (string-join disabled-formats "|") ")") m)
|
(((string-append "^(" (string-join disabled-formats "|") ")") m)
|
||||||
(string-append "#! " m))))
|
(string-append "#! " m))))
|
||||||
(invoke "fmtutil-sys" "--all"
|
(invoke "fmtutil-sys" "--all"
|
||||||
"--fmtdir=web2c"
|
"--fmtdir=web2c"
|
||||||
(string-append "--cnffile=web2c/fmtutil.cnf"))
|
(string-append "--cnffile=web2c/fmtutil.cnf"))
|
||||||
;; We don't actually want to install it.
|
;; We don't actually want to install it.
|
||||||
(delete-file "web2c/fmtutil.cnf")
|
(delete-file "web2c/fmtutil.cnf")
|
||||||
#t))
|
#t))
|
||||||
(replace 'install
|
(add-after 'install 'install-more
|
||||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
(let* ((out (assoc-ref outputs "out"))
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
(root (string-append out "/share/texmf-dist"))
|
(root (string-append out "/share/texmf-dist"))
|
||||||
(target (string-append root "/tex/latex/base"))
|
(target (string-append root "/tex/latex/base"))
|
||||||
(web2c (string-append root "/web2c"))
|
(web2c (string-append root "/web2c"))
|
||||||
(makeindex (string-append root "/makeindex/latex")))
|
(makeindex (string-append root "/makeindex/latex")))
|
||||||
(for-each delete-file (find-files "." "\\.(log|aux)$"))
|
(for-each delete-file (find-files "." "\\.(log|aux)$"))
|
||||||
|
|
||||||
;; The usedir directive in docstrip.ins is ignored, so these
|
;; The usedir directive in docstrip.ins is ignored, so these
|
||||||
;; two files end up in the wrong place. Move them.
|
;; two files end up in the wrong place. Move them.
|
||||||
(mkdir-p makeindex)
|
(mkdir-p makeindex)
|
||||||
(for-each (lambda (file)
|
(for-each (lambda (file)
|
||||||
(install-file file makeindex)
|
(install-file file makeindex)
|
||||||
(delete-file file))
|
(delete-file file))
|
||||||
'("build/gglo.ist"
|
'("build/gglo.ist"
|
||||||
"build/gind.ist"))
|
"build/gind.ist"))
|
||||||
(for-each (cut install-file <> target)
|
(for-each (cut install-file <> target)
|
||||||
(find-files "build" ".*"))
|
(find-files "build" ".*"))
|
||||||
(for-each (cut install-file <> web2c)
|
(for-each (cut install-file <> web2c)
|
||||||
(find-files "web2c" ".*"))
|
(find-files "web2c" ".*"))
|
||||||
#t))))))
|
#t)))))))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("texlive-bin" ,texlive-bin)
|
`(("texlive-bin" ,texlive-bin)
|
||||||
("texlive-tex-ini-files" ,texlive-tex-ini-files)
|
("texlive-tex-ini-files" ,texlive-tex-ini-files)
|
||||||
("texlive-tex-plain" ,texlive-tex-plain)
|
("texlive-tex-plain" ,texlive-tex-plain)
|
||||||
("texlive-kpathsea" ,texlive-kpathsea)
|
("texlive-kpathsea" ,texlive-kpathsea)
|
||||||
("texlive-cm" ,texlive-cm)
|
("texlive-cm" ,texlive-cm)
|
||||||
("texlive-fonts-latex" ,texlive-fonts-latex)
|
("texlive-fonts-latex" ,texlive-fonts-latex)
|
||||||
("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib)
|
("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib)
|
||||||
("texlive-luatexconfig"
|
("texlive-luatexconfig"
|
||||||
,(texlive-origin
|
,(texlive-origin
|
||||||
"texlive-luatexconfig" (number->string %texlive-revision)
|
"texlive-luatexconfig" (number->string %texlive-revision)
|
||||||
(list "/tex/generic/config/luatex-unicode-letters.tex"
|
(list "/tex/generic/config/luatex-unicode-letters.tex"
|
||||||
"/tex/generic/config/luatexiniconfig.tex"
|
"/tex/generic/config/luatexiniconfig.tex"
|
||||||
"/web2c/texmfcnf.lua")
|
"/web2c/texmfcnf.lua")
|
||||||
(base32
|
(base32
|
||||||
"0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7")))))
|
"0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7")))))
|
||||||
(propagated-inputs
|
(propagated-inputs
|
||||||
`(("texlive-dehyph-exptl" ,texlive-dehyph-exptl)
|
`(("texlive-dehyph-exptl" ,texlive-dehyph-exptl)
|
||||||
("texlive-etex" ,texlive-etex)
|
("texlive-etex" ,texlive-etex)
|
||||||
("texlive-hyph-utf8" ,texlive-hyph-utf8)
|
("texlive-hyph-utf8" ,texlive-hyph-utf8)
|
||||||
("texlive-hyphen-base" ,texlive-hyphen-base)
|
("texlive-hyphen-base" ,texlive-hyphen-base)
|
||||||
("texlive-hyphen-afrikaans" ,texlive-hyphen-afrikaans)
|
("texlive-hyphen-afrikaans" ,texlive-hyphen-afrikaans)
|
||||||
("texlive-hyphen-ancientgreek" ,texlive-hyphen-ancientgreek)
|
("texlive-hyphen-ancientgreek" ,texlive-hyphen-ancientgreek)
|
||||||
("texlive-hyphen-armenian" ,texlive-hyphen-armenian)
|
("texlive-hyphen-armenian" ,texlive-hyphen-armenian)
|
||||||
("texlive-hyphen-basque" ,texlive-hyphen-basque)
|
("texlive-hyphen-basque" ,texlive-hyphen-basque)
|
||||||
("texlive-hyphen-belarusian" ,texlive-hyphen-belarusian)
|
("texlive-hyphen-belarusian" ,texlive-hyphen-belarusian)
|
||||||
("texlive-hyphen-bulgarian" ,texlive-hyphen-bulgarian)
|
("texlive-hyphen-bulgarian" ,texlive-hyphen-bulgarian)
|
||||||
("texlive-hyphen-catalan" ,texlive-hyphen-catalan)
|
("texlive-hyphen-catalan" ,texlive-hyphen-catalan)
|
||||||
("texlive-hyphen-chinese" ,texlive-hyphen-chinese)
|
("texlive-hyphen-chinese" ,texlive-hyphen-chinese)
|
||||||
("texlive-hyphen-churchslavonic" ,texlive-hyphen-churchslavonic)
|
("texlive-hyphen-churchslavonic" ,texlive-hyphen-churchslavonic)
|
||||||
("texlive-hyphen-coptic" ,texlive-hyphen-coptic)
|
("texlive-hyphen-coptic" ,texlive-hyphen-coptic)
|
||||||
("texlive-hyphen-croatian" ,texlive-hyphen-croatian)
|
("texlive-hyphen-croatian" ,texlive-hyphen-croatian)
|
||||||
("texlive-hyphen-czech" ,texlive-hyphen-czech)
|
("texlive-hyphen-czech" ,texlive-hyphen-czech)
|
||||||
("texlive-hyphen-danish" ,texlive-hyphen-danish)
|
("texlive-hyphen-danish" ,texlive-hyphen-danish)
|
||||||
("texlive-hyphen-dutch" ,texlive-hyphen-dutch)
|
("texlive-hyphen-dutch" ,texlive-hyphen-dutch)
|
||||||
("texlive-hyphen-english" ,texlive-hyphen-english)
|
("texlive-hyphen-english" ,texlive-hyphen-english)
|
||||||
("texlive-hyphen-esperanto" ,texlive-hyphen-esperanto)
|
("texlive-hyphen-esperanto" ,texlive-hyphen-esperanto)
|
||||||
("texlive-hyphen-estonian" ,texlive-hyphen-estonian)
|
("texlive-hyphen-estonian" ,texlive-hyphen-estonian)
|
||||||
("texlive-hyphen-ethiopic" ,texlive-hyphen-ethiopic)
|
("texlive-hyphen-ethiopic" ,texlive-hyphen-ethiopic)
|
||||||
("texlive-hyphen-finnish" ,texlive-hyphen-finnish)
|
("texlive-hyphen-finnish" ,texlive-hyphen-finnish)
|
||||||
("texlive-hyphen-french" ,texlive-hyphen-french)
|
("texlive-hyphen-french" ,texlive-hyphen-french)
|
||||||
("texlive-hyphen-friulan" ,texlive-hyphen-friulan)
|
("texlive-hyphen-friulan" ,texlive-hyphen-friulan)
|
||||||
("texlive-hyphen-galician" ,texlive-hyphen-galician)
|
("texlive-hyphen-galician" ,texlive-hyphen-galician)
|
||||||
("texlive-hyphen-georgian" ,texlive-hyphen-georgian)
|
("texlive-hyphen-georgian" ,texlive-hyphen-georgian)
|
||||||
("texlive-hyphen-german" ,texlive-hyphen-german)
|
("texlive-hyphen-german" ,texlive-hyphen-german)
|
||||||
("texlive-hyphen-greek" ,texlive-hyphen-greek)
|
("texlive-hyphen-greek" ,texlive-hyphen-greek)
|
||||||
("texlive-hyphen-hungarian" ,texlive-hyphen-hungarian)
|
("texlive-hyphen-hungarian" ,texlive-hyphen-hungarian)
|
||||||
("texlive-hyphen-icelandic" ,texlive-hyphen-icelandic)
|
("texlive-hyphen-icelandic" ,texlive-hyphen-icelandic)
|
||||||
("texlive-hyphen-indic" ,texlive-hyphen-indic)
|
("texlive-hyphen-indic" ,texlive-hyphen-indic)
|
||||||
("texlive-hyphen-indonesian" ,texlive-hyphen-indonesian)
|
("texlive-hyphen-indonesian" ,texlive-hyphen-indonesian)
|
||||||
("texlive-hyphen-interlingua" ,texlive-hyphen-interlingua)
|
("texlive-hyphen-interlingua" ,texlive-hyphen-interlingua)
|
||||||
("texlive-hyphen-irish" ,texlive-hyphen-irish)
|
("texlive-hyphen-irish" ,texlive-hyphen-irish)
|
||||||
("texlive-hyphen-italian" ,texlive-hyphen-italian)
|
("texlive-hyphen-italian" ,texlive-hyphen-italian)
|
||||||
("texlive-hyphen-kurmanji" ,texlive-hyphen-kurmanji)
|
("texlive-hyphen-kurmanji" ,texlive-hyphen-kurmanji)
|
||||||
("texlive-hyphen-latin" ,texlive-hyphen-latin)
|
("texlive-hyphen-latin" ,texlive-hyphen-latin)
|
||||||
("texlive-hyphen-latvian" ,texlive-hyphen-latvian)
|
("texlive-hyphen-latvian" ,texlive-hyphen-latvian)
|
||||||
("texlive-hyphen-lithuanian" ,texlive-hyphen-lithuanian)
|
("texlive-hyphen-lithuanian" ,texlive-hyphen-lithuanian)
|
||||||
("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian)
|
("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian)
|
||||||
("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian)
|
("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian)
|
||||||
("texlive-hyphen-occitan" ,texlive-hyphen-occitan)
|
("texlive-hyphen-occitan" ,texlive-hyphen-occitan)
|
||||||
("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese)
|
("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese)
|
||||||
("texlive-hyphen-polish" ,texlive-hyphen-polish)
|
("texlive-hyphen-polish" ,texlive-hyphen-polish)
|
||||||
("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese)
|
("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese)
|
||||||
("texlive-hyphen-romanian" ,texlive-hyphen-romanian)
|
("texlive-hyphen-romanian" ,texlive-hyphen-romanian)
|
||||||
("texlive-hyphen-romansh" ,texlive-hyphen-romansh)
|
("texlive-hyphen-romansh" ,texlive-hyphen-romansh)
|
||||||
("texlive-hyphen-russian" ,texlive-hyphen-russian)
|
("texlive-hyphen-russian" ,texlive-hyphen-russian)
|
||||||
("texlive-hyphen-sanskrit" ,texlive-hyphen-sanskrit)
|
("texlive-hyphen-sanskrit" ,texlive-hyphen-sanskrit)
|
||||||
("texlive-hyphen-serbian" ,texlive-hyphen-serbian)
|
("texlive-hyphen-serbian" ,texlive-hyphen-serbian)
|
||||||
("texlive-hyphen-slovak" ,texlive-hyphen-slovak)
|
("texlive-hyphen-slovak" ,texlive-hyphen-slovak)
|
||||||
("texlive-hyphen-slovenian" ,texlive-hyphen-slovenian)
|
("texlive-hyphen-slovenian" ,texlive-hyphen-slovenian)
|
||||||
("texlive-hyphen-spanish" ,texlive-hyphen-spanish)
|
("texlive-hyphen-spanish" ,texlive-hyphen-spanish)
|
||||||
("texlive-hyphen-swedish" ,texlive-hyphen-swedish)
|
("texlive-hyphen-swedish" ,texlive-hyphen-swedish)
|
||||||
("texlive-hyphen-thai" ,texlive-hyphen-thai)
|
("texlive-hyphen-thai" ,texlive-hyphen-thai)
|
||||||
("texlive-hyphen-turkish" ,texlive-hyphen-turkish)
|
("texlive-hyphen-turkish" ,texlive-hyphen-turkish)
|
||||||
("texlive-hyphen-turkmen" ,texlive-hyphen-turkmen)
|
("texlive-hyphen-turkmen" ,texlive-hyphen-turkmen)
|
||||||
("texlive-hyphen-ukrainian" ,texlive-hyphen-ukrainian)
|
("texlive-hyphen-ukrainian" ,texlive-hyphen-ukrainian)
|
||||||
("texlive-hyphen-uppersorbian" ,texlive-hyphen-uppersorbian)
|
("texlive-hyphen-uppersorbian" ,texlive-hyphen-uppersorbian)
|
||||||
("texlive-hyphen-welsh" ,texlive-hyphen-welsh)
|
("texlive-hyphen-welsh" ,texlive-hyphen-welsh)
|
||||||
("texlive-unicode-data" ,texlive-unicode-data)
|
("texlive-unicode-data" ,texlive-unicode-data)
|
||||||
("texlive-ukrhyph" ,texlive-ukrhyph)
|
("texlive-ukrhyph" ,texlive-ukrhyph)
|
||||||
("texlive-ruhyphen" ,texlive-ruhyphen)
|
("texlive-ruhyphen" ,texlive-ruhyphen)
|
||||||
("texlive-latexconfig" ,texlive-latexconfig)))
|
("texlive-latexconfig" ,texlive-latexconfig)))
|
||||||
(home-page "https://www.ctan.org/pkg/latex-base")
|
(home-page "https://www.ctan.org/pkg/latex-base")
|
||||||
(synopsis "Base sources of LaTeX")
|
(synopsis "Base sources of LaTeX")
|
||||||
(description
|
(description
|
||||||
"This bundle comprises the source of LaTeX itself, together with several
|
"This bundle comprises the source of LaTeX itself, together with several
|
||||||
packages which are considered \"part of the kernel\". This bundle, together
|
packages which are considered \"part of the kernel\". This bundle, together
|
||||||
with the required packages, constitutes what every LaTeX distribution should
|
with the required packages, constitutes what every LaTeX distribution should
|
||||||
contain.")
|
contain.")
|
||||||
(license license:lppl1.3c+)))
|
(license license:lppl1.3c+))))
|
||||||
|
|
||||||
(define-public texlive-latex-filecontents
|
(define-public texlive-latex-filecontents
|
||||||
(package
|
(package
|
||||||
|
@ -3578,7 +3577,10 @@ standard LaTeX packages."
|
||||||
;; the updmap.cfg file)
|
;; the updmap.cfg file)
|
||||||
(match (filter (match-lambda
|
(match (filter (match-lambda
|
||||||
((name . _)
|
((name . _)
|
||||||
(not (member name '("bash" "updmap.cfg")))))
|
(not (member name '("bash"
|
||||||
|
"coreutils"
|
||||||
|
"sed"
|
||||||
|
"updmap.cfg")))))
|
||||||
%build-inputs)
|
%build-inputs)
|
||||||
(((names . directories) ...)
|
(((names . directories) ...)
|
||||||
(union-build (assoc-ref %outputs "out")
|
(union-build (assoc-ref %outputs "out")
|
||||||
|
@ -3598,6 +3600,7 @@ standard LaTeX packages."
|
||||||
(setenv "PATH" (string-append
|
(setenv "PATH" (string-append
|
||||||
(assoc-ref %build-inputs "bash") "/bin:"
|
(assoc-ref %build-inputs "bash") "/bin:"
|
||||||
(assoc-ref %build-inputs "coreutils") "/bin:"
|
(assoc-ref %build-inputs "coreutils") "/bin:"
|
||||||
|
(assoc-ref %build-inputs "sed") "/bin:"
|
||||||
(string-append out "/bin")))
|
(string-append out "/bin")))
|
||||||
(for-each
|
(for-each
|
||||||
(cut wrap-program <>
|
(cut wrap-program <>
|
||||||
|
@ -3606,16 +3609,32 @@ standard LaTeX packages."
|
||||||
(find-files (string-append out "/bin") ".*"))
|
(find-files (string-append out "/bin") ".*"))
|
||||||
|
|
||||||
;; Remove invalid maps from config file.
|
;; Remove invalid maps from config file.
|
||||||
(let ((port (open-pipe* OPEN_WRITE "updmap-sys"
|
(let ((web2c (string-append out "/share/texmf-config/web2c/"))
|
||||||
"--syncwithtrees"
|
(maproot (string-append out "/share/texmf-dist/fonts/map/")))
|
||||||
"--nohash"
|
(mkdir-p web2c)
|
||||||
(assoc-ref %build-inputs "updmap.cfg"))))
|
(copy-file
|
||||||
(display "Y\n" port)
|
(assoc-ref %build-inputs "updmap.cfg")
|
||||||
(when (not (zero? (status:exit-val (close-pipe port))))
|
(string-append web2c "updmap.cfg"))
|
||||||
(error "failed to filter updmap.cfg")))
|
(make-file-writable (string-append web2c "updmap.cfg"))
|
||||||
;; Generate maps.
|
|
||||||
(invoke "updmap-sys" "--force"
|
(let* ((port (open-pipe* OPEN_WRITE "updmap-sys"
|
||||||
(string-append out "/share/texmf-config/web2c/updmap.cfg"))
|
"--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))))
|
#t))))
|
||||||
(inputs
|
(inputs
|
||||||
`(("bash" ,bash)
|
`(("bash" ,bash)
|
||||||
|
|
|
@ -607,7 +607,7 @@ The basic features of Geany are:
|
||||||
arbitrary text regions; it is not bound to syntactic units.
|
arbitrary text regions; it is not bound to syntactic units.
|
||||||
|
|
||||||
Fe has no configuration or extension language and requires no setup.
|
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
|
important functions to help beginners. Further there is a reference
|
||||||
card. It offers:
|
card. It offers:
|
||||||
|
|
||||||
|
|
|
@ -50,14 +50,14 @@
|
||||||
(define-public tor
|
(define-public tor
|
||||||
(package
|
(package
|
||||||
(name "tor")
|
(name "tor")
|
||||||
(version "0.4.1.5")
|
(version "0.4.1.6")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://dist.torproject.org/tor-"
|
(uri (string-append "https://dist.torproject.org/tor-"
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0984jb6hdcc10f7aq8xzl7l4jf93skp45wkv2v63z4zv0nvf0r58"))))
|
"0wgdid8w7srd218hh4rwslzdx2ickxw1pg18p2wry1r6wi65521a"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)
|
`(("pkg-config" ,pkg-config)
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
(install-file (string-append files "/COPYING") license-dir)))))
|
(install-file (string-append files "/COPYING") license-dir)))))
|
||||||
(home-page "http://www.draisberghof.de/usb_modeswitch/")
|
(home-page "http://www.draisberghof.de/usb_modeswitch/")
|
||||||
(synopsis "Data package for 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.")
|
file for use with USB_ModeSwitch.")
|
||||||
(license license:gpl2+)))
|
(license license:gpl2+)))
|
||||||
|
|
||||||
|
|
|
@ -1495,8 +1495,8 @@ access to mpv's powerful playback capabilities.")
|
||||||
(version "2019.09.12")
|
(version "2019.09.12")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://github.com/rg3/youtube-dl/releases/"
|
(uri (string-append "https://github.com/ytdl-org/youtube-dl/"
|
||||||
"download/" version "/youtube-dl-"
|
"releases/download/" version "/youtube-dl-"
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
|
@ -2297,7 +2297,7 @@ be used for realtime video capture via Linux-specific APIs.")
|
||||||
(define-public obs
|
(define-public obs
|
||||||
(package
|
(package
|
||||||
(name "obs")
|
(name "obs")
|
||||||
(version "23.0.2")
|
(version "24.0.1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
(uri (git-reference
|
(uri (git-reference
|
||||||
|
@ -2306,7 +2306,7 @@ be used for realtime video capture via Linux-specific APIs.")
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1c0a5vy4h3qwz69qw3bydyk7r651ib5a9jna4yj6c25p3p9isdvp"))))
|
"056s0hs1ds3c57sc0gy39dxaxvwlakl3w25jxgawh0fs99211ar5"))))
|
||||||
(build-system cmake-build-system)
|
(build-system cmake-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:tests? #f)) ; no tests
|
`(#:tests? #f)) ; no tests
|
||||||
|
@ -2326,6 +2326,7 @@ be used for realtime video capture via Linux-specific APIs.")
|
||||||
("mesa" ,mesa)
|
("mesa" ,mesa)
|
||||||
("pulseaudio" ,pulseaudio)
|
("pulseaudio" ,pulseaudio)
|
||||||
("qtbase" ,qtbase)
|
("qtbase" ,qtbase)
|
||||||
|
("qtsvg" ,qtsvg)
|
||||||
("qtx11extras" ,qtx11extras)
|
("qtx11extras" ,qtx11extras)
|
||||||
("speex" ,speex)
|
("speex" ,speex)
|
||||||
("v4l-utils" ,v4l-utils)
|
("v4l-utils" ,v4l-utils)
|
||||||
|
|
|
@ -368,7 +368,7 @@ driven and does not detract you from your daily work.")
|
||||||
(define next-gtk-webkit
|
(define next-gtk-webkit
|
||||||
(package
|
(package
|
||||||
(name "next-gtk-webkit")
|
(name "next-gtk-webkit")
|
||||||
(version "1.3.1")
|
(version "1.3.2")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
|
@ -379,7 +379,7 @@ driven and does not detract you from your daily work.")
|
||||||
(commit version)))
|
(commit version)))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"01fn1f080ydk0wj1bwkyakqz93bdq9xb5x8qz820jpl9id17bqgj"))
|
"0863p6ch4pdrn6b81cx2abis0ld7r2n6x34v3z0ihj3jlfj21yx4"))
|
||||||
(file-name (git-file-name "next" version))))
|
(file-name (git-file-name "next" version))))
|
||||||
(build-system glib-or-gtk-build-system)
|
(build-system glib-or-gtk-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
|
@ -417,19 +417,31 @@ features for productive professionals.")
|
||||||
#:asd-file "next.asd"
|
#:asd-file "next.asd"
|
||||||
#:asd-system-name "next/download-manager"))
|
#:asd-system-name "next/download-manager"))
|
||||||
(inputs
|
(inputs
|
||||||
`(;; ASD libraries:
|
`(("cl-ppcre" ,sbcl-cl-ppcre)
|
||||||
("trivial-features" ,sbcl-trivial-features)
|
|
||||||
;; Lisp libraries:
|
|
||||||
("cl-ppcre" ,sbcl-cl-ppcre)
|
|
||||||
("dexador" ,sbcl-dexador)
|
("dexador" ,sbcl-dexador)
|
||||||
("log4cl" ,sbcl-log4cl)
|
("log4cl" ,sbcl-log4cl)
|
||||||
("lparallel" ,sbcl-lparallel)
|
("lparallel" ,sbcl-lparallel)
|
||||||
("quri" ,sbcl-quri)
|
("quri" ,sbcl-quri)
|
||||||
("str" ,sbcl-cl-str)))
|
("str" ,sbcl-cl-str)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("prove-asdf" ,sbcl-prove-asdf)))
|
`(("trivial-features" ,sbcl-trivial-features)
|
||||||
|
("prove-asdf" ,sbcl-prove-asdf)))
|
||||||
(synopsis "Infinitely extensible web-browser (download manager)")))
|
(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
|
(define-public next
|
||||||
(let ((version (package-version next-gtk-webkit)))
|
(let ((version (package-version next-gtk-webkit)))
|
||||||
(package
|
(package
|
||||||
|
@ -491,14 +503,11 @@ features for productive professionals.")
|
||||||
(string-append "PREFIX="
|
(string-append "PREFIX="
|
||||||
(assoc-ref outputs "out"))))))))
|
(assoc-ref outputs "out"))))))))
|
||||||
(inputs
|
(inputs
|
||||||
`(("next-gtk-webkit" ,next-gtk-webkit)
|
`(("alexandria" ,sbcl-alexandria)
|
||||||
;; ASD libraries:
|
|
||||||
("trivial-features" ,sbcl-trivial-features)
|
|
||||||
("trivial-garbage" ,sbcl-trivial-garbage)
|
|
||||||
;; Lisp libraries:
|
|
||||||
("alexandria" ,sbcl-alexandria)
|
|
||||||
("bordeaux-threads" ,sbcl-bordeaux-threads)
|
("bordeaux-threads" ,sbcl-bordeaux-threads)
|
||||||
|
("cl-annot" ,sbcl-cl-annot)
|
||||||
("cl-css" ,sbcl-cl-css)
|
("cl-css" ,sbcl-cl-css)
|
||||||
|
("cl-hooks" ,sbcl-cl-hooks)
|
||||||
("cl-json" ,sbcl-cl-json)
|
("cl-json" ,sbcl-cl-json)
|
||||||
("cl-markup" ,sbcl-cl-markup)
|
("cl-markup" ,sbcl-cl-markup)
|
||||||
("cl-ppcre" ,sbcl-cl-ppcre)
|
("cl-ppcre" ,sbcl-cl-ppcre)
|
||||||
|
@ -507,6 +516,7 @@ features for productive professionals.")
|
||||||
("dbus" ,cl-dbus)
|
("dbus" ,cl-dbus)
|
||||||
("dexador" ,sbcl-dexador)
|
("dexador" ,sbcl-dexador)
|
||||||
("ironclad" ,sbcl-ironclad)
|
("ironclad" ,sbcl-ironclad)
|
||||||
|
("local-time" ,sbcl-local-time)
|
||||||
("log4cl" ,sbcl-log4cl)
|
("log4cl" ,sbcl-log4cl)
|
||||||
("lparallel" ,sbcl-lparallel)
|
("lparallel" ,sbcl-lparallel)
|
||||||
("mk-string-metrics" ,sbcl-mk-string-metrics)
|
("mk-string-metrics" ,sbcl-mk-string-metrics)
|
||||||
|
@ -519,9 +529,12 @@ features for productive professionals.")
|
||||||
("trivial-clipboard" ,sbcl-trivial-clipboard)
|
("trivial-clipboard" ,sbcl-trivial-clipboard)
|
||||||
("unix-opts" ,sbcl-unix-opts)
|
("unix-opts" ,sbcl-unix-opts)
|
||||||
;; Local deps
|
;; 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
|
(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)"))))
|
(synopsis "Infinitely extensible web-browser (with Lisp development files)"))))
|
||||||
|
|
||||||
(define-public sbcl-next
|
(define-public sbcl-next
|
||||||
|
|
|
@ -123,6 +123,7 @@
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages qt)
|
#:use-module (gnu packages qt)
|
||||||
#:use-module (gnu packages readline)
|
#:use-module (gnu packages readline)
|
||||||
|
#:use-module (gnu packages re2c)
|
||||||
#:use-module (gnu packages sphinx)
|
#:use-module (gnu packages sphinx)
|
||||||
#:use-module (gnu packages texinfo)
|
#:use-module (gnu packages texinfo)
|
||||||
#:use-module (gnu packages textutils)
|
#:use-module (gnu packages textutils)
|
||||||
|
@ -860,6 +861,45 @@ for efficient socket-like bidirectional reliable communication channels.")
|
||||||
;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
|
;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
|
||||||
(license license:lgpl2.1)))
|
(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
|
(define-public websocketpp
|
||||||
(package
|
(package
|
||||||
(name "websocketpp")
|
(name "websocketpp")
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
|
;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
|
||||||
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
|
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
|
||||||
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
|
;;; 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 Leo Famulari <leo@famulari.name>
|
||||||
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
|
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
|
||||||
;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.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 Rutger Helling <rhelling@mykolab.com>
|
||||||
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||||
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
|
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
|
||||||
|
;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -1687,16 +1688,16 @@ temperature of the screen.")
|
||||||
(define-public wl-clipboard
|
(define-public wl-clipboard
|
||||||
(package
|
(package
|
||||||
(name "wl-clipboard")
|
(name "wl-clipboard")
|
||||||
(version "1.0.0")
|
(version "2.0.0_beta2")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
(uri (git-reference
|
(uri (git-reference
|
||||||
(url "https://github.com/bugaevc/wl-clipboard.git")
|
(url "https://github.com/bugaevc/wl-clipboard.git")
|
||||||
(commit (string-append "v" version))))
|
(commit version)))
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "03h6ajcc30w6928bkd4h6xfj4iy2359ww6hdlybq8mr1zwmb2h0q"))))
|
(base32 "0wyqbaph9v1v6lwfcjf8gjhdl70icpss4wapshzfxcz3l9m1p8hv"))))
|
||||||
(build-system meson-build-system)
|
(build-system meson-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)))
|
`(("pkg-config" ,pkg-config)))
|
||||||
|
@ -1708,3 +1709,28 @@ temperature of the screen.")
|
||||||
(description "Wl-clipboard is a set of command-line copy/paste utilities for
|
(description "Wl-clipboard is a set of command-line copy/paste utilities for
|
||||||
Wayland.")
|
Wayland.")
|
||||||
(license license:gpl3+)))
|
(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 @@ maintaining each reference encountered.")
|
||||||
"This module provides an XPath engine, that can be re-used by other
|
"This module provides an XPath engine, that can be re-used by other
|
||||||
modules/classes that implement trees.
|
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
|
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
|
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
|
should be able to use this module very easily (you might need to add the
|
||||||
|
|
|
@ -81,70 +81,68 @@
|
||||||
|
|
||||||
(define (cuirass-shepherd-service config)
|
(define (cuirass-shepherd-service config)
|
||||||
"Return a <shepherd-service> for the Cuirass service with CONFIG."
|
"Return a <shepherd-service> for the Cuirass service with CONFIG."
|
||||||
(and
|
(let ((cuirass (cuirass-configuration-cuirass config))
|
||||||
(cuirass-configuration? config)
|
(cache-directory (cuirass-configuration-cache-directory config))
|
||||||
(let ((cuirass (cuirass-configuration-cuirass config))
|
(web-log-file (cuirass-configuration-web-log-file config))
|
||||||
(cache-directory (cuirass-configuration-cache-directory config))
|
(log-file (cuirass-configuration-log-file config))
|
||||||
(web-log-file (cuirass-configuration-web-log-file config))
|
(user (cuirass-configuration-user config))
|
||||||
(log-file (cuirass-configuration-log-file config))
|
(group (cuirass-configuration-group config))
|
||||||
(user (cuirass-configuration-user config))
|
(interval (cuirass-configuration-interval config))
|
||||||
(group (cuirass-configuration-group config))
|
(database (cuirass-configuration-database config))
|
||||||
(interval (cuirass-configuration-interval config))
|
(ttl (cuirass-configuration-ttl config))
|
||||||
(database (cuirass-configuration-database config))
|
(port (cuirass-configuration-port config))
|
||||||
(ttl (cuirass-configuration-ttl config))
|
(host (cuirass-configuration-host config))
|
||||||
(port (cuirass-configuration-port config))
|
(specs (cuirass-configuration-specifications config))
|
||||||
(host (cuirass-configuration-host config))
|
(use-substitutes? (cuirass-configuration-use-substitutes? config))
|
||||||
(specs (cuirass-configuration-specifications config))
|
(one-shot? (cuirass-configuration-one-shot? config))
|
||||||
(use-substitutes? (cuirass-configuration-use-substitutes? config))
|
(fallback? (cuirass-configuration-fallback? config)))
|
||||||
(one-shot? (cuirass-configuration-one-shot? config))
|
(list (shepherd-service
|
||||||
(fallback? (cuirass-configuration-fallback? config)))
|
(documentation "Run Cuirass.")
|
||||||
(list (shepherd-service
|
(provision '(cuirass))
|
||||||
(documentation "Run Cuirass.")
|
(requirement '(guix-daemon networking))
|
||||||
(provision '(cuirass))
|
(start #~(make-forkexec-constructor
|
||||||
(requirement '(guix-daemon networking))
|
(list (string-append #$cuirass "/bin/cuirass")
|
||||||
(start #~(make-forkexec-constructor
|
"--cache-directory" #$cache-directory
|
||||||
(list (string-append #$cuirass "/bin/cuirass")
|
"--specifications"
|
||||||
"--cache-directory" #$cache-directory
|
#$(scheme-file "cuirass-specs.scm" specs)
|
||||||
"--specifications"
|
"--database" #$database
|
||||||
#$(scheme-file "cuirass-specs.scm" specs)
|
"--ttl" #$(string-append (number->string ttl) "s")
|
||||||
"--database" #$database
|
"--interval" #$(number->string interval)
|
||||||
"--ttl" #$(string-append (number->string ttl) "s")
|
#$@(if use-substitutes? '("--use-substitutes") '())
|
||||||
"--interval" #$(number->string interval)
|
#$@(if one-shot? '("--one-shot") '())
|
||||||
#$@(if use-substitutes? '("--use-substitutes") '())
|
#$@(if fallback? '("--fallback") '()))
|
||||||
#$@(if one-shot? '("--one-shot") '())
|
|
||||||
#$@(if fallback? '("--fallback") '()))
|
|
||||||
|
|
||||||
#:environment-variables
|
#:environment-variables
|
||||||
(list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
|
(list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
|
||||||
(string-append "GIT_EXEC_PATH=" #$git
|
(string-append "GIT_EXEC_PATH=" #$git
|
||||||
"/libexec/git-core"))
|
"/libexec/git-core"))
|
||||||
|
|
||||||
#:user #$user
|
#:user #$user
|
||||||
#:group #$group
|
#:group #$group
|
||||||
#:log-file #$log-file))
|
#:log-file #$log-file))
|
||||||
(stop #~(make-kill-destructor)))
|
(stop #~(make-kill-destructor)))
|
||||||
(shepherd-service
|
(shepherd-service
|
||||||
(documentation "Run Cuirass web interface.")
|
(documentation "Run Cuirass web interface.")
|
||||||
(provision '(cuirass-web))
|
(provision '(cuirass-web))
|
||||||
(requirement '(guix-daemon networking))
|
(requirement '(guix-daemon networking))
|
||||||
(start #~(make-forkexec-constructor
|
(start #~(make-forkexec-constructor
|
||||||
(list (string-append #$cuirass "/bin/cuirass")
|
(list (string-append #$cuirass "/bin/cuirass")
|
||||||
"--cache-directory" #$cache-directory
|
"--cache-directory" #$cache-directory
|
||||||
"--specifications"
|
"--specifications"
|
||||||
#$(scheme-file "cuirass-specs.scm" specs)
|
#$(scheme-file "cuirass-specs.scm" specs)
|
||||||
"--database" #$database
|
"--database" #$database
|
||||||
"--ttl" #$(string-append (number->string ttl) "s")
|
"--ttl" #$(string-append (number->string ttl) "s")
|
||||||
"--web"
|
"--web"
|
||||||
"--port" #$(number->string port)
|
"--port" #$(number->string port)
|
||||||
"--listen" #$host
|
"--listen" #$host
|
||||||
"--interval" #$(number->string interval)
|
"--interval" #$(number->string interval)
|
||||||
#$@(if use-substitutes? '("--use-substitutes") '())
|
#$@(if use-substitutes? '("--use-substitutes") '())
|
||||||
#$@(if fallback? '("--fallback") '()))
|
#$@(if fallback? '("--fallback") '()))
|
||||||
|
|
||||||
#:user #$user
|
#:user #$user
|
||||||
#:group #$group
|
#:group #$group
|
||||||
#:log-file #$web-log-file))
|
#:log-file #$web-log-file))
|
||||||
(stop #~(make-kill-destructor)))))))
|
(stop #~(make-kill-destructor))))))
|
||||||
|
|
||||||
(define (cuirass-account config)
|
(define (cuirass-account config)
|
||||||
"Return the user accounts and user groups for CONFIG."
|
"Return the user accounts and user groups for CONFIG."
|
||||||
|
|
|
@ -137,7 +137,7 @@
|
||||||
(define (free-form-fields? val)
|
(define (free-form-fields? val)
|
||||||
(match val
|
(match val
|
||||||
(() #t)
|
(() #t)
|
||||||
((((? symbol?) . (? string)) . val) (free-form-fields? val))
|
((((? symbol?) . (? string?)) . val) (free-form-fields? val))
|
||||||
(_ #f)))
|
(_ #f)))
|
||||||
(define (serialize-free-form-fields field-name val)
|
(define (serialize-free-form-fields field-name val)
|
||||||
(for-each (match-lambda ((k . v) (serialize-field k v))) val))
|
(for-each (match-lambda ((k . v) (serialize-field k v))) val))
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
(define (free-form-args? val)
|
(define (free-form-args? val)
|
||||||
(match val
|
(match val
|
||||||
(() #t)
|
(() #t)
|
||||||
((((? symbol?) . (? string)) . val) (free-form-args? val))
|
((((? symbol?) . (? string?)) . val) (free-form-args? val))
|
||||||
(_ #f)))
|
(_ #f)))
|
||||||
(define (serialize-free-form-args field-name val)
|
(define (serialize-free-form-args field-name val)
|
||||||
(serialize-field field-name
|
(serialize-field field-name
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||||
;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
|
;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||||
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
|
;;; Copyright © 2019 Sou Bunnbu <iyzsong@member.fsf.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -144,7 +145,14 @@
|
||||||
iptables-configuration-iptables
|
iptables-configuration-iptables
|
||||||
iptables-configuration-ipv4-rules
|
iptables-configuration-ipv4-rules
|
||||||
iptables-configuration-ipv6-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:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -1415,4 +1423,76 @@ COMMIT
|
||||||
(list (service-extension shepherd-root-service-type
|
(list (service-extension shepherd-root-service-type
|
||||||
(compose list iptables-shepherd-service))))))
|
(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
|
;;; networking.scm ends here
|
||||||
|
|
|
@ -313,7 +313,7 @@ be logged:
|
||||||
Multiple filters can be defined in a single filters statement, they just
|
Multiple filters can be defined in a single filters statement, they just
|
||||||
need to be separated by spaces.")
|
need to be separated by spaces.")
|
||||||
(log-outputs
|
(log-outputs
|
||||||
(string "3:stderr")
|
(string "3:syslog:libvirtd")
|
||||||
"Logging outputs.
|
"Logging outputs.
|
||||||
|
|
||||||
An output is one of the places to save logging information
|
An output is one of the places to save logging information
|
||||||
|
|
|
@ -773,6 +773,27 @@ the GNOME desktop environment.")
|
||||||
(home-directory "/var/lib/gdm")
|
(home-directory "/var/lib/gdm")
|
||||||
(shell (file-append shadow "/sbin/nologin")))))
|
(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
|
(define dbus-daemon-wrapper
|
||||||
(program-file
|
(program-file
|
||||||
"gdm-dbus-wrapper"
|
"gdm-dbus-wrapper"
|
||||||
|
@ -915,6 +936,8 @@ the GNOME desktop environment.")
|
||||||
(extensions
|
(extensions
|
||||||
(list (service-extension shepherd-root-service-type
|
(list (service-extension shepherd-root-service-type
|
||||||
gdm-shepherd-service)
|
gdm-shepherd-service)
|
||||||
|
(service-extension activation-service-type
|
||||||
|
(const %gdm-activation))
|
||||||
(service-extension account-service-type
|
(service-extension account-service-type
|
||||||
(const %gdm-accounts))
|
(const %gdm-accounts))
|
||||||
(service-extension pam-root-service-type
|
(service-extension pam-root-service-type
|
||||||
|
|
|
@ -257,11 +257,13 @@ effects."
|
||||||
(lowered-gexp-guile lowered))
|
(lowered-gexp-guile lowered))
|
||||||
"/bin/guile")
|
"/bin/guile")
|
||||||
"guile"
|
"guile"
|
||||||
(append (map (lambda (directory) `("-L" ,directory))
|
(append (append-map (lambda (directory)
|
||||||
(lowered-gexp-load-path lowered))
|
`("-L" ,directory))
|
||||||
(map (lambda (directory) `("-C" ,directory))
|
(lowered-gexp-load-path lowered))
|
||||||
(lowered-gexp-load-compiled-path
|
(append-map (lambda (directory)
|
||||||
lowered))
|
`("-C" ,directory))
|
||||||
|
(lowered-gexp-load-compiled-path
|
||||||
|
lowered))
|
||||||
(list "-c"
|
(list "-c"
|
||||||
(object->string
|
(object->string
|
||||||
(lowered-gexp-sexp lowered))))))))))))
|
(lowered-gexp-sexp lowered))))))))))))
|
||||||
|
|
|
@ -87,8 +87,7 @@
|
||||||
(requirement `(udev ,@requirement))
|
(requirement `(udev ,@requirement))
|
||||||
|
|
||||||
(modules '((ice-9 match)
|
(modules '((ice-9 match)
|
||||||
(srfi srfi-9 gnu)
|
(srfi srfi-9 gnu)))
|
||||||
(rnrs bytevectors)))
|
|
||||||
(start
|
(start
|
||||||
(with-imported-modules imported-modules
|
(with-imported-modules imported-modules
|
||||||
#~(lambda ()
|
#~(lambda ()
|
||||||
|
@ -98,8 +97,8 @@
|
||||||
((_ pred rest ...)
|
((_ pred rest ...)
|
||||||
(or (pred x)
|
(or (pred x)
|
||||||
(one-of rest ...))))))
|
(one-of rest ...))))))
|
||||||
(one-of symbol? string? pair? null? vector?
|
(one-of symbol? string? keyword? pair? null? array?
|
||||||
bytevector? number? boolean?)))
|
number? boolean?)))
|
||||||
|
|
||||||
(match (primitive-fork)
|
(match (primitive-fork)
|
||||||
(0
|
(0
|
||||||
|
|
|
@ -128,7 +128,7 @@ is #f."
|
||||||
(define* (install #:key inputs outputs (gem-flags '())
|
(define* (install #:key inputs outputs (gem-flags '())
|
||||||
#:allow-other-keys)
|
#:allow-other-keys)
|
||||||
"Install the gem archive SOURCE to the output store item. Additional
|
"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
|
(let* ((ruby-version
|
||||||
(match:substring (string-match "ruby-(.*)\\.[0-9]$"
|
(match:substring (string-match "ruby-(.*)\\.[0-9]$"
|
||||||
(assoc-ref inputs "ruby"))
|
(assoc-ref inputs "ruby"))
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
(define-module (guix channels)
|
(define-module (guix channels)
|
||||||
|
#:use-module (git)
|
||||||
#:use-module (guix git)
|
#:use-module (guix git)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
|
@ -29,6 +30,7 @@
|
||||||
#:use-module (guix derivations)
|
#:use-module (guix derivations)
|
||||||
#:use-module (guix combinators)
|
#:use-module (guix combinators)
|
||||||
#:use-module (guix diagnostics)
|
#:use-module (guix diagnostics)
|
||||||
|
#:use-module (guix sets)
|
||||||
#:use-module (guix store)
|
#:use-module (guix store)
|
||||||
#:use-module (guix i18n)
|
#:use-module (guix i18n)
|
||||||
#:use-module ((guix utils)
|
#:use-module ((guix utils)
|
||||||
|
@ -38,6 +40,7 @@
|
||||||
#:use-module (srfi srfi-2)
|
#:use-module (srfi srfi-2)
|
||||||
#:use-module (srfi srfi-9)
|
#:use-module (srfi srfi-9)
|
||||||
#:use-module (srfi srfi-11)
|
#:use-module (srfi srfi-11)
|
||||||
|
#:use-module (srfi srfi-26)
|
||||||
#:use-module (srfi srfi-34)
|
#:use-module (srfi srfi-34)
|
||||||
#:use-module (srfi srfi-35)
|
#:use-module (srfi srfi-35)
|
||||||
#:autoload (guix self) (whole-package make-config.scm)
|
#:autoload (guix self) (whole-package make-config.scm)
|
||||||
|
@ -67,7 +70,15 @@
|
||||||
%channel-profile-hooks
|
%channel-profile-hooks
|
||||||
channel-instances->derivation
|
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:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -110,10 +121,11 @@
|
||||||
(checkout channel-instance-checkout))
|
(checkout channel-instance-checkout))
|
||||||
|
|
||||||
(define-record-type <channel-metadata>
|
(define-record-type <channel-metadata>
|
||||||
(channel-metadata directory dependencies)
|
(channel-metadata directory dependencies news-file)
|
||||||
channel-metadata?
|
channel-metadata?
|
||||||
(directory channel-metadata-directory) ;string with leading slash
|
(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)
|
(define (channel-reference channel)
|
||||||
"Return the \"reference\" for CHANNEL, an sexp suitable for
|
"Return the \"reference\" for CHANNEL, an sexp suitable for
|
||||||
|
@ -129,12 +141,13 @@ if valid metadata could not be read from PORT."
|
||||||
(match (read port)
|
(match (read port)
|
||||||
(('channel ('version 0) properties ...)
|
(('channel ('version 0) properties ...)
|
||||||
(let ((directory (and=> (assoc-ref properties 'directory) first))
|
(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
|
(channel-metadata
|
||||||
(cond ((not directory) "/")
|
(cond ((not directory) "/") ;directory
|
||||||
((string-prefix? "/" directory) directory)
|
((string-prefix? "/" directory) directory)
|
||||||
(else (string-append "/" directory)))
|
(else (string-append "/" directory)))
|
||||||
(map (lambda (item)
|
(map (lambda (item) ;dependencies
|
||||||
(let ((get (lambda* (key #:optional default)
|
(let ((get (lambda* (key #:optional default)
|
||||||
(or (and=> (assoc-ref item key) first) default))))
|
(or (and=> (assoc-ref item key) first) default))))
|
||||||
(and-let* ((name (get 'name))
|
(and-let* ((name (get 'name))
|
||||||
|
@ -145,7 +158,8 @@ if valid metadata could not be read from PORT."
|
||||||
(branch branch)
|
(branch branch)
|
||||||
(url url)
|
(url url)
|
||||||
(commit (get 'commit))))))
|
(commit (get 'commit))))))
|
||||||
dependencies))))
|
dependencies)
|
||||||
|
news-file))) ;news-file
|
||||||
((and ('channel ('version version) _ ...) sexp)
|
((and ('channel ('version version) _ ...) sexp)
|
||||||
(raise (condition
|
(raise (condition
|
||||||
(&message (message "unsupported '.guix-channel' version"))
|
(&message (message "unsupported '.guix-channel' version"))
|
||||||
|
@ -169,7 +183,7 @@ doesn't exist."
|
||||||
read-channel-metadata))
|
read-channel-metadata))
|
||||||
(lambda args
|
(lambda args
|
||||||
(if (= ENOENT (system-error-errno args))
|
(if (= ENOENT (system-error-errno args))
|
||||||
(channel-metadata "/" '())
|
(channel-metadata "/" '() #f)
|
||||||
(apply throw args)))))
|
(apply throw args)))))
|
||||||
|
|
||||||
(define (channel-instance-metadata instance)
|
(define (channel-instance-metadata instance)
|
||||||
|
@ -560,3 +574,118 @@ PROFILE is not a profile created by 'guix pull', return the empty list."
|
||||||
;; Show most recently installed packages last.
|
;; Show most recently installed packages last.
|
||||||
(reverse
|
(reverse
|
||||||
(manifest-entries (profile-manifest profile)))))
|
(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 @@ references; otherwise, return only non-native references."
|
||||||
(target (%current-target-system)))
|
(target (%current-target-system)))
|
||||||
"Return (monadically) the sexp corresponding to EXP for the given OUTPUT,
|
"Return (monadically) the sexp corresponding to EXP for the given OUTPUT,
|
||||||
and in the current monad setting (system type, etc.)"
|
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?)
|
(define* (reference->sexp ref #:optional native?)
|
||||||
(with-monad %store-monad
|
(with-monad %store-monad
|
||||||
(match ref
|
(match ref
|
||||||
|
@ -1023,8 +1032,10 @@ and in the current monad setting (system type, etc.)"
|
||||||
#:target target)))
|
#:target target)))
|
||||||
;; OBJ must be either a derivation or a store file name.
|
;; OBJ must be either a derivation or a store file name.
|
||||||
(return (expand thing obj output)))))
|
(return (expand thing obj output)))))
|
||||||
(($ <gexp-input> x)
|
(($ <gexp-input> (? self-quoting? x))
|
||||||
(return x))
|
(return x))
|
||||||
|
(($ <gexp-input> x)
|
||||||
|
(raise (condition (&gexp-input-error (input x)))))
|
||||||
(x
|
(x
|
||||||
(return x)))))
|
(return x)))))
|
||||||
|
|
||||||
|
@ -1033,19 +1044,6 @@ and in the current monad setting (system type, etc.)"
|
||||||
reference->sexp (gexp-references exp))))
|
reference->sexp (gexp-references exp))))
|
||||||
(return (apply (gexp-proc exp) args))))
|
(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)
|
(define-syntax-rule (define-syntax-parameter-once name proc)
|
||||||
;; Like 'define-syntax-parameter' but ensure the top-level binding for NAME
|
;; Like 'define-syntax-parameter' but ensure the top-level binding for NAME
|
||||||
;; does not get redefined. This works around a race condition in a
|
;; does not get redefined. This works around a race condition in a
|
||||||
|
|
58
guix/git.scm
58
guix/git.scm
|
@ -28,6 +28,7 @@
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
|
#:use-module (guix sets)
|
||||||
#:use-module (rnrs bytevectors)
|
#:use-module (rnrs bytevectors)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
|
@ -37,8 +38,10 @@
|
||||||
#:export (%repository-cache-directory
|
#:export (%repository-cache-directory
|
||||||
honor-system-x509-certificates!
|
honor-system-x509-certificates!
|
||||||
|
|
||||||
|
with-repository
|
||||||
update-cached-checkout
|
update-cached-checkout
|
||||||
latest-repository-commit
|
latest-repository-commit
|
||||||
|
commit-difference
|
||||||
|
|
||||||
git-checkout
|
git-checkout
|
||||||
git-checkout?
|
git-checkout?
|
||||||
|
@ -220,6 +223,21 @@ dynamic extent of EXP."
|
||||||
(G_ "Support for submodules is missing; \
|
(G_ "Support for submodules is missing; \
|
||||||
please upgrade Guile-Git.~%"))))
|
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
|
(define* (update-cached-checkout url
|
||||||
#:key
|
#:key
|
||||||
(ref '(branch . "master"))
|
(ref '(branch . "master"))
|
||||||
|
@ -254,7 +272,8 @@ When RECURSIVE? is true, check out submodules as well, if any."
|
||||||
(repository-open cache-directory)
|
(repository-open cache-directory)
|
||||||
(clone* url cache-directory))))
|
(clone* url cache-directory))))
|
||||||
;; Only fetch remote if it has not been cloned just before.
|
;; 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")))
|
(remote-fetch (remote-lookup repository "origin")))
|
||||||
(when recursive?
|
(when recursive?
|
||||||
(update-submodules repository #:log-port log-port))
|
(update-submodules repository #:log-port log-port))
|
||||||
|
@ -323,6 +342,43 @@ Log progress and checkout info to LOG-PORT."
|
||||||
|
|
||||||
(set-exception-printer! 'git-error print-git-error)
|
(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.
|
;;; Checkouts.
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
|
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
|
||||||
;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
|
;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
|
||||||
|
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -186,7 +187,12 @@ the package e.g. 'bedtools2'. Return #f if there is no releases"
|
||||||
(substring tag 0 (+ name-length 1))))
|
(substring tag 0 (+ name-length 1))))
|
||||||
(substring tag (+ name-length 1)))
|
(substring tag (+ name-length 1)))
|
||||||
;; some tags start with a "v" e.g. "v0.25.0"
|
;; 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
|
;; 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)
|
((string-prefix? "v" tag)
|
||||||
(substring tag 1))
|
(substring tag 1))
|
||||||
;; Finally, reject tags that don't start with a digit:
|
;; Finally, reject tags that don't start with a digit:
|
||||||
|
|
|
@ -437,7 +437,8 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
|
||||||
(define (pypi-url? url)
|
(define (pypi-url? url)
|
||||||
(or (string-prefix? "https://pypi.org/" url)
|
(or (string-prefix? "https://pypi.org/" url)
|
||||||
(string-prefix? "https://pypi.python.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))
|
(let ((source-url (and=> (package-source package) origin-uri))
|
||||||
(fetch-method (and=> (package-source package) origin-method)))
|
(fetch-method (and=> (package-source package) origin-method)))
|
||||||
|
|
|
@ -95,7 +95,7 @@
|
||||||
(lts-info-packages
|
(lts-info-packages
|
||||||
(stackage-lts-info-fetch lts-version))))
|
(stackage-lts-info-fetch lts-version))))
|
||||||
"Fetch Cabal file for PACKAGE-NAME from hackage.haskell.org. The retrieved
|
"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
|
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
|
that package, or #f on failure. PACKAGES-INFO is the alist with the packages
|
||||||
included in the Stackage LTS release."
|
included in the Stackage LTS release."
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
(define-module (guix inferior)
|
(define-module (guix inferior)
|
||||||
#:use-module (srfi srfi-9)
|
#:use-module (srfi srfi-9)
|
||||||
#:use-module (srfi srfi-9 gnu)
|
#:use-module (srfi srfi-9 gnu)
|
||||||
|
#:use-module (srfi srfi-34)
|
||||||
|
#:use-module (srfi srfi-35)
|
||||||
#:use-module ((guix utils)
|
#:use-module ((guix utils)
|
||||||
#:select (%current-system
|
#:select (%current-system
|
||||||
source-properties->location
|
source-properties->location
|
||||||
|
@ -29,7 +31,8 @@
|
||||||
#:select (store-connection-socket
|
#:select (store-connection-socket
|
||||||
store-connection-major-version
|
store-connection-major-version
|
||||||
store-connection-minor-version
|
store-connection-minor-version
|
||||||
store-lift))
|
store-lift
|
||||||
|
&store-protocol-error))
|
||||||
#:use-module ((guix derivations)
|
#:use-module ((guix derivations)
|
||||||
#:select (read-derivation-from-file))
|
#:select (read-derivation-from-file))
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
|
@ -151,6 +154,7 @@ inferior."
|
||||||
(inferior-eval '(use-modules (guix)) result)
|
(inferior-eval '(use-modules (guix)) result)
|
||||||
(inferior-eval '(use-modules (gnu)) result)
|
(inferior-eval '(use-modules (gnu)) result)
|
||||||
(inferior-eval '(use-modules (ice-9 match)) 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))
|
(inferior-eval '(define %package-table (make-hash-table))
|
||||||
result)
|
result)
|
||||||
result))
|
result))
|
||||||
|
@ -386,7 +390,7 @@ inferior package."
|
||||||
(cut inferior-package-input-field <> 'package-transitive-propagated-inputs))
|
(cut inferior-package-input-field <> 'package-transitive-propagated-inputs))
|
||||||
|
|
||||||
(define (%inferior-package-search-paths package field)
|
(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."
|
package."
|
||||||
(define paths
|
(define paths
|
||||||
(inferior-package-field package
|
(inferior-package-field package
|
||||||
|
@ -462,7 +466,13 @@ thus be the code of a one-argument procedure that accepts a store."
|
||||||
(listen socket 1024)
|
(listen socket 1024)
|
||||||
(send-inferior-request
|
(send-inferior-request
|
||||||
`(let ((proc ,code)
|
`(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)
|
(connect socket AF_UNIX ,name)
|
||||||
|
|
||||||
;; 'port->connection' appeared in June 2018 and we can hardly
|
;; 'port->connection' appeared in June 2018 and we can hardly
|
||||||
|
@ -475,7 +485,13 @@ thus be the code of a one-argument procedure that accepts a store."
|
||||||
(dynamic-wind
|
(dynamic-wind
|
||||||
(const #t)
|
(const #t)
|
||||||
(lambda ()
|
(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 ()
|
(lambda ()
|
||||||
(close-connection store)
|
(close-connection store)
|
||||||
(close-port socket)))))
|
(close-port socket)))))
|
||||||
|
@ -484,7 +500,14 @@ thus be the code of a one-argument procedure that accepts a store."
|
||||||
((client . address)
|
((client . address)
|
||||||
(proxy client (store-connection-socket store))))
|
(proxy client (store-connection-socket store))))
|
||||||
(close-port socket)
|
(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
|
(define* (inferior-package-derivation store package
|
||||||
#:optional
|
#:optional
|
||||||
|
|
|
@ -525,7 +525,7 @@ for connections to complete; when TIMEOUT is #f, wait as long as needed."
|
||||||
|
|
||||||
(define (validate-uri uri package field)
|
(define (validate-uri uri package field)
|
||||||
"Return #t if the given URI can be reached, otherwise return a warning for
|
"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)
|
(let-values (((status argument)
|
||||||
(probe-uri uri #:timeout 3))) ;wait at most 3 seconds
|
(probe-uri uri #:timeout 3))) ;wait at most 3 seconds
|
||||||
(case status
|
(case status
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
(define-module (guix repl)
|
(define-module (guix repl)
|
||||||
#:use-module (rnrs bytevectors)
|
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:export (send-repl-response
|
#:export (send-repl-response
|
||||||
machine-repl))
|
machine-repl))
|
||||||
|
@ -37,9 +36,8 @@
|
||||||
((_ pred rest ...)
|
((_ pred rest ...)
|
||||||
(or (pred x)
|
(or (pred x)
|
||||||
(one-of rest ...))))))
|
(one-of rest ...))))))
|
||||||
(one-of symbol? string? pair? null? vector?
|
(one-of symbol? string? keyword? pair? null? array?
|
||||||
bytevector? number? boolean?)))
|
number? boolean?)))
|
||||||
|
|
||||||
|
|
||||||
(define (send-repl-response exp output)
|
(define (send-repl-response exp output)
|
||||||
"Write the response corresponding to the evaluation of EXP to PORT, an
|
"Write the response corresponding to the evaluation of EXP to PORT, an
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
(define (show-help)
|
(define (show-help)
|
||||||
(display (G_ "Usage: guix container exec PID COMMAND [ARGS...]
|
(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)
|
(newline)
|
||||||
(display (G_ "
|
(display (G_ "
|
||||||
-h, --help display this help and exit"))
|
-h, --help display this help and exit"))
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#:use-module (guix ui)
|
#:use-module (guix ui)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module (guix grafts)
|
#:use-module (guix grafts)
|
||||||
|
#:use-module (guix status)
|
||||||
#:use-module (ice-9 format)
|
#:use-module (ice-9 format)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-34)
|
#:use-module (srfi srfi-34)
|
||||||
|
@ -52,6 +53,8 @@ Perform the deployment specified by FILE.\n"))
|
||||||
(display (G_ "
|
(display (G_ "
|
||||||
-V, --version display version information and exit"))
|
-V, --version display version information and exit"))
|
||||||
(newline)
|
(newline)
|
||||||
|
(display (G_ "
|
||||||
|
-v, --verbosity=LEVEL use the given verbosity LEVEL"))
|
||||||
(show-bug-report-information))
|
(show-bug-report-information))
|
||||||
|
|
||||||
(define %options
|
(define %options
|
||||||
|
@ -63,6 +66,12 @@ Perform the deployment specified by FILE.\n"))
|
||||||
(lambda (opt name arg result)
|
(lambda (opt name arg result)
|
||||||
(alist-cons 'system arg
|
(alist-cons 'system arg
|
||||||
(alist-delete 'system result eq?))))
|
(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))
|
%standard-build-options))
|
||||||
|
|
||||||
(define %default-options
|
(define %default-options
|
||||||
|
@ -87,25 +96,27 @@ Perform the deployment specified by FILE.\n"))
|
||||||
(define (guix-deploy . args)
|
(define (guix-deploy . args)
|
||||||
(define (handle-argument arg result)
|
(define (handle-argument arg result)
|
||||||
(alist-cons 'file arg result))
|
(alist-cons 'file arg result))
|
||||||
|
|
||||||
(let* ((opts (parse-command-line args %options (list %default-options)
|
(let* ((opts (parse-command-line args %options (list %default-options)
|
||||||
#:argument-handler handle-argument))
|
#:argument-handler handle-argument))
|
||||||
(file (assq-ref opts 'file))
|
(file (assq-ref opts 'file))
|
||||||
(machines (or (and file (load-source-file file)) '())))
|
(machines (or (and file (load-source-file file)) '())))
|
||||||
(with-store store
|
(with-status-verbosity (assoc-ref opts 'verbosity)
|
||||||
(set-build-options-from-command-line store opts)
|
(with-store store
|
||||||
(for-each (lambda (machine)
|
(set-build-options-from-command-line store opts)
|
||||||
(info (G_ "deploying to ~a...~%")
|
(for-each (lambda (machine)
|
||||||
(machine-display-name machine))
|
(info (G_ "deploying to ~a...~%")
|
||||||
(parameterize ((%graft? (assq-ref opts 'graft?)))
|
(machine-display-name machine))
|
||||||
(guard (c ((message-condition? c)
|
(parameterize ((%graft? (assq-ref opts 'graft?)))
|
||||||
(report-error (G_ "failed to deploy ~a: ~a~%")
|
(guard (c ((message-condition? c)
|
||||||
(machine-display-name machine)
|
(report-error (G_ "failed to deploy ~a: ~a~%")
|
||||||
(condition-message c)))
|
(machine-display-name machine)
|
||||||
((deploy-error? c)
|
(condition-message c)))
|
||||||
(when (deploy-error-should-roll-back c)
|
((deploy-error? c)
|
||||||
(info (G_ "rolling back ~a...~%")
|
(when (deploy-error-should-roll-back c)
|
||||||
(machine-display-name machine))
|
(info (G_ "rolling back ~a...~%")
|
||||||
(run-with-store store (roll-back-machine machine)))
|
(machine-display-name machine))
|
||||||
(apply throw (deploy-error-captured-args c))))
|
(run-with-store store (roll-back-machine machine)))
|
||||||
(run-with-store store (deploy-machine machine)))))
|
(apply throw (deploy-error-captured-args c))))
|
||||||
machines))))
|
(run-with-store store (deploy-machine machine)))))
|
||||||
|
machines)))))
|
||||||
|
|
|
@ -607,7 +607,11 @@ and upgrades."
|
||||||
(let-values (((package output)
|
(let-values (((package output)
|
||||||
(specification->package+output spec)))
|
(specification->package+output spec)))
|
||||||
(package->manifest-entry* package output))))
|
(package->manifest-entry* package output))))
|
||||||
(_ #f))
|
(('install . obj)
|
||||||
|
(leave (G_ "cannot install non-package object: ~s~%")
|
||||||
|
obj))
|
||||||
|
(_
|
||||||
|
#f))
|
||||||
opts))
|
opts))
|
||||||
|
|
||||||
(fold manifest-transaction-install-entry
|
(fold manifest-transaction-install-entry
|
||||||
|
@ -760,7 +764,8 @@ processed, #f otherwise."
|
||||||
(('show requested-name)
|
(('show requested-name)
|
||||||
(let-values (((name version)
|
(let-values (((name version)
|
||||||
(package-name->name+version requested-name)))
|
(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))
|
(leave (G_ "~a~@[@~a~]: package not found~%") name version))
|
||||||
(packages
|
(packages
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
(define-module (guix scripts pull)
|
(define-module (guix scripts pull)
|
||||||
#:use-module (guix ui)
|
#:use-module (guix ui)
|
||||||
|
#:use-module (guix colors)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module ((guix status) #:select (with-status-verbosity))
|
#:use-module ((guix status) #:select (with-status-verbosity))
|
||||||
#:use-module (guix scripts)
|
#:use-module (guix scripts)
|
||||||
|
@ -38,7 +39,8 @@
|
||||||
#:use-module (guix git)
|
#:use-module (guix git)
|
||||||
#:use-module (git)
|
#:use-module (git)
|
||||||
#:use-module (gnu packages)
|
#: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 base) #:select (canonical-package))
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
#:use-module ((gnu packages bootstrap)
|
#:use-module ((gnu packages bootstrap)
|
||||||
|
@ -91,6 +93,14 @@ Download and deploy the latest version of Guix.\n"))
|
||||||
(display (G_ "
|
(display (G_ "
|
||||||
-l, --list-generations[=PATTERN]
|
-l, --list-generations[=PATTERN]
|
||||||
list generations matching 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_ "
|
(display (G_ "
|
||||||
-p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current"))
|
-p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current"))
|
||||||
(display (G_ "
|
(display (G_ "
|
||||||
|
@ -120,6 +130,18 @@ Download and deploy the latest version of Guix.\n"))
|
||||||
(lambda (opt name arg result)
|
(lambda (opt name arg result)
|
||||||
(cons `(query list-generations ,arg)
|
(cons `(query list-generations ,arg)
|
||||||
result)))
|
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
|
(option '(#\N "news") #f #f
|
||||||
(lambda (opt name arg result)
|
(lambda (opt name arg result)
|
||||||
(cons '(query display-news) result)))
|
(cons '(query display-news) result)))
|
||||||
|
@ -167,7 +189,7 @@ Download and deploy the latest version of Guix.\n"))
|
||||||
current-is-newer?)
|
current-is-newer?)
|
||||||
"Display what's up in PROFILE--new packages, and all that. If
|
"Display what's up in PROFILE--new packages, and all that. If
|
||||||
CURRENT-IS-NEWER? is true, assume that the current process represents the
|
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)
|
(match (memv (generation-number profile)
|
||||||
(reverse (profile-generations profile)))
|
(reverse (profile-generations profile)))
|
||||||
((current previous _ ...)
|
((current previous _ ...)
|
||||||
|
@ -190,7 +212,162 @@ newest generation of PROFILE."
|
||||||
#:concise? concise?
|
#:concise? concise?
|
||||||
#:heading
|
#:heading
|
||||||
(G_ "New in this revision:\n")))))
|
(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
|
(define* (build-and-install instances profile
|
||||||
#:key use-substitutes? verbose? dry-run?)
|
#:key use-substitutes? verbose? dry-run?)
|
||||||
|
@ -211,7 +388,12 @@ true, display what would be built without actually building it."
|
||||||
#:dry-run? dry-run?)
|
#:dry-run? dry-run?)
|
||||||
(munless dry-run?
|
(munless dry-run?
|
||||||
(return (newline))
|
(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
|
(if guix-command
|
||||||
(let ((new (map (cut string-append <> "/bin/guix")
|
(let ((new (map (cut string-append <> "/bin/guix")
|
||||||
(list (user-friendly-profile profile)
|
(list (user-friendly-profile profile)
|
||||||
|
@ -293,8 +475,15 @@ true, display what would be built without actually building it."
|
||||||
|
|
||||||
;; In 0.15.0+ we'd create ~/.config/guix/current-[0-9]*-link symlinks. Move
|
;; In 0.15.0+ we'd create ~/.config/guix/current-[0-9]*-link symlinks. Move
|
||||||
;; them to %PROFILE-DIRECTORY.
|
;; 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))
|
(migrate-generations %user-profile-directory %profile-directory))
|
||||||
|
|
||||||
;; Make sure ~/.config/guix/current points to /var/guix/profiles/….
|
;; Make sure ~/.config/guix/current points to /var/guix/profiles/….
|
||||||
|
@ -404,7 +593,9 @@ it."
|
||||||
"Given the two package name/version alists ALIST1 and ALIST2, display the
|
"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
|
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
|
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)
|
(define (pretty str column)
|
||||||
(indented-string (fill-paragraph str (- (%text-width) 4)
|
(indented-string (fill-paragraph str (- (%text-width) 4)
|
||||||
column)
|
column)
|
||||||
|
@ -447,11 +638,9 @@ display long package lists that would fill the user's screen."
|
||||||
(pretty (list->enumeration (sort upgraded string<?))
|
(pretty (list->enumeration (sort upgraded string<?))
|
||||||
35))))
|
35))))
|
||||||
|
|
||||||
(when (and concise?
|
(and concise?
|
||||||
(or (> new-count concise/max-item-count)
|
(or (> new-count concise/max-item-count)
|
||||||
(> upgraded-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.")))))
|
|
||||||
|
|
||||||
(define (display-profile-content-diff profile gen1 gen2)
|
(define (display-profile-content-diff profile gen1 gen2)
|
||||||
"Display the changes in PROFILE GEN2 compared to generation GEN1."
|
"Display the changes in PROFILE GEN2 compared to generation GEN1."
|
||||||
|
@ -475,6 +664,8 @@ list of package changes.")))))
|
||||||
((first second rest ...)
|
((first second rest ...)
|
||||||
(display-profile-content-diff profile
|
(display-profile-content-diff profile
|
||||||
first second)
|
first second)
|
||||||
|
(display-channel-news (generation-file-name profile second)
|
||||||
|
(generation-file-name profile first))
|
||||||
(loop (cons second rest)))
|
(loop (cons second rest)))
|
||||||
((_) #t)
|
((_) #t)
|
||||||
(() #t))))))
|
(() #t))))))
|
||||||
|
@ -493,10 +684,23 @@ list of package changes.")))))
|
||||||
((numbers ...)
|
((numbers ...)
|
||||||
(list-generations profile numbers)))))))
|
(list-generations profile numbers)))))))
|
||||||
(('display-news)
|
(('display-news)
|
||||||
;; Display profile news, with the understanding that this process
|
(display-news profile))))
|
||||||
;; represents the newest generation.
|
|
||||||
(display-profile-news profile
|
(define (process-generation-change opts profile)
|
||||||
#:current-is-newer? #t))))
|
"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)
|
(define (channel-list opts)
|
||||||
"Return the list of channels to use. If OPTS specify a channel file,
|
"Return the list of channels to use. If OPTS specify a channel file,
|
||||||
|
@ -560,18 +764,18 @@ Use '~/.config/guix/channels.scm' instead."))
|
||||||
(with-git-error-handling
|
(with-git-error-handling
|
||||||
(let* ((opts (parse-command-line args %options
|
(let* ((opts (parse-command-line args %options
|
||||||
(list %default-options)))
|
(list %default-options)))
|
||||||
(cache (string-append (cache-directory) "/pull"))
|
|
||||||
(channels (channel-list opts))
|
(channels (channel-list opts))
|
||||||
(profile (or (assoc-ref opts 'profile) %current-profile)))
|
(profile (or (assoc-ref opts 'profile) %current-profile)))
|
||||||
(cond ((assoc-ref opts 'query)
|
(cond ((assoc-ref opts 'query)
|
||||||
(process-query opts profile))
|
(process-query opts profile))
|
||||||
|
((assoc-ref opts 'generation)
|
||||||
|
(process-generation-change opts profile))
|
||||||
(else
|
(else
|
||||||
(with-store store
|
(with-store store
|
||||||
(ensure-default-profile)
|
(ensure-default-profile)
|
||||||
(with-status-verbosity (assoc-ref opts 'verbosity)
|
(with-status-verbosity (assoc-ref opts 'verbosity)
|
||||||
(parameterize ((%current-system (assoc-ref opts 'system))
|
(parameterize ((%current-system (assoc-ref opts 'system))
|
||||||
(%graft? (assoc-ref opts 'graft?))
|
(%graft? (assoc-ref opts 'graft?)))
|
||||||
(%repository-cache-directory cache))
|
|
||||||
(set-build-options-from-command-line store opts)
|
(set-build-options-from-command-line store opts)
|
||||||
(honor-x509-certificates store)
|
(honor-x509-certificates store)
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
(define-module (guix scripts search)
|
(define-module (guix scripts search)
|
||||||
#:use-module (guix ui)
|
#:use-module (guix ui)
|
||||||
#:use-module (guix scripts package)
|
#:use-module (guix scripts package)
|
||||||
|
#:use-module ((guix scripts build)
|
||||||
|
#:select (%standard-build-options))
|
||||||
#:use-module (guix scripts)
|
#:use-module (guix scripts)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
|
@ -36,6 +38,9 @@ This is an alias for 'guix package -s'.\n"))
|
||||||
(display (G_ "
|
(display (G_ "
|
||||||
-V, --version display version information and exit"))
|
-V, --version display version information and exit"))
|
||||||
(newline)
|
(newline)
|
||||||
|
(display (G_ "
|
||||||
|
-L, --load-path=DIR prepend DIR to the package module search path"))
|
||||||
|
(newline)
|
||||||
(show-bug-report-information))
|
(show-bug-report-information))
|
||||||
|
|
||||||
(define %options
|
(define %options
|
||||||
|
@ -46,7 +51,11 @@ This is an alias for 'guix package -s'.\n"))
|
||||||
(exit 0)))
|
(exit 0)))
|
||||||
(option '(#\V "version") #f #f
|
(option '(#\V "version") #f #f
|
||||||
(lambda args
|
(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 (guix-search . args)
|
||||||
(define (handle-argument arg result)
|
(define (handle-argument arg result)
|
||||||
|
|
|
@ -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
Reference in New Issue