Merge branch 'master' into core-updates

This commit is contained in:
Ludovic Courtès 2019-07-17 15:51:10 +02:00
commit 64de896a71
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
81 changed files with 6509 additions and 2960 deletions

View File

@ -42,7 +42,7 @@ make sure to run git pull --rebase.
All commits that are pushed to the central repository on Savannah must be
signed with an OpenPGP key, and the public key should be uploaded to your user
account on Savannah and to public key servers, such as
pool.sks-keyservers.net. To configure Git to automatically sign commits,
keys.openpgp.org. To configure Git to automatically sign commits,
run:
git config commit.gpgsign true

View File

@ -98,6 +98,7 @@ MODULES = \
guix/self.scm \
guix/upstream.scm \
guix/licenses.scm \
guix/lint.scm \
guix/glob.scm \
guix/git.scm \
guix/graph.scm \
@ -125,6 +126,7 @@ MODULES = \
guix/build-system/guile.scm \
guix/build-system/haskell.scm \
guix/build-system/linux-module.scm \
guix/build-system/node.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/ocaml.scm \
@ -170,6 +172,7 @@ MODULES = \
guix/build/gnu-build-system.scm \
guix/build/gnu-dist.scm \
guix/build/guile-build-system.scm \
guix/build/node-build-system.scm \
guix/build/perl-build-system.scm \
guix/build/python-build-system.scm \
guix/build/ocaml-build-system.scm \
@ -182,6 +185,7 @@ MODULES = \
guix/build/haskell-build-system.scm \
guix/build/linux-module-build-system.scm \
guix/build/store-copy.scm \
guix/build/json.scm \
guix/build/utils.scm \
guix/build/union.scm \
guix/build/profiles.scm \
@ -303,11 +307,11 @@ dist_noinst_DATA = guix/tests.scm guix/tests/http.scm
AUX_FILES = \
gnu/packages/aux-files/chromium/master-preferences.json \
gnu/packages/aux-files/emacs/guix-emacs.el \
gnu/packages/aux-files/linux-libre/5.1-arm.conf \
gnu/packages/aux-files/linux-libre/5.1-arm-veyron.conf \
gnu/packages/aux-files/linux-libre/5.1-arm64.conf \
gnu/packages/aux-files/linux-libre/5.1-i686.conf \
gnu/packages/aux-files/linux-libre/5.1-x86_64.conf \
gnu/packages/aux-files/linux-libre/5.2-arm.conf \
gnu/packages/aux-files/linux-libre/5.2-arm-veyron.conf \
gnu/packages/aux-files/linux-libre/5.2-arm64.conf \
gnu/packages/aux-files/linux-libre/5.2-i686.conf \
gnu/packages/aux-files/linux-libre/5.2-x86_64.conf \
gnu/packages/aux-files/linux-libre/4.19-arm.conf \
gnu/packages/aux-files/linux-libre/4.19-arm64.conf \
gnu/packages/aux-files/linux-libre/4.19-i686.conf \

View File

@ -75,7 +75,7 @@
(package-name "GNU Guix")
(package-version "0")
(bug-report-address "bug-guix@gnu.org")
(home-page-url "https://gnu.org/s/guix"))
(home-page-url "https://guix.gnu.org"))
;; Hack so that Geiser is not confused.
(define defmod 'define-module)

View File

@ -34,6 +34,7 @@
(gnu packages gawk)
(gnu packages gettext)
(gnu packages guile)
(gnu packages iso-codes)
(gnu packages texinfo)
(gnu packages tex)
(srfi srfi-19)
@ -176,6 +177,9 @@ makeinfo OPTIONS."
#:languages languages
#:date date))
(define images
(texinfo-manual-images source))
(define build
(with-imported-modules '((guix build utils))
#~(begin
@ -183,7 +187,7 @@ makeinfo OPTIONS."
(ice-9 match))
(define (normalize language)
;; Normalize LANGUAGE. For instance, "zh_CN" become "zh-cn".
;; Normalize LANGUAGE. For instance, "zh_CN" becomes "zh-cn".
(string-map (match-lambda
(#\_ #\-)
(chr chr))
@ -227,7 +231,15 @@ makeinfo OPTIONS."
""
(string-append "." language))
".html")
opts)))
opts)
;; Make sure images are available.
(symlink #$images
(string-append #$output "/" (normalize language)
"/images"))
(symlink #$images
(string-append #$output "/" (normalize language)
"/html_node/images"))))
'#$languages))))
(computed-file (string-append manual "-html-manual") build))
@ -365,157 +377,208 @@ from SOURCE."
(manual "guix")
(date 1))
(define build
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(ice-9 match)
(ice-9 popen)
(sxml simple)
(srfi srfi-19))
(with-extensions (list guile-json-3)
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(json)
(ice-9 match)
(ice-9 popen)
(sxml simple)
(srfi srfi-1)
(srfi srfi-19))
(define (normalize language) ;XXX: deduplicate
;; Normalize LANGUAGE. For instance, "zh_CN" become "zh-cn".
(string-map (match-lambda
(#\_ #\-)
(chr chr))
(string-downcase language)))
(define (normalize language) ;XXX: deduplicate
;; Normalize LANGUAGE. For instance, "zh_CN" becomes "zh-cn".
(string-map (match-lambda
(#\_ #\-)
(chr chr))
(string-downcase language)))
(define-syntax-rule (with-language language exp ...)
(let ((lang (getenv "LANGUAGE")))
(dynamic-wind
(lambda ()
(setenv "LANGUAGE" language)
(setlocale LC_MESSAGES))
(lambda () exp ...)
(lambda ()
(if lang
(setenv "LANGUAGE" lang)
(unsetenv "LANGUAGE"))
(setlocale LC_MESSAGES)))))
(define-syntax-rule (with-language language exp ...)
(let ((lang (getenv "LANGUAGE")))
(dynamic-wind
(lambda ()
(setenv "LANGUAGE" language)
(setlocale LC_MESSAGES))
(lambda () exp ...)
(lambda ()
(if lang
(setenv "LANGUAGE" lang)
(unsetenv "LANGUAGE"))
(setlocale LC_MESSAGES)))))
;; (put 'with-language 'scheme-indent-function 1)
(define* (translate str language
#:key (domain "guix-manual"))
(define exp
`(begin
(bindtextdomain "guix-manual"
#+(guix-manual-text-domain
source
languages))
(write (gettext ,str "guix-manual"))))
;; (put 'with-language 'scheme-indent-function 1)
(define* (translate str language
#:key (domain "guix-manual"))
(define exp
`(begin
(bindtextdomain "guix-manual"
#+(guix-manual-text-domain
source
languages))
(bindtextdomain "iso_639-3" ;language names
#+(file-append iso-codes
"/share/locale"))
(write (gettext ,str ,domain))))
(with-language language
;; Since the 'gettext' function caches msgid translations,
;; regardless of $LANGUAGE, we have to spawn a new process each
;; time we want to translate to a different language. Bah!
(let* ((pipe (open-pipe* OPEN_READ
#+(file-append guile-2.2
"/bin/guile")
"-c" (object->string exp)))
(str (read pipe)))
(close-pipe pipe)
str)))
(with-language language
;; Since the 'gettext' function caches msgid translations,
;; regardless of $LANGUAGE, we have to spawn a new process each
;; time we want to translate to a different language. Bah!
(let* ((pipe (open-pipe* OPEN_READ
#+(file-append guile-2.2
"/bin/guile")
"-c" (object->string exp)))
(str (read pipe)))
(close-pipe pipe)
str)))
(define (seconds->string seconds language)
(let* ((time (make-time time-utc 0 seconds))
(date (time-utc->date time)))
(with-language language (date->string date "~e ~B ~Y"))))
(define (seconds->string seconds language)
(let* ((time (make-time time-utc 0 seconds))
(date (time-utc->date time)))
(with-language language (date->string date "~e ~B ~Y"))))
(define (guix-url path)
(string-append #$%web-site-url path))
(define (guix-url path)
(string-append #$%web-site-url path))
(define (sxml-index language)
(define title
(translate "GNU Guix Reference Manual" language))
(define (sxml-index language title body)
;; FIXME: Avoid duplicating styling info from guix-artwork.git.
`(html (@ (lang ,language))
(head
(title ,(string-append title " — GNU Guix"))
(meta (@ (charset "UTF-8")))
(meta (@ (name "viewport") (content "width=device-width, initial-scale=1.0")))
;; Menu prefetch.
(link (@ (rel "prefetch") (href ,(guix-url "menu/index.html"))))
;; Base CSS.
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/elements.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/common.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/messages.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/navbar.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/breadcrumbs.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/buttons.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/footer.css"))))
;; FIXME: Avoid duplicating styling info from guix-artwork.git.
`(html (@ (lang ,language))
(head
(title ,(string-append title " — GNU Guix"))
(meta (@ (charset "UTF-8")))
(meta (@ (name "viewport") (content "width=device-width, initial-scale=1.0")))
;; Menu prefetch.
(link (@ (rel "prefetch") (href ,(guix-url "menu/index.html"))))
;; Base CSS.
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/elements.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/common.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/messages.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/navbar.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/breadcrumbs.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/buttons.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/footer.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/page.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/post.css")))))
(body
(header (@ (class "navbar"))
(h1 (a (@ (class "branding")
(href #$%web-site-url)))
(span (@ (class "a11y-offset"))
"Guix"))
(nav (@ (class "menu"))))
(nav (@ (class "breadcrumbs"))
(a (@ (class "crumb")
(href #$%web-site-url))
"Home"))
,body
(footer))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/page.css"))))
(link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/post.css")))))
(body
(header (@ (class "navbar"))
(h1 (a (@ (class "branding")
(href #$%web-site-url)))
(span (@ (class "a11y-offset"))
"Guix"))
(nav (@ (class "menu"))))
(nav (@ (class "breadcrumbs"))
(a (@ (class "crumb")
(href #$%web-site-url))
"Home"))
(main
(article
(@ (class "page centered-block limit-width"))
(h2 ,title)
(p (@ (class "post-metadata centered-text"))
#$version " — "
,(seconds->string #$date language))
(define (language-index language)
(define title
(translate "GNU Guix Reference Manual" language))
(div
(ul
(li (a (@ (href "html_node"))
"HTML, with one page per node"))
(li (a (@ (href
,(string-append
#$manual
(if (string=? language
"en")
""
(string-append "."
language))
".html")))
"HTML, entirely on one page"))
,@(if (member language '("ru" "zh_CN"))
'()
`((li (a (@ (href ,(string-append
#$manual
(if (string=? language "en")
""
(string-append "."
language))
".pdf"))))
"PDF")))))))
(footer))))
(sxml-index
language title
`(main
(article
(@ (class "page centered-block limit-width"))
(h2 ,title)
(p (@ (class "post-metadata centered-text"))
#$version " — "
,(seconds->string #$date language))
(define (write-index language file)
(call-with-output-file file
(lambda (port)
(display "<!DOCTYPE html>\n" port)
(sxml->xml (sxml-index language) port))))
(div
(ul
(li (a (@ (href "html_node"))
"HTML, with one page per node"))
(li (a (@ (href
,(string-append
#$manual
(if (string=? language
"en")
""
(string-append "."
language))
".html")))
"HTML, entirely on one page"))
,@(if (member language '("ru" "zh_CN"))
'()
`((li (a (@ (href ,(string-append
#$manual
(if (string=? language "en")
""
(string-append "."
language))
".pdf"))))
"PDF")))))))))
(setenv "GUIX_LOCPATH"
#+(file-append glibc-utf8-locales "/lib/locale"))
(setenv "LC_ALL" "en_US.utf8")
(setlocale LC_ALL "en_US.utf8")
(define %iso639-languages
(vector->list
(assoc-ref (call-with-input-file
#+(file-append iso-codes
"/share/iso-codes/json/iso_639-3.json")
json->scm)
"639-3")))
(bindtextdomain "guix-manual"
#+(guix-manual-text-domain source languages))
(define (language-code->name code)
"Return the full name of a language from its ISO-639-3 code."
(let ((code (match (string-index code #\_)
(#f code)
(index (string-take code index)))))
(any (lambda (language)
(and (string=? (or (assoc-ref language "alpha_2")
(assoc-ref language "alpha_3"))
code)
(assoc-ref language "name")))
%iso639-languages)))
(for-each (lambda (language)
(define directory
(string-append #$output "/"
(normalize language)))
(define (top-level-index languages)
(define title
"GNU Guix Reference Manual")
(sxml-index
"en" title
`(main
(article
(@ (class "page centered-block limit-width"))
(h2 ,title)
(div
"The GNU Guix Reference Manual is available in the following
languages:\n"
(ul
,@(map (lambda (language)
`(li (a (@ (href ,(normalize language)))
,(translate
(language-code->name language)
language
#:domain "iso_639-3"))))
languages)))))))
(mkdir-p directory)
(write-index language
(string-append directory
"/index.html")))
'#$languages))))
(define (write-html file sxml)
(call-with-output-file file
(lambda (port)
(display "<!DOCTYPE html>\n" port)
(sxml->xml sxml port))))
(setenv "GUIX_LOCPATH"
#+(file-append glibc-utf8-locales "/lib/locale"))
(setenv "LC_ALL" "en_US.utf8")
(setlocale LC_ALL "en_US.utf8")
(for-each (lambda (language)
(define directory
(string-append #$output "/"
(normalize language)))
(mkdir-p directory)
(write-html (string-append directory "/index.html")
(language-index language)))
'#$languages)
(write-html (string-append #$output "/index.html")
(top-level-index '#$languages))))))
(computed-file "html-indexes" build))

View File

@ -38,19 +38,6 @@ version from the Git repository:
git clone https://git.savannah.gnu.org/git/guix.git
@end example
When building Guix from a checkout,
the following packages are required in addition to those mentioned in
the installation instructions (@pxref{Requirements}).
@itemize
@item @url{http://gnu.org/software/autoconf/, GNU Autoconf};
@item @url{http://gnu.org/software/automake/, GNU Automake};
@item @url{http://gnu.org/software/gettext/, GNU Gettext};
@item @url{http://gnu.org/software/texinfo/, GNU Texinfo};
@item @url{http://www.graphviz.org/, Graphviz};
@item @url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
@end itemize
The easiest way to set up a development environment for Guix is, of
course, by using Guix! The following command starts a new shell where
all the dependencies and appropriate environment variables are set up to
@ -61,7 +48,22 @@ guix environment guix --pure
@end example
@xref{Invoking guix environment}, for more information on that command.
Extra dependencies can be added with @option{--ad-hoc}:
If you are unable to use Guix when building Guix from a checkout, the
following are the required packages in addition to those mentioned in the
installation instructions (@pxref{Requirements}).
@itemize
@item @url{http://gnu.org/software/autoconf/, GNU Autoconf};
@item @url{http://gnu.org/software/automake/, GNU Automake};
@item @url{http://gnu.org/software/gettext/, GNU Gettext};
@item @url{http://gnu.org/software/texinfo/, GNU Texinfo};
@item @url{http://www.graphviz.org/, Graphviz};
@item @url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
@end itemize
On Guix, extra dependencies can be added by instead running @command{guix
environment} with @option{--ad-hoc}:
@example
guix environment guix --pure --ad-hoc help2man git strace
@ -113,8 +115,8 @@ run @code{make install}. To do that, you first need to have an environment
with all the dependencies available (@pxref{Building from Git}), and then
simply prefix each command with
@command{./pre-inst-env} (the @file{pre-inst-env} script lives in the
top build tree of Guix; it is generated by @command{./configure}),
as in@footnote{The @option{-E} flag to
top build tree of Guix; it is generated by @command{./configure}).
An example@footnote{The @option{-E} flag to
@command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set
such that @command{guix-daemon} and the tools it uses can find the Guile
modules they need.}:
@ -125,7 +127,7 @@ $ ./pre-inst-env guix build hello
@end example
@noindent
Similarly, for a Guile session using the Guix modules:
Similarly, an example for a Guile session using the Guix modules:
@example
$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'
@ -982,5 +984,6 @@ first send one message to @email{guix-patches@@gnu.org}, and then send
subsequent patches to @email{@var{NNN}@@debbugs.gnu.org} to make sure
they are kept together. See
@uref{https://debbugs.gnu.org/Advanced.html, the Debbugs documentation}
for more information.
for more information. You can install @command{git send-email} with
@command{guix install git:send-email}.
@c Debbugs bug: https://debbugs.gnu.org/db/15/15361.html

View File

@ -11,7 +11,7 @@
@c Identifier of the OpenPGP key used to sign tarballs and such.
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
@set KEY-SERVER pool.sks-keyservers.net
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=15145
@c Base URL for downloads.
@set BASE-URL https://ftp.gnu.org/gnu/guix
@ -558,8 +558,8 @@ If that command fails because you do not have the required public key,
then run this command to import it:
@example
$ gpg --keyserver @value{KEY-SERVER} \
--recv-keys @value{OPENPGP-SIGNING-KEY-ID}
$ wget @value{OPENPGP-SIGNING-KEY-URL} \
-qO - | gpg --import -
@end example
@noindent
@ -1905,8 +1905,8 @@ If that command fails because you do not have the required public key,
then run this command to import it:
@example
$ gpg --keyserver @value{KEY-SERVER} \
--recv-keys @value{OPENPGP-SIGNING-KEY-ID}
$ wget @value{OPENPGP-SIGNING-KEY-URL} \
-qO - | gpg --import -
@end example
@noindent
@ -3921,6 +3921,19 @@ For the sake of reliability and maintainability, you should avoid dependencies
on channels that you don't control, and you should aim to keep the number of
dependencies to a minimum.
@cindex subdirectory, channels
@subsection Package Modules in a Sub-directory
As a channel author, you may want to keep your channel modules in a
sub-directory. If your modules are in the sub-directory @file{guix}, you must
add a meta-data file @file{.guix-channel} that contains:
@lisp
(channel
(version 0)
(directory "guix"))
@end lisp
@subsection Replicating Guix
@cindex pinning, channels
@ -6333,6 +6346,17 @@ the module (in the "arguments" form of a package using the
linux-module-build-system, use the key #:linux to specify it).
@end defvr
@defvr {Scheme Variable} node-build-system
This variable is exported by @code{(guix build-system node)}. It
implements the build procedure used by @uref{http://nodejs.org,
Node.js}, which implements an approximation of the @code{npm install}
command, followed by an @code{npm test} command.
Which Node.js package is used to interpret the @code{npm} commands can
be specified with the @code{#:node} parameter which defaults to
@code{node}.
@end defvr
Lastly, for packages that do not need anything as sophisticated, a
``trivial'' build system is provided. It is trivial in the sense that
it provides basically no support: it does not pull any implicit inputs,
@ -25547,7 +25571,7 @@ vm-image} on x86_64 hardware:
@example
$ qemu-system-x86_64 \
-net user -net nic,model=virtio \
-enable-kvm -m 512 \
-enable-kvm -m 1024 \
-device virtio-blk,drive=myhd \
-drive if=none,file=/tmp/qemu-image,id=myhd
@end example

View File

@ -1116,6 +1116,7 @@ dist_patch_DATA = \
%D%/packages/patches/netsurf-longer-test-timeout.patch \
%D%/packages/patches/nfs-utils-missing-headers.patch \
%D%/packages/patches/ngircd-handle-zombies.patch \
%D%/packages/patches/nm-plugin-path.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \
%D%/packages/patches/nss-pkgconfig.patch \
%D%/packages/patches/ntfs-3g-CVE-2019-9755.patch \

View File

@ -1453,6 +1453,28 @@ tables. This package contains only the user-space tools needed for ACPI table
development, not the kernel implementation of ACPI.")
(license license:gpl2))) ; dual GPLv2/ACPICA Licence
(define-public s-tui
(package
(name "s-tui")
(version "0.8.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "s-tui" version))
(sha256
(base32
"00lsh2v4i8rwfyjyxx5lijd6rnk9smcfffhzg5sv94ijpcnh216m"))))
(build-system python-build-system)
(inputs
`(("python-psutil" ,python-psutil)
("python-urwid" ,python-urwid)))
(home-page "https://github.com/amanusk/s-tui")
(synopsis "Interactive terminal stress test and monitoring tool")
(description
"The Stress Terminal UI displays graphs of the CPU frequency,
utilization, temperature and power.")
(license license:gpl2+)))
(define-public stress
(package
(name "stress")
@ -1570,14 +1592,14 @@ environment variable is set and output is to tty.")
(define-public direvent
(package
(name "direvent")
(version "5.1")
(version "5.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/direvent/direvent-"
version ".tar.gz"))
(sha256
(base32
"1nwvjmx7kb14ni34c0b8x9a3791pc20gvhj7xaj66d8q4h6n0qf4"))
"0m9vi01b1km0cpknflyzsjnknbava0s1n6393b2bpjwyvb6j5613"))
(modules '((guix build utils)))
(snippet '(begin
(substitute* "tests/testsuite"

View File

@ -224,7 +224,7 @@ the real span of the lattice.")
(define-public pari-gp
(package
(name "pari-gp")
(version "2.11.1")
(version "2.11.2")
(source (origin
(method url-fetch)
(uri (string-append
@ -232,7 +232,7 @@ the real span of the lattice.")
version ".tar.gz"))
(sha256
(base32
"1jfax92jpydjd02fwl30r6b8kfzqqd6sm4yx94gidyz9lqjb7a94"))))
"0fck8ssmirl8fy7s4mspgrxjs5sag76xbshqlqzkcl3kqyrk4raa"))))
(build-system gnu-build-system)
(native-inputs
`(("texlive" ,(texlive-union
@ -267,7 +267,7 @@ PARI is also available as a C library to allow for faster computations.")
(define-public gp2c
(package
(name "gp2c")
(version "0.0.11pl1")
(version "0.0.11pl2")
(source (origin
(method url-fetch)
(uri (string-append
@ -275,7 +275,7 @@ PARI is also available as a C library to allow for faster computations.")
version ".tar.gz"))
(sha256
(base32
"1c6f6vmncw032kfzrfyr8bynw6yd3faxpy2285r009fmr0zxfs5s"))))
"0wqsf05wgkqvmmsx7jinvzdqav6rl56sr8haibgs31nzz4x9xz9g"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl)))
(inputs `(("pari-gp" ,pari-gp)))
@ -1022,7 +1022,7 @@ xtensor provides:
(define-public gap
(package
(name "gap")
(version "4.10.1")
(version "4.10.2")
(source
(origin
(method url-fetch)
@ -1032,8 +1032,7 @@ xtensor provides:
version
".tar.bz2"))
(sha256
(base32
"136s0zvhcw41fshj5zgsrjcy2kd58cdh2m3ddp5rdizi4rx54f10"))
(base32 "0cp6ddk0469zzv1m1vair6gm27ic6c5m77ri8rn0znq3gaps6x94"))
(modules '((guix build utils) (ice-9 ftw) (srfi srfi-1)))
(snippet
'(begin

View File

@ -81,20 +81,25 @@ in FITS files.")
(define-public wcslib
(package
(name "wcslib")
(version "5.20")
(version "6.2")
(source
(origin
(method url-fetch)
(uri (string-append
"ftp://ftp.atnf.csiro.au/pub/software/wcslib/" name "-" version
"ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib" version
".tar.bz2"))
(sha256
(base32 "1c8g9kv4dxrnawnqi4spi2p10s2xs7x75pdfxhbqxgcc97dkgh0b"))))
(base32 "01fqckazhbfqqhyr0wd9vcks1m2afmsh83l981alxg2r54jgwkdv"))))
(inputs
`(("cfitsio" ,cfitsio)))
(build-system gnu-build-system)
(arguments
`(#:phases
`(#:configure-flags
(list (string-append "--with-cfitsiolib="
(assoc-ref %build-inputs "cfitsio") "/lib")
(string-append "--with-cfitsioinc="
(assoc-ref %build-inputs "cfitsio") "/include"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'patch-/bin/sh
(lambda _

View File

@ -21,6 +21,7 @@
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -2104,14 +2105,14 @@ different audio devices such as ALSA or PulseAudio.")
(define-public qjackctl
(package
(name "qjackctl")
(version "0.5.8")
(version "0.5.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
version "/qjackctl-" version ".tar.gz"))
(sha256
(base32
"1r5hf3hcr20n93jrrm7xk2zf6yx264pcr4d10cpybhrancxh602n"))))
"1saywsda9m124rmjp7i3n0llryaliabjxhqhvqr6dm983qy7pypk"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f)) ; no check target
@ -2853,19 +2854,17 @@ interface.")
(define-public qsynth
(package
(name "qsynth")
(version "0.5.6")
(version "0.5.7")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
"/qsynth-" version ".tar.gz"))
(sha256
(base32 "0h4hhja8qbyzd6v24flw9wr4mwl03nplryx1gyrppn7sg13l1sx6"))))
(base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no "check" phase
#:configure-flags
'("CXXFLAGS=-std=gnu++11")))
`(#:tests? #f)) ; no "check" phase
(native-inputs
`(("qttools" ,qttools)
("pkg-config" ,pkg-config)))
@ -2873,7 +2872,7 @@ interface.")
`(("fluidsynth" ,fluidsynth)
("qtbase" ,qtbase)
("qtx11extras" ,qtx11extras)))
(home-page "http://qsynth.sourceforge.net")
(home-page "https://qsynth.sourceforge.io")
(synopsis "Graphical user interface for FluidSynth")
(description
"Qsynth is a GUI front-end application for the FluidSynth SoundFont
@ -3707,3 +3706,32 @@ library.")
(description "FAudio is an XAudio reimplementation that focuses solely on
developing fully accurate DirectX Audio runtime libraries.")
(license license:zlib)))
(define-public gnaural
(package
(name "gnaural")
(version "20110606")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
version ".tar.xz"))
(sha256
(base32
"1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
(build-system gnu-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
("gtk+" ,gtk+-2)
("libsndfile" ,libsndfile)
("portaudio" ,portaudio)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://gnaural.sourceforge.net/")
(synopsis "Binaural beat synthesizer")
(description "Gnaural is a programmable auditory binaural beat synthesizer
intended to be used for brainwave entrainment. Gnaural supports creation of
binaural beat tracks of different frequencies and exporting of tracks into
different audio formats. Gnaural can also be linked over the internet with
other Gnaural instances, allowing synchronous sessions between many users.")
(license license:gpl2+)))

View File

@ -185,7 +185,8 @@ can even repair them.")
`(#:configure-flags
`(,(string-append "--sbindir=" (assoc-ref %outputs "out") "/bin"))
#:tests? #f))
(home-page "http://archive.miek.nl/projects/hdup/index.html")
(home-page (string-append "http://web.archive.org/web/20150925223424/"
"http://archive.miek.nl/projects/hdup/index.html"))
(synopsis "Simple incremental backup tool")
(description
"Hdup2 is a backup utility, its aim is to make backup really simple. The

View File

@ -971,7 +971,7 @@ with the Linux kernel.")
(("/bin/pwd") "pwd"))
#t))))))))
(define (make-gcc-libc base-gcc libc)
(define-public (make-gcc-libc base-gcc libc)
"Return a GCC that targets LIBC."
(package (inherit base-gcc)
(name (string-append (package-name base-gcc) "-"

View File

@ -12524,7 +12524,7 @@ once. This package provides tools to perform Drop-seq analyses.")
(define-public pigx-rnaseq
(package
(name "pigx-rnaseq")
(version "0.0.8")
(version "0.0.10")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/BIMSBbioinfo/pigx_rnaseq/"
@ -12532,7 +12532,7 @@ once. This package provides tools to perform Drop-seq analyses.")
"/pigx_rnaseq-" version ".tar.gz"))
(sha256
(base32
"19nhflzs6k5c7yhi7gkwggq237cjdd1s4b4qkj5x5fkwg0rhn33i"))))
"0z3hr120wk2vrlmlpz1vp3n9wy3rq4y2mnzh2vf08qgqn2xfdwcw"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-tests? #f ; not supported
@ -14746,6 +14746,35 @@ vast-tools, an RNA-Seq pipeline for alternative splicing analysis. The plots
are generated using @code{ggplot2}.")
(license license:expat)))
(define-public python-ont-fast5-api
(package
(name "python-ont-fast5-api")
(version "1.4.4")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/nanoporetech/ont_fast5_api.git")
(commit (string-append "release_" version))))
(file-name (git-file-name name version))
(sha256
(base32
"03cbq4zbbwhll8ml2m9k8sa31mirsvcbjkrq1yna0kkzz9fad5fm"))))
(build-system python-build-system)
(propagated-inputs
`(("python-numpy" ,python-numpy)
("python-six" ,python-six)
("python-h5py" ,python-h5py)
("python-progressbar33" ,python-progressbar33)))
(home-page "https://github.com/nanoporetech/ont_fast5_api")
(synopsis "Interface to HDF5 files of the Oxford Nanopore fast5 file format")
(description
"This package provides a concrete implementation of the fast5 file schema
using the generic @code{h5py} library, plain-named methods to interact with
and reflect the fast5 file schema, and tools to convert between
@code{multi_read} and @code{single_read} formats.")
(license license:mpl2.0)))
(define-public tbsp
(let ((commit "ec8fff4410cfb13a677dbbb95cbbc60217e64907")
(revision "1"))

View File

@ -524,17 +524,16 @@ board-independent tools.")))
(define-public (make-u-boot-package board triplet)
"Returns a u-boot package for BOARD cross-compiled for TRIPLET."
(let ((same-arch? (if (string-prefix? (%current-system)
(gnu-triplet->nix-system triplet))
`#t
`#f)))
(let ((same-arch? (lambda ()
(string=? (%current-system)
(gnu-triplet->nix-system triplet)))))
(package
(inherit u-boot)
(name (string-append "u-boot-"
(string-replace-substring (string-downcase board)
"_" "-")))
(native-inputs
`(,@(if (not same-arch?)
`(,@(if (not (same-arch?))
`(("cross-gcc" ,(cross-gcc triplet #:xgcc gcc-7))
("cross-binutils" ,(cross-binutils triplet)))
`(("gcc-7" ,gcc-7)))
@ -547,7 +546,7 @@ board-independent tools.")))
#:test-target "test"
#:make-flags
(list "HOSTCC=gcc"
,@(if (not same-arch?)
,@(if (not (same-arch?))
`((string-append "CROSS_COMPILE=" ,triplet "-"))
'()))
#:phases

View File

@ -30,7 +30,7 @@
#:use-module ((guix store)
#:select (run-with-store add-to-store add-text-to-store))
#:use-module ((guix derivations)
#:select (derivation derivation->output-path))
#:select (derivation derivation-input derivation->output-path))
#:use-module ((guix utils) #:select (gnu-triplet->nix-system))
#:use-module (guix memoization)
#:use-module (guix i18n)
@ -400,8 +400,9 @@ $out/bin/guile --version~%"
(derivation store name
(derivation->output-path bash) `(,builder)
#:system system
#:inputs `((,bash) (,mkdir) (,tar) (,xz)
(,builder) (,guile))
#:inputs (map derivation-input
(list bash mkdir tar xz guile))
#:sources (list builder)
#:env-vars `(("GUILE_TARBALL"
. ,(derivation->output-path guile))))))

View File

@ -242,7 +242,7 @@ other lower-level build files.")
(define-public osc
(package
(name "osc")
(version "0.165.1")
(version "0.165.2")
(source
(origin
(method git-fetch)
@ -251,7 +251,7 @@ other lower-level build files.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "16p4z34ziy4z2w7mfpclk13x1w2p69wivkdwp0224x18r2fwj67v"))))
(base32 "0yjwvbvv9fgkpiyvrag89zxchyn3nbgp9jz0wn5p0z9450zwfyz6"))))
(build-system python-build-system)
(arguments
`(#:phases

View File

@ -227,7 +227,7 @@ from forcing GEXP-PROMISE."
#:system system
#:guile-for-build guile)))
(define %chromium-version "75.0.3770.100")
(define %chromium-version "75.0.3770.142")
(define %ungoogled-revision "5d8abc38b43a62f379615a0dc972b29d9aebb4b4")
(define %debian-revision "debian/75.0.3770.90-1")
(define package-revision "0")
@ -243,7 +243,7 @@ from forcing GEXP-PROMISE."
%chromium-version ".tar.xz"))
(sha256
(base32
"187wfdxw6ji4302pbn0kyi9b859ydri7gns0wlsrd7vd3c8604wy"))))
"1b550hc9sav0qdnh4hiin2bb3jmfyrb3dhbmnc0v8662rjknq3ji"))))
(define %ungoogled-origin
(origin

View File

@ -59,7 +59,8 @@
#:use-module (srfi srfi-26)
#:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:use-module (ice-9 regex))
#:use-module (ice-9 regex)
#:export (make-gcc-toolchain))
;;; Commentary:
;;;
@ -2483,55 +2484,65 @@ COREUTILS-FINAL vs. COREUTILS, etc."
;;; GCC toolchain.
;;;
(define (make-gcc-toolchain gcc)
"Return a complete toolchain for GCC."
(package
(name "gcc-toolchain")
(version (package-version gcc))
(source #f)
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build union))
#:builder (begin
(use-modules (ice-9 match)
(srfi srfi-26)
(guix build union))
;; Using the following procedure, a gcc toolchain targeting glibc-2.27 can be
;; instantiated like this:
;;
;; (define-public gcc-glibc-2.27-toolchain
;; (make-gcc-toolchain gcc glibc-2.27))
(let ((out (assoc-ref %outputs "out")))
(define* (make-gcc-toolchain gcc
#:optional
(libc #f))
"Return a complete toolchain for GCC. If LIBC is specified, target that libc."
(let ((gcc (if libc (make-gcc-libc gcc libc) gcc))
(libc (if libc libc glibc-final)))
(package
(name (string-append (package-name gcc) "-toolchain"))
(version (package-version gcc))
(source #f)
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build union))
#:builder (begin
(use-modules (ice-9 match)
(srfi srfi-26)
(guix build union))
(match %build-inputs
(((names . directories) ...)
(union-build out directories)))
(let ((out (assoc-ref %outputs "out")))
(union-build (assoc-ref %outputs "debug")
(list (assoc-ref %build-inputs
"libc-debug")))
(union-build (assoc-ref %outputs "static")
(list (assoc-ref %build-inputs
"libc-static")))
#t))))
(match %build-inputs
(((names . directories) ...)
(union-build out directories)))
(native-search-paths (package-native-search-paths gcc))
(search-paths (package-search-paths gcc))
(union-build (assoc-ref %outputs "debug")
(list (assoc-ref %build-inputs
"libc-debug")))
(union-build (assoc-ref %outputs "static")
(list (assoc-ref %build-inputs
"libc-static")))
#t))))
(license (package-license gcc))
(synopsis "Complete GCC tool chain for C/C++ development")
(description
"This package provides a complete GCC tool chain for C/C++ development to
be installed in user profiles. This includes GCC, as well as libc (headers
and binaries, plus debugging symbols in the @code{debug} output), and Binutils.")
(home-page "https://gcc.gnu.org/")
(outputs '("out" "debug" "static"))
(native-search-paths (package-native-search-paths gcc))
(search-paths (package-search-paths gcc))
;; The main raison d'être of this "meta-package" is (1) to conveniently
;; install everything that we need, and (2) to make sure ld-wrapper comes
;; before Binutils' ld in the user's profile.
(inputs `(("gcc" ,gcc)
("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper")))
("binutils" ,binutils-final)
("libc" ,glibc-final)
("libc-debug" ,glibc-final "debug")
("libc-static" ,glibc-final "static")))))
(license (package-license gcc))
(synopsis "Complete GCC tool chain for C/C++ development")
(description
"This package provides a complete GCC tool chain for C/C++ development to
be installed in user profiles. This includes GCC, as well as libc (headers
an d binaries, plus debugging symbols in the @code{debug} output), and Binutils.")
(home-page "https://gcc.gnu.org/")
(outputs '("out" "debug" "static"))
;; The main raison d'être of this "meta-package" is (1) to conveniently
;; install everything that we need, and (2) to make sure ld-wrapper comes
;; before Binutils' ld in the user's profile.
(inputs `(("gcc" ,gcc)
("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper")))
("binutils" ,binutils-final)
("libc" ,libc)
("libc-debug" ,libc "debug")
("libc-static" ,libc "static"))))))
(define-public gcc-toolchain
(make-gcc-toolchain gcc-final))

View File

@ -14066,7 +14066,7 @@ more generic data visualisation.")
"This is a deprecated package for calculating pairwise multiple
comparisons of mean rank sums. This package is superseded by the novel
PMCMRplus package. The PMCMR package is no longer maintained, but kept for
compatibility of reverse depending packages for some time.")
compatibility of dependent packages for some time.")
(license license:gpl3+)))
(define-public r-downloader

View File

@ -47,7 +47,7 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
(define-public rust-proc-macro2
(package
(name "rust-proc-macro2")
(version "0.4.27")
(version "0.4.30")
(source
(origin
(method url-fetch)
@ -56,7 +56,7 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
(string-append name "-" version ".tar.gz"))
(sha256
(base32
"05c92v787snyaq4ss16vxc9mdv6zndfgsdq8k3hnnyffmsf7ycad"))))
"0nd71fl24sys066jrha6j7i34nfkjv44yzw8yww9742wmc8j0gfg"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-unicode-xid" ,rust-unicode-xid))

View File

@ -39,6 +39,7 @@
#:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages version-control)
@ -49,20 +50,24 @@
(define-public python-docker-py
(package
(name "python-docker-py")
(version "1.10.6")
(version "3.7.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "docker-py" version))
(uri (pypi-uri "docker" version))
(sha256
(base32
"05f49f6hnl7npmi7kigg0ibqk8s3fhzx1ivvz1kqvlv4ay3paajc"))))
"0qmrcvpaz37p85hfddsd4yc8hgqlkzs4cz09q9wmy0pz5pwajqm0"))))
(build-system python-build-system)
;; TODO: Tests require a running Docker daemon.
(arguments '(#:tests? #f))
(inputs
`(("python-requests" ,python-requests)
`(("python-requests" ,python-requests-2.20)
("python-docker-pycreds" ,python-docker-pycreds)
("python-ipaddress" ,python-ipaddress)
("python-paramiko" ,python-paramiko)
("python-six" ,python-six)
("python-urllib3" ,python-urllib3-1.24)
("python-websocket-client" ,python-websocket-client)))
(home-page "https://github.com/docker/docker-py/")
(synopsis "Python client for Docker")
@ -73,14 +78,14 @@ management tool.")
(define-public python-dockerpty
(package
(name "python-dockerpty")
(version "0.3.4")
(version "0.4.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dockerpty" version))
(sha256
(base32
"0za6rr349641wv76ww9l3zcic2xyxrirlxpnzl4296h897648455"))))
"1kjn64wx23jmr8dcc6g7bwlmrhfmxr77gh6iphqsl39sayfxdab9"))))
(build-system python-build-system)
(native-inputs
`(("python-six" ,python-six)))
@ -96,25 +101,32 @@ client.")
(define-public docker-compose
(package
(name "docker-compose")
(version "1.5.2")
(version "1.24.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "docker-compose" version))
(sha256
(base32
"0ksg7hm2yvc977968dixxisrhcmvskzpcx3pz0v1kazrdqp7xakr"))))
"0lx7bx6jvhydbab8vwry0bclhdf0dfj6jrns1m5y45yp9ybqxmd5"))))
(build-system python-build-system)
;; TODO: Tests require running Docker daemon.
(arguments '(#:tests? #f))
(inputs
`(("python-docker-py" ,python-docker-py)
`(("python2-backport-ssl-match-hostname"
,python2-backport-ssl-match-hostname)
("python-cached-property"
,python-cached-property)
("python-colorama" ,python-colorama)
("python-docker-py" ,python-docker-py)
("python-docker-pycreds" ,python-docker-pycreds)
("python-dockerpty" ,python-dockerpty)
("python-docopt" ,python-docopt)
("python-ipaddress" ,python-ipaddress)
("python-paramiko" ,python-paramiko)
("python-jsonschema" ,python-jsonschema-2.6)
("python-pyyaml" ,python-pyyaml)
("python-requests" ,python-requests-2.7)
("python-requests" ,python-requests-2.20)
("python-six" ,python-six)
("python-texttable" ,python-texttable)
("python-websocket-client" ,python-websocket-client)))
@ -129,14 +141,14 @@ created and all the services are started as specified in the configuration.")
(define-public python-docker-pycreds
(package
(name "python-docker-pycreds")
(version "0.3.0")
(version "0.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "docker-pycreds" version))
(sha256
(base32
"1zxvam1q22qb0jf48553nnncnfrcp88ag4xa0qmq6vr0imn9a3lb"))))
"1m44smrggnqghxkqfl7vhapdw89m1p3vdr177r6cq17lr85jgqvc"))))
(build-system python-build-system)
(arguments
`(#:phases

View File

@ -251,7 +251,7 @@ easy.")
(define-public snap
(package
(name "snap")
(version "5.0.1")
(version "5.0.4")
(source
(origin
(method git-fetch)
@ -261,7 +261,7 @@ easy.")
(file-name (git-file-name name version))
(sha256
(base32
"0ic0xgal19yazbd1kffmbjhiicvvlw5clj48lj80mksa2lgvnzna"))))
"1zdypxifvxjkzhi4n9mkck8l419wc0pg103339yzhsbb9kkd3jlr"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))

View File

@ -4238,7 +4238,7 @@ them easier to distinguish from other, less important buffers.")
(define-public emacs-prescient
(package
(name "emacs-prescient")
(version "3.1")
(version "3.2")
(source (origin
(method git-fetch)
(uri (git-reference
@ -4247,7 +4247,7 @@ them easier to distinguish from other, less important buffers.")
(file-name (git-file-name name version))
(sha256
(base32
"1cdjvlwlvxxazz7hlxgvdp0pznvj1gzqa2r6k4im0cpdrnnng6j6"))))
"0d60h4rfm5jcf8cf11z91wjqp0xcrviskqzyqhfliqvy2i2yl6ks"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-company" ,emacs-company)
@ -5829,6 +5829,31 @@ that indentation determines structure, this mode provides indentation and
indentation command behavior very similar to that of python-mode.")
(license license:gpl3+)))
(define-public emacs-gitlab-ci-mode
(package
(name "emacs-gitlab-ci-mode")
(version "20190425.11.10")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/joewreschnig/gitlab-ci-mode.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1jkp9mnbiccqnha9zs646znqyqvy5jjb81kah7ghbkzdqqk2avm0"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-yaml-mode" ,emacs-yaml-mode)))
(home-page "https://gitlab.com/joewreschnig/gitlab-ci-mode/")
(synopsis "Emacs mode for editing GitLab CI files")
(description
"@code{gitlab-ci-mode} is an Emacs major mode for editing GitLab CI
files. It provides syntax highlighting and completion for keywords and
special variables. An interface to GitLabs CI file linter is also provided
via @code{gitlab-ci-lint}.")
(license license:gpl3+)))
(define-public emacs-web-mode
(package
(name "emacs-web-mode")
@ -13640,6 +13665,30 @@ reload the configuration with @code{gpgconf --reload gpg-agent}, and start the
server with @code{M-x pinentry-start}.")
(license license:gpl3+))))
(define-public emacs-so-long
(let ((commit "3ebe97decdb5cbbfba82ca686e0ad2c7d2722b4a")
(version "1.0")
(revision "1"))
(package
(name "emacs-so-long")
(version (git-version version revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.savannah.gnu.org/git/so-long.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0fi71g5rsdsi978jz8406k8hvzgnssm9wxar8yqfhs97178r9s5m"))))
(build-system emacs-build-system)
(home-page "https://www.emacswiki.org/emacs/SoLong")
(synopsis "Improve performance in files with long lines")
(description "This package improves the performance of Emacs when
viewing files with long lines.")
(license license:gpl3+))))
(define-public emacs-org-brain
(package
(name "emacs-org-brain")
@ -15340,6 +15389,30 @@ command\", but because it always involves at least two commands (a prefix and
a suffix) we prefer to call it just a \"transient\".")
(license license:gpl3+))))
(define-public emacs-matcha
(let ((commit "c7df5cf5cdac9ae369e241342389ccda0205eab9"))
(package
(name "emacs-matcha")
(version (git-version "0.0.1" "1" commit)) ;no upstream release
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jojojames/matcha.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1lfnh1glg6al677m7ci0x8g5wjdhjxlfl3nv1f1ppsw4dpnwsj9b"))))
(propagated-inputs
`(("emacs-hydra" ,emacs-hydra)
("emacs-transient" ,emacs-transient)))
(build-system emacs-build-system)
(home-page "https://github.com/jojojames/matcha/")
(synopsis "Collection of hydras with a generic interface to launch them")
(description "Matcha provides a collection of transients for various
packages with a consistent way to use them.")
(license license:gpl3+))))
(define-public emacs-undo-propose-el
(let ((commit "5f1fa99a04369a959aad01b476fe4f34229f28cd")
(version "1.0.0")
@ -16481,3 +16554,37 @@ it forcibly
@item Dedicated window for debugging program.
@end enumerate")
(license license:gpl3+))))
(define-public emacs-elpher
(package
(name "emacs-elpher")
(version "1.4.6")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tgvaughan/elpher")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"07xansmhn4l0b9ghzf56vyx8cqg0q01aq3pz5ikx2i19v5f0rc66"))))
(build-system emacs-build-system)
(native-inputs
`(("texinfo" ,texinfo)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'install 'build-doc
(lambda _
(invoke "makeinfo" "elpher.texi"))))))
(home-page "https://github.com/tgvaughan/elpher")
(synopsis "Gopher client for Emacs")
(description "Elpher is a full-featured gopher client for Emacs. Its
features include intuitive keyboard and mouse-driven browsing, out-of-the-box
compatibility with evil-mode, clickable web and gopher links in plain text,
caching of visited sites, pleasant and configurable visualization of Gopher
directories, direct visualisation of image files, jumping directly to links by
name (with autocompletion), a simple bookmark management system and
connections using TLS encryption.")
(license license:gpl3+)))

View File

@ -520,3 +520,37 @@ directories.
(license (list
license:bsd-2 ; Ephoto's thumbnailing code
license:bsd-3))))
(define-public evisum
(package
(name "evisum")
(version "0.2.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://download.enlightenment.org/rel/apps/"
"evisum/evisum-" version ".tar.xz"))
(sha256
(base32
"1lj62n896kablsl687c66yxrwajrh6ralb3y6nmcqv34pglnigca"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure phase
(add-after 'unpack 'set-environmental-variables
(lambda _ (setenv "CC" (which "gcc")) #t)))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("alsa-lib" ,alsa-lib)
("efl" ,efl)
("perl" ,perl)))
(home-page "https://www.enlightenment.org")
(synopsis "EFL process viewer")
(description
"This is a process monitor and system monitor using the
@dfn{Enlightenment Foundation Libraries} (EFL).")
(license license:bsd-2)))

View File

@ -12,6 +12,7 @@
;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -36,6 +37,8 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
@ -47,9 +50,12 @@
#:use-module (gnu packages dns)
#:use-module (gnu packages emacs)
#:use-module (gnu packages dbm)
#:use-module (gnu packages gnome)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libunwind)
@ -506,7 +512,7 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
;; Only try tests that don't need access to network or system
(replace 'check
(lambda _
(invoke "make" "ARGS=-R 'hash|core_tests'" "test")))
(invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test")))
(add-after 'check 'unit-tests
(lambda _
(let ((excluded-unit-tests
@ -1053,3 +1059,39 @@ Its features are:
@item get account amount.
@end itemize")
(license license:agpl3+)))
(define-public grisbi
(package
(name "grisbi")
(version "1.2.2")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/grisbi/grisbi%20stable/"
(version-major+minor version) ".x/" version
"/grisbi-" version ".tar.bz2"))
(sha256
(base32
"1piiyyxjsjbw9gcqydvknzxmmfgh8kdqal12ywrxyxih2afwnvbw"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags (list "--without-ofx")))
(propagated-inputs
`(("dconf" ,dconf)))
(native-inputs
`(("glib" ,glib "bin") ; glib-compile-schemas
("pkg-config" ,pkg-config)
("intltool" ,intltool)))
(inputs
`(("gtk+" ,gtk+)
("libgsf" ,libgsf)))
(synopsis "Personal accounting application")
(description "Grisbi is a personal accounting application written by
French developers that is designed to follow French accounting rules.
Grisbi can manage multiple accounts, currencies and users. It manages
third party, expenditure and receipt categories, budgetary lines,
financial years, budget estimates, bankcard management and other
information.")
(home-page "http://grisbi.org")
(license license:gpl2+)))

View File

@ -3,7 +3,7 @@
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@ -256,21 +256,21 @@ non-root users.")
(license license:gpl3))))
(define-public rkflashtool
(let ((commit "094bd6410cb016e487e2ccb1050c59eeac2e6dd1")
(let ((commit "8966c4e277de8148290554aaaa4146a3a84a3c53")
(revision "1"))
(package
(name "rkflashtool")
(version (string-append "0.0.0-" revision "." (string-take commit 7)))
(version (git-version "5.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/linux-rockchip/rkflashtool.git")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(file-name (git-file-name name version))
(sha256
(base32
"1zkd8zxir3rfg3sy9r20bcnxclnplryn583gqpcr3iad0k3xbah7"))))
"1ndyzg1zlgg20dd8js9kfqm5kq19k005vddkvf65qj20w0pcyahn"))))
(build-system gnu-build-system)
(arguments
'(#:phases

View File

@ -704,15 +704,15 @@ utilities to ease adding new glyphs to the font.")
(define-public font-google-noto
(package
(name "font-google-noto")
(version "20170403")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append "https://noto-website.storage.googleapis.com/"
"pkgs/Noto-hinted.zip"))
(file-name (string-append name "-" version ".zip"))
(sha256
(base32
"1p92a6dvs7wqwjfpp1ahr9z1wz35am0l8r78521383spd77bmrfm"))))
(version "20171025")
(source
(origin
(method url-fetch/zipbomb)
(uri (string-append "https://noto-website-2.storage.googleapis.com/"
"pkgs/Noto-hinted.zip"))
(file-name (string-append name "-" version ".zip"))
(sha256
(base32 "1bp42whyin7xcgmrbnfvz3rvd98xmxaz3ywqybbjmqzwaa9llyw3"))))
(build-system font-build-system)
(home-page "https://www.google.com/get/noto/")
(synopsis "Fonts to cover all languages")

View File

@ -2694,7 +2694,7 @@ Transport Tycoon Deluxe.")
(define-public openrct2
(package
(name "openrct2")
(version "0.2.2")
(version "0.2.3")
(source
(origin
(method git-fetch)
@ -2703,7 +2703,7 @@ Transport Tycoon Deluxe.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1bfqmb6cbmsjcvj77vppy5lw1m4lkvxd1w3f218ah4788xnkysq2"))))
(base32 "01mj6jlbl2cn3wpk6sy34ldzdl0qykpn7fncznjykklj2nqzr4ig"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"

View File

@ -37,6 +37,7 @@
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -5335,6 +5336,7 @@ users.")
(uri (string-append "mirror://gnome/sources/NetworkManager/"
(version-major+minor version) "/"
"NetworkManager-" version ".tar.xz"))
(patches (search-patches "nm-plugin-path.patch"))
(sha256
(base32
"064cgj9za0kzarks0lrv0qw2ysdphb5l97iw0c964bfiqzjfv8rm"))
@ -5486,12 +5488,31 @@ services.")
"0gyrv46h9k17qym48qacq4zpxbap6hi17shn921824zm98m2bdvr"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-absolute-paths")))
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
#:phases
(modify-phases %standard-phases
(add-after 'configure 'patch-path
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
(let* ((ovpn (string-append (assoc-ref inputs "openvpn")
"/sbin/openvpn"))
(modprobe (string-append (assoc-ref inputs "kmod")
"/bin/modprobe"))
(pretty-ovpn (string-append "\"" ovpn "\"")))
(for-each
(lambda (file)
(substitute* file
(("\"/usr/local/sbin/openvpn\"") pretty-ovpn)
(("\"/usr/sbin/openvpn\"") pretty-ovpn)
(("\"/sbin/openvpn\"") pretty-ovpn)
(("/sbin/modprobe") modprobe)))
'("src/nm-openvpn-service.c" "properties/nm-openvpn-editor.c")))
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)))
(inputs
`(("gtk+" ,gtk+)
("kmod" ,kmod)
("openvpn" ,openvpn)
("network-manager" ,network-manager)
("network-manager-applet" ,network-manager-applet) ;for libnma
@ -5504,6 +5525,55 @@ to virtual private networks (VPNs) via OpenVPN.")
(license license:gpl2+)
(properties `((upstream-name . "NetworkManager-openvpn")))))
(define-public network-manager-vpnc
(package
(name "network-manager-vpnc")
(version "1.2.6")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://gnome/sources/NetworkManager-vpnc/"
(version-major+minor version)
"/NetworkManager-vpnc-" version ".tar.xz"))
(sha256
(base32
"1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
#:phases
(modify-phases %standard-phases
(add-after 'configure 'patch-path
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
(let* ((vpnc (string-append (assoc-ref inputs "vpnc")
"/sbin/vpnc"))
(modprobe (string-append (assoc-ref inputs "kmod")
"/bin/modprobe"))
(pretty-ovpn (string-append "\"" vpnc "\"")))
(substitute* "src/nm-vpnc-service.c"
(("\"/usr/local/sbin/vpnc\"") pretty-ovpn)
(("\"/usr/sbin/vpnc\"") pretty-ovpn)
(("\"/sbin/vpnc\"") pretty-ovpn)
(("/sbin/modprobe") modprobe)))
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)))
(inputs
`(("gtk+" ,gtk+)
("kmod" ,kmod)
("vpnc" ,vpnc)
("network-manager" ,network-manager)
("network-manager-applet" ,network-manager-applet) ;for libnma
("libsecret" ,libsecret)))
(home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
(synopsis "VPNC plug-in for NetworkManager")
(description
"Support for configuring virtual private networks based on VPNC.
Compatible with Cisco VPN concentrators configured to use IPsec.")
(license license:gpl2+)
(properties `((upstream-name . "NetworkManager-vpnc")))))
(define-public mobile-broadband-provider-info
(package
(name "mobile-broadband-provider-info")

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2019 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
@ -78,20 +78,18 @@
#:use-module (guix utils))
(define-public blender
(let ((revision "0")
(commit "3c3d80ea22af15e13237f978181a881b90c41e7c"))
(package
(name "blender")
(version (git-version "2.80-beta" revision commit))
(version "v2.80-rc1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://git.blender.org/blender.git")
(commit commit)))
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1hhn8pf3a5556mxyrb2ggsiy6q0h75hnkdpcgq9b6vg284jl2l4q"))))
"11dcf0rjq42mpphk8r8cy7gvhzzl1cj1vslp98ibh8sdjzaz2mdq"))))
(build-system cmake-build-system)
(arguments
(let ((python-version (version-major+minor (package-version python))))
@ -166,8 +164,8 @@ the 3D pipeline—modeling, rigging, animation, simulation, rendering,
compositing and motion tracking, even video editing and game creation. The
application can be customized via its API for Python scripting.
WARNING: This is a beta build of Blender.")
(license license:gpl2+))))
WARNING: This is a release candidate build of Blender.")
(license license:gpl2+)))
(define-public blender-2.79
(package
@ -230,7 +228,7 @@ WARNING: This is a beta build of Blender.")
`(("boost" ,boost)
("jemalloc" ,jemalloc)
("libx11" ,libx11)
("openimageio" ,openimageio)
("openimageio" ,openimageio-1.7)
("openexr" ,openexr)
("ilmbase" ,ilmbase)
("openjpeg" ,openjpeg-1)
@ -456,7 +454,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
(define-public openimageio
(package
(name "openimageio")
(version "1.7.19")
(version "1.8.17")
(source (origin
(method git-fetch)
(uri (git-reference
@ -465,7 +463,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
(file-name (git-file-name name version))
(sha256
(base32
"0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc"))))
"0zq34szprgkrrayg5sl3whrsx2l6lr8nw4hdrnwv2qhn70jbi2w2"))))
(build-system cmake-build-system)
;; FIXME: To run all tests successfully, test image sets from multiple
;; third party sources have to be present. For details see
@ -492,6 +490,22 @@ visual effects work for film.")
(home-page "http://www.openimageio.org")
(license license:bsd-3)))
;; This older version of OpenImageIO is required for Blender 2.79.
(define-public openimageio-1.7
(package
(inherit openimageio)
(name "openimageio")
(version "1.7.19")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/OpenImageIO/oiio.git")
(commit (string-append "Release-" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc"))))))
(define-public openscenegraph
(package
(name "openscenegraph")

View File

@ -1362,7 +1362,7 @@ The library is shipped with documentation in Info format and usage examples.")
(define-public guile-wisp
(package
(name "guile-wisp")
(version "0.9.9.1")
(version "1.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/ArneBab/"
@ -1370,7 +1370,7 @@ The library is shipped with documentation in Info format and usage examples.")
version ".tar.gz"))
(sha256
(base32
"1ii14qz1lx7ffhb8i9q7dgaiwbif8g2q182skx17j11skp65c8r3"))))
"03pz7pj9jyallynhflp5s7qax8dj1fs8la434wrfgz7g1kgjnvf6"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
@ -1387,9 +1387,7 @@ The library is shipped with documentation in Info format and usage examples.")
(add-before 'configure 'patch-/usr/bin/env
(lambda _
(substitute* "Makefile.in"
(("/usr/bin/env bash") (which "bash"))
(("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
"site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
(("/usr/bin/env bash") (which "bash")))
#t))
;; auto compilation breaks, but if we set HOME to /tmp,
;; that works ok
@ -1422,7 +1420,7 @@ The library is shipped with documentation in Info format and usage examples.")
(assoc-ref emacs:%standard-phases 'build))
(add-after 'compile-emacs-files 'make-autoloads
(assoc-ref emacs:%standard-phases 'make-autoloads)))))
(home-page "https://draketo.de/english/wisp")
(home-page "https://www.draketo.de/english/wisp")
(inputs
`(("guile" ,guile-2.2)))
(native-inputs

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -20,13 +20,17 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages libusb)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages xml)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python))
(define-public rtl-sdr
@ -82,3 +86,41 @@ growing list of radios across several manufacturers and allows transferring of
memory contents between them.")
(license (list license:gpl3+
license:lgpl3+)))) ; chirp/elib_intl.py
(define-public aptdec
(package
(name "aptdec")
(version "1.7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/csete/aptdec")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1hf0zb51qc6fyhdjxyij1n3vgwnw3cwksc3r11szbhkml14qjnzk"))))
(build-system gnu-build-system)
(inputs
`(("libpng" ,libpng)
("libsndfile" ,libsndfile)))
(arguments
`(#:make-flags (list "CC=gcc")
#:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(install-file "atpdec" (string-append out "/bin")))
#t)))))
(home-page "https://github.com/csete/aptdec")
(synopsis "NOAA Automatic Picture Transmission (APT) decoder")
(description "Aptdec decodes Automatic Picture Transmission (APT) images.
These are medium resolution images of the Earth transmitted by, among other
satellites, the POES NOAA weather satellite series. These transmissions are
on a frequency of 137 MHz. They can be received using an inexpensive antenna
and a dedicated receiver.")
(license license:gpl2+)))

View File

@ -153,30 +153,6 @@ output file should be identical to the corresponding @code{golden} file, which
contains the correct result for the test.")
(license license:expat)))
;; This package builds `clock` without tests, since the tests rely on tasty
;; and tasty-quickcheck, which in turn require clock to build.
(define ghc-clock-bootstrap
(package
(name "ghc-clock-bootstrap")
(version "0.5.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://hackage.haskell.org/package/"
"clock/"
"clock-" version ".tar.gz"))
(sha256
(base32 "1ncph7vi2q6ywwc8ysxl1ibw6i5dwfvln88ssfazk8jgpj4iyykw"))))
(build-system haskell-build-system)
(arguments `(#:tests? #f)) ;; Testing suite depends on tasty and
;; tasty-quickcheck, which need clock to build.
(home-page "https://hackage.haskell.org/package/clock")
(synopsis "High-resolution clock for Haskell")
(description "A package for convenient access to high-resolution clock and
timer functions of different operating systems via a unified API.")
(license license:bsd-3)))
(define-public ghc-tasty
(package
(name "ghc-tasty")

View File

@ -4795,6 +4795,16 @@ unbounded @code{Integer} type.")
timer functions of different operating systems via a unified API.")
(license license:bsd-3)))
;; This package builds `clock` without tests, since the tests rely on tasty
;; and tasty-quickcheck, which in turn require clock to build.
(define-public ghc-clock-bootstrap
(package
(inherit ghc-clock)
(name "ghc-clock-bootstrap")
(arguments '(#:tests? #f))
(inputs '())
(properties '((hidden? #t)))))
(define-public ghc-charset
(package
(name "ghc-charset")

View File

@ -14,7 +14,7 @@
;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2017 ng0 <ng0@n0.is>
;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
@ -295,6 +295,74 @@ files. It can compress them as much as 40% losslessly.")
Currently all documentation resides in @file{pnglite.h}.")
(license license:zlib))))
(define-public libimagequant
(package
(name "libimagequant")
(version "2.12.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ImageOptim/libimagequant.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0qsfq1kv1m5jzn9v9iz0bac66k4clcis1c9877qabnwzwmwma5v0"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f)) ; no check target
(home-page "https://pngquant.org/lib/")
(synopsis "Image palette quantization library")
(description "libimagequant is a small, portable C library for
high-quality conversion of RGBA images to 8-bit indexed-color (palette)
images. This library can significantly reduces file sizes and powers pngquant
and other PNG optimizers.")
(license license:gpl3+)))
(define-public pngquant
(package
(name "pngquant")
(version "2.12.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/kornelski/pngquant.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1yiwbcihn4311fpfd568gg8zmmhqwg80jmhbhkb5msiipgd9xv33"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:configure-flags
'("--with-openmp" "--with-lcms2")))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("libpng" ,libpng)
("zlib" , zlib)
("lcms" ,lcms)
("libimagequant" ,libimagequant)))
(home-page "https://pngquant.org/")
(synopsis "Utility and library for lossy compressing PNG images")
(description "pngquant is a PNG compressor that significantly reduces file
sizes by converting images to a more efficient 8-bit PNG format with alpha
channel (often 60-80% smaller than 24/32-bit PNG files). Compressed images
are fully standards-compliant and are supported by all web browsers and
operating systems.
Features:
@enumerate
@item High-quality palette generation using a combination of vector
quantization algorithms.
@item Unique adaptive dithering algorithm that adds less noise to images
than the standard Floyd-Steinberg.
@item Easy to integrate with shell scripts, GUIs and server-side software.
@item Fast mode for real-time processing/large numbers of images.
@end enumerate")
(license license:gpl3+)))
(define-public libjpeg
(package
(name "libjpeg")

View File

@ -35,6 +35,7 @@
;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Stefan Stefanović <stefanx2ovic@gmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -104,7 +105,6 @@
#:use-module (gnu packages samba)
#:use-module (gnu packages serialization)
#:use-module (gnu packages slang)
#:use-module (gnu packages storage)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
@ -421,26 +421,26 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
It has been modified to remove all non-free binary blobs.")
(license license:gpl2)))
(define %linux-libre-version "5.1.17")
(define %linux-libre-hash "049mij4z1iilrggw6plfdpcj1lnc1vqz5z445ix9677cq1fmiwlh")
(define %linux-libre-version "5.2.1")
(define %linux-libre-hash "1qj3zsjynz45p97n6sngdbh4xfd1jks3hbn85nmhzds6sxgg4c54")
(define %linux-libre-5.1-patches
(define %linux-libre-5.2-patches
(list %boot-logo-patch
%linux-libre-arm-export-__sync_icache_dcache-patch))
(define-public linux-libre-5.1
(define-public linux-libre-5.2
(make-linux-libre %linux-libre-version
%linux-libre-hash
'("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
#:patches %linux-libre-5.1-patches
#:patches %linux-libre-5.2-patches
#:configuration-file kernel-config))
(define-public linux-libre-headers-5.1
(define-public linux-libre-headers-5.2
(make-linux-libre-headers %linux-libre-version
%linux-libre-hash))
(define %linux-libre-4.19-version "4.19.58")
(define %linux-libre-4.19-hash "0i2mh0zk1h1niba1bpd49bn938sdn3qrwzkqpqzimxnj31xcjhyz")
(define %linux-libre-4.19-version "4.19.59")
(define %linux-libre-4.19-hash "1c9qfw1mnz68ki48kg1brmv47wmsdvq41ip6202rlnmwgncj5yrw")
(define %linux-libre-4.19-patches
(list %boot-logo-patch
@ -492,7 +492,7 @@ It has been modified to remove all non-free binary blobs.")
(make-linux-libre %linux-libre-version
%linux-libre-hash
'("armhf-linux")
#:patches %linux-libre-5.1-patches
#:patches %linux-libre-5.2-patches
#:configuration-file kernel-config-veyron
#:extra-version "arm-veyron"))
@ -501,13 +501,13 @@ It has been modified to remove all non-free binary blobs.")
"1zqiic55viy065lhnkmhn33sz3bbbr2ykbm5f92yzd8lpc9zl7yx"))
(define-public linux-libre-headers linux-libre-headers-4.19.56)
(define-public linux-libre linux-libre-5.1)
(define-public linux-libre linux-libre-5.2)
(define-public linux-libre-arm-generic
(make-linux-libre %linux-libre-version
%linux-libre-hash
'("armhf-linux")
#:patches %linux-libre-5.1-patches
#:patches %linux-libre-5.2-patches
#:defconfig "multi_v7_defconfig"
#:extra-version "arm-generic"))
@ -530,7 +530,7 @@ It has been modified to remove all non-free binary blobs.")
(make-linux-libre %linux-libre-version
%linux-libre-hash
'("armhf-linux")
#:patches %linux-libre-5.1-patches
#:patches %linux-libre-5.2-patches
#:defconfig "omap2plus_defconfig"
#:extra-version "arm-omap2plus"))
@ -3245,7 +3245,7 @@ arrays when needed.")
(define-public multipath-tools
(package
(name "multipath-tools")
(version "0.7.9")
(version "0.8.2")
(source (origin
(method url-fetch)
(uri (string-append "https://git.opensvc.com/?p=multipath-tools/"
@ -3253,7 +3253,7 @@ arrays when needed.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1jhi6bhl4ih75rfmyyjxd35ghgch5ls1gw40cjxwy9d6bd41z6q1"))
"0kb4mhzwyygdbikikmby6hj39pb3nrzv05v526c75wnycwnpxg31"))
(modules '((guix build utils)))
(snippet
'(begin
@ -3303,8 +3303,7 @@ arrays when needed.")
("pkg-config" ,pkg-config)
("valgrind" ,valgrind)))
(inputs
`(("ceph:lib" ,ceph "lib")
("json-c" ,json-c)
`(("json-c" ,json-c)
("libaio" ,libaio)
("liburcu" ,liburcu)
("lvm2" ,lvm2)

View File

@ -1149,15 +1149,14 @@ which can add many functionalities to the base client.")
(define-public msmtp
(package
(name "msmtp")
(version "1.8.4")
(version "1.8.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://marlam.de/msmtp/releases/"
"/msmtp-" version ".tar.xz"))
(sha256
(base32
"1xr926lyy44baqdgv9q0sw5z6ll2cb4lx2g4lgpgbqn8bglpzpg5"))))
(base32 "0fczpfxlr62wkr7bwhp24clxg962k5khgz14h818qyy4v77dl4qn"))))
(build-system gnu-build-system)
(inputs
`(("libsecret" ,libsecret)
@ -1949,14 +1948,14 @@ converts them to maildir format directories.")
(define-public mpop
(package
(name "mpop")
(version "1.4.4")
(version "1.4.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://marlam.de/mpop/releases/"
"mpop-" version ".tar.xz"))
(sha256
(base32 "0j21cp8bw12vgfymxi3i4av3j97lrcyb5y9xa3mb59wr17izz73x"))))
(base32 "1m6743j8g777lijvxqw2wz6pv2g5a9wlh6zq7awk0hvd44xp4sav"))))
(build-system gnu-build-system)
(inputs
`(("gnutls" ,gnutls)

View File

@ -15,7 +15,7 @@
;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017, 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017, 2018, 2019 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017 ng0 <ng0@n0.is>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
@ -1618,6 +1618,98 @@ Open CASCADE library.")
license:expat; file src/OpenGl/OpenGl_glext.h
license:bsd-3)))); test framework gtest
(define-public opencascade-occt
(package
(name "opencascade-occt")
(version "7.3.0p3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.dev.opencascade.org/repos/occt.git")
(commit
(string-append "V"
(string-map (lambda (x) (if (eq? x #\.) #\_ x))
version)))))
(file-name (git-file-name name version))
(sha256
(base32 "0bdywwxb6mk0ykbiajlvsb37295akqjp0a60y672qjfa67k0ljv4"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove files specific to non-free operating systems.
(delete-file-recursively "samples/ios")
(delete-file-recursively "samples/mfc")
(delete-file-recursively "samples/qt/FuncDemo")
(delete-file "genconf.bat")
(delete-file "gendoc.bat")
(delete-file "genproj.bat")
(delete-file "upgrade.bat")
;; Remove references to deleted files.
(substitute* "dox/FILES_HTML.txt"
((".*standard.*") "" )
((".*UIKitSample.*") ""))
#t))))
(build-system cmake-build-system)
(arguments
'(;; There is no test target for make. OCCT provides an
;; 'Automated Testing System', which may be accessed after
;; installation via the draw.sh script. draw.sh is located in
;; the bin directory. For details see:
;; https://www.opencascade.com/doc/occt-7.3.0/overview/html/\
;; occt_dev_guides__tests.html
#:tests? #f
;; Configure without freeimage: attempting to link against the
;; freeimage version 3.17 library leads to 'undefined
;; reference' errors.
#:configure-flags
(list "-DUSE_FREEIMAGE:BOOL=OFF"
"-DUSE_TBB:BOOL=ON"
"-DUSE_VTK:BOOL=OFF"
"-DBUILD_DOC_Overview:BOOL=OFF"
"-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON"
"-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON"
"-UCMAKE_INSTALL_LIBDIR")))
(inputs
`(("doxygen" ,doxygen)
;("freeimage" ,freeimage)
("freetype" ,freetype)
("glu" ,glu)
("libxext" ,libxext)
("libxi" ,libxi)
("libxmu" ,libxmu)
("mesa" ,mesa)
("tbb" ,tbb)
("tcl" ,tcl)
("tk" ,tk)))
;; TODO: build Overview documentation and add 'doc' output.
(home-page "https://www.opencascade.com")
(synopsis "Libraries for 3D modeling and numerical simulation")
(description
"Open CASCADE is a set of libraries for the development of applications
dealing with 3D CAD data or requiring industrial 3D capabilities. It includes
C++ class libraries providing services for 3D surface and solid modeling, CAD
data exchange, and visualization. It is used for development of specialized
software dealing with 3D models in design (CAD), manufacturing (CAM),
numerical simulation (CAE), measurement equipment (CMM), and quality
control (CAQ) domains.
This is the certified version of the Open Cascade Technology (OCCT) library.")
(license (list ;; OCCT library:
license:lgpl2.1; with an exception for the use of header
; files, see OCCT_LGPL_EXCEPTION.txt.
;; Files src/OpenGl/glext.h, adm/cmake/cotire.cmake and
;; src/OpenGl/OpenGl_HaltonSampler.hxx:
license:expat
;; Files src/ExprIntrp/ExprIntrp.tab.* and
;; src/StepFile/step.tab.*:
license:gpl3+ ; with Bison 2.2 exception.
;; File src/NCollection/NCollection_UtfIterator.lxx:
(license:non-copyleft
"https://www.unicode.org/license.html")
;; File src/NCollection/NCollection_StdAllocator.hxx:
license:public-domain))))
(define-public gmsh
(package
(name "gmsh")

View File

@ -1855,7 +1855,7 @@ messaging that arent available to clients that connect over XMPP.")
(define-public telegram-purple
(package
(name "telegram-purple")
(version "1.3.1")
(version "1.4.1")
(home-page "https://github.com/majn/telegram-purple")
(source (origin
(method git-fetch)
@ -1865,7 +1865,7 @@ messaging that arent available to clients that connect over XMPP.")
(recursive? #t)))
(sha256
(base32
"0p93jpjpx7hszwffzgixw04zkrpsiyzz4za3gfr4j07krc4771fp"))
"0xlmqnlp2dqkgsq052d6dwgvqbwch2w0dnwpjslk5na4ih3lfr7k"))
(modules '((guix build utils)))
(snippet
'(begin

View File

@ -352,6 +352,7 @@ playing your music.")
(inputs
`(("alsa-lib" ,alsa-lib)
("ao" ,ao)
("faad2" ,faad2)
("ffmpeg" ,ffmpeg)
("flac" ,flac)
("jack" ,jack-1)

View File

@ -1440,7 +1440,7 @@ gone wild and are suddenly taking up your bandwidth.")
(define-public nzbget
(package
(name "nzbget")
(version "20.0")
(version "21.0")
(source
(origin
(method url-fetch)
@ -1449,7 +1449,7 @@ gone wild and are suddenly taking up your bandwidth.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0q93aqqyzccn5r9sny38499rmg846qdh9pi2v5kvf9m23v54yk60"))
"0l3dzxz7d7jf6cyach41zirvsx1x0vs4nh053c0miycv7zjyrly7"))
(modules '((guix build utils)))
(snippet
;; Reported upstream as <https://github.com/nzbget/nzbget/pull/414>.

View File

@ -0,0 +1,51 @@
From d3026a6d331298003ccc6cd9d2e20dcb7fa9ae1d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= <sleep_walker@gnu.org>
Date: Wed, 3 Jul 2019 13:31:54 +0200
Subject: [PATCH] respect NM_VPN_PLUGIN_DIR
---
src/vpn/nm-vpn-manager.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/vpn/nm-vpn-manager.c b/src/vpn/nm-vpn-manager.c
index d063916..d779166 100644
--- a/src/vpn/nm-vpn-manager.c
+++ b/src/vpn/nm-vpn-manager.c
@@ -223,6 +223,7 @@ nm_vpn_manager_init (NMVpnManager *self)
GSList *infos, *info;
const char *conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc ();
const char *conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib ();
+ const char *conf_dir_user = _nm_vpn_plugin_info_get_default_dir_user ();
/* Watch the VPN directory for changes */
file = g_file_new_for_path (conf_dir_lib);
@@ -241,6 +242,14 @@ nm_vpn_manager_init (NMVpnManager *self)
G_CALLBACK (vpn_dir_changed), self);
}
+ file = g_file_new_for_path (conf_dir_user);
+ priv->monitor_etc = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL);
+ g_object_unref (file);
+ if (priv->monitor_etc) {
+ priv->monitor_id_etc = g_signal_connect (priv->monitor_etc, "changed",
+ G_CALLBACK (vpn_dir_changed), self);
+ }
+
/* first read conf_dir_lib. The name files are not really user configuration, but
* plugin configuration. Hence we expect ~newer~ plugins to install their files
* in /usr/lib/NetworkManager. We want to prefer those files.
@@ -255,6 +264,11 @@ nm_vpn_manager_init (NMVpnManager *self)
try_add_plugin (self, info->data);
g_slist_free_full (infos, g_object_unref);
+ infos = _nm_vpn_plugin_info_list_load_dir (conf_dir_user, TRUE, 0, NULL, NULL);
+ for (info = infos; info; info = info->next)
+ try_add_plugin (self, info->data);
+ g_slist_free_full (infos, g_object_unref);
+
priv->active_services = g_hash_table_new_full (nm_str_hash, g_str_equal, g_free, NULL);
}
--
2.22.0

View File

@ -75,14 +75,14 @@
(define-public python-aiohttp
(package
(name "python-aiohttp")
(version "3.4.4")
(version "3.5.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiohttp" version))
(sha256
(base32
"1ykm6kdjkrg556j0zd7dx2l1rsrbh0d9g27ivr6dmaahz9pyrbsi"))))
"1gy95ni8rkdwzir9zf14ivpfwp02g69xbhibldykff0rzbs86k4w"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;missing pytest-timeout
@ -154,22 +154,22 @@ using @url{https://github.com/saghul/pycares,pycares}.")
(define-public python-aiorpcx
(package
(name "python-aiorpcx")
(version "0.10.2")
(version "0.18.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiorpcX" version))
(sha256
(base32
"1p88k15jh0d2a18pnnbfcamsqi2bxvmmhpizmdlxfdxf8vy5ggyj"))))
"0k545hc7wl6sh1svydzbv6x7sx5pig2pqkl3yxs9riwmvzawx9xp"))))
(build-system python-build-system)
(propagated-inputs
`(("python-attrs" ,python-attrs)))
(home-page "https://github.com/kyuupichan/aiorpcX")
(synopsis "Generic asyncio RPC implementation")
(description
"aiorpcX is a generic asyncio library implementation of RPC suitable for
an application that is a client, server or both.
"The aiorpcX library is a generic asyncio implementation of RPC suitable
for an application that is a client, server or both.
The package includes a module with full coverage of JSON RPC versions 1.0 and
2.0, JSON RPC protocol auto-detection, and arbitrary message framing. It also
@ -1352,6 +1352,22 @@ WebSocket usage in Python programs.")
than Pythons urllib2 library.")
(license license:asl2.0)))
;; Some software requires an older version of Requests, notably Docker/Docker
;; Compose.
(define-public python-requests-2.20
(package (inherit python-requests)
(version "2.20.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "requests" version))
(sha256
(base32
"0qzj6cgv3k9wyj7wlxgz7xq0cfg4jbbkfm24pp8dnhczwl31527a"))))
(propagated-inputs
`(("python-urllib3" ,python-urllib3-1.24)
("python-idna" ,python-idna-2.7)
,@(package-propagated-inputs python-requests)))))
;; Some software requires an older version of Requests, notably Docker
;; Compose.
(define-public python-requests-2.7
@ -1528,6 +1544,18 @@ can reuse the same socket connection for multiple requests, it can POST files,
supports url redirection and retries, and also gzip and deflate decoding.")
(license license:expat)))
;; Some software requires an older version of urllib3, notably Docker.
(define-public python-urllib3-1.24
(package (inherit python-urllib3)
(version "1.24.3")
(source (origin
(method url-fetch)
(uri (pypi-uri "urllib3" version))
(sha256
(base32
"1x0slqrv6kixkbcdnxbglvjliwhc1payavxjvk8fvbqjrnasd4r3"))))))
(define-public python2-urllib3
(package-with-python2 python-urllib3))
@ -1954,15 +1982,15 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
(version "0.11.6")
(source
(origin
(method url-fetch)
(method git-fetch)
;; Pypi does not have tests.
(uri (string-append
"https://github.com/ionrock/cachecontrol/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(uri (git-reference
(url "https://github.com/ionrock/cachecontrol")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
"0pb16bzbkk99nh317xyfk8fxc2ngimsbz7lz9pxsw8c82n83d4dh"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -2163,6 +2191,30 @@ pretty printer and a tree visitor.")
"This package provides HTTP basic access authentication for Flask.")
(license license:bsd-3)))
(define-public python-flask-htpasswd
(package
(name "python-flask-htpasswd")
(version "0.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "flask-htpasswd" version))
(sha256
(base32
"14q1y1y9i9bhabdnwd25jqzc4ljli23smxfyyh8abxz1vq93pxra"))))
(build-system python-build-system)
(propagated-inputs
`(("python-flask" ,python-flask)
("python-itsdangerous" ,python-itsdangerous)
("python-passlib" ,python-passlib)
("python-tox" ,python-tox)))
(home-page "http://github.com/carsongee/flask-htpasswd")
(synopsis "Basic authentication via htpasswd files in Flask applications")
(description "This package provides Basic authentication via
@file{htpasswd} files and access_token authentication in Flask
applications.")
(license license:bsd-3)))
(define-public python-flask-sqlalchemy
(package
(name "python-flask-sqlalchemy")

View File

@ -63,6 +63,7 @@
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -3848,22 +3849,11 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
("python-pillow" ,python-pillow)
("python-pytz" ,python-pytz)
("python-six" ,python-six)
;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
;; from 'gtk+') provides the required 'typelib' files used by
;; 'gobject-introspection'. The location of these files is set with the
;; help of the environment variable GI_TYPELIB_PATH. At build time this
;; is done automatically by a 'native-search-path' procedure. However,
;; at run-time the user must set this variable as follows:
;;
;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
("gtk+" ,gtk+)
;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
;; object. For this reason we need to import both libraries.
;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
("python-pycairo" ,python-pycairo)
;; XXX: qtwebkit cannot be built reliably.
("python-pyqt" ,python-pyqt-without-qtwebkit)
("python-cairocffi" ,python-cairocffi)))
(inputs
`(("libpng" ,libpng)
@ -3884,12 +3874,10 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
(modify-phases %standard-phases
(add-before 'build 'configure-environment
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((cairo (assoc-ref inputs "cairo"))
(gtk+ (assoc-ref inputs "gtk+")))
;; Setting these directories in the 'basedirlist' of 'setup.cfg'
(let ((cairo (assoc-ref inputs "cairo")))
;; Setting this directory in the 'basedirlist' of 'setup.cfg'
;; has not effect.
(setenv "LD_LIBRARY_PATH"
(string-append cairo "/lib:" gtk+ "/lib"))
(setenv "LD_LIBRARY_PATH" (string-append cairo "/lib"))
(setenv "HOME" (getcwd))
(call-with-output-file "setup.cfg"
(lambda (port)
@ -5209,7 +5197,17 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
(lambda _
(setenv "HOME" "/tmp")
(invoke "pytest" "-v")
#t)))))
#t))
(add-after 'install 'set-python-file-name
(lambda* (#:key outputs #:allow-other-keys)
;; Record the absolute file name of the 'python' executable in
;; 'kernel.json'.
(let ((out (assoc-ref outputs "out")))
(substitute* (string-append out "/share/jupyter"
"/kernels/python3/kernel.json")
(("\"python\"")
(string-append "\"" (which "python") "\"")))
#t))))))
(propagated-inputs
`(("python-ipython" ,python-ipython)
;; imported at runtime during connect
@ -7228,6 +7226,17 @@ the Python standard library but currently only supports the older 2003
specification.")
(license license:bsd-4)))
(define-public python-idna-2.7
(package (inherit python-idna)
(version "2.7")
(source (origin
(method url-fetch)
(uri (pypi-uri "idna" version))
(sha256
(base32
"05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8"))))))
(define-public python2-idna
(package-with-python2 python-idna))
@ -8136,14 +8145,14 @@ the standard library.")
(define-public python-texttable
(package
(name "python-texttable")
(version "0.8.7")
(version "0.9.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "texttable" version))
(sha256
(base32
"1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
"0yawv64c0zbawwv6zz84whb32fnb2n9jylwjcfsrcdgh7xvl340i"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; no tests
(home-page "https://github.com/foutaise/texttable/")
@ -8527,6 +8536,28 @@ concurrent.futures package from Python 3.2")
("python2-pytest" ,python2-pytest)
,@(package-native-inputs promise))))))
(define-public python-progressbar33
(package
(name "python-progressbar33")
(version "2.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "progressbar33" version))
(sha256
(base32
"1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
(build-system python-build-system)
(home-page "http://github.com/germangh/python-progressbar")
(synopsis "Text progress bar library for Python")
(description
"This package provides a text progress bar library for Python. This
version only differs from the original @code{progressbar} package in that it
uses relative package imports instead of absolute imports, which is necessary
for the module to work under Python 3.3.")
;; Either or both of these licenses may be selected.
(license (list license:lgpl2.1+ license:bsd-3))))
(define-public python-colorama
(package
(name "python-colorama")
@ -13086,17 +13117,18 @@ from your Flask project. It is a fork of Flask-Swagger.")
(define-public python-swagger-spec-validator
(package
(name "python-swagger-spec-validator")
(version "2.1.0")
(version "2.4.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "swagger-spec-validator" version))
(sha256
(base32
"13hkpn2lycwr0468yqhjb3kwszqf7hjwlq61w7vdxq1caz31k4nw"))))
"11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp"))))
(build-system python-build-system)
(propagated-inputs
`(("python-jsonschema" ,python-jsonschema)
("python-pyyaml" ,python-pyyaml)
("python-six" ,python-six)))
(home-page
"https://github.com/Yelp/swagger_spec_validator")
@ -15939,3 +15971,39 @@ Complete support for Berkeley DB Base Replication. Support for RPC.")
types for further processing. It is primarily intended for batch jobs and
one-off scripts.")
(license license:expat)))
(define-public python-cached-property
(package
(name "python-cached-property")
(version "1.5.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cached-property" version))
(sha256
(base32
"010m1bl380l2r3vwq24r5v14l6gwvgm9v0mqqjkjss552jgsa5wj"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; https://github.com/pydanny/cached-property/issues/131
;; recent versions of freezegun break one test
(add-after 'unpack 'disable-broken-test
(lambda _
(substitute* "tests/test_cached_property.py"
(("def test_threads_ttl_expiry\\(self\\)" m)
(string-append "@unittest.skip(\"Disabled by Guix\")\n"
" " m)))
#t)))))
(native-inputs
`(("python-freezegun" ,python-freezegun)))
(home-page
"https://github.com/pydanny/cached-property")
(synopsis
"Decorator for caching properties in classes")
(description
"This package provides a decorator which makes caching
time-or-computationally-expensive properties quick and easy and works in Python
2 or 3.")
(license license:bsd-3)))

View File

@ -8372,16 +8372,16 @@ Pathname.")
(define-public jekyll
(package
(name "jekyll")
(version "3.8.5")
(version "3.8.6")
(source (origin
(method url-fetch)
(uri (rubygems-uri "jekyll" version))
(sha256
(base32
"1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3"))))
"1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
(build-system ruby-build-system)
(arguments
;; No rakefile, but a test subdirectory
;; No rakefile, but a test subdirectory.
`(#:tests? #f
#:phases
(modify-phases %standard-phases

View File

@ -26,14 +26,14 @@
(define-public rush
(package
(name "rush")
(version "1.9")
(version "2.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/rush/rush-"
version ".tar.gz"))
(sha256
(base32
"12x7dyi9vl3lwlv618156nzpi5s0li93wcx2c26h4z7la20yq2yk"))))
"17i4mggr3rnfz0xbhqvd86jqva40c535fhlwkb2l4hjcbpg8blcf"))))
(build-system gnu-build-system)
(home-page "https://www.gnu.org/software/rush/")
(synopsis "Restricted user (login) shell")

View File

@ -5,7 +5,7 @@
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
;;;
@ -1047,7 +1047,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(delete-file-recursively "vendor/jemalloc-sys/jemalloc")
#t)))))))
(define-public rust
(define-public rust-1.35
(let ((base-rust
(rust-bootstrapped-package rust-1.34 "1.35.0"
"0bbizy6b7002v1rdhrxrf5gijclbyizdhkglhp81ib3bf5x66kas")))
@ -1069,3 +1069,15 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(substitute* "src/tools/tidy/src/main.rs"
(("bins::check") "//bins::check"))
#t)))))))))
(define-public rust
(let ((base-rust
(rust-bootstrapped-package rust-1.35 "1.36.0"
"06xv2p6zq03lidr0yaf029ii8wnjjqa894nkmrm6s0rx47by9i04")))
(package
(inherit base-rust)
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:phases phases)
`(modify-phases ,phases
(delete 'patch-process-docs-rev-cmd))))))))

View File

@ -57,6 +57,7 @@
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages java)
#:use-module (gnu packages libffi)
#:use-module (gnu packages machine-learning)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
@ -5765,62 +5766,76 @@ as a boxplot function.")
(license license:lgpl3+)))
(define-public python-rpy2
(package
(name "python-rpy2")
(version "2.9.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "rpy2" version))
(sha256
(base32
"0bl1d2qhavmlrvalir9hmkjh74w21vzkvc2sg3cbb162s10zfmxy"))))
(build-system python-build-system)
(arguments
'(#:modules ((ice-9 ftw)
(srfi srfi-1)
(srfi srfi-26)
(guix build utils)
(guix build python-build-system))
#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((cwd (getcwd)))
(setenv "PYTHONPATH"
(string-append cwd "/build/"
(find (cut string-prefix? "lib" <>)
(scandir (string-append cwd "/build")))
":"
(getenv "PYTHONPATH"))))
(invoke "python" "-m" "rpy2.tests" "-v"))))))
(propagated-inputs
`(("python-six" ,python-six)
("python-jinja2" ,python-jinja2)
("python-pytz" ,python-pytz)))
(inputs
`(("readline" ,readline)
("icu4c" ,icu4c)
("pcre" ,pcre)
("r-minimal" ,r-minimal)
("r-survival" ,r-survival)
("r-ggplot2" ,r-ggplot2)
("r-rsqlite" ,r-rsqlite)
("r-dplyr" ,r-dplyr)
("r-dbplyr" ,r-dbplyr)
("python-numpy" ,python-numpy)))
(native-inputs
`(("zlib" ,zlib)))
(home-page "https://rpy2.bitbucket.io/")
(synopsis "Python interface to the R language")
(description "rpy2 is a redesign and rewrite of rpy. It is providing a
;; We need to take this changeset instead of the RELEASE_3_0_4 tag, because
;; it fixes a regression when using ggplot 3.2.0.
(let ((changeset "19868a8")
(revision "1"))
(package
(name "python-rpy2")
(version (git-version "3.0.4" revision changeset))
(source
(origin
(method hg-fetch)
(uri (hg-reference
(url "https://bitbucket.org/rpy2/rpy2")
(changeset changeset)))
(file-name (git-file-name name version))
(sha256
(base32
"1bb0wslcbj3wjvyk3jb9yyzdi6adfqh5vfgcvn22dyzxzbhcs8kk"))))
(build-system python-build-system)
(arguments
'(#:modules ((ice-9 ftw)
(srfi srfi-1)
(srfi srfi-26)
(guix build utils)
(guix build python-build-system))
#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((cwd (getcwd)))
(setenv "TZ" "UTC")
(setenv "PYTHONPATH"
(string-append cwd "/build/"
(find (cut string-prefix? "lib" <>)
(scandir (string-append cwd "/build")))
":"
(getenv "PYTHONPATH"))))
(invoke "pytest" "-v" "rpy/tests/"))))))
(propagated-inputs
`(("python-cffi" ,python-cffi)
("python-six" ,python-six)
("python-jinja2" ,python-jinja2)
("python-numpy" ,python-numpy)
("python-pandas" ,python-pandas)
("python-pytz" ,python-pytz)
("python-ipython" ,python-ipython)
("python-tzlocal" ,python-tzlocal)))
(inputs
`(("readline" ,readline)
("icu4c" ,icu4c)
("pcre" ,pcre)
("r-minimal" ,r-minimal)
("r-survival" ,r-survival)
("r-ggplot2" ,r-ggplot2)
("r-rsqlite" ,r-rsqlite)
("r-dplyr" ,r-dplyr)
("r-dbplyr" ,r-dbplyr)
("python-numpy" ,python-numpy)))
(native-inputs
`(("zlib" ,zlib)
("python-pytest" ,python-pytest)))
(home-page "https://rpy2.bitbucket.io/")
(synopsis "Python interface to the R language")
(description "rpy2 is a redesign and rewrite of rpy. It is providing a
low-level interface to R from Python, a proposed high-level interface,
including wrappers to graphical libraries, as well as R-like structures and
functions.")
;; Any of these licenses can be picked for the R interface. The whole
;; project is released under GPLv2+ according to the license declaration
;; in "setup.py".
(license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
;; Any of these licenses can be picked for the R interface. The whole
;; project is released under GPLv2+ according to the license declaration
;; in "setup.py".
(license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+)))))
(define-public java-jdistlib
(package

View File

@ -503,13 +503,13 @@ netcat implementation that supports TLS.")
(package
(name "python-acme")
;; Remember to update the hash of certbot when updating python-acme.
(version "0.34.2")
(version "0.35.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(sha256
(base32
"0anwc102fmlva6x2k1bxrgdb7mi1jy9wgrqjzvk2nam8pky0snxx"))))
"08y4ankn0di34c9d1c3pqd9by9n0ckzz7b5ld1g0fx6c32sbi259"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -560,7 +560,7 @@ netcat implementation that supports TLS.")
(uri (pypi-uri name version))
(sha256
(base32
"1fy91rnq4wwblp5gi2qb2c3xk6j2w1maf5f52228pk8cn7f2swrh"))))
"0q0855qvsvs4mgglss5iim7f1p22rv4rn1n6j731vv869v0yrs6p"))))
(build-system python-build-system)
(arguments
`(,@(substitute-keyword-arguments (package-arguments python-acme)

View File

@ -3,6 +3,7 @@
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
;;;
;;; This file is part of GNU Guix.
;;;
@ -21,13 +22,22 @@
(define-module (gnu packages upnp)
#:use-module (gnu packages)
#:use-module (gnu packages gettext)
#:use-module (gnu packages autotools)
#:use-module (gnu packages video)
#:use-module (gnu packages photo)
#:use-module (gnu packages image)
#:use-module (gnu packages mp3)
#:use-module (gnu packages xiph)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages python)
#:use-module (guix build-system gnu)
#:use-module (guix utils)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix licenses)
#:use-module (guix packages))
#:use-module (guix packages)
#:use-module (ice-9 match))
(define-public miniupnpc
(package
@ -150,3 +160,42 @@ compliant with Version 1.0 of the Universal Plug and Play Device Architecture
Specification and support several operating systems like Linux, *BSD, Solaris
and others.")
(license bsd-3)))
(define-public readymedia
(package
(name "readymedia")
(version "1.2.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.code.sf.net/p/minidlna/git")
(commit (string-append
"v"
(string-map (match-lambda
(#\. #\_)
(chr chr))
version)))))
(file-name (git-file-name name version))
(sha256
(base32
"160915yv38k0p5zmyncs12kkbbcd8m8fk9jq70fkfd5x6dz40xm4"))))
(build-system gnu-build-system)
(native-inputs
`(("automake" ,automake)
("autoconf" ,autoconf)
("gettext" ,gettext-minimal)))
(inputs
`(("libexif" ,libexif)
("libjpeg" ,libjpeg)
("libid3tag" ,libid3tag)
("flac" ,flac)
("libvorbis" ,libvorbis)
("sqlite" ,sqlite)
("ffmpeg" ,ffmpeg)))
(home-page "https://sourceforge.net/projects/minidlna/")
(synopsis "DLNA/UPnP-AV media server")
(description "ReadyMedia (formerly known as MiniDLNA) is a simple media
server, which serves multimedia content to compatible clients on the network.
It aims to be fully compliant with DLNA and UPnP-AV standards.")
(license gpl2)))

View File

@ -1223,14 +1223,14 @@ control to Git repositories.")
(define-public mercurial
(package
(name "mercurial")
(version "5.0.1")
(version "5.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://www.mercurial-scm.org/"
"release/mercurial-" version ".tar.gz"))
(sha256
(base32
"1kk27radafw2q18khg9mk52vny3bmki5wf7pbsmgx5amrpjai62c"))))
"1y60hfc8gh4ha9sw650qs7hndqmvbn0qxpmqwpn4q18z5xwm1f19"))))
(build-system python-build-system)
(arguments
`(;; Restrict to Python 2, as Python 3 would require

View File

@ -1236,7 +1236,7 @@ modules for building a Wayland compositor.")
(define-public swayidle
(package
(name "swayidle")
(version "1.3")
(version "1.5")
(source
(origin
(method git-fetch)
@ -1245,7 +1245,7 @@ modules for building a Wayland compositor.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "04agcbhc473jkk7npb40i94ny8naykxzpjcw2lvl05kxv65y5d9v"))))
(base32 "05qi96j58xqxjiighay1d39rfanxcpn6vlynj23mb5dymxvlaq9n"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Dlogind-provider=elogind")))

View File

@ -1989,23 +1989,20 @@ server.")
(define-public xauth
(package
(name "xauth")
(version "1.0.10")
(version "1.1")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/individual/app/xauth-"
version
".tar.bz2"))
(sha256
(base32
"0kgwz9rmxjfdvi2syf8g0ms5rr5cgyqx4n0n1m960kyz7k745zjs"))))
(origin
(method url-fetch)
(uri (string-append "mirror://xorg/individual/app/xauth-" version
".tar.bz2"))
(sha256
(base32 "032klzzw8r09z36x1272ssd79bcisz8j5p8gbdy111fiknvx27bd"))))
(build-system gnu-build-system)
(inputs
`(("libxmu" ,libxmu)
("libxext" ,libxext)
("libxau" ,libxau)
("libx11" ,libx11)))
`(("libxmu" ,libxmu)
("libxext" ,libxext)
("libxau" ,libxau)
("libx11" ,libx11)))
(native-inputs
`(("cmdtest" ,cmdtest)
("pkg-config" ,pkg-config)))
@ -6186,13 +6183,14 @@ and embedded platforms.")
(inherit uim)
(name "uim-qt")
(inputs
`(("qt" ,qt-4)
`(("qt" ,qtbase)
("qtx11extras" ,qtx11extras)
,@(package-inputs uim)))
(arguments
(substitute-keyword-arguments (package-arguments uim)
((#:configure-flags configure-flags)
(append configure-flags (list "--with-qt4-immodule"
"--with-qt4")))))
(append configure-flags (list "--with-qt5-immodule"
"--with-qt5")))))
(synopsis "Multilingual input method framework (Qt support)")))
(define-public keynav

View File

@ -51,11 +51,9 @@
(("\\$\\(LDFLAGS\\)")
"$(LDFLAGS) -Wl,-rpath=$(PREFIX)/lib"))
;; Delete the bundled TinyXML.
(delete-file-recursively "cpp/tinyxml")
(substitute* "cpp/build/Makefile"
(("LIBS \\+= -ludev")
"LIBS += -ludev -ltinyxml "))
;; XXX: There's a bundled TinyXML under cpp/tinyxml. Keep
;; it because using our own TinyXML leads to double-free
;; down the road.
;; Delete the bundled HIDAPI.
(delete-file-recursively "cpp/hidapi")
@ -80,8 +78,7 @@
("pkg-config" ,pkg-config)
("perl" ,perl) ;for tests
("perl-xml-simple" ,perl-xml-simple)))
(inputs `(("tinyxml" ,tinyxml)
("hidapi" ,hidapi)
(inputs `(("hidapi" ,hidapi)
("eudev" ,eudev)))
(home-page "http://www.openzwave.net/")
(synopsis "Access Z-Wave devices from C++ programs")

View File

@ -10,6 +10,7 @@
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -937,29 +938,35 @@ and @command{wicd-curses} user interfaces."
"--no-daemon")
#:environment-variables
(list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
"/lib/NetworkManager/VPN"))))
"/lib/NetworkManager/VPN")
;; Override non-existent default users
"NM_OPENVPN_USER="
"NM_OPENVPN_GROUP=")))
(stop #~(make-kill-destructor))))))))
(define network-manager-service-type
(let
((config->package
((config->packages
(match-lambda
(($ <network-manager-configuration> network-manager)
(list network-manager)))))
(($ <network-manager-configuration> network-manager _ vpn-plugins)
`(,network-manager ,@vpn-plugins)))))
(service-type
(name 'network-manager)
(extensions
(list (service-extension shepherd-root-service-type
network-manager-shepherd-service)
(service-extension dbus-root-service-type config->package)
(service-extension polkit-service-type config->package)
(service-extension dbus-root-service-type config->packages)
(service-extension polkit-service-type
(compose
list
network-manager-configuration-network-manager))
(service-extension activation-service-type
network-manager-activation)
(service-extension session-environment-service-type
network-manager-environment)
;; Add network-manager to the system profile.
(service-extension profile-service-type config->package)))
(service-extension profile-service-type config->packages)))
(default-value (network-manager-configuration))
(description
"Run @uref{https://wiki.gnome.org/Projects/NetworkManager,

View File

@ -61,7 +61,7 @@ to NAME and VERSION."
(define %cargo-build-system-modules
;; Build-side modules imported by default.
`((guix build cargo-build-system)
(json parser)
(guix build json)
,@%cargo-utils-modules))
(define* (cargo-build store name inputs

135
guix/build-system/node.scm Normal file
View File

@ -0,0 +1,135 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build-system node)
#:use-module (guix store)
#:use-module (guix build json)
#:use-module (guix build union)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix derivations)
#:use-module (guix search-paths)
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
#:export (npm-meta-uri
%node-build-system-modules
node-build
node-build-system))
(define (npm-meta-uri name)
"Return a URI string for the metadata of node module NAME found in the npm
registry."
(string-append "https://registry.npmjs.org/" name))
(define %node-build-system-modules
;; Build-side modules imported by default.
`((guix build node-build-system)
(guix build json)
(guix build union)
,@%gnu-build-system-modules)) ;; TODO: Might be not needed
(define (default-node)
"Return the default Node package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((node (resolve-interface '(gnu packages node))))
(module-ref node 'node)))
(define* (lower name
#:key source inputs native-inputs outputs system target
(node (default-node))
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
(define private-keywords
'(#:source #:target #:node #:inputs #:native-inputs))
(and (not target) ;XXX: no cross-compilation
(bag
(name name)
(system system)
(host-inputs `(,@(if source
`(("source" ,source))
'())
,@inputs
;; Keep the standard inputs of 'gnu-build-system'.
,@(standard-packages)))
(build-inputs `(("node" ,node)
,@native-inputs))
(outputs outputs)
(build node-build)
(arguments (strip-keyword-arguments private-keywords arguments)))))
(define* (node-build store name inputs
#:key
(npm-flags ''())
(tests? #t)
(phases '(@ (guix build node-build-system)
%standard-phases))
(outputs '("out"))
(search-paths '())
(system (%current-system))
(guile #f)
(imported-modules %node-build-system-modules)
(modules '((guix build node-build-system)
(guix build json)
(guix build union)
(guix build utils))))
"Build SOURCE using NODE and INPUTS."
(define builder
`(begin
(use-modules ,@modules)
(node-build #:name ,name
#:source ,(match (assoc-ref inputs "source")
(((? derivation? source))
(derivation->output-path source))
((source)
source)
(source
source))
#:system ,system
#:npm-flags ,npm-flags
#:tests? ,tests?
#:phases ,phases
#:outputs %outputs
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:inputs %build-inputs)))
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system #:graft? #f))
(#f
(let* ((distro (resolve-interface '(gnu packages commencement)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system #:graft? #f)))))
(build-expression->derivation store name builder
#:inputs inputs
#:system system
#:modules imported-modules
#:outputs outputs
#:guile-for-build guile-for-build))
(define node-build-system
(build-system
(name 'node)
(description "The standard Node build system")
(lower lower)))

View File

@ -20,6 +20,7 @@
(define-module (guix build cargo-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (guix build json)
#:use-module (guix build utils)
#:use-module (guix build cargo-utils)
#:use-module (ice-9 popen)
@ -27,7 +28,6 @@
#:use-module (ice-9 ftw)
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (json parser)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
@ -42,15 +42,15 @@
(define (manifest-targets)
"Extract all targets from the Cargo.toml manifest"
(let* ((port (open-input-pipe "cargo read-manifest"))
(data (json->scm port))
(targets (hash-ref data "targets" '())))
(data (read-json port))
(targets (or (assoc-ref data "targets") '())))
(close-port port)
targets))
(define (has-executable-target?)
"Check if the current cargo project declares any binary targets."
(let* ((bin? (lambda (kind) (string=? kind "bin")))
(get-kinds (lambda (dep) (hash-ref dep "kind")))
(get-kinds (lambda (dep) (assoc-ref dep "kind")))
(bin-dep? (lambda (dep) (find bin? (get-kinds dep)))))
(find bin-dep? (manifest-targets))))
@ -99,6 +99,7 @@ Cargo.toml file present at its root."
inputs)
;; Configure cargo to actually use this new directory.
(setenv "CARGO_HOME" (string-append (getcwd) "/.cargo"))
(mkdir-p ".cargo")
(let ((port (open-file ".cargo/config" "w" #:encoding "utf-8")))
(display "
@ -148,9 +149,6 @@ directory = '" port)
;; Make cargo reuse all the artifacts we just built instead
;; of defaulting to making a new temp directory
(setenv "CARGO_TARGET_DIR" "./target")
;; Force cargo to honor our .cargo/config definitions
;; https://github.com/rust-lang/cargo/issues/6397
(setenv "CARGO_HOME" ".")
;; Only install crates which include binary targets,
;; otherwise cargo will raise an error.

View File

@ -18,6 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build compile)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:use-module (ice-9 threads)
@ -58,13 +59,23 @@
((kw _ rest ...)
(loop rest `(#f ,kw ,@result))))))
(define (supported-warning-type? type)
"Return true if TYPE, a symbol, denotes a supported warning type."
(find (lambda (warning-type)
(eq? type (warning-type-name warning-type)))
%warning-types))
(define %warnings
;; FIXME: 'format' is missing because it reports "non-literal format
;; strings" due to the fact that we use 'G_' instead of '_'. We'll need
;; help from Guile to solve this.
'(unsupported-warning unbound-variable arity-mismatch
macro-use-before-definition ;new in 2.2
shadowed-toplevel)) ;new in 2.2.5
(let ((optional (lambda (type)
(if (supported-warning-type? type)
(list type)
'()))))
`(unbound-variable arity-mismatch
macro-use-before-definition ;new in 2.2
,@(optional 'shadowed-toplevel)))) ;new in 2.2.5
(define (optimization-options file)
"Return the default set of optimizations options for FILE."
@ -118,8 +129,9 @@ front."
(lambda ()
(set! path initial-value)))))
(define (call/exit-on-exception thunk)
"Evaluate THUNK and exit right away if an exception is thrown."
(define (call/exit-on-exception file thunk)
"Evaluate THUNK and exit right away if an exception is thrown. Report FILE
as the file that was being compiled when the exception was thrown."
(catch #t
thunk
(const #f)
@ -130,15 +142,18 @@ front."
(stack (make-stack #t))
(depth (stack-length stack))
(frame (and (> depth 1) (stack-ref stack 1))))
(newline port)
(format port "error: failed to compile '~a':~%~%" file)
(false-if-exception (display-backtrace stack port))
(print-exception port frame key args)))
;; Don't go any further.
(primitive-exit 1))))
(define-syntax-rule (exit-on-exception exp ...)
"Evaluate EXP and exit if an exception is thrown."
(call/exit-on-exception (lambda () exp ...)))
(define-syntax-rule (exit-on-exception file exp ...)
"Evaluate EXP and exit if an exception is thrown. Report FILE as the faulty
file when an exception is thrown."
(call/exit-on-exception file (lambda () exp ...)))
(define* (compile-files source-directory build-directory files
#:key
@ -162,6 +177,7 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"."
;; Exit as soon as something goes wrong.
(exit-on-exception
file
(with-target host
(lambda ()
(let ((relative (relative-file source-directory file)))

387
guix/build/json.scm Normal file
View File

@ -0,0 +1,387 @@
;;;; json.scm --- JSON reader/writer
;;;; Copyright (C) 2015 Free Software Foundation, Inc.
;;;;
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 3 of the License, or (at your option) any later version.
;;;;
;;;; This library 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
;;;; Lesser General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU Lesser General Public
;;;; License along with this library; if not, write to the Free Software
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
;;;;
(define-module (guix build json) ;; originally (ice-9 json)
#:use-module (ice-9 match)
#:export (read-json write-json))
;; Snarfed from
;; https://github.com/cwebber/activitystuff/blob/master/activitystuff/contrib/json.scm
;;
;;;
;;; Reader
;;;
(define (json-error port)
(throw 'json-error port))
(define (assert-char port char)
"Read a character from PORT and throw an invalid JSON error if the
character is not CHAR."
(unless (eqv? (read-char port) char)
(json-error port)))
(define (whitespace? char)
"Return #t if CHAR is a whitespace character."
(char-set-contains? char-set:whitespace char))
(define (consume-whitespace port)
"Discard characters from PORT until a non-whitespace character is
encountered.."
(match (peek-char port)
((? eof-object?) *unspecified*)
((? whitespace?)
(read-char port)
(consume-whitespace port))
(_ *unspecified*)))
(define (make-keyword-reader keyword value)
"Parse the keyword symbol KEYWORD as VALUE."
(let ((str (symbol->string keyword)))
(lambda (port)
(let loop ((i 0))
(cond
((= i (string-length str)) value)
((eqv? (string-ref str i) (read-char port))
(loop (1+ i)))
(else (json-error port)))))))
(define read-true (make-keyword-reader 'true #t))
(define read-false (make-keyword-reader 'false #f))
(define read-null (make-keyword-reader 'null #nil))
(define (read-hex-digit port)
"Read a hexadecimal digit from PORT."
(match (read-char port)
(#\0 0)
(#\1 1)
(#\2 2)
(#\3 3)
(#\4 4)
(#\5 5)
(#\6 6)
(#\7 7)
(#\8 8)
(#\9 9)
((or #\A #\a) 10)
((or #\B #\b) 11)
((or #\C #\c) 12)
((or #\D #\d) 13)
((or #\E #\e) 14)
((or #\F #\f) 15)
(_ (json-error port))))
(define (read-utf16-character port)
"Read a hexadecimal encoded UTF-16 character from PORT."
(integer->char
(+ (* (read-hex-digit port) (expt 16 3))
(* (read-hex-digit port) (expt 16 2))
(* (read-hex-digit port) 16)
(read-hex-digit port))))
(define (read-escape-character port)
"Read escape character from PORT."
(match (read-char port)
(#\" #\")
(#\\ #\\)
(#\/ #\/)
(#\b #\backspace)
(#\f #\page)
(#\n #\newline)
(#\r #\return)
(#\t #\tab)
(#\u (read-utf16-character port))
(_ (json-error port))))
(define (read-string port)
"Read a JSON encoded string from PORT."
(assert-char port #\")
(let loop ((result '()))
(match (read-char port)
((? eof-object?) (json-error port))
(#\" (list->string (reverse result)))
(#\\ (loop (cons (read-escape-character port) result)))
(char (loop (cons char result))))))
(define char-set:json-digit
(char-set #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))
(define (digit? char)
(char-set-contains? char-set:json-digit char))
(define (read-digit port)
"Read a digit 0-9 from PORT."
(match (read-char port)
(#\0 0)
(#\1 1)
(#\2 2)
(#\3 3)
(#\4 4)
(#\5 5)
(#\6 6)
(#\7 7)
(#\8 8)
(#\9 9)
(else (json-error port))))
(define (read-digits port)
"Read a sequence of digits from PORT."
(let loop ((result '()))
(match (peek-char port)
((? eof-object?)
(reverse result))
((? digit?)
(loop (cons (read-digit port) result)))
(else (reverse result)))))
(define (list->integer digits)
"Convert the list DIGITS to an integer."
(let loop ((i (1- (length digits)))
(result 0)
(digits digits))
(match digits
(() result)
((n . tail)
(loop (1- i)
(+ result (* n (expt 10 i)))
tail)))))
(define (read-positive-integer port)
"Read a positive integer with no leading zeroes from PORT."
(match (read-digits port)
((0 . _)
(json-error port)) ; no leading zeroes allowed
((digits ...)
(list->integer digits))))
(define (read-exponent port)
"Read exponent from PORT."
(define (read-expt)
(list->integer (read-digits port)))
(unless (memv (read-char port) '(#\e #\E))
(json-error port))
(match (peek-char port)
((? eof-object?)
(json-error port))
(#\-
(read-char port)
(- (read-expt)))
(#\+
(read-char port)
(read-expt))
((? digit?)
(read-expt))
(_ (json-error port))))
(define (read-fraction port)
"Read fractional number part from PORT as an inexact number."
(let* ((digits (read-digits port))
(numerator (list->integer digits))
(denomenator (expt 10 (length digits))))
(/ numerator denomenator)))
(define (read-positive-number port)
"Read a positive number from PORT."
(let* ((integer (match (peek-char port)
((? eof-object?)
(json-error port))
(#\0
(read-char port)
0)
((? digit?)
(read-positive-integer port))
(_ (json-error port))))
(fraction (match (peek-char port)
(#\.
(read-char port)
(read-fraction port))
(_ 0)))
(exponent (match (peek-char port)
((or #\e #\E)
(read-exponent port))
(_ 0)))
(n (* (+ integer fraction) (expt 10 exponent))))
;; Keep integers as exact numbers, but convert numbers encoded as
;; floating point numbers to an inexact representation.
(if (zero? fraction)
n
(exact->inexact n))))
(define (read-number port)
"Read a number from PORT"
(match (peek-char port)
((? eof-object?)
(json-error port))
(#\-
(read-char port)
(- (read-positive-number port)))
((? digit?)
(read-positive-number port))
(_ (json-error port))))
(define (read-object port)
"Read key/value map from PORT."
(define (read-key+value-pair)
(let ((key (read-string port)))
(consume-whitespace port)
(assert-char port #\:)
(consume-whitespace port)
(let ((value (read-value port)))
(cons key value))))
(assert-char port #\{)
(consume-whitespace port)
(if (eqv? #\} (peek-char port))
(begin
(read-char port)
'(@)) ; empty object
(let loop ((result (list (read-key+value-pair))))
(consume-whitespace port)
(match (peek-char port)
(#\, ; read another value
(read-char port)
(consume-whitespace port)
(loop (cons (read-key+value-pair) result)))
(#\} ; end of object
(read-char port)
(cons '@ (reverse result)))
(_ (json-error port))))))
(define (read-array port)
"Read array from PORT."
(assert-char port #\[)
(consume-whitespace port)
(if (eqv? #\] (peek-char port))
(begin
(read-char port)
'()) ; empty array
(let loop ((result (list (read-value port))))
(consume-whitespace port)
(match (peek-char port)
(#\, ; read another value
(read-char port)
(consume-whitespace port)
(loop (cons (read-value port) result)))
(#\] ; end of array
(read-char port)
(reverse result))
(_ (json-error port))))))
(define (read-value port)
"Read a JSON value from PORT."
(consume-whitespace port)
(match (peek-char port)
((? eof-object?) (json-error port))
(#\" (read-string port))
(#\{ (read-object port))
(#\[ (read-array port))
(#\t (read-true port))
(#\f (read-false port))
(#\n (read-null port))
((or #\- (? digit?))
(read-number port))
(_ (json-error port))))
(define (read-json port)
"Read JSON text from port and return an s-expression representation."
(let ((result (read-value port)))
(consume-whitespace port)
(unless (eof-object? (peek-char port))
(json-error port))
result))
;;;
;;; Writer
;;;
(define (write-string str port)
"Write STR to PORT in JSON string format."
(define (escape-char char)
(display (match char
(#\" "\\\"")
(#\\ "\\\\")
(#\/ "\\/")
(#\backspace "\\b")
(#\page "\\f")
(#\newline "\\n")
(#\return "\\r")
(#\tab "\\t")
(_ char))
port))
(display "\"" port)
(string-for-each escape-char str)
(display "\"" port))
(define (write-object alist port)
"Write ALIST to PORT in JSON object format."
;; Keys may be strings or symbols.
(define key->string
(match-lambda
((? string? key) key)
((? symbol? key) (symbol->string key))))
(define (write-pair pair)
(match pair
((key . value)
(write-string (key->string key) port)
(display ":" port)
(write-json value port))))
(display "{" port)
(match alist
(() #f)
((front ... end)
(for-each (lambda (pair)
(write-pair pair)
(display "," port))
front)
(write-pair end)))
(display "}" port))
(define (write-array lst port)
"Write LST to PORT in JSON array format."
(display "[" port)
(match lst
(() #f)
((front ... end)
(for-each (lambda (val)
(write-json val port)
(display "," port))
front)
(write-json end port)))
(display "]" port))
(define (write-json exp port)
"Write EXP to PORT in JSON format."
(match exp
(#t (display "true" port))
(#f (display "false" port))
;; Differentiate #nil from '().
((and (? boolean? ) #nil) (display "null" port))
((? string? s) (write-string s port))
((? real? n) (display n port))
(('@ . alist) (write-object alist port))
((vals ...) (write-array vals port))))

View File

@ -0,0 +1,166 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build node-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (guix build json)
#:use-module (guix build union)
#:use-module (guix build utils)
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
node-build))
;; Commentary:
;;
;; Builder-side code of the standard Node/npm package build procedure.
;;
;; Code:
(define* (read-package-data #:key (filename "package.json"))
(call-with-input-file filename
(lambda (port)
(read-json port))))
(define* (build #:key inputs #:allow-other-keys)
(define (build-from-package-json? package-file)
(let* ((package-data (read-package-data #:filename package-file))
(scripts (assoc-ref package-data "scripts")))
(assoc-ref scripts "build")))
"Build a new node module using the appropriate build system."
;; XXX: Develop a more robust heuristic, allow override
(cond ((file-exists? "gulpfile.js")
(invoke "gulp"))
((file-exists? "gruntfile.js")
(invoke "grunt"))
((file-exists? "Makefile")
(invoke "make"))
((and (file-exists? "package.json")
(build-from-package-json? "package.json"))
(invoke "npm" "run" "build")))
#t)
(define* (link-npm-dependencies #:key inputs #:allow-other-keys)
(define (inputs->node-inputs inputs)
"Filter the directory part from INPUTS."
(filter (lambda (input)
(match input
((name . _) (node-package? name))))
inputs))
(define (inputs->directories inputs)
"Extract the directory part from INPUTS."
(match inputs
(((names . directories) ...)
directories)))
(define (make-node-path root)
(string-append root "/lib/node_modules/"))
(let ((input-node-directories (inputs->directories
(inputs->node-inputs inputs))))
(union-build "node_modules"
(map make-node-path input-node-directories))
#t))
(define configure link-npm-dependencies)
(define* (check #:key tests? #:allow-other-keys)
"Run 'npm test' if TESTS?"
(if tests?
;; Should only be enabled once we know that there are tests
(invoke "npm" "test"))
#t)
(define (node-package? name)
"Check if NAME correspond to the name of an Node package."
(string-prefix? "node-" name))
(define* (install #:key outputs inputs #:allow-other-keys)
"Install the node module to the output store item. The module itself is
installed in a subdirectory of @file{node_modules} and its runtime dependencies
as defined by @file{package.json} are symlinked into a @file{node_modules}
subdirectory of the module's directory. Additionally, binaries are installed in
the @file{bin} directory."
(let* ((out (assoc-ref outputs "out"))
(target (string-append out "/lib"))
(binaries (string-append out "/bin"))
(data (read-package-data))
(modulename (assoc-ref data "name"))
(binary-configuration (match (assoc-ref data "bin")
(('@ configuration ...) configuration)
((? string? configuration) configuration)
(#f #f)))
(dependencies (match (assoc-ref data "dependencies")
(('@ deps ...) deps)
(#f #f))))
(mkdir-p target)
(copy-recursively "." (string-append target "/node_modules/" modulename))
;; Remove references to dependencies
(delete-file-recursively
(string-append target "/node_modules/" modulename "/node_modules"))
(cond
((string? binary-configuration)
(begin
(mkdir-p binaries)
(symlink (string-append target "/node_modules/" modulename "/"
binary-configuration)
(string-append binaries "/" modulename))))
((list? binary-configuration)
(for-each
(lambda (conf)
(match conf
((key . value)
(begin
(mkdir-p (dirname (string-append binaries "/" key)))
(symlink (string-append target "/node_modules/" modulename "/"
value)
(string-append binaries "/" key))))))
binary-configuration))
(else
(symlink (string-append target "/node_modules/" modulename "/bin")
binaries)))
(when dependencies
(mkdir-p
(string-append target "/node_modules/" modulename "/node_modules"))
(for-each
(lambda (dependency)
(let ((dependency (car dependency)))
(symlink
(string-append (assoc-ref inputs (string-append "node-" dependency))
"/lib/node_modules/" dependency)
(string-append target "/node_modules/" modulename
"/node_modules/" dependency))))
dependencies))
#t))
(define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'configure configure)
(replace 'build build)
(replace 'install install)
(delete 'check)
(add-after 'install 'check check)
(delete 'strip)))
(define* (node-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)
(apply gnu:gnu-build #:inputs inputs #:phases phases args))

View File

@ -48,13 +48,6 @@
MNT_EXPIRE
UMOUNT_NOFOLLOW
AT_FDCWD
AT_SYMLINK_NOFOLLOW
AT_REMOVEDIR
AT_SYMLINK_FOLLOW
AT_NO_AUTOMOUNT
AT_EMPTY_PATH
restart-on-EINTR
mount-points
swapon
@ -686,12 +679,12 @@ mounted at FILE."
;; Flags for the *at command, notably the 'utime' procedure of libguile.
;; From <fcntl.h>.
(define AT_FDCWD -100)
(define AT_SYMLINK_NOFOLLOW #x100)
(define AT_REMOVEDIR #x200)
(define AT_SYMLINK_FOLLOW #x400)
(define AT_NO_AUTOMOUNT #x800)
(define AT_EMPTY_PATH #x1000)
(define-as-needed AT_FDCWD -100)
(define-as-needed AT_SYMLINK_NOFOLLOW #x100)
(define-as-needed AT_REMOVEDIR #x200)
(define-as-needed AT_SYMLINK_FOLLOW #x400)
(define-as-needed AT_NO_AUTOMOUNT #x800)
(define-as-needed AT_EMPTY_PATH #x1000)
(define-syntax BLKRRPART ;<sys/mount.h>
(identifier-syntax #x125F))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -107,9 +108,10 @@
(checkout channel-instance-checkout))
(define-record-type <channel-metadata>
(channel-metadata version dependencies)
(channel-metadata version directory dependencies)
channel-metadata?
(version channel-metadata-version)
(directory channel-metadata-directory)
(dependencies channel-metadata-dependencies))
(define (channel-reference channel)
@ -119,18 +121,18 @@
(#f `(branch . ,(channel-branch channel)))
(commit `(commit . ,(channel-commit channel)))))
(define (read-channel-metadata instance)
"Return a channel-metadata record read from the channel INSTANCE's
description file, or return #F if the channel instance does not include the
file."
(let* ((source (channel-instance-checkout instance))
(meta-file (string-append source "/.guix-channel")))
(define (read-channel-metadata-from-source source)
"Return a channel-metadata record read from channel's SOURCE/.guix-channel
description file, or return #F if SOURCE/.guix-channel does not exist."
(let ((meta-file (string-append source "/.guix-channel")))
(and (file-exists? meta-file)
(and-let* ((raw (call-with-input-file meta-file read))
(version (and=> (assoc-ref raw 'version) first))
(dependencies (or (assoc-ref raw 'dependencies) '())))
(let* ((raw (call-with-input-file meta-file read))
(version (and=> (assoc-ref raw 'version) first))
(directory (and=> (assoc-ref raw 'directory) first))
(dependencies (or (assoc-ref raw 'dependencies) '())))
(channel-metadata
version
directory
(map (lambda (item)
(let ((get (lambda* (key #:optional default)
(or (and=> (assoc-ref item key) first) default))))
@ -144,12 +146,18 @@ file."
(commit (get 'commit))))))
dependencies))))))
(define (read-channel-metadata instance)
"Return a channel-metadata record read from the channel INSTANCE's
description file, or return #F if the channel instance does not include the
file."
(read-channel-metadata-from-source (channel-instance-checkout instance)))
(define (channel-instance-dependencies instance)
"Return the list of channels that are declared as dependencies for the given
channel INSTANCE."
(match (read-channel-metadata instance)
(#f '())
(($ <channel-metadata> version dependencies)
(($ <channel-metadata> version directory dependencies)
dependencies)))
(define* (latest-channel-instances store channels #:optional (previous-channels '()))
@ -230,36 +238,39 @@ of COMMIT at URL. Use NAME as the channel name."
modules in SOURCE and that depend on DEPENDENCIES, a list of lowerable
objects. The assumption is that SOURCE contains package modules to be added
to '%package-module-path'."
;; FIXME: We should load, say SOURCE/.guix-channel.scm, which would allow
;; channel publishers to specify things such as the sub-directory where .scm
;; files live, files to exclude from the channel, preferred substitute URLs,
;; etc.
(define build
;; This is code that we'll run in CORE, a Guix instance, with its own
;; modules and so on. That way, we make sure these modules are built for
;; the right Guile version, with the right dependencies, and that they get
;; to see the right (gnu packages …) modules.
(with-extensions dependencies
#~(begin
(use-modules (guix build compile)
(guix build utils)
(srfi srfi-26))
(let* ((metadata (read-channel-metadata-from-source source))
(directory (and=> metadata channel-metadata-directory)))
(define go
(string-append #$output "/lib/guile/" (effective-version)
"/site-ccache"))
(define scm
(string-append #$output "/share/guile/site/"
(effective-version)))
(define build
;; This is code that we'll run in CORE, a Guix instance, with its own
;; modules and so on. That way, we make sure these modules are built for
;; the right Guile version, with the right dependencies, and that they get
;; to see the right (gnu packages …) modules.
(with-extensions dependencies
#~(begin
(use-modules (guix build compile)
(guix build utils)
(srfi srfi-26))
(compile-files #$source go
(find-files #$source "\\.scm$"))
(mkdir-p (dirname scm))
(symlink #$source scm)
scm)))
(define go
(string-append #$output "/lib/guile/" (effective-version)
"/site-ccache"))
(define scm
(string-append #$output "/share/guile/site/"
(effective-version)))
(gexp->derivation-in-inferior name build core))
(let* ((subdir (if #$directory
(string-append "/" #$directory)
""))
(source (string-append #$source subdir)))
(compile-files source go (find-files source "\\.scm$"))
(mkdir-p (dirname scm))
(symlink (string-append #$source subdir) scm))
scm)))
(gexp->derivation-in-inferior name build core)))
(define* (build-from-source name source
#:key core verbose? commit
@ -424,8 +435,9 @@ derivation."
;; "old style" (before commit 8a0d9bc8a3f153159d9e239a151c0fa98f1e12d8,
;; dated May 30, 2018) did not depend on "guix-command.drv".
(not (find (lambda (input)
(string-suffix? "-guix-command.drv"
(derivation-input-path input)))
(string=? "guix-command"
(derivation-name
(derivation-input-derivation input))))
(derivation-inputs drv))))
(define (channel-instances->manifest instances)

View File

@ -36,6 +36,8 @@
#:use-module (guix memoization)
#:use-module (guix combinators)
#:use-module (guix deprecation)
#:use-module (guix diagnostics)
#:use-module (guix i18n)
#:use-module (guix monads)
#:use-module (gcrypt hash)
#:use-module (guix base32)
@ -69,6 +71,7 @@
derivation-input-derivation
derivation-input-sub-derivations
derivation-input-output-paths
derivation-input-output-path
valid-derivation-input?
&derivation-error
@ -219,6 +222,13 @@ download with a fixed hash (aka. `fetchurl')."
(map (cut derivation->output-path drv <>)
sub-drvs))))
(define (derivation-input-output-path input)
"Return the output file name of INPUT. If INPUT has more than one outputs,
an error is raised."
(match input
(($ <derivation-input> drv (output))
(derivation->output-path drv output))))
(define (valid-derivation-input? store input)
"Return true if INPUT is valid--i.e., if all the outputs it requests are in
the store."
@ -705,16 +715,25 @@ name of each input with that input's hash."
;; character.
(sha256 (derivation->bytevector (derivation/masked-inputs drv)))))))
(define (warn-about-derivation-deprecation name)
;; TRANSLATORS: 'derivation' must not be translated; it refers to the
;; 'derivation' procedure.
(warning (G_ "in '~a': deprecated 'derivation' calling convention used~%")
name))
(define* (derivation store name builder args
#:key
(system (%current-system)) (env-vars '())
(inputs '()) (outputs '("out"))
(inputs '()) (sources '())
(outputs '("out"))
hash hash-algo recursive?
references-graphs
allowed-references disallowed-references
leaked-env-vars local-build?
(substitutable? #t)
(properties '()))
(properties '())
(%deprecation-warning? #t))
"Build a derivation with the given arguments, and return the resulting
<derivation> object. When HASH and HASH-ALGO are given, a
fixed-output derivation is created---i.e., one whose result is known in
@ -831,17 +850,28 @@ derivation. It is kept as-is, uninterpreted, in the derivation."
e
outputs)))
(define-syntax-rule (warn-deprecation name)
(when %deprecation-warning?
(warn-about-derivation-deprecation name)))
(define input->derivation-input
(match-lambda
((? derivation-input? input)
input)
(((? derivation? drv))
(warn-deprecation name)
(make-derivation-input drv '("out")))
(((? derivation? drv) sub-drvs ...)
(warn-deprecation name)
(make-derivation-input drv sub-drvs))
(_ #f)))
(_
(warn-deprecation name)
#f)))
(define input->source
(match-lambda
(((? string? input) . _)
(warn-deprecation name)
(if (direct-store-path? input)
input
(add-to-store store (basename input)
@ -858,7 +888,8 @@ derivation. It is kept as-is, uninterpreted, in the derivation."
hash recursive?)))
(sort outputs string<?)))
(sources (sort (delete-duplicates
(filter-map input->source inputs))
(append (filter-map input->source inputs)
sources))
string<?))
(inputs (sort (coalesce-duplicate-inputs
(filter-map input->derivation-input inputs))
@ -929,13 +960,10 @@ recursively."
(define input->output-paths
(match-lambda
(((? derivation? drv))
(list (derivation->output-path drv)))
(((? derivation? drv) sub-drvs ...)
(map (cut derivation->output-path drv <>)
sub-drvs))
((file)
(list file))))
((? derivation-input? input)
(derivation-input-output-paths input))
((? string? file)
(list file))))
(let ((mapping (fold (lambda (pair result)
(match pair
@ -954,11 +982,11 @@ recursively."
(($ <derivation-input> drv (sub-drvs ...))
(match (vhash-assoc (derivation-file-name drv) mapping)
((_ . (? derivation? replacement))
(cons replacement sub-drvs))
((_ . replacement)
(list replacement))
(derivation-input replacement sub-drvs))
((_ . (? string? source))
source)
(#f
(cons (loop drv) sub-drvs)))))))
(derivation-input (loop drv) sub-drvs)))))))
(let loop ((drv drv))
(let* ((inputs (map (cut rewritten-input <> loop)
@ -997,7 +1025,8 @@ recursively."
. ,(substitute value initial
replacements))))
(derivation-builder-environment-vars drv))
#:inputs (append (map list sources) inputs)
#:inputs (filter derivation-input? inputs)
#:sources (append sources (filter string? inputs))
#:outputs (derivation-output-names drv)
#:hash (match (derivation-outputs drv)
((($ <derivation-output> _ algo hash))
@ -1318,6 +1347,10 @@ and PROPERTIES."
,@(if mod-dir `("-L" ,mod-dir) '())
,builder)
;; 'build-expression->derivation' is somewhat deprecated so
;; don't bother warning here.
#:%deprecation-warning? #f
#:system system
#:inputs `((,(or guile-for-build (%guile-for-build)))

View File

@ -436,8 +436,7 @@ download by itself using its own dependencies."
#:hash-algo hash-algo
#:hash hash
#:recursive? executable?
#:inputs `((,mirrors)
(,content-addressed-mirrors))
#:sources (list mirrors content-addressed-mirrors)
;; Honor the user's proxy and locale settings.
#:leaked-env-vars '("http_proxy" "https_proxy"

View File

@ -85,6 +85,7 @@
lowered-gexp?
lowered-gexp-sexp
lowered-gexp-inputs
lowered-gexp-sources
lowered-gexp-guile
lowered-gexp-load-path
lowered-gexp-load-compiled-path
@ -574,9 +575,9 @@ list."
(define* (lower-inputs inputs
#:key system target)
"Turn any package from INPUTS into a derivation for SYSTEM; return the
corresponding input list as a monadic value. When TARGET is true, use it as
the cross-compilation target triplet."
"Turn any object from INPUTS into a derivation input for SYSTEM or a store
item (a \"source\"); return the corresponding input list as a monadic value.
When TARGET is true, use it as the cross-compilation target triplet."
(define (store-item? obj)
(and (string? obj) (store-path? obj)))
@ -584,27 +585,30 @@ the cross-compilation target triplet."
(mapm %store-monad
(match-lambda
(((? struct? thing) sub-drv ...)
(mlet %store-monad ((drv (lower-object
(mlet %store-monad ((obj (lower-object
thing system #:target target)))
(return (apply gexp-input drv sub-drv))))
(return (match obj
((? derivation? drv)
(let ((outputs (if (null? sub-drv)
'("out")
sub-drv)))
(derivation-input drv outputs)))
((? store-item? item)
item)))))
(((? store-item? item))
(return (gexp-input item)))
(input
(return (gexp-input input))))
(return item)))
inputs)))
(define* (lower-reference-graphs graphs #:key system target)
"Given GRAPHS, a list of (FILE-NAME INPUT ...) lists for use as a
#:reference-graphs argument, lower it such that each INPUT is replaced by the
corresponding derivation."
corresponding <derivation-input> or store item."
(match graphs
(((file-names . inputs) ...)
(mlet %store-monad ((inputs (lower-inputs inputs
#:system system
#:target target)))
(return (map (lambda (file input)
(cons file (gexp-input->tuple input)))
file-names inputs))))))
(return (map cons file-names inputs))))))
(define* (lower-references lst #:key system target)
"Based on LST, a list of output names and packages, return a list of output
@ -637,12 +641,14 @@ names and file names suitable for the #:allowed-references argument to
((force proc) system))))
;; Representation of a gexp instantiated for a given target and system.
;; It's an intermediate representation between <gexp> and <derivation>.
(define-record-type <lowered-gexp>
(lowered-gexp sexp inputs guile load-path load-compiled-path)
(lowered-gexp sexp inputs sources guile load-path load-compiled-path)
lowered-gexp?
(sexp lowered-gexp-sexp) ;sexp
(inputs lowered-gexp-inputs) ;list of <gexp-input>
(guile lowered-gexp-guile) ;<derivation> | #f
(inputs lowered-gexp-inputs) ;list of <derivation-input>
(sources lowered-gexp-sources) ;list of store items
(guile lowered-gexp-guile) ;<derivation-input> | #f
(load-path lowered-gexp-load-path) ;list of store items
(load-compiled-path lowered-gexp-load-compiled-path)) ;list of store items
@ -737,26 +743,19 @@ derivations--e.g., code evaluated for its side effects."
(mbegin %store-monad
(set-grafting graft?) ;restore the initial setting
(return (lowered-gexp sexp
`(,@(if modules
(list (gexp-input modules))
`(,@(if (derivation? modules)
(list (derivation-input modules))
'())
,@(if compiled
(list (gexp-input compiled))
(list (derivation-input compiled))
'())
,@(map gexp-input exts)
,@inputs)
guile
,@(map derivation-input exts)
,@(filter derivation-input? inputs))
(filter string? (cons modules inputs))
(derivation-input guile '("out"))
load-path
load-compiled-path)))))
(define (gexp-input->tuple input)
"Given INPUT, a <gexp-input> record, return the corresponding input tuple
suitable for the 'derivation' procedure."
(match (gexp-input-output input)
("out" `(,(gexp-input-thing input)))
(output `(,(gexp-input-thing input)
,(gexp-input-output input)))))
(define* (gexp->derivation name exp
#:key
system (target 'current)
@ -821,13 +820,10 @@ The other arguments are as for 'derivation'."
(define (graphs-file-names graphs)
;; Return a list of (FILE-NAME . STORE-PATH) pairs made from GRAPHS.
(map (match-lambda
;; TODO: Remove 'derivation?' special cases.
((file-name (? derivation? drv))
(cons file-name (derivation->output-path drv)))
((file-name (? derivation? drv) sub-drv)
(cons file-name (derivation->output-path drv sub-drv)))
((file-name thing)
(cons file-name thing)))
((file-name . (? derivation-input? input))
(cons file-name (first (derivation-input-output-paths input))))
((file-name . (? string? item))
(cons file-name item)))
graphs))
(define (add-modules exp modules)
@ -882,7 +878,7 @@ The other arguments are as for 'derivation'."
(mbegin %store-monad
(set-grafting graft?) ;restore the initial setting
(raw-derivation name
(string-append (derivation->output-path guile)
(string-append (derivation-input-output-path guile)
"/bin/guile")
`("--no-auto-compile"
,@(append-map (lambda (directory)
@ -895,13 +891,23 @@ The other arguments are as for 'derivation'."
#:outputs outputs
#:env-vars env-vars
#:system system
#:inputs `((,guile)
(,builder)
,@(map gexp-input->tuple
(lowered-gexp-inputs lowered))
#:inputs `(,guile
,@(lowered-gexp-inputs lowered)
,@(match graphs
(((_ . inputs) ...) inputs)
(_ '())))
(((_ . inputs) ...)
(filter derivation-input? inputs))
(#f '())))
#:sources `(,builder
,@(if (and (string? modules)
(store-path? modules))
(list modules)
'())
,@(lowered-gexp-sources lowered)
,@(match graphs
(((_ . inputs) ...)
(filter string? inputs))
(#f '())))
#:hash hash #:hash-algo hash-algo #:recursive? recursive?
#:references-graphs (and=> graphs graphs-file-names)
#:allowed-references allowed

1231
guix/lint.scm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -46,7 +46,7 @@
(compose object->string object->string))
(apply open-remote-pipe* session OPEN_READ
(string-append (derivation->output-path
(string-append (derivation-input-output-path
(lowered-gexp-guile lowered))
"/bin/guile")
"--no-auto-compile"
@ -76,8 +76,14 @@ result to the current output port using the (guix repl) protocol."
(with-imported-modules (source-module-closure '((guix repl)))
#~(begin
(use-modules (guix repl))
(send-repl-response '(primitive-load #$program)
;; We use CURRENT-OUTPUT-PORT for REPL messages, so redirect PROGRAM's
;; output to CURRENT-ERROR-PORT so that it does not interfere.
(send-repl-response '(with-output-to-port (current-error-port)
(lambda ()
(primitive-load #$program)))
(current-output-port))
(force-output))))
(define* (remote-eval exp session
@ -95,40 +101,27 @@ remote store."
(remote -> (connect-to-remote-daemon session
socket-name)))
(define inputs
(cons (gexp-input (lowered-gexp-guile lowered))
(cons (lowered-gexp-guile lowered)
(lowered-gexp-inputs lowered)))
(define to-build
(map (lambda (input)
(if (derivation? (gexp-input-thing input))
(cons (gexp-input-thing input)
(gexp-input-output input))
(gexp-input-thing input)))
inputs))
(define sources
(lowered-gexp-sources lowered))
(if build-locally?
(let ((to-send (map (lambda (input)
(match (gexp-input-thing input)
((? derivation? drv)
(derivation->output-path
drv (gexp-input-output input)))
((? store-path? item)
item)))
inputs)))
(let ((to-send (append (append-map derivation-input-output-paths
inputs)
sources)))
(mbegin %store-monad
(built-derivations to-build)
(built-derivations inputs)
((store-lift send-files) to-send remote #:recursive? #t)
(return (close-connection remote))
(return (%remote-eval lowered session))))
(let ((to-send (map (lambda (input)
(match (gexp-input-thing input)
((? derivation? drv)
(derivation-file-name drv))
((? store-path? item)
item)))
inputs)))
(let ((to-send (append (map (compose derivation-file-name
derivation-input-derivation)
inputs)
sources)))
(mbegin %store-monad
((store-lift send-files) to-send remote #:recursive? #t)
(return (build-derivations remote to-build))
(return (build-derivations remote inputs))
(return (close-connection remote))
(return (%remote-eval lowered session)))))))

File diff suppressed because it is too large Load Diff

View File

@ -694,7 +694,7 @@ to compress or decompress the log file; just return it as-is."
(h1 "GNU Guix Substitute Server")
(p "Hi, "
(a (@ (href
"https://gnu.org/s/guix/manual/html_node/Invoking-guix-publish.html"))
"https://guix.gnu.org/manual/en/html_node/Invoking-guix-publish.html"))
(tt "guix publish"))
" speaking. Welcome!")))
port)))))

View File

@ -917,7 +917,7 @@ Info manual."
(package-name "GNU Guix")
(package-version "0")
(bug-report-address "bug-guix@gnu.org")
(home-page-url "https://gnu.org/s/guix"))
(home-page-url "https://guix.gnu.org"))
;; Hack so that Geiser is not confused.
(define defmod 'define-module)

View File

@ -42,6 +42,7 @@ guix/build/utils.scm
guix/scripts.scm
guix/scripts/build.scm
guix/discovery.scm
guix/lint.scm
guix/scripts/download.scm
guix/scripts/package.scm
guix/scripts/install.scm
@ -82,4 +83,5 @@ guix/channels.scm
guix/profiles.scm
guix/git.scm
guix/deprecation.scm
guix/derivations.scm
nix/nix-daemon/guix-daemon.cc

View File

@ -136,7 +136,7 @@
#:env-vars '(("HOME" . "/homeless")
("zzz" . "Z!")
("AAA" . "A!"))
#:inputs `((,%bash) (,builder))))
#:sources `(,%bash ,builder)))
(succeeded?
(build-derivations %store (list drv))))
(and succeeded?
@ -145,36 +145,13 @@
(string=? (call-with-input-file path read-line)
"hello, world"))))))
(test-assert "derivation with local file as input"
(let* ((builder (add-text-to-store
%store "my-builder.sh"
"(while read line ; do echo \"$line\" ; done) < $in > $out"
'()))
(input (search-path %load-path "ice-9/boot-9.scm"))
(input* (add-to-store %store (basename input)
#t "sha256" input))
(drv (derivation %store "derivation-with-input-file"
%bash `(,builder)
;; Cheat to pass the actual file name to the
;; builder.
#:env-vars `(("in" . ,input*))
#:inputs `((,%bash)
(,builder)
(,input))))) ; ← local file name
(and (build-derivations %store (list drv))
;; Note: we can't compare the files because the above trick alters
;; the contents.
(valid-path? %store (derivation->output-path drv)))))
(test-assert "derivation fails but keep going"
;; In keep-going mode, 'build-derivations' should fail because of D1, but it
;; must return only after D2 has succeeded.
(with-store store
(let* ((d1 (derivation %store "fails"
%bash `("-c" "false")
#:inputs `((,%bash))))
#:sources (list %bash)))
(d2 (build-expression->derivation %store "sleep-then-succeed"
`(begin
,(random-text)
@ -204,10 +181,10 @@
'()))
(drv1 (derivation %store "foo"
%bash `(,build1)
#:inputs `((,%bash) (,build1))))
#:sources `(,%bash ,build1)))
(drv2 (derivation %store "bar"
%bash `(,build2)
#:inputs `((,%bash) (,build2)))))
#:sources `(,%bash ,build2))))
(and (build-derivations %store (list drv1 drv2))
(let ((file1 (derivation->output-path drv1))
(file2 (derivation->output-path drv2)))
@ -343,7 +320,7 @@
(hash (sha256 (string->utf8 "hello")))
(drv (derivation %store "fixed"
%bash `(,builder)
#:inputs `((,builder))
#:sources (list builder)
#:hash hash #:hash-algo 'sha256)))
(fixed-output-derivation? drv)))
@ -353,7 +330,7 @@
(hash (sha256 (string->utf8 "hello")))
(drv (derivation %store "fixed"
%bash `(,builder)
#:inputs `((,builder)) ; optional
#:sources `(,builder) ;optional
#:hash hash #:hash-algo 'sha256))
(succeeded? (build-derivations %store (list drv))))
(and succeeded?
@ -385,7 +362,7 @@
(hash (sha256 (string->utf8 "hello")))
(drv (derivation %store "fixed-rec"
%bash `(,builder)
#:inputs `((,builder))
#:sources (list builder)
#:hash (base32 "0sg9f58l1jj88w6pdrfdpj5x9b1zrwszk84j81zvby36q9whhhqa")
#:hash-algo 'sha256
#:recursive? #t))
@ -419,11 +396,13 @@
(final1 (derivation %store "final"
%bash `(,builder3)
#:env-vars `(("in" . ,fixed-out))
#:inputs `((,%bash) (,builder3) (,fixed1))))
#:sources (list %bash builder3)
#:inputs (list (derivation-input fixed1))))
(final2 (derivation %store "final"
%bash `(,builder3)
#:env-vars `(("in" . ,fixed-out))
#:inputs `((,%bash) (,builder3) (,fixed2))))
#:sources (list %bash builder3)
#:inputs (list (derivation-input fixed2))))
(succeeded? (build-derivations %store
(list final1 final2))))
(and succeeded?
@ -439,7 +418,7 @@
#:env-vars '(("HOME" . "/homeless")
("zzz" . "Z!")
("AAA" . "A!"))
#:inputs `((,%bash) (,builder))
#:sources `(,%bash ,builder)
#:outputs '("out" "second")))
(succeeded? (build-derivations %store (list drv))))
(and succeeded?
@ -459,7 +438,7 @@
'()))
(drv (derivation %store "fixed"
%bash `(,builder)
#:inputs `((,%bash) (,builder))
#:sources `(,%bash ,builder)
#:outputs '("out" "AAA")))
(succeeded? (build-derivations %store (list drv))))
(and succeeded?
@ -481,15 +460,15 @@
(inputs (map (lambda (file)
(derivation %store "derivation-input"
%bash '()
#:inputs `((,%bash) (,file))))
#:sources `(,%bash ,file)))
sources))
(builder (add-text-to-store %store "builder.sh"
"echo one > $one ; echo two > $two"
'()))
(drv (derivation %store "derivation"
%bash `(,builder)
#:inputs `((,%bash) (,builder)
,@(map list (append sources inputs)))
#:sources `(,%bash ,builder ,@sources)
#:inputs (map derivation-input inputs)
#:outputs '("two" "one")))
(drv* (call-with-input-file (derivation-file-name drv)
read-derivation)))
@ -520,7 +499,7 @@
'()))
(mdrv (derivation %store "multiple-output"
%bash `(,builder1)
#:inputs `((,%bash) (,builder1))
#:sources (list %bash builder1)
#:outputs '("out" "two")))
(builder2 (add-text-to-store %store "my-mo-user-builder.sh"
"read x < $one;
@ -535,11 +514,11 @@
("two"
. ,(derivation->output-path
mdrv "two")))
#:inputs `((,%bash)
(,builder2)
;; two occurrences of MDRV:
(,mdrv)
(,mdrv "two")))))
#:sources (list %bash builder2)
;; two occurrences of MDRV:
#:inputs
(list (derivation-input mdrv)
(derivation-input mdrv '("two"))))))
(and (build-derivations %store (list (pk 'udrv udrv)))
(let ((p (derivation->output-path udrv)))
(and (valid-path? %store p)
@ -565,7 +544,7 @@
`(("bash" . ,%bash)
("input1" . ,input1)
("input2" . ,input2))
#:inputs `((,%bash) (,builder))))
#:sources (list %bash builder)))
(out (derivation->output-path drv)))
(define (deps path . deps)
(let ((count (length deps)))
@ -598,7 +577,7 @@
(test-assert "derivation #:allowed-references, ok"
(let ((drv (derivation %store "allowed" %bash
'("-c" "echo hello > $out")
#:inputs `((,%bash))
#:sources (list %bash)
#:allowed-references '())))
(build-derivations %store (list drv))))
@ -606,7 +585,7 @@
(let* ((txt (add-text-to-store %store "foo" "Hello, world."))
(drv (derivation %store "disallowed" %bash
`("-c" ,(string-append "echo " txt "> $out"))
#:inputs `((,%bash) (,txt))
#:sources (list %bash txt)
#:allowed-references '())))
(guard (c ((store-protocol-error? c)
;; There's no specific error message to check for.
@ -617,14 +596,14 @@
(test-assert "derivation #:allowed-references, self allowed"
(let ((drv (derivation %store "allowed" %bash
'("-c" "echo $out > $out")
#:inputs `((,%bash))
#:sources (list %bash)
#:allowed-references '("out"))))
(build-derivations %store (list drv))))
(test-assert "derivation #:allowed-references, self not allowed"
(let ((drv (derivation %store "disallowed" %bash
`("-c" ,"echo $out > $out")
#:inputs `((,%bash))
#:sources (list %bash)
#:allowed-references '())))
(guard (c ((store-protocol-error? c)
;; There's no specific error message to check for.
@ -635,7 +614,7 @@
(test-assert "derivation #:disallowed-references, ok"
(let ((drv (derivation %store "disallowed" %bash
'("-c" "echo hello > $out")
#:inputs `((,%bash))
#:sources (list %bash)
#:disallowed-references '("out"))))
(build-derivations %store (list drv))))
@ -643,7 +622,7 @@
(let* ((txt (add-text-to-store %store "foo" "Hello, world."))
(drv (derivation %store "disdisallowed" %bash
`("-c" ,(string-append "echo " txt "> $out"))
#:inputs `((,%bash) (,txt))
#:sources (list %bash txt)
#:disallowed-references (list txt))))
(guard (c ((store-protocol-error? c)
;; There's no specific error message to check for.
@ -662,7 +641,7 @@
'("-c" "echo -n $GUIX_STATE_DIRECTORY > $out")
#:hash (sha256 (string->utf8 value))
#:hash-algo 'sha256
#:inputs `((,%bash))
#:sources (list %bash)
#:leaked-env-vars '("GUIX_STATE_DIRECTORY"))))
(and (build-derivations %store (list drv))
(call-with-input-file (derivation->output-path drv)
@ -688,8 +667,8 @@
,(string-append
(derivation->output-path %coreutils)
"/bin")))
#:inputs `((,builder)
(,%coreutils))))
#:sources (list builder)
#:inputs (list (derivation-input %coreutils))))
(succeeded?
(build-derivations %store (list drv))))
(and succeeded?
@ -1239,7 +1218,9 @@
(derivation->output-path bash-full)
`("-e" ,script1)
#:inputs `((,bash-full) (,script1))))
#:sources (list script1)
#:inputs
(list (derivation-input bash-full '("out")))))
(drv2 (map-derivation %store drv1
`((,bash-full . ,%bash)
(,script1 . ,script2))))

View File

@ -849,8 +849,9 @@
#:effective-version "2.0")))
(define (matching-input drv output)
(lambda (input)
(and (eq? (gexp-input-thing input) drv)
(string=? (gexp-input-output input) output))))
(and (eq? (derivation-input-derivation input) drv)
(equal? (derivation-input-sub-derivations input)
(list output)))))
(mbegin %store-monad
(return (and (find (matching-input extension-drv "out")
@ -867,7 +868,8 @@
"/lib/guile/2.0/site-ccache")
(lowered-gexp-load-compiled-path lexp))
(= 2 (length (lowered-gexp-load-compiled-path lexp)))
(eq? (lowered-gexp-guile lexp) (%guile-for-build)))))))
(eq? (derivation-input-derivation (lowered-gexp-guile lexp))
(%guile-for-build)))))))
(test-assertm "gexp->derivation #:references-graphs"
(mlet* %store-monad

File diff suppressed because it is too large Load Diff